西门子S7-200PLC扩张模块6ES7 235-0KD22-0XA8全新原装现货出售
西门子S7-200PLC扩张模块6ES7 235-0KD22-0XA8全新原装现货出售
S7-200系列PLC中的自由口通信,同时也给大家介绍了发送和接收的程序,那么今天我们继续学习关于S7-200系列PLC中的自由口通信方式。
通过编程可以选择自由端口模式来控制S7-200的串行通信口。当选择了自由端口模式,用户程序通过使用接收中断、发送中断、发送指令和接收指令来控制通信口的操作。当处于自由端口模式时,通信协议完全由梯形图程序控制。
SMB30(对于端口0)和SMB130(对于端口1,如果使用的S7-200有两个端口的话)被用于选择波特率和校验类型。当S7-200处于STOP模式时,自由端口模式被禁止,重新建立正常的通信(例如:编程设备的访问)。
在较简单的情况下,可以只用发送指令(XMT)向打印机或者显示器发送消息。其他例子包括与条码阅读器、称重计和焊机的连接在每种情况下,都必须编写程序,来支持在自由端口模式下与S7-200通信设备所使用的协议。
只有当S7-200处于RUN模式时,才能进行自由端口通信。要使能自由端口模式,应该在SMB30(端口0)或者SMB130(端口1)的协议选择区中设置相应数字。处于自由端口通信模式时,不能与编程设备通信。
可以使用特殊寄存器位SM0.7来控制自由端口模式。SM0.7反映的是操作模式开关的当前位置。当SM0.7等于0时,开关处于TERM位置;当SM0.7=1时,操作模式开关位于RUN位置。如果只有模式开关处于RUN位置时,才允许自由端口模式,可以将开关改变到其他位置上,使用编程设备监控S7-200的运行。
SMB30和SMB130分别配置通信口0和通信口1,并且为自由端口操作提供波特率、校验和数据位数的选择。
发送指令能够发送一个或多个字节的缓冲区,较多为255个。如果有一个中断程序连接到发送结束事件上,在发送完缓冲区中的最后一个字符时,则会产生一个中断(对端口0为中断事件9,对端口1为中断事件26)。
用户可以不使用中断来执行发送指令(例如:向打印机发送消息)。通过监视SM4.5或者SM4.6信号,判断发送是否完成。
把字符数设置为0并执行XMT指令,可以产生一个 BREAK状态。这样产生的 BREAK状态,在线上会持续以当前波特率传输16位数据所需要的时间。发送 BREAK的操作和发送其他任何消息的操作是一样的。当 BREAK完成时,产生一个发送中断并且SM4.5或者SM4.6反应发送操作的当前状态。
接收指令能够接收一个或多个字节的缓冲区,较多为255个。如果有一个中断程序连接到接收消息完成事件上,在接收完缓冲区中的最后一个字符时,S7-200会产生一个中断(对端口0为中断事件23,对端口1为中断事件24)。
用户可以不使用中断,通过监视SMB86(端口0)或者SMB186(端口1)来接收消息。当接收指令未被激活或者已经被中止上时,这一字节不为0;当接收正在进行时,这一字节为0。
接收指令可以通过SMB87(端口0)或者SMB187(端口1)来选择消息的起始和结束条件。
接收指令使用接收消息控制字节(SMB87或SMB187)中的位来定义消息起始和结束条件。当接收指令执行时,在接收口上有来自其他器件的信号,接收消息功能有可能从一个字符的中间开始接收字符,从而导致校验错误和接收消息功能的中止。
如果校验没有被使能,接收到的消息有可能包含错误字符。当起始条件被*为一个特定的起始字符或任意字符时,这种情况有可能发生。接收指令支持几种消息起始条件。*包含一个停顿或者一个空闲线检测的起始条件,通过在将字符放到消息缓冲区之前,用一个字符的起始来强制接收消息功能和消息的起始相同步,来避免以上问题。