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