西門子S7-1500 PLC的 MODBUS TCP通訊

MODBUS TCP 使MODBUS_RTU 協議運行於乙太網,MODBUS TCP 使用TCP/IP 和乙太網在站點間傳送MODBUS 報文,MODBUS TCP 結合了乙太網物理網路和網路標準TCP/IP 以及以MODBUS 作為應用協議標準的資料表示方法。MODBUS TCP 通訊報文被封裝於乙太網TCP/IP 資料包中。與傳統的串列埠方式,MODBUS TCP 插入一個標準的MODBUS 報文到TCP 報文中,不再帶

有資料校驗和地址。

MODBUS TCP使用伺服器與客戶機的通訊方式,由客戶機對伺服器的資料進行讀/寫操作,伺服器響應客戶機。在S7-1500PLC中,CPU整合的乙太網介面、CM/CP都支援MODBUS TCP協議,所使用的通訊函式也是相同的。

下面介紹S7-1500 PLC的 MODBUS TCP通訊,測試中所需要的軟硬體如下:

1、軟體:

TIA V16

Modscan32 用於在PC 中模擬Modbus Client

Modbus Slave 用於在PC 中模擬Modbus Server

2、硬體:

CPU 1511C-1PN V2。0

3、裝置角色及地址:

CPU

裝置型別

IP地址

子網掩碼

CPU 1511C-1PN

伺服器

192。168。1。201

255。255。255。0

下面介紹程式設計組態步驟:

1、新建專案,雙擊“新增新裝置” 選擇CPU1511C-1PN,版本選擇為2。0(需與實際硬體韌體版本一致);

2、開啟S7-1500 PLC的裝置組態,進入裝置組態介面後雙擊CPU進入屬性設定介面,選擇PROFINET介面下的乙太網地址,設定IP地址為192。168。1。201

3、在CPU1511C-1 PN 的OB1 組織塊中新增Modbus TCP Server 功能塊“MB_SERVER”,軟體將提示會為該FB塊增加一個背景資料塊,本例中為DB1“MB_SERVER_DB”,如圖所示

西門子S7-1500 PLC的 MODBUS TCP通訊

4、在CPU1511C-1 PN 中新增一個全域性資料塊用於匹配功能塊“MB_SERVER”的管腳引數“CONNECT”,本例中為資料塊DB3_TCP_Connect,開啟該資料塊,手動輸入一個“TCON_IP_v4”的資料型別,起始值修改如圖:

西門子S7-1500 PLC的 MODBUS TCP通訊

展開DB 塊後其“TCON_IP_v4”的資料型別的各引數設定如下:

Ø

Interfaced 介面硬體標識,可以透過裝置組態,雙擊CPU乙太網介面,選擇系統常數檢視,本案例將硬體識別符號64,寫入該引數的起始值;

Ø

ID

連線ID,每個連線ID必須獨立,本案例為1(修改起始值為1);

Ø

ConnectionType

連線型別,TCP/IP=16#0B,UDP=16#13,預設為16#0B;

Ø

ActiveEstablished

是否主動建立連線,True=主動,預設為False;

Ø

RemoteAddress

通訊夥伴IP地址,設定為0允許遠端任意的IP 建立連線,根據實際情況填寫;

Ø

RemotePort

通訊夥伴埠號,設定為0 允許遠端任意的埠建立連線,根據實際情況填寫;

Ø

LocalPort

本地埠號,預設的Modbus/TCP Server 為502,將502寫入該引數的起始值;

西門子S7-1500 PLC的 MODBUS TCP通訊

建立一個全域性資料塊用於匹配功能塊“MB_SERVER”的管腳引數“MB_HOLD_REG”,本例中為DB2_TCP_Server,用於儲存保持暫存器的通訊資料,需要注意的是該資料塊必須為非最佳化資料塊(支援絕對定址),在該資料塊的屬性中不勾選“最佳化的塊訪問”選項,本案例中管腳 “MB_HOLD_REG”輸入P#DB2。DBX0。0 WORD 10(注意WORD前後輸入空格);

西門子S7-1500 PLC的 MODBUS TCP通訊

MB_HOLD_REG:將全域性資料塊或者位儲存器(M)對映到MODBUS TCP通訊的保持寄存區(4xxx),用於功能碼03(以WORD格式讀取保持暫存器),功能碼06(以WORD格式寫入單個保持暫存器),功能碼16(以WORD格式寫入多個保持結存器)

MODBUS地址

MB_HOLD_REG引數-CPU地址區(案例地址)

40001

MW100

DB2。DBW0

40002

MW102

DB2。DBW2

40003

MW104

DB2。DBW4

40004

MW106

DB2。DBW6

40005

MW108

DB2。DBW8

40010

MW118

DB2。DBW18

上面提到保持暫存器功能塊DB2_TCP_Server與管腳引數“MB_HOLD_REG”關聯,對於其它資料型別,如線圈、離散輸入、輸入暫存器等透過功能塊均已經與S7-1500 的過程映像區進行了對映,其對映地址對應如下:

西門子S7-1500 PLC的 MODBUS TCP通訊

功能塊“MB_SERVER”的其它管腳引數如表所示:

西門子S7-1500 PLC的 MODBUS TCP通訊

設定完上述各管腳引數後,下載程式到CPU,開啟Modsan32應用程式,開啟連線設定下的連線,在彈出對話方塊中,選擇Remote modbusTCP Server,IP輸入1500 CPU設定的IP地址,服務埠設定為502,單擊確認;

按照如圖設定,ID為1,選擇功能碼03(讀取保持暫存器),Address設定為1,Length設定為10

西門子S7-1500 PLC的 MODBUS TCP通訊

在S7-1500 PLC 中開啟DB2,在modscan中修改資料,監控DB2中資料變化如圖

西門子S7-1500 PLC的 MODBUS TCP通訊