第一步:從通信指令庫中調用MB_SERVER,選擇V5.2版本。如下圖:
第二步:為MB_SERVER的CONNECT參數配置對應的數據塊和參數。如下圖:
ID號用來區分不同的連接,如果創建了多個MB_SERVER連接,應設置多個ID號。本地端口號默認選擇502,也可選擇其它。遠程連接伙伴的IP地址和端口號可以不設置。
第三步:創建一些數據塊,作為Modbus TCP的數據Buffer的原始數據,供Modbus客戶端訪問。如下圖:
本例一共創建了5個數據塊,第1個類型為:01過程映像輸出(線圈),第2個類型為:02過程映像輸入(開關輸入),第3個和第4個類型為:03保持寄存器,第5個類型為:04輸入寄存器。第1個和第2個數據塊中定了含有16個布爾類型的元素的一維數組,其余3個數據塊定義了含有16個字類型的元素的一維數組。
第四步:在MB_SERVER的背景數據塊中定義Modbus TCP的數據Buffer,和Modbus地址形成映射關系。如下圖:
注意相同類型的數據的分配與連接,不可疊加但可以以字為單位跳空分配。
第五步:下載程序并用Modbus Poll工具進行數據監控。如下圖:
總結:
如果在MB_SERVER背景數據塊中的Data_Area_Array中定義數據區域,則通過形參MB_HOLD_REG以指針形式傳遞的數據將失效,盡管如此,該參數也不能設置為NULL,且其指向的存儲區應大于等于2個字節;
如果只打算通過形參MB_HOLD_REG指向的數據來作為Modbus TCP的數據,則MB_SERVER背景數據塊中的Data_Area_Array應保持默認參數,不應配置其它參數;
用戶Zui多可在不同數據塊中定義8個數據區域(Data_Area_Array只提供了8組),每個數據塊只能包含一個數據區域。單個MODBUS請求只能對恰好一個數據區域進行讀寫操作。每個數據區域對應于一個MODBUS地址區域。可以在MB_SERVER背景數據塊的靜態變量Data_Area_Array中定義數據區域;
如果要使用的數據區域不到8個,則所需數據區域必須緊密相連,沒有間隙。在處理過程中,數據區域中的第一個空白條目會終止數據區域搜索。例如,如果已定義Data_Area_Array字段元素 1、2、4 和 5,由于字段元素 3 留空,則Data_Area_Array只會識別字段元素 1 和 2;
單個 MODBUS 請求只能對一個數據區域進行讀寫操作。如果要讀取覆蓋多個數據區域的保持性寄存器,則需要多個 MODBUS 請求。
- WinCC7.5SP1組態公共彈出畫面 2024-12-28
- 博途SCL編程實例泵順啟逆停的狀態機 2024-12-28
- Profibus出現通信閃斷故障怎么辦?老師傅總結的這套方案很有用 2024-12-28
- 如何配置S7-1500PLC的系統電源和負載電源 2024-12-28
- WinCC 與S7-1200 PLC 通信 2024-12-28
- S7-1200 Modbus TCP 服務器 2024-12-28
- 基于MPI接口的S7通訊 2024-12-28
- S7-300和S7-200進行MPI通信(STEP7) 2024-12-28
- PROFINET上多個CPU站之間交換數據(智能設備) 2024-12-28
- 西門子Profibus DP接線規范 2024-12-28
- 西門子PLC工業以太網接頭接線 2024-12-28
- 西門子S7-300模塊?擴展IO接線 2024-12-28
- 西門子PLC模塊31xC IO接線 2024-12-28
- CP341作從站(Slave)的Modbus RTU通訊(STEP7) 2024-12-28
- CP341作主站(Master)的Modbus RTU通訊(STEP7) 2024-12-28
聯系方式
- 電 話:18126392341
- 聯系人:梁濤
- 手 機:15267534595
- 微 信:15267534595