以下为一段自由口通讯的数据接受处理程序,有些不明白的地方希望大家指点。下面为
RCV VB100以后,在进行奇偶检验前的数据处理,最后调用FCS为校验程序,&VB102应该是校验数据开始的地址, VB99应该是需要校验的字节数,VB90应该是输出的校验结果
LDB<> SMB86, 16#20
JMP 1
NOT
MOVB VB102, VB99
R V96.0, 24
MOVD &VB103, VD92
+D VD96, VD99
MOVB *VD92, VB91
INCB VB99
CALL FCS:SBR1, &VB102, VB99, VB90
LDB= VB90, VB91
R Q1.0, 1
我不明白的是这个程序的数据缓冲区不是该从VB100开始吗?"+D VD96, VD99"是什么意思,这样岂不是从VB99到VB102都当做一个数了??还有就是为什么后来VB99还自加1作为字节数呢??按照缓冲区分配,VB100不就该是计数吗???同样的问题也出现在VD92的间址寻址上难道说VB103的内容是校验结果,因为后面VB91和VB90比较显然是比对校验码,没有看见发送程序,所以我是不是可以分析说VB103储存的是上位机发送校验结果呢??还有我怀疑VB102发的是字节数。VB101是数据起始位,初始化有设置SMB88为0
不知道我问的清楚不,谢谢大家
最佳答案
你的这个程序是廖常初书上的,如果没看到这个书,谁也不能为你解答,因为你给别人提供的信息太少!书上有个表,我怀疑你没看到,所以才有这么多的问题。
1 我不明白的是这个程序的数据缓冲区不是该从VB100开始吗?
是的,VB100是接收到的字节数,VB100=VB102+3,3为1个起始字符,1个结束字符,1个数据字符数(VB102)
你没看到表吗????!!!!!!
VB100 接收到的字节数
VB101 起始字符
VB102 数据字节数
VB103 数据区
校验码
结束字符
2 "+D VD96, VD99"是什么意思,这样岂不是从VB99到VB102都当做一个数了??
这句要结合上下文来看,VD92开始装入的地址是VB103,VD96=VB102 数据字节数,
VD96+VD99后,VD92里面的地址就是校验码的地址了
其他的你自己慢慢想吧。
提问者对于答案的评价:
我是在一片小论文上看的~~~没有表~~~我现在找到它的上位机程序了~~~看见它发的数据顺序了~~~~不过还是很感谢您~~~~~~
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc353469.html