ge以路过
级别: 正式会员
精华主题: 0
发帖数量: 7 个
工控威望: 97 点
下载积分: 556 分
在线时间: 5(小时)
注册时间: 2015-10-04
最后登录: 2019-04-23
查看ge以路过的 主题 / 回贴
楼主  发表于: 2016-10-29 21:39
在学习通讯,要做一个MODBUS ASCII 码的通讯,但是在算LRC校验值的时候,用到SUM指令,计算出的结果却不对,找不到那里问题,控制字是正确的,


具体情况是


        总共从D10 到D15有六个寄存器的值要加,结果总是不对,我就把控制字改为两个相加,在改为三个相加,再改为四个相加,结果都正确,就是改为五个相加,结果就开始出错,不知道那里问题。(开机A200.11初始化bset   D0 到D30的值为0,D10到D15的值是运行过程中我MOV进的常数值)


        很苦恼,求救!!!
fengyueye
级别: 探索解密
精华主题: 0
发帖数量: 16 个
工控威望: 104 点
下载积分: 1956 分
在线时间: 69(小时)
注册时间: 2016-03-16
最后登录: 2024-09-14
查看fengyueye的 主题 / 回贴
1楼  发表于: 2016-10-31 08:45
寄存器的的存储长度是有限的,前4个对,继续累加出错,估计是数据溢出了。
chenjun8612
级别: 略有小成
精华主题: 0
发帖数量: 89 个
工控威望: 214 点
下载积分: 663 分
在线时间: 130(小时)
注册时间: 2013-02-27
最后登录: 2024-10-20
查看chenjun8612的 主题 / 回贴
2楼  发表于: 2016-11-21 15:24
把值转为浮点再相加
时时勤拂拭,莫使惹尘埃!
tkggtdkjpl
工欲善其事,必先利其器!
级别: 网络英雄

精华主题: 1 篇
发帖数量: 3444 个
工控威望: 20980 点
下载积分: 27501 分
在线时间: 1760(小时)
注册时间: 2010-01-03
最后登录: 2024-11-17
查看tkggtdkjpl的 主题 / 回贴
3楼  发表于: 2016-11-21 15:53
16位存储器最大值是65535,带符号是是32767 这是常识
自动化单机,生产线,项目编程调试!
tkggtdkjpl
工欲善其事,必先利其器!
级别: 网络英雄

精华主题: 1 篇
发帖数量: 3444 个
工控威望: 20980 点
下载积分: 27501 分
在线时间: 1760(小时)
注册时间: 2010-01-03
最后登录: 2024-11-17
查看tkggtdkjpl的 主题 / 回贴
4楼  发表于: 2016-11-21 15:55
数据溢出了,
另外SUM一般是用来做通迅的命令校验用的,你如果是要做运算的话先把16位传到32位存储器,再用运算的指令+  +L
自动化单机,生产线,项目编程调试!