ge以路過
級別: 正式會員
精華主題: 0
發(fā)帖數(shù)量: 7 個
工控威望: 97 點
下載積分: 556 分
在線時間: 5(小時)
注冊時間: 2015-10-04
最后登錄: 2019-04-23
查看ge以路過的 主題 / 回貼
樓主  發(fā)表于: 2016-10-29 21:39
在學(xué)習(xí)通訊,要做一個MODBUS ASCII 碼的通訊,但是在算LRC校驗值的時候,用到SUM指令,計算出的結(jié)果卻不對,找不到那里問題,控制字是正確的,


具體情況是


        總共從D10 到D15有六個寄存器的值要加,結(jié)果總是不對,我就把控制字改為兩個相加,在改為三個相加,再改為四個相加,結(jié)果都正確,就是改為五個相加,結(jié)果就開始出錯,不知道那里問題。(開機(jī)A200.11初始化bset   D0 到D30的值為0,D10到D15的值是運行過程中我MOV進(jìn)的常數(shù)值)


        很苦惱,求救!!
fengyueye
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 16 個
工控威望: 104 點
下載積分: 1956 分
在線時間: 69(小時)
注冊時間: 2016-03-16
最后登錄: 2024-09-14
查看fengyueye的 主題 / 回貼
1樓  發(fā)表于: 2016-10-31 08:45
寄存器的的存儲長度是有限的,前4個對,繼續(xù)累加出錯,估計是數(shù)據(jù)溢出了。
chenjun8612
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 89 個
工控威望: 214 點
下載積分: 663 分
在線時間: 130(小時)
注冊時間: 2013-02-27
最后登錄: 2024-10-20
查看chenjun8612的 主題 / 回貼
2樓  發(fā)表于: 2016-11-21 15:24
把值轉(zhuǎn)為浮點再相加
時時勤拂拭,莫使惹塵埃!
tkggtdkjpl
工欲善其事,必先利其器!
級別: 網(wǎng)絡(luò)英雄

精華主題: 1 篇
發(fā)帖數(shù)量: 3441 個
工控威望: 20977 點
下載積分: 26745 分
在線時間: 1754(小時)
注冊時間: 2010-01-03
最后登錄: 2024-10-30
查看tkggtdkjpl的 主題 / 回貼
3樓  發(fā)表于: 2016-11-21 15:53
16位存儲器最大值是65535,帶符號是是32767 這是常識
自動化單機(jī),生產(chǎn)線,項目編程調(diào)試!
tkggtdkjpl
工欲善其事,必先利其器!
級別: 網(wǎng)絡(luò)英雄

精華主題: 1 篇
發(fā)帖數(shù)量: 3441 個
工控威望: 20977 點
下載積分: 26745 分
在線時間: 1754(小時)
注冊時間: 2010-01-03
最后登錄: 2024-10-30
查看tkggtdkjpl的 主題 / 回貼
4樓  發(fā)表于: 2016-11-21 15:55
數(shù)據(jù)溢出了,
另外SUM一般是用來做通迅的命令校驗用的,你如果是要做運算的話先把16位傳到32位存儲器,再用運算的指令+  +L
自動化單機(jī),生產(chǎn)線,項目編程調(diào)試!