程序中一组%ignore_a_1%的数据帧是用VB100到VB117存储的;等于17个字节,波特率:9600,
我计算的是:一秒=1000毫秒;9600÷1000=9.6;一毫秒传输9.6个位;17个字节等于17×8=136位;136÷9.6=14.166666毫秒;14.166666毫秒传输136位;14.166666×1.5=21.25毫秒;
SMW92 = 22;
为什么同样的条件教程上写的是SMW92 = 50;
最佳答案
同样的问题只需要提问一次。
SMW92是定义字符间定时器时间的寄存器区,字符间即2个信息的间隔时间(第一次接收与第二次接收之间的间隔时间)。
其含义是当接收信息开始后,这个字符间定时器也将启动,当到达SMW92设置的时间到达后,则作为信息的结束判断依据。
如果你的计算是大致21.25mS,而你定义的SMW92仅仅是取了一个整数22mS,那么很有可能会丢失信息数据的后半部分信息。
这个计算仅仅停留在理论层面上的,就如你乘1.5系数那样,定义需要适当放一些余量,至于放多少余量,看具体接收信息指令是如何编辑的。
你可以测试SMW22是否有丢失信息的可能,如果有则稍微放大这个时间数据,如果没有你按22mS定义没有问题。
提问者对于答案的评价:
谢谢,我懂了
最佳答案作者回复:
如果你担心这个,可以调用信息结束符的。
就是不调用这个可能的丢失,而改为信息结束字符的判断,也是一种方法。
相对,接收指令RCV远比发送指令XMT复杂的多。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc279876.html