串口通信编程

发送指令及发送完成位:

图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.通信结果