串口通信编程
发送指令及发送完成位:
图1. 发送完成位
接收指令及接收完成位:
图2.接收完成位
字符串转换
S7-1200字符串结构:
总字符数 | 当前字符数 | 字符1 | 字符2 | ...... | 字符256 |
如上面S7-1200字符串结构,第一个字节是总字符数,第二个字节是当前字符数,所以发送和接收真正的字符内容都应该从字符串的第三个字节开始,因此发送和接收字符串都要进行相应的转换。
发送字符串转换:
要将 DB3.DBB20 中的字符串发送出去,需要经过下列转换:
图3. 发送字符串转换
接收字符串转换:
要将收到的字符串送入 DB3.DBB30 中需要进行以下转换:
图4. 接收字符串转换
轮询编程
通信任务:
主站将 P#DB3.DBX20.0 中的字符串“西门子”(注意发送缓冲区由 P#DB3.DBX22.0 开始,因为字符串前两个字节分别是总字符数和当前字符数)发送给从站的接收缓冲区P#DB3.DBX32.0;从站 P#DB3.DBX22.0 返回“博大精深”给主站 P#DB3.DBX32.0。
主站轮询:
图5. 主站轮询
从站轮询:
图6. 从站轮询
通信结果:
图7.通信结果