应用自由口通信首先要把通信口定义为自由口模式,同时设置相应的通信波特率和上述通信格式。用户程序通过特殊存储器smb30(对端口0)、smb130(对端口1)控制通信口的工作模式。
cpu通信口工作在自由口模式时,通信口就不支持其他通信协议(比如ppi),此通信口不能再与编程软件micro/win通信。cpu停止时,自由口不能工作,micro/win就可以与cpu通信。
通信口的工作模式,是可以在运行过程中由用户程序重复定义的。
如果调试时需要在自由口模式与ppi模式之间切换,可以使用sm0.7的状态决定通信口的模式;而sm0.7的状态反映的是cpu运行状态开关的位置(在run时sm0.7=1,在stop时sm0.7=0)
自由口通信的核心指令是发送(xmt)和接收(rcv)指令。在自由口通信常用的中断有“接收指令结束中断”、“发送指令结束中断”,以及通信端口缓冲区接收中断。
与网络读写指令(netr/netw)类似,用户程序不能直接控制通信芯片而必须通过操作系统。用户程序使用通信数据缓冲区和特殊存储器与操作系统交换相关的信息。
xmt和rcv指令的数据缓冲区类似,起始字节为需要发送的或接收的字符个数,随后是数据字节本身。如果接收的消息中包括了起始或结束字符,则它们也算数据字节。
调用xmt和rcv指令时只需要指定通信口和数据缓冲区的起始字节地址。
同样,需要注意:
xmt和rcv指令与netw/netr指令不同的是,它们与网络上通信对象的“地址”无关,而仅对本地的通信端口操作。如果网络上有多个设备,消息中必然包含地址信息;这些包含地址信息的消息才是xmt和rcv指令的处理对象。
由于s7-200的通信端口是半双工rs-485芯片,xmt指令和rcv指令不能同时有效。