比如用RCV接收数据放入VB100
数据有100多个字节,而我只需要前50个
能否当VB100=50的上升沿,复位SM87.7来停止RCV的接收?
问题补充:
可能我表达的不明确。
我的意思是当用 RCV VB100, 0 这种指令时,即接收的数据存入从VB100开始的地址。 此处VB100应是接收的数据字节个数,真正的数据是从VB101开始。
那我用 LDB= VB100,50 的上升沿来关掉RCV应该可以啊
最佳答案
先算算时间
1 程序是扫描不到VB100=50的,数据在快速的接收,程序在快速的扫描,那么巧在扫描到 LDB= VB100,50 的时候,正好接收到50个数据?完全不可能。
但可以用LDB>= VB100, 50的上升沿
2 扫描周期是多少MS?
3 波特率是多少,如果你的波特率是9600,那么传输50字节数据大概需要50MS
4 如果波特率大,扫描周期长,那么用LDB>= VB100, 50没意义,等扫描到上升沿的时候,后50个字节数据已经接收到缓冲区里了。
5 如果波特率小,扫描周期短,那么可以通过LDB>= VB100, 50上升沿禁止RCV,但停止RCV后,这个时候你又不能发送数据,虽然你停止接收了,但对方还在发送数据,所以你也不能发送,即使对方发送完毕了,
你也应该接收后延时再发送,因为端口转换需要时间。
6 如果确实不想接收后50个字节数据,那么youhm的方法不错,用最大字符个数结束数据。
7 复位SM87.7后再执行RCV才能停止接收。
提问者对于答案的评价:
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc313058.html