二郎神
級別: 探索解密
|
硬件組成:FX3U-16MT+FX3U-485BD+485儀表 采用8位數據模式,M8161=ON 讀取儀表數據命令幀(16進制):01 03 00 04 00 01 C5 CB PLC發(fā)送RS程序:M8000 RS D200 K8 D100 K7 當接收存儲器高位D103值小于等于K127時正常。 當接收存儲器高位D103值大于K127時解析數據變負數了。 用串口助手測試過讀取值正常,但在PLC程序解析就不對了,不知道問題出在哪里? 大家?guī)兔纯矗x謝了。 |
---|---|
|
夢雨天涯
微信hui530527 &
級別: 網絡英雄
|
先測試不需要校驗碼的,也是就是自己算出校驗碼,直接發(fā)送過去 |
|
---|---|---|
|
tingfenghu
級別: 工控俠客
|
寄存器是8位二進制0和1,不分正負,主要看怎么處理數據, 有符號值FF對應-128~127,無符號對應該是0-255, 檢查接收的數值沒問題?數值正確,更改一下有符號和無符號顯示就可以。 |
|
---|---|---|
|
二郎神
級別: 探索解密
|
跟校驗碼沒關系,我已經在發(fā)送命令幀中直接包含了,末端兩位就是校驗碼。 |
---|---|
|
二郎神
級別: 探索解密
|
接收數值沒有問題,應該是我處理數據的方法不對。PLC單個寄存器是16位的,保存數據范圍-32767-32767,而RS指令采用8位數據模式時只處理低8位的值。 |
---|---|
|
tingfenghu
級別: 工控俠客
|
16位數據需要將兩個寄存器合并。 |
|
---|---|---|
|