天天看點

S7-1200PLC與上位機ModbusTCP通信

​ 西門子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

S7-1200PLC與上位機ModbusTCP通信
2

輕按兩下PLC的以太網口,設定IP位址,

這裡設定為192.168.1.210

S7-1200PLC與上位機ModbusTCP通信
3

建立一個新的DB塊用于資料傳輸,定義為DB100,其中<ModbusData為200個

位元組的數組,注意DB塊要去除優化的塊

通路

S7-1200PLC與上位機ModbusTCP通信
4 打開OB1,将指令MB_SERVER拖拽至OB1的程式段1中,根據操作提示,添加背景資料塊
S7-1200PLC與上位機ModbusTCP通信
5

将MB_SERVER功能塊各個引腳填寫完整:

(1)DISCONNECT設定為False

(2)CONNECT_ID設定為1

(3)IP_PORT使用預設502

(4)MB_HOLD_REG使用建立的ModbusData

S7-1200PLC與上位機ModbusTCP通信
6 編譯PLC程式,下載下傳PLC程式
S7-1200PLC與上位機ModbusTCP通信

2. Modbus位址映射

PLC程式編寫完成後,下一步進行Modbus測試,在測試之前,首先明确Modbus位址與PLC位址的映射關系:

S7-1200PLC與上位機ModbusTCP通信
由上表可知,Modbus的0區、1區和3區,分别對應PLC的過程映像輸出、過程映像輸入和過程映像輸入,但實際應用中,這三個區應用較少,主要使用的是4區,4區的映射位址是由自己設定,也就是MB_HOLD_REG。

3. 通信功能測試

下面我們使用ModbusPoll軟體來針對各個區做下簡單的測試,具體如下所示:

  • 輸出Q點對應0區:該存儲區是可讀可寫的,可以通過ModbusPoll讀取到PLC中Q點的值,也可以進行寫入,PLC監控及Modbus軟體監控結果如下:
S7-1200PLC與上位機ModbusTCP通信
S7-1200PLC與上位機ModbusTCP通信
  • 輸入I點對應1區:該存儲區是隻讀的,可以通過ModbusPoll讀取到PLC中I點的值,PLC監控及Modbus軟體監控結果如下:
S7-1200PLC與上位機ModbusTCP通信
S7-1200PLC與上位機ModbusTCP通信
  • 過程輸入存儲區對應3區:該存儲區是隻讀的,可以通過ModbusPoll讀取到PLC中輸入存儲區的值,PLC監控及Modbus軟體監控結果如下:
S7-1200PLC與上位機ModbusTCP通信
S7-1200PLC與上位機ModbusTCP通信
  • 建立的DB存儲區對應4區:該存儲區是可讀可寫的,可以通過ModbusPoll讀取到PLC中DB存儲區的值,也可以進行寫入,PLC監控及Modbus軟體監控結果如下:
S7-1200PLC與上位機ModbusTCP通信
S7-1200PLC與上位機ModbusTCP通信

4. 寫在最後

       公司開通了服務号,用于活動通知。針對本群粉絲,直接掃描下方二維碼,關注新閣教育公衆号,背景回複【抽獎】,獎品豐厚,先到先得。

S7-1200PLC與上位機ModbusTCP通信

繼續閱讀