西門子PLC作為市場占有率非常高的一款PLC,支援Profinet、Profibus、S7、Modbus、TCP等多種通信協定,本案例以S7-1200 PLC為例,主要講述使用西門子PLC作為ModbusTCP伺服器,上位機作為ModbusTCP用戶端的應用場景。西門子S7-1200 PLC并不支援直接ModbusTCP,需要編寫一些PLC程式,PLC程式的主要目的是通信參數及位址映射的設定。
【新閣線上教育 服務号:thinger_as】
1. PLC程式編寫
步 驟 | 操作 | 說明 |
---|---|---|
1 | 通過博圖軟體建立一個新的PLC項目, 根據硬體型号插入新裝置,這裡為 CPU 1214C DC DC DC | |
2 | 輕按兩下PLC的以太網口,設定IP位址, 這裡設定為192.168.1.210 | |
3 | 建立一個新的DB塊用于資料傳輸,定義為DB100,其中<ModbusData為200個 位元組的數組,注意DB塊要去除優化的塊 通路 | |
4 | 打開OB1,将指令MB_SERVER拖拽至OB1的程式段1中,根據操作提示,添加背景資料塊 | |
5 | 将MB_SERVER功能塊各個引腳填寫完整: (1)DISCONNECT設定為False (2)CONNECT_ID設定為1 (3)IP_PORT使用預設502 (4)MB_HOLD_REG使用建立的ModbusData | |
6 | 編譯PLC程式,下載下傳PLC程式 |
2. Modbus位址映射
PLC程式編寫完成後,下一步進行Modbus測試,在測試之前,首先明确Modbus位址與PLC位址的映射關系:
由上表可知,Modbus的0區、1區和3區,分别對應PLC的過程映像輸出、過程映像輸入和過程映像輸入,但實際應用中,這三個區應用較少,主要使用的是4區,4區的映射位址是由自己設定,也就是MB_HOLD_REG。
3. 通信功能測試
下面我們使用ModbusPoll軟體來針對各個區做下簡單的測試,具體如下所示:
- 輸出Q點對應0區:該存儲區是可讀可寫的,可以通過ModbusPoll讀取到PLC中Q點的值,也可以進行寫入,PLC監控及Modbus軟體監控結果如下:
- 輸入I點對應1區:該存儲區是隻讀的,可以通過ModbusPoll讀取到PLC中I點的值,PLC監控及Modbus軟體監控結果如下:
- 過程輸入存儲區對應3區:該存儲區是隻讀的,可以通過ModbusPoll讀取到PLC中輸入存儲區的值,PLC監控及Modbus軟體監控結果如下:
- 建立的DB存儲區對應4區:該存儲區是可讀可寫的,可以通過ModbusPoll讀取到PLC中DB存儲區的值,也可以進行寫入,PLC監控及Modbus軟體監控結果如下:
4. 寫在最後
公司開通了服務号,用于活動通知。針對本群粉絲,直接掃描下方二維碼,關注新閣教育公衆号,背景回複【抽獎】,獎品豐厚,先到先得。