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

Modbus TCP通信報文解析


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

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

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

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

MODBUS TCP 轉 CANOpen

評論