Modbus TCP 示例:
示例:MB_SERVE 多 TCP 連接
可以擁有多個(gè) Modbus TCP 服務(wù)器連接。為此,必須為每個(gè)連接單獨(dú)執(zhí)行 MB_SERVER。每個(gè)連接必須使用單獨(dú)的背景數(shù)據(jù)塊、連接 ID 和 IP 端口。S7-1200 僅允許每個(gè) IP 端口進(jìn)行一個(gè)連接。
為了達(dá)到最佳性能,應(yīng)在每個(gè)程序周期為各個(gè)連接執(zhí)行 MB_SERVER。CONNECT 參數(shù)使用系統(tǒng)數(shù)據(jù)類型 TCON_IP_V4。這些數(shù)據(jù)結(jié)構(gòu)的相關(guān)示例位于名為“Modbus 連接”的數(shù)據(jù)塊中。
“Modbus 連接”數(shù)據(jù)塊包含兩個(gè) TCON_IP_V4 結(jié)構(gòu):“TCPpassive_1”(針對連接 1)和“TCP_passive_2”(針對連接 2)。
程序段注釋中描述的連接屬性 ID 和 LocalPort 為存儲(chǔ)在 CONNECT 數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)元素。TCON_IP_V4 CONNECT 數(shù)據(jù)同時(shí)包含 RemoteAddress ADDR 數(shù)組中的 IP 地址。
TCPpassive_1 和 TCP_passive_2 內(nèi)的 IP 地址分配對建立 TCP 服務(wù)器連接沒有影響,但是會(huì)決定哪些 Modbus TCP 客戶端可通過與各 MB_SERVER 連接進(jìn)行通信。
MB_SERVER 被動(dòng)偵聽 modbus 客戶端消息,并將進(jìn)入消息的 IP 地址與存儲(chǔ)在相應(yīng) RemoteAddress ADDR 數(shù)組中的 IP 地址進(jìn)行比較。
兩個(gè) MB_SERVER 指令可使用以下三種 MB_SERVER IP 地址變量:
● IP 地址 = 0.0.0.0
各 MB_SERVER 將響應(yīng)使用任意 IP 地址的所有 Modbus TCP 客戶端。
● IP 地址 = TCPpassive_1 和 TCPpassive_2 中的 IP 地址相同
兩個(gè) MB_SERVER 連接僅響應(yīng)來自該 IP 地址的 Modbus 客戶端。
● IP 地址 = TCP_passive_1 和 TCP_passive_2 中的 IP 號不同
各 MB_SERVER 僅響應(yīng)來自其 TCON_IP_V4 數(shù)據(jù)中存儲(chǔ)的 IP 地址的 Modbus 客戶端。
程序段 1:連接 #1,背景 DB =“MB_SERVER_DB”、“Modbus connections.TCPpassive_1”內(nèi)(ID = 1 且 LocalPort = 502)
程序段 2:連接 #2,背景 DB =“MB_SERVER_DB_1”、“Modbus connections.TCPpassive_2”內(nèi)(ID = 2 且 LocalPort = 503)
示例:MB_CLIENT 1:通過公共 TCP 連接發(fā)送多個(gè)請求
多個(gè) Modbus 客戶端請求可通過同一連接發(fā)送。為此,必須使用相同的背景數(shù)據(jù)塊、連接 ID 和端口號。
因?yàn)閮蓚€(gè) MB_CLIENT 框使用相同的 CONNECT 參數(shù) TCON_IP_v4 數(shù)據(jù)結(jié)構(gòu) "Modbus_connections".TCPactive_1),因此連接 ID、端口號和 IP 地址均相同。CONNECT IP 地址數(shù)據(jù)分配目標(biāo) Modbus TCP 服務(wù)器的 IP 地址。
在任意給定時(shí)間內(nèi),只能有一個(gè) MB_CLIENT 處于激活狀態(tài)。一個(gè)客戶端完成執(zhí)行后,下一個(gè)客戶端才能開始執(zhí)行。由程序邏輯負(fù)責(zé)執(zhí)行順序邏輯。
本示例所示為兩個(gè)客戶端從單個(gè) Modbus 客戶端讀取遠(yuǎn)程數(shù)據(jù)并將數(shù)據(jù)傳送至 Modbus 客戶端 CPU(從 M1000.0 起始的M 存儲(chǔ)器)。并捕獲返回的錯(cuò)誤(可選)。
程序段 1:Modbus 功能 1 - 從使用“Modbus 連接”.TCPactive_1 中所分配的 IP 地址的 Modbus TCP 服務(wù)器中讀取 16 位輸出位。
程序段 2:Modbus 功能 2 - 從使用“Modbus 連接”.TCPactive_1 中所分配的 IP 地址的 Modbus TCP 服務(wù)器中讀取 32 位輸入位。
示例:MB_CLIENT 3:輸出映像寫入請求
本示例所示為 Modbus 客戶端請求將位數(shù)據(jù)從本地 CPU 存儲(chǔ)區(qū)(起始地址為 M1000.0)傳送至遠(yuǎn)程 Modbus TCP 服務(wù)器。
程序段 1:Modbus 功能 15 - 在 Modbus 服務(wù)器中寫入輸出位
示例:MB_CLIENT 4:協(xié)調(diào)多個(gè)請求
必須確保各個(gè) Modbus TCP 請求都完成執(zhí)行。必須由程序邏輯來控制執(zhí)行順序。下面的示例顯示了首個(gè)和第二個(gè)客戶端請求輸出如何控制執(zhí)行順序。
該示例所示為兩個(gè)客戶端使用同一 CONNECT 連接數(shù)據(jù)(不同時(shí)使用)。
客戶端將保持寄存器數(shù)據(jù)從同一遠(yuǎn)程 Modbus TCP 服務(wù)器傳送至同一本地 CPU 存儲(chǔ)區(qū) M 地址。此外,還捕獲了返回的錯(cuò)誤,這是可選的。
程序段 1:Modbus 功能 3 - 讀取 Modbus TCP 服務(wù)器保持寄存器字
程序段 2:Modbus 功能 3 - 讀取 Modbus TCP 服務(wù)器保持寄存器字
審核編輯:劉清
-
cpu
+關(guān)注
關(guān)注
68文章
11071瀏覽量
216823 -
ModBus協(xié)議
+關(guān)注
關(guān)注
3瀏覽量
34281 -
TCP通信
+關(guān)注
關(guān)注
0文章
146瀏覽量
4538
原文標(biāo)題:S7 1200-Modbus TCP 示例
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
使用協(xié)議棧實(shí)現(xiàn)Modbus TCP客戶端應(yīng)用

Modbus TCP通信報(bào)文解析


Modbus TCP轉(zhuǎn)profinet網(wǎng)關(guān)連接1200plc在博圖軟件快速配置示例# ModbusTCP
Modbus TCP轉(zhuǎn)Modbus RTU的實(shí)現(xiàn)
Modbus TCP如何使用
Modbus/TCP通訊配置

Modbus TCP通訊協(xié)議概述

Modbus RTU和Modbus TCP的區(qū)別
ModBus RTU 與 ModBus TCP
Modbus TCP通訊概述
CCLINK IE FIELD BASIC轉(zhuǎn)MODBUS-TCP網(wǎng)關(guān)MODBUS TCP協(xié)議詳解

EtherCAT轉(zhuǎn)Modbus TCP協(xié)議網(wǎng)關(guān)(JM-ECT-TCP)

MODBUS TCP 轉(zhuǎn) CANOpen

評論