lilinlin
級別: 探索解密
|
小弟用臺達SA系列PLC通過COM2口通過485通訊采集儀表數據,儀表支持MODBUS協議,RTU模式,儀表地址為40054 和40056為兩個數據,是浮點數,每個數據占用兩個寄存器,如今通訊都連接OK,也查看到D1070到D1085里有讀取的數據,但為什么我寫讀取的是4筆數據,看到D1072里顯示有8筆數據,怎樣將數據轉換成我需要的數據,望哪位高人知道怎樣解決。 |
---|---|
|
qaz222
專業自動化
級別: 探索解密
|
儀表是什么東東啊。發個說明書上來,我幫你看看。是否理解錯誤了? |
|
---|---|---|
|
lilinlin
級別: 探索解密
|
普通的儀表 說支持MODBUS 協議 RTU 給了通訊設置的參數9600 8 EVEN 1, 然后就給了兩個MODBUS地址 40054 40056 對應溶氧絕對值 和溫度,這兩個數值都是浮點數,32位,就是這樣。 |
---|---|
|
chen_0106
深圳市雷姆自動化設備有限公司
級別: 家園常客
|
確認你的儀表數據是二進制浮點或十進浮點數,然后再轉為二進制整數就OK, 118 DEBCD 二進制浮點數→十進制浮點數 119 DEBIN 十進制浮點數→二進制浮點數 129 INT 二進制浮點數→BIN 整數變換 樓主留言:我也是這樣轉換的,是要講數據先存放到其他數據寄存器中嗎,我直接轉換D1073 D1074沒效果,還有顯示出的數據和我儀表上數據不一致啊 ,是要講高地位數據合并嗎 |
|
---|---|---|
|
chen_0106
深圳市雷姆自動化設備有限公司
級別: 家園常客
|
請問儀表中32位浮點的數據高、低位是放于40054和40055地址的方式,高位在40054?還是40055?并且讀出的數據應放于D1050-D1055并已自動轉為16進制的數據,你應用MODRD指令同時讀出40054和40055的值,這兩個數值是放于D1050和D1051中,在讀出指令同條件下用上升沿(如M1123或M1127)把這兩個數據傳到另外的寄存器中,如果原儀表中數據是高低位互換的要高低位合并后再進行對應的浮點數---整數變換,結果就是你要的數據。 樓主留言:我用的是RTU模式,D1050 ,D1051 無效的。恩再試試,謝謝您了 |
|
---|---|---|
|
chen_0106
深圳市雷姆自動化設備有限公司
級別: 家園常客
|
"我用的是RTU模式,D1050 ,D1051 無效的。" 你在哪看到有說D1050在MODBUS RTU中無效? 所有的MODBUS 通信中讀參數都用到這組寄存器的!說明書你仔細看過了嗎? 樓主留言:我看的MODRD指令說明書說使用RTU模式,D1050到D1055無效。方便留個QQ號,聯系您 |
|
---|---|---|
|