西門子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. 寫在最后
公司開通了服務號,用於活動通知。針對本群粉絲,直接掃描下方二維碼,關注新閣教育公眾號,后台回復【抽獎】,獎品豐厚,先到先得。