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