信捷PLC Modbus通讯 (Modbus_TCP与Modbus_RTU)
文章目錄
- Modbus通訊
- 一、信捷PLC的Modbus-TCP
- 二、信捷PLC的Modbus-RTU
- 總結
Modbus通訊
Modbus通信協議常用主要為Modbus-RTU、Modbus-ASCII以及Modbus-TCP。本文只討論Modbus-RTU和Modbus-TCP。由于Modbus-RTU協議的連接方式以及連接介質較為多樣(RS-232,RS-485),工業上Modbus-RTU易用性相較于Modbus-TCP協議更有優勢。但是由于連接介質較為簡單,通信的保真程度相較于Modbus-TCP較弱,對于通訊線的屏蔽提出較高要求。以下介紹Modbus-TCP協議與Modbus-RTU協議所傳輸的數據區別。Modbus-RTU
Modbus-RTU通過二進制數據方式直接傳送數據,數據在傳輸中有出現錯誤的可能性,所以每條數據后面都會加上校驗。
地址碼(一個字節),功能碼(一個字節),起始地址(兩個字節),數據(N個字節),校驗碼(兩個字節)五個部分組成。
下面為Modbus-RUT協議發送的某條請求01 03 01 80 00 04 25 DE (讀01 80開始的4個寄存器)本條指令包括地址碼01,功能碼03,目標地址01 80,讀取的寄存器個數00 04,以及校驗碼25 DE。Modbus-TCP
Modbus-TCP一般基于網線一類可靠的連接,所以Modbus-TCP協議中沒有校驗碼。相較于Modbus-RTU協議,Modbus-TCP協議在Modbus-RTU的數據內容前面加報文頭。
報文頭格式:事務處理標識 (2字節), 協議標識(2字節), 長度( 2字節),單元標識符(1字節)
下面為Modbus-TCP協議發送的某條請求00 00 00 00 00 06 00 03 01 80 00 04與上條指令對應。Modbus-RTU與Modbus-TCP之間的區別推薦各位看下面這篇博客講的很清晰。
Modbus RTU與Modbus TCP的區別 - listxue - 博客園
一、信捷PLC的Modbus-TCP
信捷PLC提供多種網絡型號的PLC,XD系列的有XDME、XD5H、XDE;XL系類的有XLH、XL5E等。這類PLC基本單元就配備了RJ45網口,可以直接通過網線跟上位機,或者別的PLC進行通信連接。在這方面我覺得國產品牌還是比較良心,之前用過三菱的模塊,肉疼。當然穩定性這部分我認為信捷還是沒法與三菱比的。
通過RJ45接口與設備進行連接,需要注意的是有的以太網機型有兩個網口,這兩個網口相當于一個交換機上的兩個接口,PLC的IP地址是同一個。
IP設定
要走Modbus-TCP協議,要把設備IP設在同一網段且地址不同,信捷PLC支持自動獲取IP,在沒有網關的情況下信捷PLC出廠默認在192.168.6.X網段。可以在信捷編程軟件的右邊菜單欄的‘網口設置’中更改IP地址。
MODBUS TCP/IP 的通信系統中有兩種類型的設備: MODBUS TCP/IP 客戶端和服務器設備。
信捷的以太網機型PLC做Modbus服務器的時候上電默認開啟監聽 502 端口,等待客戶端連接請求,連接建立成功,響應符合 Modbus TCP 協議規范的數據通訊請求。即連接成功后服務器可以直接被客戶端訪問無需另外寫程序。最大響應不超過 4 個 TCP 連接。
PLC做為Modbus客戶端主動向服務器(TCP Server)發起連接請求,連接建立成功,僅允許客戶端主動發起通訊請求。
PLC的Modbus-TCP通訊我總結為以下幾個過程
1.通過S_OPEN 指令建立 TCP 連接;
2.通過 M_TCP 指令發起 MODBUS 請求;
3.在需要的時候通過S_CLOSE指令終止連接。
結合以下程序解釋更容易
重點看第二行:
我們可以通過配置向導向導設置S_OPEN,配置向導可以選擇套接字、參數起始地址,標志起始地址,以及通訊類型和工作模式
其中若作為客戶端需填寫服務器的IP地址以及端口,默認端口為502。
其中,我個人試過PLC與機械臂控制器建立通信,套接字用K1不行,改K0就可以。
SM1902 為連接網絡設備標志,雙網口的PLC上兩個網口連接標志位分別為SM1902、SM1903。
第二行解釋:當網線插入TCP未連接,每100ms嘗試建立TCP連接。
從下面程序可以看出,一般在出現故障的情況下才使用S_CLOSE主動斷開連接
M_TCP的配置
這里需注意套接字要與上面建立連接所用的套接字相對應。
M_TCP一般放在程序中間需要數據通訊的時候寫。
Modbus通信功能碼
PLC作為服務器的線圈與寄存器對應的的地址太多了就不在這放出來了,并且不同機型對應的不同,具體可以翻閱信捷 PLC編程手冊《XD/XL 系列可編程控制器用戶手冊【基本指令篇】》第 6-2 章節 Modbus 通訊功能篇。
二、信捷PLC的Modbus-RTU
PLC建立Modbus-RTU連接過程有所不同,三菱需要在梯形圖中寫入參數,信捷可以直接在信捷PLC編程軟件中,左邊菜單欄‘串口設置’中設置好直接寫入PLC。
需注意,每個PLC的串口數量不同,串口編號對應的位置不同。以我這臺XDME-30T為例,他的COM1是RS232,COM2是RS485在輸入端子排的右邊AB端口。有些兩個RS232口的排序與我找個可能不同,具體以說明書為準。
Modbus-RTU只要線纜連接好將對應的通訊參數設置以及站號分配好即可,需注意回復超時和發送延時會影響通訊的時間,找個需要通過嘗試找到合適的點。
Modbus-RTU的指令使用方式與上述Modbus-TCP中的M_TCP基本一致。區別在于Modbus-RTU的指令中的站號要與被訪問端站號一一對應。
總結
使用Modbus-TCP和Modbus-RTU的區別在于連接建立的部分。Modbus-RTU可以直接在編程軟件中設置好串口參數方便建立連接,同時多個設備拓撲鏈接不需要額外添加網絡設備。Modbus-TCP則需要在程序中添加連接建立部分以及斷開連接部分。
連接建立的過程不一樣,當連接完成后,使用起來感覺并無太多差別。
同時由于Modbus-TCP通過網線傳播,通信的穩定性較高。通信延時也會保持在較低的水平,Modbus-RTU的通信延時需要自行優化才能達到一個比較理想的狀態。
總結
以上是生活随笔為你收集整理的信捷PLC Modbus通讯 (Modbus_TCP与Modbus_RTU)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 六核cpu安装SQL Server 20
- 下一篇: IIS7.0站点/虚拟目录中访问共享