Modbus TCP
概述
S7-1200 CPU V4.1 版與 STEP 7 V13 SP1 一起,擴(kuò)展了 Modbus TCP的功能,可使用增強(qiáng)型 T 塊指令。
出于這個(gè)原因,S7-1200 支持兩組 PtP 指令:
● 早期 Modbus TCP 指令 (頁 1148): 這些 Modbus RTU 指令存在于 S7-1200 的 V4.0版本之前。
● Modbus TCP 指令 (頁 1062): 這些 Modbus TCP 指令提供了早期指令的全部功能。
選擇 Modbus TCP 指令的版本
在 STEP 7 中可使用兩個(gè)版本的 Modbus TCP 指令:
● 版本 3.0 最初在 STEP 7 Basic/Professional V13 中提供。
● 版本 3.1 在 STEP 7 Basic/Professional V13 SP1 中提供。
可以從兼容性和移植便利性方面考慮,選擇將相應(yīng)的指令版本插入用戶程序中。
不要在同一 CPU 程序中同時(shí)使用 3.0 和 3.1 指令版本。 用戶程序的 Modbus TCP
指令必須具有相同的主版本號(hào)(1 1.x、2 2.y 或 V V.z)。
主版本組內(nèi)的各個(gè)指令可具有不同的次版本號(hào) (1.x x)。
單擊指令樹任務(wù)卡上的圖標(biāo)可啟用指令樹的標(biāo)題和列。
要更改 Modbus TCP指令的版本,請(qǐng)從下拉列表中選擇相應(yīng)版本。
可以選擇一組指令或分別選擇各個(gè)指令。
使用指令樹將 Modbus TCP 指令放入程序時(shí),將在項(xiàng)目樹中創(chuàng)建新的 FB 實(shí)例。
在項(xiàng)目樹的“PLC_x > 程序塊 > 系統(tǒng)塊 > 程序資源”(PLC_x > Program blocks > Systemblocks > Program resources) 下可看到新的 FB 實(shí)例。
要確認(rèn)程序中 Modbus TCP指令的版本,必須檢查項(xiàng)目樹的屬性而不是程序編輯器中顯示的框的屬性。
選擇項(xiàng)目樹的 Modbus TCP FB實(shí)例,單擊右鍵,選擇“屬性”(Properties),然后選擇“信息”(Information) 頁查看 ModbusTCP 指令的版本號(hào)。
CONNECT 參數(shù)分配用于建立 PROFINET 連接的數(shù)據(jù)
必須使用全局?jǐn)?shù)據(jù)塊并存儲(chǔ)所需的連接數(shù)據(jù),然后才能在 CONNECT 參數(shù)中引用此DB。
1. 創(chuàng)建新的全局 DB 或使用現(xiàn)有全局 DB 來存儲(chǔ) CONNECT 數(shù)據(jù)。 可使用一個(gè) DB存儲(chǔ)多個(gè) TCON_IP_v4 數(shù)據(jù)結(jié)構(gòu)。 每個(gè) Modbus TCP 客戶端或服務(wù)器連接使用
一個(gè)TCON_IP_v4 數(shù)據(jù)結(jié)構(gòu)。 可在 CONNECT 參數(shù)中引用連接數(shù)據(jù)。
2. 使用有幫助的名稱對(duì) DB 和靜態(tài)變量進(jìn)行命名。 例如,將數(shù)據(jù)塊命名為“Modbus連接”,將靜態(tài)變量命名為“TCPactive_1”(針對(duì) Modbus TCP 客戶端連接
1)。
3. 在 DB 編輯器的“數(shù)據(jù)類型”(Data Type)列中為示例靜態(tài)變量“TCPactive_1”分配系統(tǒng)數(shù)據(jù)類型“TCON_IP_v4”。
4. 擴(kuò)展 TCON_IP_v4 結(jié)構(gòu),從而可以修改連接參數(shù),如下圖所示。
5. 修改 MB_CLIENT 連接的 TCON_IP_v4 結(jié)構(gòu)數(shù)據(jù)。
6. 輸入 MB_CLIENT CONNECT 參數(shù)的 DB 結(jié)構(gòu)引用。 本示例中應(yīng)為“Modbus連接”.TCPactive_1。
修改各 MB_CLIENT 連接的 TCP_IP_v4 DB 數(shù)據(jù)
● InterfaceID: 在設(shè)備組態(tài)窗口中單擊 CPU PROFINET 端口圖像。然后單擊“常規(guī)”(General) 屬性選項(xiàng)卡并使用該處顯示的硬件標(biāo)識(shí)符。
● ID: 輸入一個(gè)介于 1 和 4095 之間的連接 ID 編號(hào)。使用底層TCON、TDISCON、TSEND 和 TRCV 指令建立 Modbus TCP 通信,用于OUC(開放式用戶通信)。
● ConnectionType: 對(duì)于 TCP/IP,使用默認(rèn)值 16#0B(十進(jìn)制數(shù) = 11)。
● ActiveEstablished: 該值必須為 1 或 TRUE。 主動(dòng)連接,由 MB_CLIENT 啟動(dòng)Modbus 通信。
● RemoteAddress: 將目標(biāo) Modbus TCP 服務(wù)器的 IP 地址輸入到四個(gè) ADDR數(shù)組單元中。 例如,如上圖所示輸入 192.168.2.241。
● RemotePort: 默認(rèn)值為 502。該編號(hào)為 MB_CLIENT 試圖連接和通信的 Modbus服務(wù)器的 IP 端口號(hào)。 一些第三方 Modbus 服務(wù)器要求使用其它端口號(hào)。
● LocalPort: 對(duì)于 MB_CLIENT 連接,該值必須為 0。
多個(gè)客戶端連接
Modbus TCP 客戶端支持的并發(fā)連接數(shù)最多為 PLC 允許的開放式用戶通信最大連接數(shù)。
PLC 的連接總數(shù)(包括 Modbus TCP客戶端和服務(wù)器)不得超過支持的開放式用戶通信最大連接數(shù) 。
單獨(dú)的并發(fā)客戶端連接必須遵循以下規(guī)則:
● 各 MB_CLIENT 連接必須使用一個(gè)唯一的背景 DB
● 必須為各 MB_CLIENT 連接分配一個(gè)唯一的服務(wù)器 IP 地址
● 各 MB_CLIENT 連接分配一個(gè)唯一的連接 ID
● 是否需要唯一的 IP 端口號(hào)取決于服務(wù)器組態(tài)
每個(gè)背景 DB 必須使用不同的連接 ID。 總之,背景 DB 和連接 ID成對(duì)使用,且對(duì)每個(gè)連接必須是唯一的。
除了上面列出的 MB_CLIENT 錯(cuò)誤外,也可以從底層傳輸塊通信指令(TCON、TDISCON、TSEND 和TRCV)返回錯(cuò)誤。
CONNECT 參數(shù)分配用于建立 PROFINET 連接的數(shù)據(jù)
必須使用全局?jǐn)?shù)據(jù)塊并存儲(chǔ)所需的連接數(shù)據(jù),然后才能在 CONNECT 參數(shù)中引用此DB。
1. 創(chuàng)建新的全局 DB 或使用現(xiàn)有全局 DB 來存儲(chǔ) CONNECT 數(shù)據(jù)。 可使用一個(gè) DB存儲(chǔ)多個(gè) TCON_IP_v4 數(shù)據(jù)結(jié)構(gòu)。 每個(gè) Modbus TCP 客戶端或服務(wù)器連接使用
一個(gè)TCON_IP_v4 數(shù)據(jù)結(jié)構(gòu)。 可在 CONNECT 參數(shù)中引用連接數(shù)據(jù)。
2. 使用有幫助的名稱對(duì) DB 和靜態(tài)變量進(jìn)行命名。 例如,將數(shù)據(jù)塊命名為“Modbus連接”,將靜態(tài)變量命名為“TCPpassive_1”(針對(duì) Modbus TCP 服務(wù)器連接
1)。
3. 在 DB 編輯器的“數(shù)據(jù)類型”(Data Type)列中為示例靜態(tài)變量“TCPactive_1”分配系統(tǒng)數(shù)據(jù)類型“TCON_IP_v4”。
4. 擴(kuò)展 TCON_IP_v4 結(jié)構(gòu),從而可以修改連接參數(shù),如下圖所示。
5. 修改 MB_SERVER 連接的 TCON_IP_v4 結(jié)構(gòu)數(shù)據(jù)。
6. 輸入 MB_SEVER CONNECT 參數(shù)的 DB 結(jié)構(gòu)引用。 本示例中應(yīng)為“Modbus連接”.TCPpassive_1。
修改各 MB_SERVER 連接的 TCP_IP_v4 DB 數(shù)據(jù)
● InterfaceID: 在設(shè)備組態(tài)窗口中單擊 CPU PROFINET 端口圖像。然后單擊“常規(guī)”(General) 屬性選項(xiàng)卡并使用該處顯示的硬件標(biāo)識(shí)符。
● ID: 為該連接輸入一個(gè)介于 1 和 4095 之間的唯一編號(hào)。 使用底層TCON、TDISCON、TSEND 和 TRCV 指令建立 Modbus TCP 通信,用于OUC(開放式用戶通
信)。 最多允許八個(gè)同步 OUC 連接。
● ConnectionType: 對(duì)于 TCP/IP,使用默認(rèn)值 16#0B(十進(jìn)制值 = 11)。
● ActiveEstablished: 該值必須為 0 或 FALSE。 被動(dòng)連接,MB_SERVER 正在等待Modbus 客戶端的通信請(qǐng)求。
● RemoteAddress: 有兩個(gè)選項(xiàng)。
– 使用 0.0.0.0,則 MB_CLIENT 將響應(yīng)來自任何 TCP 客戶端的 Modbus 請(qǐng)求。
– 輸入目標(biāo) Modbus TCP 客戶端的 IP 地址,則 MB_CLIENT 僅響應(yīng)來自該客戶端 IP地址的請(qǐng)求。 例如,如上圖所示輸入 192.168.2.241。
● RemotePort: 對(duì)于 MB_SERVER 連接,該值必須為 0。
● LocalPort: 默認(rèn)值為 502。該編號(hào)為 MB_SERVER 試圖連接和通信的 Modbus客戶端的 IP 端口號(hào)。 一些第三方 Modbus 客戶端要求使用其它端口號(hào)。
Modbus 和過程映像地址
MB_SERVER 允許進(jìn)入的 Modbus 功能代碼(1、2、4、5 和15)在輸入/輸出過程映像中直接對(duì)位/字進(jìn)行讀/寫。 對(duì)于數(shù)據(jù)傳輸功能代碼(3、6 和16),
MB_HOLD_REG 參數(shù)必須定義為大于一個(gè)字節(jié)的數(shù)據(jù)類型。 下表顯示了 Modbus地址到 CPU 中過程映像的映射。
進(jìn)入的 Modbus 消息功能代碼(3、6 和 16)在 Modbus保持寄存器中讀取/寫入字,該寄存器可以在 M 存儲(chǔ)區(qū)或數(shù)據(jù)塊中。 保持寄存器的類型由MB_HOLD_REG 參
數(shù)指定。
說明
MB_HOLD_REG 參數(shù)分配
Modbus 保持寄存器可以位于標(biāo)準(zhǔn)全局 DB 或 M 存儲(chǔ)區(qū)地址中。
對(duì)于 M 存儲(chǔ)區(qū)地址中的 Modbus 保持寄存器,使用 Any 指針格式。
其格式為P#“位地址”“數(shù)據(jù)類型”“長(zhǎng)度”。 例如 P#M1000.0 WORD 500
下表給出了 Modbus 地址到保持寄存器的映射示例,這種映射用于 Modbus 功能代碼03(讀取字)、06(寫入字)和 16(寫入字)。 DB 地址的實(shí)際上限取決于
每種 CPU型號(hào)的最大工作存儲(chǔ)器限值和 M 存儲(chǔ)器限值。
多個(gè)服務(wù)器連接
可以創(chuàng)建多個(gè)服務(wù)器連接。 單個(gè) PLC 可與多個(gè) Modbus TCP 客戶端建立并發(fā)連接。
Modbus TCP 服務(wù)器支持的并發(fā)連接數(shù)最多為 PLC 允許的開放式用戶通信最大連接數(shù)。
PLC 的連接總數(shù)(包括 Modbus TCP客戶端和服務(wù)器)不得超過支持的開放式用戶通信最大連接數(shù) 。
可在客戶端和服務(wù)器類型的連接之間共享 Modbus TCP 連接。
單獨(dú)的并發(fā)服務(wù)器連接必須遵循以下規(guī)則:
● 各 MB_SERVER 連接必須使用一個(gè)唯一的背景數(shù)據(jù)塊。
● 必須為各 MB_SERVER 連接分配一個(gè)唯一的 IP 端口號(hào)。 每個(gè)端口只能用于 1個(gè)連接。
● 必須為各 MB_SERVER 連接分配一個(gè)唯一的連接 ID。
● 必須為每個(gè)連接(帶有各自的背景數(shù)據(jù)塊)單獨(dú)調(diào)用 MB_SERVER。
連接 ID 對(duì)于每個(gè)單獨(dú)的連接必須是唯一的。 每個(gè)單獨(dú)的背景 DB 必須使用單一的連接ID。 背景 DB 和連接 ID 成對(duì)使用,且對(duì)每個(gè)連接必須是唯一的。
MB_SERVER 變量
下表給出了存儲(chǔ)在 MB_SERVER背景數(shù)據(jù)塊中的公共靜態(tài)變量(可在用戶程序中使用)。
用戶程序可以將數(shù)據(jù)寫入 HR_Start_Offset ,控制 Modbus 服務(wù)器操作??勺x取其它變量以監(jiān)視 Modbus 的狀態(tài)。
HR_Start_Offset
Modbus 保持寄存器地址從 40001 開始。 這些地址與保持寄存器的 PLC存儲(chǔ)器起始地址對(duì)應(yīng)。 不過,可以使用“HR_Start_Offset”變量將 Modbus
保持寄存器的起始地址定義為除 40001 外的其它數(shù)字。
例如,如果保持寄存器起始于 MW100 且長(zhǎng)度為 100 個(gè)字, 則偏移量 20可指定保持寄存器的起始地址為 40021 而不是 40001。小于 40021 和大于 40119
的任何地址都將導(dǎo)致尋址錯(cuò)誤。
Modbus 保持寄存器尋址示例
HR_Start_Offset 是 MB_SERVER 背景數(shù)據(jù)塊中的一個(gè)字?jǐn)?shù)據(jù),用于分配 Modbus保持寄存器的起始地址。 將 MB_SERVER放入程序后,可利用參數(shù)助手下拉列表設(shè)
置該公共靜態(tài)變量。
例如,將 MB_SERVER 放入 LAD 程序段后,可以切換到上一程序段,并分配HR_Start_Offset。 必須在執(zhí)行 MB_SERVER 前分配起始地址。
使用默認(rèn) DB 名稱
輸入 Modbus 服務(wù)器變量:
1. 將光標(biāo)放在參數(shù)字段中,然后輸入 m字符。
2. 從 DB名稱下拉列表中選擇“MB_SERVER_DB”。
3. 從 DB變量下拉列表中選擇“MB_SERVER_DB.HR_Start_Offset”。
MB_SERVER 執(zhí)行條件代碼 1
1 除了上面列出的 MB_SERVER錯(cuò)誤外,也可以從底層傳輸塊通信指令(TCON、TDISCON、TSEND 和TRCV)返回錯(cuò)誤。
CPU 1211C 1211 CPU AC/DC/Rly
1211 CPU DC/DC/DC
1211 CPU DC/DC/Rly
6ES7 211-1BE40-0XB0
6ES7 211-1AE40-0XB0
6ES7 211-1HE40-0XB0
CPU 1212C 1212 CPU AC/DC/Rly
1212 CPU DC/DC/DC
1212 CPU DC/DC/Rly
6ES7 212-1BE40-0XB0
6ES7 212-1AE40-0XB0
6ES7 212-1HE40-0XB0
CPU 1214C 1214 CPU AC/DC/Rly
1214 CPU DC/DC/DC
1214 CPU DC/DC/Rly
6ES7 214-1BG40-0XB0
6ES7 214-1AG40-0XB0
6ES7 214-1HG40-0XB0
CPU 1215C
CPU 1217C
1215 CPU AC/DC/Rly
1215 CPU DC/DC/DC
1215 CPU DC/DC/Rly
1217 CPU DC/DC/DC
6ES7 215-1BG40-0XB0
6ES7 215-1AG40-0XB0
6ES7 215-1HG40-0XB0
6ES7 217-1AG40-0XB0
數(shù)字量擴(kuò)展模塊 SM 1221
SM 1221
SM 1222
SM 1222
SM 1222
SM 1222
SM 1222
SM 1223
SM 1223
SM 1223
SM 1223
SM 1223
8 x 24 V DC 輸入
16 x 24 V DC 輸入
8 x 繼電器輸出
8 x 繼電器雙態(tài)輸出
8 x 24 V DC 輸出
16 x 繼電器輸出
16 x 24 V DC 輸出
8 x 24 V DC 輸入 /8 x 繼電器輸出
8 x 24 V DC 輸入 /8 x 24 V DC 輸出
16 x 24 V DC 輸入 /16 x 繼電器輸出
16 x 24 V DC 輸入 /16 x 24 V DC 輸出
8 x 120/230 V AC 輸入 /8 x 繼電器輸出
6ES7 221-1BF32-0XB0
6ES7 221-1BH32-0XB0
6ES7 222-1HF32-0XB0
6ES7 222-1XF32-0XB0
6ES7 222-1BF32-0XB0
6ES7 222-1HH32-0XB0
6ES7 222-1BH32-0XB0
6ES7 223-1PH32-0XB0
6ES7 223-1BH32-0XB0
6ES7 223-1PL32-0XB0
6ES7 223-1BL32-0XB0
6ES7 223-1QH32-0XB0
模擬量擴(kuò)展模塊 SM 1231
SM 1231
SM 1231
SM 1231
SM 1231
SM 1231
SM 1231
SM 1232
SM 1232
SM 1234
4 x 13 位模擬量輸入
8 x 13 位模擬量輸入
4 x 16 位熱電阻模擬量輸入
4 x 16 位熱電阻模擬量輸入
4 x 16 位熱電偶模擬量輸入
8 x 16 位熱電阻模擬量輸入
8 x 16 位熱電偶模擬量輸入
2 x 14 位模擬量輸出
4 x 14 位模擬量輸出
4 x 13 位模擬量輸入 /2 x 14 位模擬量輸出
6ES7 231-4HD32-0XB0
6ES7 231-4HF32-0XB0
6ES7 231-5ND32-0XB0
6ES7 231-5PD32-0XB0
6ES7 231-5QD32-0XB0
6ES7 231-5PF32-0XB0
6ES7 231-5QF32-0XB0
6ES7 232-4HB32-0XB0
6ES7 232-4HD32-0XB0
6ES7 234-4HE32-0XB0
信號(hào)板數(shù)字量 SB 1221
SB 1221
SB 1222
SB 1222
SB 1223
SB 1223
SB 1223
DC 200 kHz,4 x 24 V DC 輸入
DC 200 kHz,4 x 5 V DC 輸入
DC 200 kHz,4 x 24 V DC 輸出,0.1 A
DC 200 kHz,4 x 5 V DC 輸出,0.1 A
2 x 24 V DC 輸入 /2 x 24 V DC 輸出
DC/DC 200 kHz,2 x 24 V DC 輸入 /2 x 24 V DC 輸出,0.1 A
DC/DC 200 kHz,2 x 5 V DC 輸入 /2 x 5 V DC 輸出,0.1 A
6ES7 221-3BD30-0XB0
6ES7 221-3AD30-0XB0
6ES7 222-1BD30-0XB0
6ES7 222-1AD30-0XB0
6ES7 223-0BD30-0XB0
6ES7 223-3BD30-0XB0
6ES7 223-3AD30-0XB0
信號(hào)板模擬量 SB 1231
SB 1231
SB 1231
SB 1232
1 x 12 位模擬量輸入
1 x 16 位熱電阻模擬量輸入
1 x 16 位熱電偶模擬量輸入
1 x 12 位模擬量輸出
6ES7 231-4HA30-0XB0
6ES7 231-5PA30-0XB0
6ES7 231-5QA30-0XB0
6ES7 232-4HA30-0XB0
通信擴(kuò)展模塊 / 通信板 CM 1278
CM 1241
CM 1241
CM 1243-5
CM 1242-5
CP 1242-7
CB 1241
4 x I/O Link MASTER
RS 485/422
RS 232
PROFIBUS DP 主站模塊
PROFIBUS DP 從站模塊
GPRS 模塊
RS 485
6ES7 278-4BD32-0XB0
6ES7 241-1CH32-0XB0
6ES7 241-1AH32-0XB0
6GK7 243-5DX30-0XE0
6GK7 242-5DX30-0XE0
6GK7 242-7KX30-0XE0
6ES7 241-1CH30-1XB0
TS 模塊
TS Adapter IE Basic
TS Module Modem
TS Module ISDN
TS Module RS232
6ES7 972-0EB00-0XA0
6ES7 972-0MM00-0XA0
6ES7 972-0MD00-0XA0
6ES7 972-0MS00-0XA0
Modbus RTU
概述
S7-1200 CPU V4.1 版本以及 STEP 7 V13 SP1 擴(kuò)展了 Modbus RTU 的功能,可以使用PROFINET 或 PROFIBUS 分布式 I/O 機(jī)架與各類設(shè)備(RFID 閱讀器、GPS
設(shè)備和其它)進(jìn)行通信:
● PROFINET :可以將 S7-1200 CPU 的以太網(wǎng)接口連接至 PROFINET接口模塊??赏ㄟ^機(jī)架中 PtP 通信模塊以接口模塊實(shí)現(xiàn)與 PtP 設(shè)備的串行通信。
● PROFIBUS :在 S7-1200 CPU 機(jī)架左邊插入 PROFIBUS 通信模塊。將PROFIBUS 通信模塊連接至 PROFIBUS 接口模塊的機(jī)架??赏ㄟ^機(jī)架中 PtP
通信模塊以接口模塊實(shí)現(xiàn)與 PtP 設(shè)備的串行通信。
出于這個(gè)原因,S7-1200 支持兩組 PtP 指令:
● 早期 Modbus RTU 指令 :這些 Modbus RTU 指令存在于 S7-1200 的 V4.0版本之前,并且僅可通過 CM 1241 通信模塊或 CB 1241 通信板進(jìn)行串行通信。
● Modbus RTU 指令 :這些 Modbus RTU指令具備早期指令的所有功能,并且增添了連接 PROFINET 和 PROFIBUS 分布式I/O 的功能。借助 Modbus RTU 指令,
您可組態(tài)分布式 I/O 機(jī)架中 PtP 通信模塊與PtP 設(shè)備的之間通信。要使用這些 Modbus RTU 指令,S7-1200 CM 1241模塊的固件版本不得低于 V2.1。
說明
用于 S7-1200 的 V4.1
版本時(shí),可以對(duì)所有類型的點(diǎn)對(duì)點(diǎn)通信使用點(diǎn)對(duì)點(diǎn)指令:串行通信、基于 PROFINET的串行通信和基于 PROFIBUS 的串行通信。STEP 7提供早期點(diǎn)對(duì)點(diǎn)指令的目的
僅是為了支持現(xiàn)有程序。無論對(duì)于 V4.1 CPU 或 V4.0還是更早版本的 CPU,早期指令仍然有效。無須對(duì)之前程序的指令進(jìn)行轉(zhuǎn)換。
選擇 Modbus RTU 指令的版本
在 STEP 7 中可使用兩個(gè)版本的 Modbus RTU 指令:
● 版本 1.1 最初在 STEP 7 Basic/Professional V13 中提供。
● 版本 2.1 在 STEP 7 Basic/Professional V13 SP1 中提供。
可以從兼容性和移植便利性方面考慮,選擇將相應(yīng)的指令版本插入用戶程序中。
不能將兩個(gè)版本的指令用于同一模塊,但不同的模塊可以使用不同版本的指令。
不要在同一 CPU 程序中同時(shí)使用 1.x 和 2.y 指令版本。 用戶程序的 Modbus RTU
指令必須具有相同的主版本號(hào)(1 1.x、2 2.y 或 V V.z)。
主版本組內(nèi)的各個(gè)指令可具有不同的次版本號(hào) (1.x x)。
單擊指令樹任務(wù)卡上的圖標(biāo)可啟用指令樹的標(biāo)題和列
要更改 Modbus RTU
指令的版本,請(qǐng)從下拉列表中選擇相應(yīng)版本。
可以選擇一組指令或分別選擇各個(gè)指令。
使用指令樹將 Modbus RTU 指令放入程序時(shí),將在項(xiàng)目樹中創(chuàng)建新的 FB 實(shí)例。
在項(xiàng)目樹的“PLC_x > 程序塊 > 系統(tǒng)塊 > 程序資源”(PLC_x > Program blocks > Systemblocks > Program resources) 下可看到新的 FB 實(shí)例。
要確認(rèn)程序中 Modbus RTU
指令的版本,必須檢查項(xiàng)目樹的屬性而不是程序編輯器中顯示的框的屬性。
選擇項(xiàng)目樹的 Modbus RTU FB
實(shí)例,單擊右鍵,選擇“屬性”(Properties),然后選擇“信息”(Information) 頁查看 ModbusRTU 指令的版本號(hào)。
可執(zhí)行 Modbus_Comm_Load 來組態(tài)端口以使用 Modbus RTU 協(xié)議。 為使用 ModbusRTU 協(xié)議組態(tài)端口后,該端口只能由 Modbus_Master 或 Modbus_Slave 指令使
用。
對(duì)用于 Modbus 通信的每個(gè)通信端口,都必須執(zhí)行一次 Modbus_Comm_Load 來組態(tài)。
為要使用的每個(gè)端口分配一個(gè)唯一的 Modbus_Comm_Load 背景數(shù)據(jù)塊。 最多可在 CPU中安裝三個(gè)通信模塊(RS232 或 RS485)和一個(gè)通信板 (RS485)。 從啟動(dòng)
OB 調(diào)用Modbus_Comm_Load 并執(zhí)行它一次,或使用第一個(gè)掃描系統(tǒng)標(biāo)記發(fā)起調(diào)用以執(zhí)行它一次。
只有在必須更改波特率或奇偶校驗(yàn)等通信參數(shù)時(shí),才再次執(zhí)行 Modbus_Comm_Load。
如果將 Modbus 庫(kù)與分布式機(jī)架中的模塊結(jié)合使用,則必須在一個(gè)循環(huán)中斷例程中執(zhí)行Modbus_Comm_Load 指令(例如,每秒或每隔 10 秒執(zhí)行一次)。
如果分布式機(jī)架的電源中斷或者卸下了模塊,則在模塊恢復(fù)運(yùn)行時(shí),僅向 PtP 模塊發(fā)送HWConfig 參數(shù)組。 由 Modbus_Master 啟動(dòng)的所有請(qǐng)求都會(huì)超時(shí),并且
Modbus_Slave轉(zhuǎn)入靜默狀態(tài)(對(duì)任何消息均無響應(yīng))。 循環(huán)執(zhí)行 Modbus_Comm_Load解決了這些問題。
將 Modbus_Master 或 Modbus_Slave 指令放入用戶程序中時(shí),將為其分配背景數(shù)據(jù)塊。
指定 Modbus_Comm_Load 指令的 MB_DB 參數(shù)時(shí)將引用該背景數(shù)據(jù)塊。
Modbus_Master 通信規(guī)則
● 必須先執(zhí)行 MB_COMM_LOAD 組態(tài)端口,然后 Modbus_Master指令才能與該端口通信。
● 如果要將某個(gè)端口用于初始化 Modbus 主站請(qǐng)求,則 MB_SLAVE不應(yīng)使用該端口。Modbus_Master執(zhí)行的一個(gè)或多個(gè)實(shí)例可使用該端口,但是對(duì)于該端口,所有
Modbus_Master執(zhí)行都必須使用同一個(gè) Modbus_Master 背景數(shù)據(jù)塊。
● Modbus 指令不使用通信中斷事件來控制通信過程。用戶程序必須輪詢Modbus_Master 指令以了解傳送和接收的完成情況。
● 建議對(duì)于給定的端口,從程序循環(huán) OB 中調(diào)用所有 Modbus_Master執(zhí)行。Modbus_Master指令只能在一個(gè)程序循環(huán)或循環(huán)/延時(shí)執(zhí)行等級(jí)執(zhí)行。它們不能同時(shí)在
兩種執(zhí)行優(yōu)先級(jí)中執(zhí)行。如果一個(gè) Modbus_Master 指令被另一個(gè)執(zhí)行優(yōu)先級(jí)更高的 Modbus_Master取代,將導(dǎo)致不正確的操作。Modbus_Master
指令不能在啟動(dòng)、診斷或時(shí)間錯(cuò)誤執(zhí)行優(yōu)先級(jí)執(zhí)行。
● Modbus_Master 指令啟動(dòng)傳輸后,必須連續(xù)執(zhí)行已啟用 EN輸入的該實(shí)例,直到返回狀態(tài) DONE=1 或狀態(tài) ERROR=1為止。在這兩個(gè)事件其中之一發(fā)生前,一個(gè)特
殊的 Modbus_Master實(shí)例被視為已激活。原始實(shí)例激活后,調(diào)用已啟用 REQ輸入的其它任何實(shí)例都將導(dǎo)致錯(cuò)誤。如果原始實(shí)例的連續(xù)執(zhí)行過程停止,則請(qǐng)求狀態(tài)
保持激活一段時(shí)間,該時(shí)間由靜態(tài)變量“Blocked_Proc_Timeout”指定。一旦超出該時(shí)間段,則下一個(gè)使用激活的 REQ 輸入調(diào)用的 Modbus_Master
指令成為激活實(shí)例。這可以防止單個(gè) Modbus_Master指令獨(dú)占或鎖定對(duì)端口的訪問。如果在由靜態(tài)變量“Blocked_Proc_Timeout”指定的時(shí)間段內(nèi)沒有啟用原始激
活的實(shí)例,則下次執(zhí)行此實(shí)例(未設(shè)置REQ)時(shí)將清除激活狀態(tài)。如果設(shè)置了 REQ,則此次執(zhí)行將啟動(dòng)新的Modbus_Master 請(qǐng)求,如同其它實(shí)例未曾激活一樣。
REQ 參數(shù)
0 = 無請(qǐng)求;1 = 請(qǐng)求將數(shù)據(jù)傳送到 Modbus 從站可使用電平或邊沿觸發(fā)的觸點(diǎn)控制此輸入。只要此輸入啟用,狀態(tài)機(jī)便會(huì)啟動(dòng),以確保在
當(dāng)前請(qǐng)求完成前不允許使用同一背景數(shù)據(jù)塊的任何其它 Modbus_Master發(fā)出請(qǐng)求。在當(dāng)前請(qǐng)求執(zhí)行期間,將捕獲所有其它輸入狀態(tài)并內(nèi)部保存,直到接收到響應(yīng)
或檢測(cè)到錯(cuò)誤。
如果在當(dāng)前請(qǐng)求完成前 REQ 輸入 = 1,從而再次執(zhí)行 Modbus_Master的同一實(shí)例,則不會(huì)進(jìn)行任何后續(xù)傳送。但是,如果當(dāng)前請(qǐng)求已完成,因?yàn)?nbsp;REQ 輸入 =
1 而再次執(zhí)行 Modbus_Master 時(shí),便會(huì)發(fā)出新請(qǐng)求。
DATA_ADDR 和 MODE 參數(shù)用于選擇 Modbus 功能類型
DATA_ADDR(從站中的 Modbus 起始地址):指定要在 Modbus從站中訪問的數(shù)據(jù)的起始地址。
Modbus_Master 指令使用 MODE 輸入而非功能代碼輸入。MODE 和 Modbus地址一起確定實(shí)際 Modbus 消息中使用的功能代碼。下表列出了 MODE 參數(shù)、Modbus
功能代碼和 Modbus 地址范圍之間的對(duì)應(yīng)關(guān)系。
對(duì)于“擴(kuò)展尋址”模式,根據(jù)功能所使用的數(shù)據(jù)類型,數(shù)據(jù)的最大長(zhǎng)度將減小 1 個(gè)字節(jié)或 1 個(gè)字。
DATA_PTR 參數(shù)
DATA_PTR 參數(shù)指向要寫入或讀取的 DB 或 M地址。如果使用數(shù)據(jù)塊,則必須創(chuàng)建一個(gè)全局?jǐn)?shù)據(jù)塊為讀寫 Modbus從站提供數(shù)據(jù)存儲(chǔ)位置。
說明
DATA_PTR 數(shù)據(jù)塊類型必須允許直接尋址該數(shù)據(jù)塊必須允許直接(絕對(duì))尋址和符號(hào)尋址。創(chuàng)建該數(shù)據(jù)塊時(shí),必須選擇“標(biāo)準(zhǔn)”(Standard) 訪問屬性。
DATA_PTR 參數(shù)的數(shù)據(jù)塊結(jié)構(gòu)
● 這些數(shù)據(jù)類型對(duì) Modbus 地址 30001 到 39999、40001 到 49999 和 400001 到465536 的 字讀取有效,對(duì) Modbus 地址 40001 到 49999 和 400001 到
465536的 字寫入也有效。
– WORD、UINT 或 INT 數(shù)據(jù)類型的標(biāo)準(zhǔn)數(shù)組
– 指定的 WORD、UINT 或 INT 結(jié)構(gòu),其中每個(gè)元素都具有唯一的名稱和 16
位數(shù)據(jù)類型。
– 指定的復(fù)雜結(jié)構(gòu),其中每個(gè)元素都具有唯一的名稱以及 16 或 32 位數(shù)據(jù)類型。
● 用于 Modbus 地址 00001 到 09999 的 位讀取和寫入和 10001 到 19999 的位讀取。
– 布爾數(shù)據(jù)類型的標(biāo)準(zhǔn)數(shù)組。
– 唯一命名的布爾變量的已命名布爾結(jié)構(gòu)。
● 盡管不是必需的,但還是建議每個(gè) Modbus_Master指令都具有各自的單獨(dú)存儲(chǔ)區(qū)。此建議的原因在于,如果多個(gè) Modbus_Master指令讀取和寫入同一個(gè)存儲(chǔ)
區(qū),發(fā)生數(shù)據(jù)損壞的可能性會(huì)更大。
● 不要求 DATA_PTR
數(shù)據(jù)區(qū)位于同一個(gè)全局?jǐn)?shù)據(jù)塊中??蓜?chuàng)建一個(gè)具有多個(gè)區(qū)域的數(shù)據(jù)塊供 Modbus讀取、一個(gè)數(shù)據(jù)塊供 Modbus 寫入或一個(gè)數(shù)據(jù)塊用于各個(gè)從站。
上海贊國(guó)自動(dòng)化科技有限公司本著“以人為本、科技先導(dǎo)、顧客滿意、持續(xù)改進(jìn)”的工作方針,致力于工業(yè)自動(dòng)化控制領(lǐng)域的產(chǎn)品開發(fā)、工程配套和系統(tǒng)集成,擁有豐富的自動(dòng)化產(chǎn)品的應(yīng)用和實(shí)踐經(jīng)驗(yàn)以及雄厚的技術(shù)力量,尤其以 PLC復(fù)雜控制系統(tǒng)、傳動(dòng)技術(shù)應(yīng)用、伺服控制系統(tǒng)、數(shù)控備品備件、人機(jī)界面及網(wǎng)絡(luò)/軟件應(yīng)用為公司的技術(shù)特長(zhǎng),幾年來,上海贊國(guó)公司在與德國(guó) SIEMENS公司自動(dòng)化與驅(qū)動(dòng)部門的長(zhǎng)期緊密合作過程中,建立了良好的相互協(xié)作關(guān)系,在可編程控制器、交直流傳動(dòng)裝置方面的業(yè)務(wù)逐年成倍增長(zhǎng),為廣大用戶提供了SIEMENS的最新 技術(shù)及自動(dòng)控制的最佳解決方案, 上海贊國(guó)自動(dòng)化科技有限公司在經(jīng)營(yíng)活動(dòng)中精益求精,具備如下業(yè)務(wù)優(yōu)勢(shì): SIEMENS 可編程控制器 1、 SIMATIC S7 系列PLC、S7200CN、S71200、S7300、S7400、ET200、S7-200SMART、S71500、 2、 邏輯控制模塊 LOGO!230RC、230RCO、230RCL、24RC、24RCL等 3、 SITOP 系列直流電源 24V DC 1.3A、2.5A、3A、5A、10A、20A、40A等 4、HMI 觸摸屏TD200 TD400C TP177,MP277、MP377、KTP、TP、KP等 SIEMENS 交、直流傳動(dòng)裝置 1、 交流變頻器 MICROMASTER系列:MM、MM420、MM430、MM440、G120、 6SE70系列 2、全數(shù)字直流調(diào)速裝置系列:6RA28、6RA70 、6RA80系列 SIEMENS 數(shù)控 伺服 1、數(shù)控系統(tǒng):840DSL、802S/C、802DSL、828D、808D、801D系列 2、伺服驅(qū)動(dòng) :V20、V60、V80、V90、S110、S120系列