西門(mén)子S7-1200 Modbus RTU 通信概述
西門(mén)子S7-1200 Modbus RTU 通信概述
Modbus具有兩種串行傳輸模式:分別為ASCII和RTU。Modbus是一種單主站的主從通信模式,Modbus網(wǎng)絡(luò)上只能有一個(gè)主站存在,主站在Modbus網(wǎng)絡(luò)上沒(méi)有地址,每個(gè)從站必須有的地址,從站的地址范圍為0 - 247,其中0為廣播地址,從站的實(shí)際地址范圍為1 - 247。
Modbus RTU通信以主從的方式進(jìn)行數(shù)據(jù)傳輸,在傳輸?shù)倪^(guò)程中Modbus RTU主站是主動(dòng)方,即主站發(fā)送數(shù)據(jù)請(qǐng)求報(bào)文到從站,Modbus RTU從站返回響應(yīng)報(bào)文。
S7-1200以下模塊支持 Modbus RTU通信:
通信模塊/通信板 | 訂貨號(hào) |
CM1241 RS232 | 6ES7 241-1AH32-0XB0 |
CM1241 RS485 | 6ES7 241-1CH30-0XB0 |
CM1241 RS422/485 | 6ES7 241-1CH32-0XB0 |
CB 1241 RS485 | 6ES7 241-1CH30-1XB0 |
注意:
1. 使用通信模塊CM 1241 RS232作為Modbus RTU主站時(shí),只能與一個(gè)從站通訊。
2. 使用通信模塊CM 1241 RS485作為Modbus RTU主站時(shí),則允許建立多與 32 個(gè)從站的通訊。
3. 使用通信板CB 1241 RS485時(shí),CPU 固件必須為 V2.0 或更高版本,且使用軟件必須為STEP 7 Basic V11 或STEP 7 Professional V11 以上更高版本。
S7-1200 Modbus RTU 指令
隨著 TIA PORATL 軟件和 S7-1200 CPU 固件的不斷更新,S7-1200 Modbus RTU 指令也出現(xiàn)了不同的版本。 用戶(hù)需要根據(jù)使用的軟件和硬件,正確選擇使用符合要求的 S7-1200 Modbus RTU 指令來(lái)實(shí)現(xiàn) Modbus RTU 通信。
軟件,硬件要求和指令版本說(shuō)明如下。
軟件 STEP 7 V11 中的 S7-1200 Modbus RTU 指令
軟件 STEP 7 V11版本開(kāi)始,可以從“指令”→“通信處理器”→“MODBUS”下直接調(diào)用 “MB_COMM_LOAD”和“MB_MASTER”或“MB_SLAVE”指令,如下圖1所示:
圖1 Modbus RTU指令
Modbus RTU指令有兩個(gè)版本:分別為V1 和V2。版本V1初在 STEP 7 Basic V10.5 中提供;版本V2 在 STEP 7 Basic/Professional V11 中提供。
軟件 STEP 7 V13 SP1 中的 S7-1200 Modbus RTU 指令
TIA V13 SP1版本軟件中提供了2個(gè)版本的 Modbus RTU指令。如下圖 2 所示:
注意:新版本 Modbus RTU 指令的使用限制條件
新版本 Modbus RTU 指令通過(guò)CM1241通信模塊或CB1241通信板進(jìn)行Modbus RTU通信時(shí),需要滿(mǎn)足如下條件:
a. S7-1200 CPU 的固件版本不能低于V4.1;
b. CM1241通信模塊 V2.1 以上或 CB1241。
圖2. 兩個(gè)版本 Modbus RTU 指令
常問(wèn)問(wèn)題:
S7-1200 是否支持 Modbus ASCII 通信模式?
西門(mén)子不提供支持上述通信模式的的現(xiàn)成指令,需要用戶(hù)自己用自由口模式編程。
Modbus RTU指令V1和V2兩個(gè)版本有什么區(qū)別?
Modbus RTU指令版本 V2 將參數(shù) “REQ” 和 “DONE” 添加到“MB_COMM_LOAD”指令。而且,“MB_MASTER”和“MB_SLAVE ”指令的“MB_ADDR ”參數(shù)現(xiàn)在允許一個(gè) UInt 值以進(jìn)行擴(kuò)展尋址。
同一CPU程序中是否可以同時(shí)使用V1和V2兩個(gè)不同版本的Modbus RTU指令?
不能在同一CPU 程序中同時(shí)使用V1(V1.x)和V2(V2.y)指令版本。用戶(hù)程序的 Modbus 指令必須具有相同的主版本號(hào);主版本組內(nèi)的各個(gè)指令可具有不同的次版本號(hào)。
S7-1200 通信模塊CM1241是否可作為Modbus RTU主站或作為Modbus RTU從站?
對(duì)S7-1200 通信模塊CM1241組態(tài)并編程調(diào)用“MB_COMM_LOAD”指令,可將其設(shè)置為Modbus RTU通信模式。通過(guò)編程調(diào)用“MB_MASTER”指令,S7-1200 通信模塊CM1241可作為Modbus RTU主站,或調(diào)用“MB_SLAVE”指令,S7-1200 通信模塊CM1241可作為Modbus RTU從站。
注意:無(wú)論S7-1200 通信模塊CM1241作為Modbus RTU主站還是從站,都需要調(diào)用“MB_COMM_LOAD”指令進(jìn)行編程。
S7-1200 CM1241/CB1241 Modbus RTU 通信是否支持兩位停止位?
支持。
注意:S7-1200 CM1241/CB1241屬性里可以設(shè)置停止位, 但是該模塊用于 Modbus 通信時(shí),此設(shè)置的停止位無(wú)效, 需要在 Modbus_Commload 指令的背景 DB 里 Static 修改 STOP_BITS停止位數(shù)值為 2。如下圖 3, 4所示:
圖3. CM1241 配置停止位參數(shù)
Modbus_Commload 指令的背景 DB 里 Static 修改 STOP_BITS停止位數(shù)值為 2(默認(rèn)值=1)
WinCC V7.2與S7-1200PLC常規(guī)通信
在新建的連接列表中,創(chuàng)建對(duì)應(yīng)的變量,如圖12.所示。
圖 12. 創(chuàng)建變量
6 通訊診斷
項(xiàng)目激活后,在變量管理界面可以直接觀(guān)察到通訊是否建立,綠勾表示通訊建立,如圖13.所示。通訊建立后在變量管理中組態(tài)相對(duì)應(yīng)的變量。
目錄
自WinCC V7.2版本起,軟件新增加了 “SIMATIC S7-1200, S7-1500 Channel”通道,用于WinCC與 S7-1200/S7-1500 PLC之間的通信。此驅(qū)動(dòng)只支持以太網(wǎng)通訊,使用 TCP/IP 協(xié)議。
文檔示例的軟/硬件環(huán)境
硬件:WinCC項(xiàng)目運(yùn)行的電腦自帶普通以太網(wǎng)卡、CPU 1214C
軟件:WinCC V7.2 Upd6、Simatic NET V8.2 SP1、Step7 V13(用于組態(tài)S7-1200)
1.設(shè)置PLC通訊參數(shù)以及DB塊屬性設(shè)置
在Step7 V13組態(tài)軟件中打開(kāi)S7-1200項(xiàng)目,關(guān)于PLC硬件組態(tài)步驟在此不詳述。
注意,如果您使用固件版本為 V4.0 以上的 S7-1200 CPU,則需要如下額外設(shè)置,才能保證通信正常。
請(qǐng)點(diǎn)開(kāi) CPU 的設(shè)備組態(tài),“屬性->常規(guī)->保護(hù)”里“連接機(jī)制”一項(xiàng)需要勾選“允許從遠(yuǎn)程伙伴(PLCHMIOPC...)使用 PUT/GET 通信訪(fǎng)問(wèn)”,如下圖所示:
在樹(shù)形菜單中打開(kāi)“設(shè)備和網(wǎng)絡(luò)”,打開(kāi)網(wǎng)絡(luò)視圖點(diǎn)擊CPU 1214C 通訊端口,在“屬性”界面中設(shè)置通訊參數(shù),在“子網(wǎng)”列表中可把接口連接到某一子網(wǎng),設(shè)置 “IP地址”和“子網(wǎng)掩碼”參數(shù)。簡(jiǎn)單通訊情況下,可以不用啟用IP路由器,如圖 1. 所示。
圖 1. S7-1200通訊參數(shù)
打開(kāi)項(xiàng)目中“程序塊”,創(chuàng)建DB塊,創(chuàng)建數(shù)據(jù),如圖2.所示。
圖 2. 創(chuàng)建DB塊
注意:WinCC需要讀寫(xiě)的DB塊,不能使用符號(hào)尋址,只能使用尋址。所建的DB塊屬性中需要取消“優(yōu)化的塊訪(fǎng)問(wèn)”,如圖3. 所示。
圖3. DB塊屬性
編寫(xiě)相應(yīng)的PLC程序,下載到實(shí)際硬件。
2. WinCC添加新驅(qū)動(dòng)
在WinCC項(xiàng)目中可添加此驅(qū)動(dòng),如圖4. 所示,打開(kāi)變量管理界面,選擇“變量管理”點(diǎn)擊鼠標(biāo)右鍵,選擇“添加新的驅(qū)動(dòng)程序”,在驅(qū)動(dòng)列表中選擇“SIMATIC S7-1200, S7-1500 Channel”驅(qū)動(dòng)。
圖 4. 添加驅(qū)動(dòng)
3. 電腦網(wǎng)卡參數(shù)設(shè)置
在操作系統(tǒng)網(wǎng)絡(luò)連接中設(shè)置此網(wǎng)卡的IP地址以及子網(wǎng)掩碼,在此例中,IP地址和PLC的IP地址在同一樣網(wǎng)段中,子網(wǎng)掩碼*,如圖5.所示。
圖5.網(wǎng)卡參數(shù)
在PLC和電腦之間接入以太網(wǎng)通訊電纜,測(cè)試電腦與PLC之間物理連接是否正常。選擇操作系統(tǒng)左下角“開(kāi)始”菜單,在下一行運(yùn)行欄中輸入“CMD”命令,然后敲回車(chē)進(jìn)入DOS命令界面。在界面中輸入ping命令,格式:ping <PLC IP地址> 回車(chē)。如果物理連接正常如圖6. 所示;如果顯示超時(shí)或者硬件故障,請(qǐng)檢查IP地址設(shè)置、網(wǎng)卡驅(qū)動(dòng)以及物理網(wǎng)線(xiàn)。
圖6.測(cè)試物理連接
4 設(shè)置PG/PC接口
打開(kāi)電腦的控制面板,選擇“設(shè)置 PG/PC 接口”選項(xiàng),在界面中點(diǎn)擊“應(yīng)用程序訪(fǎng)問(wèn)點(diǎn)”下拉列表,選擇<添加/刪除>,如圖7.所示。
圖7. 設(shè)置PG/PC 接口
在彈出框中“新建訪(fǎng)問(wèn)點(diǎn)”填寫(xiě)“CP-TCPIP”,點(diǎn)擊“添加”按鈕添加訪(fǎng)問(wèn)點(diǎn),如圖8.所示,完成后關(guān)閉對(duì)話(huà)框。
圖8.新建訪(fǎng)問(wèn)點(diǎn)
返回“設(shè)置 PG/PC 接口”界面,“應(yīng)用程序訪(fǎng)問(wèn)點(diǎn)”選擇“CP-TCPIP”,“為使用的接口分配參數(shù)”選擇普通以太網(wǎng)卡的TCPIP協(xié)議,如圖9.所示,完成后點(diǎn)擊“確定“退出。
圖9.設(shè)置訪(fǎng)問(wèn)點(diǎn)
5 WinCC 軟件設(shè)置
鼠標(biāo)右鍵“SIMATIC S7-1200, S7-1500 Channel”驅(qū)動(dòng)下“OMS+”選項(xiàng),選擇“新建連接”新建與S7-1200 PLC的連接。右鍵選擇連接名稱(chēng),選擇“連接參數(shù)”,如圖10.所示。
圖10.新建連接
連接參數(shù)中,“IP地址”填寫(xiě)PLC通訊端口的IP地址,“訪(fǎng)問(wèn)點(diǎn)”填寫(xiě)“設(shè)置 PG/PC接口”中設(shè)置的訪(fǎng)問(wèn)點(diǎn),“產(chǎn)品系列”填寫(xiě)“ S7 1200”,如圖11.所示。