多SMB30/SMB130通讯就是一个轮训过程中,SMB30/SMB130被多次赋值,就是字符格式或者波特率不一样的几个从站连在CPU224XP的一个通讯口。
最近在做这样的项目,整个的通讯过程没什么问题,但在监视SMB86的时候,发现了问题:
1数据处理的时间:
处理接收到的数据是在接收已完成(SMB86等于0表示正在接收数据)还没有和下一个站通讯(端口0发送空闲时 SM4.5=1)的时候进行

2然后就是对每个从站通讯后的SMB86分析,对5种错误的通讯结果统计次数,这个结果非常容易让你找到通讯的问题。
如果出现了SMB86=2#100 那么可能是你的SMW92设置的不对,通讯的从站回复的字符数量都不一样。
如果出现了SMB86=2#1000-0000 那么可能是你的SMB88设置的不对。

3 当SMB86=2#10的时候,是正常的RCV结束,因为我设置的SMB87=2#11000100
当SMB86=2#10的时候,对数据校验,校验正确就复制出去使用,校验不正确就统计次数,最后发现第12个从站每30分钟有几次的校验不正确,
虽然不影响正常通讯,但肯定要找到原因呀,于是就查呀查,也查不出问题。最后就把校验错误时的数据给MOVE出来 看看值是多少,看到数据不是第12个从站回复的数据,
于是判断是其他从站误回的数据,关闭其他不是同SMB30的从站,观察一晚上,第二天早上看看这个次数是0。
那其他从站到底是怎么误回数据的呢?