none
如何讀取modbus TCP連線的該位置資訊 RRS feed

  • 問題

  •  Dim ipAddress As String = "192.168.1.2"  'modbus TCP 設備ip
     Dim tcpPort As Integer = 502                  ' modbus TCP 設備port
    Dim slaveID As Byte = 1   ' modbus TCP 設備ID

     tcpClient = New TcpClient(ipAddress, tcpPort) '建立' modbus TCP 連線

    請問我接下來要如何撰寫才能讀取或寫入特定位置的資訊
    假如今天要讀取Modbus Address的30010是1bytes的float 我該如何撰寫?

    Dim a as Single

    假如今天要寫入Modbus Address的30060的int數值 我該如何撰寫?

    Dim b as Integer

    有經驗的前輩可以幫幫忙教學一下嗎?

    廠商的技術文件下 參考使用05指令
    Tx:00 00 00 00 00 06 03 05 00 01 00 00 
    Rx:00 00 00 00 00 06 03 05 00 01 00 00 

    我要問的其實就是.net上該宣告什麼空間與指令能把上述的資料傳遞到設備上並接收設備回傳的訊號?

    • 已編輯 kuojimmy 2014年10月21日 上午 05:20
    2014年10月20日 上午 03:37

解答

  • (1) 廠商總有通訊協定的說明文件, 你得先了解你的設備廠商怎麼定義協定內容

    (2) 如果只是關於 Tcp 怎麼用, 你可以參考以下的文章

    實作同步 .NET Socket TCP《使用TcpClient與TcpListener類別》


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 kuojimmy 2014年10月21日 上午 07:24
    2014年10月20日 上午 11:53
    版主

所有回覆

  • (1) 廠商總有通訊協定的說明文件, 你得先了解你的設備廠商怎麼定義協定內容

    (2) 如果只是關於 Tcp 怎麼用, 你可以參考以下的文章

    實作同步 .NET Socket TCP《使用TcpClient與TcpListener類別》


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 kuojimmy 2014年10月21日 上午 07:24
    2014年10月20日 上午 11:53
    版主
  • Modbus 中的 1 length = 2 bytes ...

    float 必定是 4 或 8 bytes

    VB 的 Integer 是 4 bytes ,你確定 int 是 4 bytes 嗎?

    Modbus 是大排序, Windows 是 小排序,所以還要做互轉。

    你看過 Modbus TCP protocol 嗎?


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2014年10月20日 下午 01:35