MODBUSPN 說明
說明
該 MODBUSPN 指令允許在帶有集成 PN 接口的 CPU 和支持 Modbus/TCP 協(xié)議的伙伴之間進(jìn)行通信。支持功能代碼 1、2、3、4、5、6、15 和 16。根據(jù)參數(shù)分配,該指令可用作客戶端(S7 為客戶端),也可用作服務(wù)器(S7 為服務(wù)器)。使用 MODBUSPN 指令在通信伙伴之間建立連接以傳送數(shù)據(jù)并控制連接終止。
數(shù)據(jù)傳輸期間執(zhí)行以下操作:
發(fā)送時(shí),生成 MODBUS 特定的消息幀報(bào)頭
接收時(shí),檢查 MODBUS 特定的消息幀報(bào)頭
檢查由客戶端尋址的數(shù)據(jù)區(qū)是否存在
發(fā)生錯(cuò)誤時(shí),生成異常消息幀(僅限 S7 為服務(wù)器時(shí))
與組態(tài)的數(shù)據(jù)塊進(jìn)行數(shù)據(jù)傳輸
還將對建立連接、終止連接以及數(shù)據(jù)接收所使用的時(shí)間進(jìn)行監(jiān)視。
“MODBUSPN”指令 V2.0 可用于 S7-300 及 S7-400。通過本地 CPU 接口進(jìn)行連接。使用該指令時(shí),無需其它任何硬件模塊。
指令的工作原理
初始化
在“Init”輸入中有上升沿時(shí)初始化指令 MODBUSPN。
必須根據(jù)設(shè)備組態(tài)分配初始化參數(shù)。
初始化參數(shù)將應(yīng)用于背景 DB。
啟動(dòng)過程中不會(huì)評(píng)估運(yùn)行時(shí)參數(shù)。
將檢查參數(shù)數(shù)據(jù)塊中數(shù)據(jù)的有效性。
如果在 Init 參數(shù)中檢測到上升沿,則執(zhí)行上述操作。如果檢查完成后沒有錯(cuò)誤,則重置 Init,Init_Error 和 Init_Status 顯示 0。
如果在檢查期間出現(xiàn)錯(cuò)誤,則會(huì)顯示在輸出 Init_Error 和 Init_Status 中。只要存在 Init 錯(cuò)誤,就不能通過此塊進(jìn)行 Modbus/TCP 通信。必須首先更正 Init 錯(cuò)誤。
循環(huán)模式
循環(huán)模式下,將在 OB1 或循環(huán)中斷 OB 中調(diào)用 MODBUSPN。
將根據(jù)運(yùn)行時(shí)參數(shù)激活塊功能。
處理作業(yè)期間不會(huì)評(píng)估運(yùn)行時(shí)參數(shù)的更改。
只要未執(zhí)行初始化,就不會(huì)評(píng)估初始化參數(shù)。
處理連接
Modbus客戶端主動(dòng)建立連接。從參數(shù)數(shù)據(jù)塊中的連接參數(shù)讀取所需數(shù)據(jù)。
連接參數(shù)塊中的參數(shù) (active_est) 指定 PN CPU 將作為主動(dòng)通信伙伴還是被動(dòng)通信伙伴。
對于兩種連接類型(主動(dòng)和被動(dòng)),在運(yùn)行時(shí)均會(huì)通過 TCON 指令打開一個(gè)到鏈接伙伴的通信通道。
通過參數(shù)數(shù)據(jù)塊中的 connect_at_startup 參數(shù)指定連接建立的時(shí)間。
通過 MODBUSPN 指令中的 DISCONNECT 參數(shù)終止連接。
“S7 為客戶端”的作業(yè)初始化或“S7 為服務(wù)器”的指令激活
輸出參數(shù)為動(dòng)態(tài)顯示,因此未決狀態(tài)僅持續(xù) 1 個(gè) CPU 周期。也就是說,必須將其復(fù)制到其它存儲(chǔ)區(qū),才能進(jìn)一步處理或在監(jiān)視表中顯示。
S7 為客戶端:作業(yè)初始化
作業(yè)通過觸發(fā)輸入 ENQ_ENR 的上升沿變化激活。根據(jù)輸入?yún)?shù) UNIT、DATA_TYPE、START_ADDRESS、LENGTH 和 WRITE_READ,會(huì)生成 MODBUS 請求幀,并通過 TCP/IP 連接發(fā)送到伙伴站??蛻舳说却?wù)器響應(yīng)的組態(tài)時(shí)間 RECV_TIMEOUT。
如果發(fā)生超時(shí)(服務(wù)器沒有響應(yīng)),則激活的作業(yè)將正常結(jié)束??蓡?dòng)新作業(yè)。
接收到響應(yīng)消息后將執(zhí)行有效性檢查。如果檢查成功,將執(zhí)行所需動(dòng)作,且作業(yè)成功執(zhí)行未出現(xiàn)錯(cuò)誤;輸出 DONE_NDR 置位。如果在檢查期間檢測到錯(cuò)誤,則作業(yè)正常結(jié)束,置位位 ERROR,并在 STATUS 中顯示錯(cuò)誤編號(hào)。
S7 為服務(wù)器:指令激活
指令已準(zhǔn)備好在觸發(fā)輸入 ENQ_ENR 的上升沿接收來自客戶端的請求消息。在這種情況下,服務(wù)器處于被動(dòng)狀態(tài),并等待來自客戶端的消息幀。將檢查接收到的消息幀。如果檢查成功,則對請求消息做出應(yīng)答。DONE_NDR 位置位時(shí),即通知用戶消息通信已完成。此時(shí),已執(zhí)行的函數(shù)會(huì)顯示在輸出 UNIT、DATA_TYPE、START_ADDRESS、LENGTH 和 WRITE_READ 中。
錯(cuò)誤的請求消息或?qū)е洛e(cuò)誤消息。置位位 ERROR,在 STATUS 中顯示錯(cuò)誤編號(hào),并且不處理客戶端的請求。將根據(jù)錯(cuò)誤情況向客戶端發(fā)送異常消息幀。
參數(shù)
下表列出了指令“MODBUSPN”的參數(shù):
參數(shù) | 聲明 | 數(shù)據(jù)類型 | 說明 | 取值范圍 | Init |
---|---|---|---|---|---|
id | Input | WORD | 連接 ID 必須與參數(shù) DB 中相關(guān)的 id 參數(shù)相同。 |
1 到 4095 W#16#1 到 W#16#FFF |
是 |
db_param | Input | BLOCK_DB | 參數(shù) DB 的編號(hào),包含此 Modbus 塊實(shí)例的所有連接和 Modbus 數(shù)據(jù) | 取決于 CPU | 是 |
REG_KEY_DB | Input | BLOCK_DB | 具有可用于授權(quán)的注冊表項(xiàng)的數(shù)據(jù)塊 | 取決于 CPU | 否 |
RECV_TIMEOUT | Input | TIME |
鏈接伙伴接收數(shù)據(jù)的監(jiān)視時(shí)間 可以設(shè)置的最短時(shí)間為 20 ms。 |
T#20ms 到 T#+24d20h31m23s647ms | 否 |
CONN_TIMEOUT | Input | TIME |
建立或終止連接的監(jiān)視時(shí)間 可以設(shè)置的最短時(shí)間為 100 ms。 |
T#100ms 到 T#+24d20h31m23s647ms | 否 |
DISCONNECT | Input | BOOL |
通過該參數(shù),可以控制與 Modbus服務(wù)器建立和終止連接: S7 為客戶端: TRUE:接收到響應(yīng)消息后將立即建立連接。 S7 為服務(wù)器: TRUE:如果 ENQ_ENR = FALSE,連接將終止。 |
TRUE FALSE |
否 |
ENQ_ENR | Input | BOOL |
S7 為客戶端: 在上升沿啟動(dòng)作業(yè) 在服務(wù)器作出響應(yīng)或輸出錯(cuò)誤消息之前,對輸入?yún)?shù)所做的更改不會(huì)生效。 如果在 Modbus 請求期間再次設(shè)置了參數(shù) ENQ_ENR,此后將不會(huì)進(jìn)行任何其它傳輸。 S7 為服務(wù)器: 準(zhǔn)備接收 TRUE 信號(hào) |
TRUE FALSE |
否 |
LICENSED | Output | BOOL |
塊的授權(quán)狀態(tài) 塊已授權(quán) 塊未授權(quán) |
TRUE FALSE |
否 |
CONN_ESTABLISHED | Output | BOOL |
與鏈接伙伴的連接已建立 與鏈接伙伴的連接已終止 |
TRUE FALSE |
否 |
BUSY | Output | BOOL |
編輯 T 函數(shù)(TCON、TDISCON、TSEND 或 TRCV)的狀態(tài) T 函數(shù)正在進(jìn)行中 T 函數(shù)未在進(jìn)行中 |
TRUE FALSE |
否 |
DONE_NDR | Output | BOOL |
S7 為客戶端: TRUE:激活作業(yè)完成,且未出現(xiàn)錯(cuò)誤。 S7 為服務(wù)器: TRUE:已執(zhí)行來自客戶端的請求且已發(fā)送響應(yīng) |
TRUE FALSE |
否 |
ERROR | Output | BOOL |
FALSE:無錯(cuò)誤 TRUE:出錯(cuò)。出錯(cuò)原因由 STATUS 參數(shù)指示。 |
FALSE TRUE |
否 |
STATUS | Output | WORD | 錯(cuò)誤編號(hào)或狀態(tài)信息 | 0 到 FFFF | 否 |
STATUS_FUNC | Output | STRING[8] | 引起 STATUS 中出現(xiàn)的錯(cuò)誤的指令名稱 | 字符 | 否 |
IDENT_CODE | Output | STRING[18] |
授權(quán)的標(biāo)識(shí)號(hào) 可以使用該代碼請求許可證的注冊密鑰REG_KEY。 |
字符 | 否 |
Init_Error | Output | BOOL | TRUE:初始化期間出現(xiàn)錯(cuò)誤。 | TRUE/FALSE | 否 |
Init_Status | Output | WORD | 初始化狀態(tài) | 0 到 FFFF | 否 |
UNIT | InOut | BYTE |
單元標(biāo)識(shí)符 (INPUT 用于客戶端功能,OUTPUT 用于服務(wù)器功能) |
0 到 255 B#16#0 到 B#16#FF |
否 |
DATA_TYPE | InOut | BYTE |
要編輯的數(shù)據(jù)類型: (客戶端功能的 INPUT、服務(wù)器功能的 OUTPUT) 線圈 輸入 保持寄存器 輸入寄存器 |
1 2 3 4 |
否 |
START_ADDRESS | InOut | WORD |
MODBUS 起始地址 (客戶端功能的 INPUT、服務(wù)器功能的 OUTPUT) |
0 到 65535 W#16#0000 到 W#16#FFFF |
否 |
LENGTH | InOut | WORD |
待處理值的數(shù)目(INPUT 用于客戶端功能,OUTPUT 用于服務(wù)器功能) 線圈 讀取功能 寫入功能 輸入 讀取功能 保持寄存器 讀取功能 寫入功能 輸入寄存器 讀取功能 |
1 到 2000 1 到 1968 1 到 2000 1 到 125 1 到 123 1 到 125 |
否 |
WRITE_READ | InOut | BOOL |
寫入訪問或 讀取訪問 (INPUT 用于客戶端功能,OUTPUT 用于服務(wù)器功能) |
TRUE FALSE |
否 |
Init | InOut | BOOL | 在上升沿進(jìn)行初始化 | TRUE/FALSE | 否 |
Modbus 地址的解釋
MODBUS 數(shù)據(jù)模型包括以下區(qū)域:
線圈
輸入
保持寄存器
輸入寄存器
部分系統(tǒng)(例如 MODICON PLC)會(huì)通過寄存器地址或位地址區(qū)分這些存儲(chǔ)器。 例如,偏移量為 0 的保持寄存器被稱為寄存器 40001(存儲(chǔ)器類型 4xxxx,Reference 0001)。
這往往會(huì)引起混淆,因?yàn)橐恍┦謨灾忻枋龌虮硎镜氖?Application Layers 的寄存器地址,而其它手冊使用的是協(xié)議中實(shí)際傳送的寄存器地址/位地址。
MODBUSPN 在其 start、end 和 START_ADDRESS 參數(shù)中使用的是實(shí)際傳送的 Modbus 地址。 也就是說,可通過各個(gè)功能代碼傳送從 0000H 到 FFFFH 的寄存器地址/位地址。
實(shí)例
在參數(shù) DB 中可以按十進(jìn)制或十六進(jìn)制格式指定 Modbus 地址。
參數(shù) | 十進(jìn)制表示法 | 十六進(jìn)制表示法 | 含義 |
data_type | 3 | B#16#3 | 保持寄存器 |
db | 11 | W#16#B | DB 11 |
start | 0 | W#16#0 | 起始地址: 0 |
end | 499 | W#16#1F3 | 結(jié)束地址: 499 |
data_type | 3 | B#16#3 | 保持寄存器 |
db | 12 | W#16#C | DB 12 |
start | 720 | W#16#2D0 | 起始地址: 720 |
end | 900 | W#16#384 | 結(jié)束地址: 900 |
下圖顯示了 SIMATIC 存儲(chǔ)區(qū)與按寄存器劃分和按位劃分的 Modbus 設(shè)備存儲(chǔ)器分配的對比。 分配基于上述參數(shù)分配。
在 Modbus 設(shè)備中:
以黑色顯示的 Modbus 地址表示Data Link Layer;以灰色顯示的地址表示Applikation Layer。
在 SIMATIC 中:
第一列中的 SIMATIC 地址是 DB 中的偏移量。 Modbus 寄存器編號(hào)顯示在括號(hào)中。
Modbus 通信的參數(shù)分配
無需在網(wǎng)絡(luò)編輯器中為使用 CPU 的集成 PN 接口的通信組態(tài)連接。將利用 TCON 和 TDISCON 指令建立和終止連接。
參數(shù)數(shù)據(jù)塊
建立連接和處理 Modbus 消息所需的數(shù)據(jù)在 PLC 數(shù)據(jù)類型 MB_PN_PARAM 中定義。此 PLC 數(shù)據(jù)類型包含連接專用的數(shù)據(jù)結(jié)構(gòu)和 Modbus 參數(shù)結(jié)構(gòu)。
數(shù)據(jù)塊中每個(gè)與通信伙伴的連接都需要一個(gè) PLC 數(shù)據(jù)類型的實(shí)例;可以在其中定義連接參數(shù)和 Modbus 參數(shù)??梢詾楦鱾€(gè)附加連接擴(kuò)展數(shù)據(jù)塊,也可以創(chuàng)建新數(shù)據(jù)塊。
該數(shù)據(jù)塊或這些數(shù)據(jù)塊僅用于連接和 Modbus 參數(shù);請勿用其保存任何其它參數(shù)。
“MODBUSPN”指令的每個(gè)實(shí)例都需要一個(gè)唯一的連接。為該指令的每個(gè)實(shí)例創(chuàng)建一個(gè)單獨(dú)的連接描述結(jié)構(gòu)。
Param_DB 結(jié)構(gòu)
“Connection settings”結(jié)構(gòu)中的連接參數(shù)
在第一個(gè)結(jié)構(gòu)“Connection settings”中,定義連接專用的參數(shù),例如,通信伙伴的本地硬件接口和 IP 地址。指令 TCON 和 TDISCON 使用這些參數(shù)來建立或終止連接。
必須嚴(yán)格遵守連接參數(shù)塊的數(shù)據(jù)結(jié)構(gòu),否則無法建立連接。
“Modbus settings”結(jié)構(gòu)中的 Modbus 參數(shù)
第二個(gè)結(jié)構(gòu)“Modbus settings”中存儲(chǔ)操作模式和地址引用所需的數(shù)據(jù),例如,數(shù)據(jù)塊中映射的 Modbus 區(qū)域和作為 Modbus 服務(wù)器或 Modbus 客戶端的 S7 的操作模式。必須遵守 Modbus 參數(shù)的數(shù)據(jù)結(jié)構(gòu),否則將無法正確處理。
組態(tài)
有兩種組態(tài)連接和 Modbus 參數(shù)的方式可供選擇。
選項(xiàng):
創(chuàng)建新的全局?jǐn)?shù)據(jù)庫并將其打開。添加參數(shù)并為該參數(shù)選擇數(shù)據(jù)類型 MB_PN_PARAM。如果下拉列表中未顯示該數(shù)據(jù)類型,可手動(dòng)輸入。
對于該方式,可在一個(gè)數(shù)據(jù)塊中插入多個(gè)實(shí)例。
選項(xiàng):
通過“添加新塊”(Add new block) 創(chuàng)建新的數(shù)據(jù)塊,并將“類型”(Type) 選擇為 MB_PN_PARAM。帶有已插入連接和 Modbus 結(jié)構(gòu)的新數(shù)據(jù)塊將打開。
該塊為只讀。無法添加任何其它參數(shù)??梢跃庉嫭F(xiàn)有參數(shù)。
更改值
不可在運(yùn)行期間更改參數(shù)數(shù)據(jù)塊中的值。更改參數(shù)后,必須通過 Init = TRUE 重新初始化塊。
“Connection settings”連接參數(shù)
參數(shù) | 說明 | |
---|---|---|
block_length |
該參數(shù)定義連接參數(shù)的長度,且無法更改。 固定值: W#16#40 |
|
id |
為每個(gè)邏輯連接分配一個(gè)新連接 ID。此 ID 在整個(gè) CPU 中必須是唯一的。調(diào)用 MODBUSPN 時(shí)指定 ID;該 ID 將用于 T 塊(TCON、TSEND、TRCV 和TDISCON)的內(nèi)部調(diào)用。 值范圍: W#16#1 到 W#16#FFF |
|
connection_type |
建立連接的連接類型通過 TCON 指令定義。CPU 決定必須要設(shè)置的值。 TCP(兼容模式): B#16#01 針對 CPU 315 或 317 <= FW V2.3 TCP: B#16#11 針對 CPU 315 或 317 >= FW V2.4、IM 151-8 PN/DP CPU、CPU314C、CPU319、CPU412、CPU414 和 CPU416 該信息可能因固件不同而有所不同。 |
|
active_est |
該參數(shù)表示連接建立類型,主動(dòng)或被動(dòng)。Modbus 客戶端負(fù)責(zé)建立主動(dòng)連接而 Modbus 服務(wù)器負(fù)責(zé)建立被動(dòng)連接。 主動(dòng)連接的建立: TRUE 被動(dòng)連接的建立:FALSE |
|
local_device_id | local_device_id 定義所用 PN CPU 的 IE 接口。根據(jù)不同的 PN CPU 類型,需要不同的設(shè)置。 | |
IM 151-8 PN/DP CPU: CPU 314C、315 或 317: CPU 319: CPU 412、414 或 CPU 416 |
B#16#1 B#16#2 B#16#3 B#16#5 |
|
local_tsap_id_len |
參數(shù) local_tsap_id(= 本地端口號(hào))的長度是特定的。 主動(dòng)連接的建立: 0 被動(dòng)連接建立: 2 |
|
rem_subnet_id_len | 目前尚未使用此參數(shù),必須將其分配為 B#16#0。 | |
rem_staddr_len |
指定 rem_staddr 參數(shù)的長度,該參數(shù)為通信伙伴的 IP 地址。如果要通過未指定的連接進(jìn)行通信,則不為伙伴指定 IP 地址。 未指定的連接: B#16#0 指定的連接: B#16#4 |
|
rem_tsap_id_len |
此參數(shù)指示參數(shù) rem_tsap_id 的長度和遠(yuǎn)程通信伙伴的端口號(hào)。 主動(dòng)連接的建立: 2 被動(dòng)連接建立: 0 |
|
next_staddr_len |
在此處定義參數(shù) next_staddr 的長度。 對于 PN 接口: B#16#0 |
|
local_tsap_id | 使用該參數(shù)設(shè)置本地端口號(hào)。表示類型會(huì)因 connection_type 參數(shù)不同而有所不同。CPU 決定值范圍。端口號(hào)在 CPU 中必須唯一。 | |
對于 connection_type B#16#01: local_tsap_id[1] local_tsap_id[2] local_tsap_id[3-16] 對于 connection_type B#16#11: local_tsap_id[1] local_tsap_id[2] local_tsap_id[3-16] |
用十六進(jìn)制格式表示的端口號(hào)low byte 用十六進(jìn)制格式表示的端口號(hào)high byte B#16#00 用十六進(jìn)制表示的端口號(hào)high byte 用十六進(jìn)制格式表示的端口號(hào)low byte B#16#00 |
|
rem_subnet_id | 目前尚未使用此參數(shù),必須將其分配為 0。 | |
rem_staddr | 在此字節(jié)數(shù)組中輸入遠(yuǎn)程通信伙伴的 IP 地址。使用未指定的連接時(shí),不輸入 IP 地址。表示類型取決于 connection_type 參數(shù)。示例:IP 地址 192.168.0.1: | |
對于 connection_type B#16#01: rem_staddr[1] = rem_staddr[2] = rem_staddr[3] = rem_staddr[4] = rem_staddr[5-6]= 對于 connection_type B#16#11: rem_staddr[1] = rem_staddr[2] = rem_staddr[3] = rem_staddr[4] = rem_staddr[5-6]= |
B#16#01 (1) B#16#00 (0) B#16#A8 (168) B#16#C0 (192) B#16#00(保留) B#16#C0 (192) B#16#A8 (168) B#16#00 (0) B#16#01 (1) B#16#00(保留) |
|
rem_tsap_id | 使用該參數(shù)設(shè)置remote端口號(hào)。表示類型會(huì)因 connection_type 參數(shù)不同而有所不同。CPU 決定值范圍。 | |
對于 connection_type B#16#01: rem_tsap_id[1] rem_tsap_id[2] rem_tsap_id[3-16] 對于 connection_type B#16#11: rem_tsap_id[1] rem_tsap_id[2] rem_tsap_id[3-16] |
用十六進(jìn)制表示的端口號(hào)low byte 用十六進(jìn)制表示的端口號(hào)low byte B#16#00 用十六進(jìn)制表示的端口號(hào)high byte 用十六進(jìn)制表示的端口號(hào)low byte B#16#00 |
|
next_staddr |
該參數(shù)定義所用 CP 的機(jī)架和插槽編號(hào)。使用 CPU 的集成 PN 接口時(shí),必須將該參數(shù)設(shè)置為 0。 next_staddr[1-6] B#16#00 |
|
spare | 未使用此參數(shù),必須將其設(shè)設(shè)置為默認(rèn)值 0。 |
“Modbus settings”Modbus 參數(shù)
參數(shù) | 說明 | ||
---|---|---|---|
server_client |
TRUE: S7 是服務(wù)器 FALSE: S7 是客戶端 |
||
single_write |
在“S7 為客戶端”操作模式下,如果參數(shù) single_write = TRUE ,則功能代碼 5 和 6 用于執(zhí)行長度為 1 的寫入作業(yè)。 如果 single_write = FALSE,則功能代碼 15 和 16 用于所有寫入作業(yè)。 |
||
connect_at_startup |
指定連接建立的時(shí)間。 如果將 connect_at_startup 設(shè)置為 TRUE,將在 CPU 重新啟動(dòng)后立即建立連接。此種情況下,只有正確建立連接 (CONN_ESTABLISHED = TRUE) 后才能啟動(dòng)數(shù)據(jù)請求,否則將在 ERROR 和 STATUS 中顯示相應(yīng)的錯(cuò)誤。 FALSE:如果 ENQ_ENR,則連接建立 設(shè)置為TRUE: 重新啟動(dòng)后立即建立連接 |
||
八個(gè)數(shù)據(jù)區(qū) |
S7 存儲(chǔ)器中有八個(gè)可以用于映射 MODBUS 地址的數(shù)據(jù)區(qū)。必須至少定義第一個(gè)數(shù)據(jù)區(qū),其余七個(gè)數(shù)據(jù)區(qū)可選擇性定義。根據(jù)作業(yè)類型,將從數(shù)據(jù)區(qū)讀取數(shù)據(jù)或向其中寫入數(shù)據(jù)。 任何作業(yè)都只能從一個(gè) DB 讀取數(shù)據(jù)或向一個(gè) DB 寫入數(shù)據(jù)。訪問寄存器或位于多個(gè) DB 中的位值時(shí),即使編號(hào)連續(xù)無間隔,也將分為兩個(gè)作業(yè)。組態(tài)時(shí)請務(wù)必注意。 一個(gè)數(shù)據(jù)塊中可以映射的 Modbus 區(qū)(寄存器或位值)數(shù)目比一個(gè)消息幀可以處理的數(shù)目多。 |
||
data_type | data_type 參數(shù)指定該數(shù)據(jù)塊中映射的 MODBUS 數(shù)據(jù)類型。如果在 data_type 中輸入值 0,則不使用相應(yīng)的區(qū)域。 | ||
標(biāo)識(shí)符 0 1 2 3 4 |
數(shù)據(jù)類型 未使用區(qū)域 線圈 輸入 保持寄存器 輸入寄存器 |
數(shù)據(jù)寬度 Bit Bit Word Word |
|
db |
db 參數(shù)指定映射 MODBUS寄存器或下面定義的位值的數(shù)據(jù)塊。DB 編號(hào) 0 為系統(tǒng)保留,不允許使用。 DB 編號(hào) 1 到 65535(W#16#0001 到 W#16#FFFF) 數(shù)據(jù)塊必須比已組態(tài)數(shù)據(jù)所需的長度多兩個(gè)字節(jié)。最后的兩個(gè)字節(jié)供內(nèi)部使用。 |
||
start end |
start 指定 DB 的數(shù)據(jù)字 0 中映射的第一個(gè) Modbus 地址。end 參數(shù)定義最后一個(gè) MODBUS 地址。 對于寄存器訪問,帶有最后一個(gè) Modbus 地址輸入的 S7 DB 中的數(shù)據(jù)字編號(hào)如下計(jì)算: DBW 編號(hào) = (end – start) * 2 對于位訪問,帶有最后一個(gè) Modbus 地址輸入的 S7 DB 中的數(shù)據(jù)字節(jié)編號(hào)如下計(jì)算: DBB 編號(hào) = (end – start + 7) / 8 定義的數(shù)據(jù)區(qū)不得重疊。end 參數(shù)不得小于 start。如果發(fā)生錯(cuò)誤,指令啟動(dòng)將中止并提示錯(cuò)誤。如果兩個(gè)值相同,則將分配一個(gè) Modbus 地址(1 個(gè)寄存器或 1 個(gè)位值)。 在 S7 存儲(chǔ)器區(qū)域映射 MODBUS 地址的示例。 MODBUS 地址 0 到 65535(W#16#0000 到 W#16#FFFF) |
||
internal_send_buffer | 該數(shù)組用于發(fā)送數(shù)據(jù)的指令中。不允許訪問或更改該區(qū)域。 | ||
internal_recv_buffer | 該數(shù)組用于接收數(shù)據(jù)的指令中。不允許訪問或更改該區(qū)域。 |
審核編輯:劉清
-
處理器
+關(guān)注
關(guān)注
68文章
19259瀏覽量
229652 -
S7-300
+關(guān)注
關(guān)注
8文章
225瀏覽量
34292 -
S7-400
+關(guān)注
關(guān)注
1文章
63瀏覽量
14697 -
MODBUS總線
+關(guān)注
關(guān)注
0文章
22瀏覽量
10025 -
TCP通信
+關(guān)注
關(guān)注
0文章
146瀏覽量
4221
原文標(biāo)題:西門子博途: MODBUSPN
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論