Modbus通讯笔记
主站通過Modbus網絡向從站發送消息,告訴從站自己想要進行的操作,然后由從站執行。
在生產實際中,主站一般是遠程調控中心的主計算機;從站一般指工業現場的RTU(遠程終端單元。將末端檢測儀表和執行機構與遠程調控中心的主計算機連接起來,具有遠程數據采集、控制和通信功能的儀器的統稱。),它能接收主計算機的操作指令,使用檢測儀表獲取實時數據或是控制末端的執行機構動作。
主站從站,主機從機,主站子站這三種說法其實是一樣的
一.串口
通訊采用標準版MODBUS_RTU規約:控制器可使用兩種模式在標準的Modbus網絡上進行通信,分別是ASCII模式和RTU模式。采用MODBUS_RTU規約即使用RTU模式進行通信。
所選的ASCII或RTU方式僅適用于標準的Modbus網絡,它定義了在這些網絡上連續傳輸的消息段的每一位,并決定怎樣將信息打包成消息域以及如何解碼。在其它網絡上(如MAP和Modbus Plus)Modbus消息將被轉成與串行傳輸無關的幀。
報文幀格式
| 功能碼(Function Code Field) |
| 數據域(Data Field) |
| 校驗(Error Check Field) |
地址碼:
占用一個字節,地址碼是每次通訊信息幀的第一字節,范圍0-255(00H~FFH)。
主站沒有地址碼,每臺從站都有且必須是唯一的地址碼。
主站通過地址碼向某一從站發出請求,只有符合地址碼的從站才能響應并回送信息。當從站回送信息時,回送數據仍以其地址碼開始。
主站發送的地址碼表明將發送到的從站地址,即主站的請求發送給誰;而從站返回的地址碼表明回送的從站地址,即表明是哪一個從站響應了主站的請求。
正常情況下,主站發送的地址碼和對應的從站返回的地址碼應該是一樣的。
功能碼:
主站通過發送給從站的信息中的功能碼告訴從站我想要執行怎樣的操作,而從站根據這些功能碼的含義來決定如何操作末端檢測儀表或執行機構。
比如功能碼02H和0FH是一對操作,02H是讓從站讀取多個繼電器的“開/關”狀態,并將這些繼電器的開關狀態返回給主站;0FH是讓從站改變繼電器的“開/關”狀態(主站發送的報文里會指出將哪些繼電器設為開啟狀態,哪些設為關閉狀態),并將改變的結果返回給主站。
根據主站主動向從站發起連接的特性,在程序中,把主站視為客戶端(client),從站作為服務器(server),但這只是為了向網絡的客戶端和服務器靠攏的一種說法。主站連接上從站后,向其發送請求(攜帶幾種功能碼的報文),從站收到請求后,解析報文,根據功能嗎執行相應的操作,并做出回應。這里實際上出現了“一個客戶端對多個服務端”的情況。
總結
以上是生活随笔為你收集整理的Modbus通讯笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: npm uninstall vue-cl
- 下一篇: 验证远程计算机是证书发生错误,win7电