西门子S7-1200支持使用点对点协议进行基于字符的点对点串行通信,通过串行通信S7-1200 CPU能够将信息直接发送到打印机等外部设备,也可以从其它设备如条形码阅读器等接收信息,与调制解调器、第三方PLC等其它设备交换信息。
S7-1200的RS485、RS232通信模块提供了用于执行点对点通信的电气接口,通信接口模块需要安装在S7-1200 CPU模块的左侧。
S7-1200进行点对点通信的基本步骤包括硬件连接、组态通信端口、组态发送和接收参数、指令编程和下载运行。这里我们只介绍S7-1200点对点通信相关的指令。
通信端口组态指令PORT_CFG可以通过用户程序更改端口参数,如波特率等参数。
各参数含义如下:
请求参数REQ,在该输入的上升沿激活组态更改;端口参数PORT,通信端
口标识符;通过传输协议参数PROTOCOL进行协议选择,0表示点对点通信协议;参数BAUD用于设置端口的波特率;参数PARITY用于设置端口的奇偶校验;参数DATABITS用于设置每个字符的位数;参数STOPBITS用于设置停止位的位数;FLOWCTRL为数据流控制参数;XONCHAR参数指定用作XON字符的字符;XOFFCHAR参数指定用作XOFF字符的字符;WAITTIME参数用于指定在接收XOFF字符后等待XON字符的时间,或者指定在启用实时时钟RTC后等待消除发送信号的时间;参数DONE,当上一请求已完成且没有出错时在一个扫描周期内保持为1;参数ERROR,当上一请求已完成但出现错误时在一个扫描周期内保持为1;参数STATUS表示指令的状态。
发送方组态指令SEND_CFG可用于动态组态点对点通信端口的串行发送方参数。
部分参数含义如下:
参数RTSONDLY,表示启用实时时钟RTS后执行任何数据传输前要等待的时间;参数RTSOFFDLY,表示数据传输结束后禁用RTS前要等待的时间;中断参数BREAK,用于指定在各消息开始时将发送指令位时间的中断;空闲参数IDLELINE,用于指定在消息开始时发送中断后,线路空闲信号的位时间数;其它参数与上面介绍的指令类似。
接收方组态指令RCV_CFG用于动态组态点对点通信端口的串行接收方参数,该指令可组态表示接收信息开始和结束的条件。
部分参数含义如下:
CONDITIONS条件数据结构参数,用于指定消息开始和结束条件;其它参数与上面介绍的指令类似。
发送点对点数据指令SEND_PTP,用于启动数据传送,该指令将指定的缓冲区数据传送到通信模块。
部分参数含义如下:
缓冲参数BUFFER,用于指向传送缓冲区的起始位置;缓冲区长度参数LENGTH,用于表示传输消息帧的常数;协议参数PTRCL,用于选择普通点对点协议或西门子提供的特定协议所在的缓冲区,这些协议在所连接的通信模块中实施;其它参数与前面介绍的指令类似。
接收点对点数据指令SEND_PTP,用于检查通信模块中已接收的消息,如果有消息则会将其从通信模块传送到CPU。
部分参数含义如下:
接收使能端EN_R,在输入为TRUE时检查通信模块是否已接收消息,如果已成功接收消息,则会将其从模块传送到CPU;BUFFER参数,指向接收缓冲区的起始位置,该缓冲区应该足够大,可以接收最大长度消息;参数NDR,在新数据就绪且操作无错误的完成时,在一个扫描周期内为1;参数LENGTH用于返回消息的长度,以字节为单位;其它参数与前面介绍的指令类似。
接收方复位指令RCV_RST,用于可清空通信模块中的接收缓冲区,其中各参数的含义与前面介绍的指令类似。
获取RS232信号指令SGN_GET,用于读取RS232通信信号的当前状态,该功能仅对RS232通信模块有效。
其中部分参数含义如下:
参数NDR,表示新数据就绪且操作无错误的完成时,在一个扫描周期内为1;参数DTR,表示数据终端就绪、模块就绪;参数DSR,表示数据设备就绪、通信伙伴就绪;参数RTS,表示请求发送,模块已做好发送准备;参数CTS,表示允许发送,通信模块可以接收数据;参数DCD,表示数据载波检测,接收信号电平;参数RING,为响铃指示器,来电指示;其它参数与前面介绍的指令类似。
设置RS232信号指令SGN_SET,用于设置RS232通信模块输出信号的状态。
其中部分参数含义如下:
参数SIGNAL,用于选择要设置的信号;参数RTS,表示请求发送,模块准备好将值发送到设备;参数DTR表示数据终端就绪,模块准备好将值发送到设备;参数DSR表示数据设备就绪;其它参数与前面介绍的指令类似。