西门子 S7-200 PLC 自由口通信学习摘要
本文以 s7-200 PLC与智能电表通信为范例(电表波特率为 1200bps,偶校验,8位数据位)
一、PLC自由口
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
初始化
1、根据智能设备通信时使用的波特率、校验方式、起始位等参数配置 PLC自由口,
即将上述参数用 MOVB指令写入 SMB30,SMB30格式如下图所示:
初始化子程序如下:
二、声明中断
发送数据和接收完数据都能链接到中断程序,发送完中断与接收完中断的中断号分别为 9
和 23,中断可在初始化子程序中声明
三、编写自由口要发送的报文子程序
严格按智能设备报文格式,将相应命令,将指令长度(字节)MOV到任意的字节单元,例如 vb10。
再用MOV_B或MOV_W等指令传送到 vb11开始后连续的字节中。
报文子程序
上图为读取电表标识编码为 9010(即正向有功总电能)的指令
四、用 XMT指令发送报文
XMT指令需指定两个参数,第一个为要发送的报文的起始地址(本例为 VB10),第二个为使
用的通信口(本例为 0口)。可以用定时器控制某一 CPU内部触点来控制报文发送的周期。要
注意的是,XMT指令必须用上升沿“ —|P|— ” 触发,否则 CPU将会报错,CPU将认为有多个
XMT/RCV指令同时执行,这是不允许的!
发送报文子程序
五、利用发送完中断启动接收数据指令
当报文用 XMT发送完毕,会产生 9号中断。我们可以利用中断子程序捕捉相应的中断,并在中
断程序中编写相应事件!在步骤 1中已经声明了 9号中断连接到中断子程序“发送完中断”。因为
此我们在“发送完中断”中断子程序中使用 RCV指令即可接收到由通信口返回的数据。即将数据
送到 VB100.
“发送完中断”中断子程序
总结一下编程原则:
这里我们总结以下自由口编程的一般原则:
1. SM0.1 触发端口初始化,连接发送完成和接收完成中断(中断事件 9 和 23)
2. SM0.0 触发 RCV 指令
3. XMT 指令用上升沿触发,并在指令运行前先保证端口 0 的停止接收
4. 根据将要接收信息的不同,合理设置 SMB87~SMB94
5. 必须满足发送结束条件(如字节个数,结束字符等)才能产生 9号中断