恭喜,你发布的帖子
发布于 2018-12-27 11:15:55
1楼
通讯属于异步指令,和其他的指令是不一样的,其他指令,比如一条ADD MW0 MW2的指令,执行到这条指令,执行完成之后,MW2 = MW0 + MW2,事情就完了。但是一条异步指令呢,比如
XMT VB0, 0
这条指令呢?执行到的时候只是告诉PLC,你可以把VB0开始的数据通过端口0发送出去,然后CPU就去执行下一条指令了,并不是等到数据发送完成了才会执行下一条指令。在执行之后的指令时,数据发送还在进行,等到数据发送完成,会触发一个中断事件,同时也有特殊寄存器指示通讯端口的状态。
我们可以大致计算一下XMT指令执行完成需要多少时间,按9600波特率,8个数据位,一个起始位,一个停止位,无奇偶校验,一个字节10个数据位,大约需要1ms的时间进行发送。
以MODBUS的03功能码来说,主站指令8个字节,从站响应根读取的据寄存器数量n,有n*2+5个字节的通讯数据量,不考虑所有其他延迟,读取10个寄存器的数据,一个通讯循环至少需要 8+ 10*2 +5 = 33ms的时间,假设PLC循环时间是3ms,需要至少11个扫描周期才能完成一个通讯循环。
请填写推广理由:
分享
只看
楼主