恭喜,你发布的帖子
发布于 2016-10-15 09:25:02
13楼
小结一下:主站读、写请求指令MSG的其中一些特性
1)modbus通讯是串口异步通信的其中一种方式,主站请求指令MSG工作于程序的异步状态,当指令完成后,DONE位为1,并保持,直到指令触发被取消止。
2)该指令(MSG)的ERROR端子出现数字6,说明在同一个程序的扫描周期出现了2个或2个以上的MSG指令被同时激活的现象,而第二个被同时激活的指令将被终止指令的执行。(指令还包含其它故障信息)
3)MSG指令的执行时间是根据通讯频率,通讯数量,程序结构,外部硬件条件所决定的,一般一个字节在9600波特率下大概需要3mS多左右时间。
4)通讯最大“字”数为120个,当进行以“位”为单位传输时,必须确保为字节是最小单位。
第二点是这次讨论的主题,有楼主点了这个题,大家来讨论关于同一个周期触发2个以上的MSG指令的具体含义。即如何界定为同一个时刻。
以下是我个人的观点:
所谓同一个时刻触发2个以上的MSG指令,指在“同一个扫描周期内”有效了2个或2个以上的MSG指令。其目的是规避串口通信半双工工作机制时,只能在同一时刻允许一个或者一组数据的传递。
而MSG指令的工作机制又是异步与程序的扫描周期,所以,当激活一条MSG指令后,不能够依据程序的周期来确定是否在同一个时刻,而是需要根据该指令的DONE位来界定该指令是否被执行完毕。当该指令的DONE为1时的同一个周期内,则允许触发第二个(下一个)MSG指令。
题外话,顺控指令可以有效规避这个错误。
请填写推广理由:
分享
只看
楼主