本人是新手,現在手上有一塊儀表采用的是Modbus RTU協議通訊的
現在遇到幾個問題
第一個問題:儀表上一個有一個引數顯示值是-5我想VB中顯示該值
示意幀命令比如發 02 03 00 01 00 01 CRC
接收資料 02 03 FF FC 00 01 CRC
通訊上來幀資料回傳值是FFFC,轉換成十進制是65532,其他正數引數轉換都正常
現在就是這個負數的引數都無法正常顯示
第二個問題:
從VB上去修改儀表上的一個引數,其中有一個引數,比如儀表上顯示9999.9(最大值)
可是通訊上來的卻只有3276.7,寫入時也是一樣我想把這個引數寫成比如3277
可是寫入后最大只能把這個引數改到3276
(因為這個引數有個小數點,小數點不傳送,所以我比想改成3277我要在程式里做*10處理后再發送)
可是3277*10后等于32770,正好卡在整形數最大值32767這個地方不知道是為什么?
就是這個引數寫入最大只能寫和讀到3276.0為止
另外
哪個大神能否給我一個完整的用VB撰寫的用MODBUS RTU協議和儀表通訊的樣例代碼啊
最好是有完整的讀取和修改引數的樣例代碼給我做下參考
uj5u.com熱心網友回復:
工業標準的東西,用別人的庫好了。uj5u.com熱心網友回復:
網上也搜了挺多了沒有合適我這個儀表通訊的類似的代碼可以做參考啊
uj5u.com熱心網友回復:
我手上有VB和基恩士PLC、信捷PLC通訊用標準MODBUS-RTU協議,要不?uj5u.com熱心網友回復:
你要看看你的儀表的手冊或者MODBUS-RTU協議。這里有個進位的問題。也就是說一個整型16位不夠的話要到相鄰的位上去借一位,也就是2個整型才能正確表達你想要的數。發 02 03 00 01 00 01 CRC
0001是你要的地址嗎?
接收資料 02 03 FF FC 00 01 CRC
0001地址顯示 FF FC?那你看看地址0000或者地址0002是不是也有相應改變,你要一起讀出來再在vb程式里面做相應處理改過來才是。
第二個問題原理也同上。16位不夠了,就擴展成32位了?你自己處理看看。
uj5u.com熱心網友回復:
這得看你的儀表的說明書,上邊應該有說明。具體第幾位值是傳回的資料,發送什么命令是更改儀表引數。儀表說明里面有。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/89627.html
下一篇:VB一個簡單的屬性賦值問題
