对于MODBUS通讯轮询:
1)原因:因为跟多个设备进行通讯,但每个时刻只能有一个MSG(西门子)山孙,所以要使用轮询
2)方法:可以使用通讯春唯粗完成位或是时间加计数器
其实时间的轮训的思路和跑马灯差不多。用定时器,第一个定时器开始计时,在这段时间里,只读写第一个地址(或站号)的数据。就相当于第一个灯亮了。这个定时器的设定时间到了,下一个定时器开始定时;在第二个定时器开始计时,在这段时间里,只读写第二个地址(或站号)的数据。就相当于第二个灯亮了。这粗蠢个定时器的设定时间到了,岩猜陪下一个定时器开始定时;在第三个定时器开始计时,在这段时间里,只读写第兆野3个地址(或站号)的数据。就相当于第三个灯亮了。这个定时器的设定时间到了,下一个定时器开始定时;....一直到所有的都读写完了,返回到第一个从新开始读写。就相当于所有的灯都亮过,又返回到第一个灯重新开始亮。所以这个时间轮训就是一个跑马灯的思路。望采纳。。。。。。
指定QW0内,Q0.0-Q0.4对应1-5号水泵。使用加法指令和CPU定义的时间脉冲1.0S,可以很方便做成一个8小时时间脉冲,计数脉冲个数,开始0时候,使用比较指令CMP等于0时,输出给MOVE指令将7赋值给QW0,此时即Q0.0,Q0.1Q0.2闭合计数值为1时,使用CMP等于指令等于1是赋值14给QW0,携饥毁Q0.1
Q0.2
Q0.3闭合后面的依次类推计数值2,赋值28给QW0.计数值3,赋值辩备25给QW0计数值4,赋值19给QW0计数到5后肢前复位计数器值为0重新开始新一轮的循环。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)