Modbus TCP 示例:
示例:MB_SERVE 多 TCP 連接
可以擁有多個 Modbus TCP 服務器連接。為此,必須為每個連接單獨執行 MB_SERVER。每個連接必須使用單獨的背景數據塊、連接 ID 和 IP 端口。S7-1200 僅允許每個 IP 端口進行一個連接。
為了達到最佳性能,應在每個程序周期為各個連接執行 MB_SERVER。CONNECT 參數使用系統數據類型 TCON_IP_V4。這些數據結構的相關示例位于名為“Modbus 連接”的數據塊中。“Modbus 連接”數據塊包含兩個 TCON_IP_V4 結構:“TCPpassive_1”(針對連接 1)和“TCP_passive_2”(針對連接 2)。程序段注釋中描述的連接屬性 ID 和 LocalPort 為存儲在 CONNECT 數據結構中的數據元素。TCON_IP_V4 CONNECT 數據同時包含 RemoteAddress ADDR 數組中的 IP 地址。TCPpassive_1 和 TCP_passive_2 內的 IP 地址分配對建立 TCP 服務器連接沒有影響,但是會決定哪些 Modbus TCP 客戶端可通過與各 MB_SERVER 連接進行通信。MB_SERVER 被動偵聽 modbus 客戶端消息,并將進入消息的 IP 地址與存儲在相應 RemoteAddress ADDR 數組中的 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 數據中存儲的 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 連接發送多個請求
多個 Modbus 客戶端請求可通過同一連接發送。為此,必須使用相同的背景數據塊、連接 ID 和端口號。
因為兩個 MB_CLIENT 框使用相同的 CONNECT 參數 TCON_IP_v4 數據結構 “Modbus_connections”.TCPactive_1),因此連接 ID、端口號和 IP 地址均相同。CONNECT IP 地址數據分配目標 Modbus TCP 服務器的 IP 地址。
在任意給定時間內,只能有一個 MB_CLIENT 處于激活狀態。一個客戶端完成執行后,下一個客戶端才能開始執行。由程序邏輯負責執行順序邏輯。本示例所示為兩個客戶端從單個 Modbus 客戶端讀取遠程數據并將數據傳送至 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 客戶端請求將位數據從本地 CPU 存儲區(起始地址為 M1000.0)傳送至遠程 Modbus TCP 服務器。
程序段 1:Modbus 功能 15 - 在 Modbus 服務器中寫入輸出位
示例:MB_CLIENT 4:協調多個請求
必須確保各個 Modbus TCP 請求都完成執行。必須由程序邏輯來控制執行順序。下面的示例顯示了首個和第二個客戶端請求輸出如何控制執行順序。
該示例所示為兩個客戶端使用同一 CONNECT 連接數據(不同時使用)。客戶端將保持寄存器數據從同一遠程 Modbus TCP 服務器傳送至同一本地 CPU 存儲區 M 地址。此外,還捕獲了返回的錯誤,這是可選的。
程序段 1:Modbus 功能 3 - 讀取 Modbus TCP 服務器保持寄存器字
程序段 2:Modbus 功能 3 - 讀取 Modbus TCP 服務器保持寄存器字
編輯:lyn
-
IP
+關注
關注
5文章
1658瀏覽量
149334 -
TCP
+關注
關注
8文章
1351瀏覽量
78989 -
S71200
+關注
關注
0文章
14瀏覽量
3533
原文標題:S7 1200-Modbus TCP 示例
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論