labview modbus 通訊

想情問各位高手
小弟沒有專業的知識背景,嘗試許多次後依舊沒辦法達成,希望版上的高手能解答,救救可憐研究生,以下是相關資訊。目前有使用過python以及上泰提供的軟體確認是可以讀到資料,但使用labview卻無法讀到資料,因此判定是labview程式撰寫有問題。
使用感測器 : DC5110RS
目的 : 讀取感測器的資料並記錄下來
目前的接線方法是利用感測器中RS485的Port將讀到的資訊傳輸到電腦中
目前測試過的範例

  1. continuous serial write and read (此部分在command 輸入hex指令卻沒辦法得到respond)錯誤代碼為1073807339(VISA (Hex 0xBFFF0015) Timeout expired before operation completed)
  2. simple serial (此部分也是錯誤代碼為1073807339(VISA (Hex 0xBFFF0015) Timeout expired before operation completed) )
    想請問各位高手MODBUS (RTU) 通訊的部分,是如何解決有沒有相關的書籍或網站去學習,辛苦大家了!


此圖為感測器的代碼


此程式範例在command的部分輸入hex指令但response讀不出資料

是否沒有結束字元,通常通訊都會在結尾加上結束字元

1個讚


我是用這個Function,參數填一填就好了…

1個讚

MODBUS RTU 沒有結束字元這種東西. 是採固定格式…

1個讚

用這個 Modbus 庫 才比較合理…也比較容易模擬出相同封包.

如果已經有現成程式是能正常運作的, 通常可以透過
SUDT AccessPort Debugger for RS232/422/485 Serial Port 這個工具

在由 VISA api 重新模擬出一樣的封包.

1個讚

ModBus_Test.vi (54.1 KB) CRC-16.vi (11.9 KB)
慶祝自己生日,給你我現在在用的MODBUS RTU 前導通訊框架,其他介面被我砍了,不用問,不回答。

1個讚

生日快樂 謝謝回復~

1.可以先在論壇內找Modbus的範例來用
2.確認一下你感測器的預設通訊位置、鮑率及奇偶同位。再來設定你電腦的COMPORT
3.接著確認你感測器提供的Modbus對應位置表,去讀相對應的位置確定有收到正確回傳資料
4.再來想辦法解封包(UINT8/UINT16/FLOAT…等)得到感測器正確讀值