技术论坛

 说说西门子200smart modbus自由口通讯的那些事10

返回主题列表
作者 主题
WWCWWC
至圣

经验值:79166
发帖数:9103
精华帖:157
楼主    2016-12-14 11:01:29
主题:说说西门子200smart modbus自由口通讯的那些事10 精华帖 

说说西门子200smart modbus自由口通讯的那些事10

   上文说那些事是简单的主、从应答方式通讯例子,这个在自由口程序中最为常见的一种通讯方法,也是比较容易理解的。即主站先发送一个数据请求,等待从站的应答,如果应答的信息是错误的数据,连续3次后停止发送请求,并报通讯应答错误信息(程序中未列举错误程序控制段),大家可以参考类似的方式作为通讯响应时错误的处理。

   今天,我想再来做一个验证,即主站先发送一个数据请求,等待从站应答,如果主站自发送数据请求后(启动消息定时器)在规定的100mS时间内从站未做出响应后,则,主站判断为从站通讯故障范畴。

程序定义:

1)  定义PLC集成的通讯口,SMB30 = 16# 09 自由口通讯,9600, 8个数据位,无校验;

2)  启用任意字符作为主站接收消息的开始;

3)  启用结束符,SMB89 = 0A;

4)  启用消息定时器作为接收信息的结束条件;SMW92 = 100(mS)

5)  启用最大发送、接收字符数255个;SMB94 = 255(个字符)

6)  启用发送完成中断,中断事件号9、接收完成中断,中断事件号23;

7)  开中断;

8)  启用发送指令XMT;

程序目的:

首先启动PLC后发送数据字符“ni hao!”,等待从站(串口调试软件)回应数据。如果在消息定时器100mS时间到达内未接收到信息,则发送错误信息“error!”,并关闭接收完成中断。

初始化子程序:


发送完成中断中调用接收指令RCV:


接收完成中断中监控接收超时,如果消息定时器100mS时间到未接收到信息,则,先发送错误信息并关闭接收信息,图示:


主程序调用:人工激活(M0.0)后可以重新启动第二次的请求。


模拟一个故障的例子,即串口调试软件不发送数据信息,图示:


假设,串口调试软件这时发送一串数据为:30 31 32 0a,重新激活一次M0.0(重新启动数据接收),看PLC“状态图表”及串口调试软件窗口信息,图示:


这时,串口调试软件未出现“error!”字符串,说明PLC一直处在接收串口调试软件的数据而没有超时。


您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。