西門子 S7–1200 PLC 與 RS485 Modbus RTU 裝置連線 (使用 Modbus_Comm_Load 指令)

Yu
5 min readJan 4, 2023

--

PLC 為主站,溫溼度計為從站 (RS-485 二線式)

S7–1200 Modbus RTU 通訊要注意的細節和設定的參數不少,以下會分幾個步驟

  1. 檢查 CPU 韌體版本
  2. 檢查 CM-1241 韌體版本
  3. Modbus_Comm_Load 參數設定
  4. Modbus_Master 參數設定
  5. Receive_Reset 參數設定

Modbus 通訊指令

打開手冊會發現 TIA 的 Modbus RTU 通訊指令有 2 種。

MODBUS 分類下 MB_ 開頭的指令,是早期的通訊指令。只支援 S7–1200 CPU 韌體版本 4.0 以下的模組。

Modbus (RTU) 分類下 Modbus_ 開頭的指令,是較新的通訊指令。支援 S7–1200, S7–1500, ET-200 系列的串列通訊模組。以 S7–1200 來說需要注意的是CPU 韌體版本要 4.1 (含)以上的模組,CM-1241 韌體版本要 2.1 (含)以上的模組。以下的範例會以新指令做示範。

韌體版本不符合的話,是怎麼通都通不起來。由於篇幅關係,本文不會介紹 Update Firmware 的相關資料。

Modbus 通訊指令的差異
透過 Online & diagnostics 查詢 Firmware 版本

設定 Modbus_Comm_Load (修改後需要重新觸發)

這步驟是要設定串列通訊參數,雖然可以透過硬體規劃設定相關參數,但最好還是設定一下。如果從硬體規劃設定參數,每次修改後都需要重新下載硬體規劃。用 Modbus_Comm_Load 設定參數的話,每次修改後重新觸發 REQ 就好,這指令可以覆寫掉部分硬體規劃的參數。

這次要設定的 Serial Protocol 是 9600, 8, N, 1 (Modbus RTU RS-485)
Baud Rate : 9600
Data Bit : 8 (指令不開放設定,也不用設定)
Stop Bit : 1
Check Bit : None
依序設定相關參數就可以。

需要注意以下這幾個參數
.PORT : 是通訊模組的 Port No. 可以從硬體規劃找到,或點二下進行設定。
.MODE : 是電氣規範 RS-232 / RS-422 / RS-485 的設定。需要手動設定,沒有開放在 Input 變數。
.STOP_BITS : 需要手動設定,沒有開放在 Input 變數。
.MB_DB : 是其他指令 (Modbus_Master / Modbus Slave) 的結構變數。依接下來用到的指令進行設定。

Port 查詢
Modbus_Comm_Load 參數說明
Modbus_Comm_Load

設定 Modbus_Master

這步驟是要設定 Modbus RTU 通訊參數。

需要注意以下這幾個參數

.REQ : 盡量使用 Pulse 觸發。
.MB_ADDR : 是從站站號。
.MODE : 與 Modbus 的 Function Code 有關,讀是 0,寫是 1。
.Address : 從站位址。通不起來就 +1, -1 試試。
.DATA_PAR : Array of Word。可以用 DB,但不要勾選 DB 最佳化 (Optimized Block Access)

Modbus_Master 參數說明
Modbus_Master
DB Setting

補充說明

Modbus_Comm_Load 和 Modbus_Master 這 2 個指令都是從 PtP Communication 的相關指令延伸來的。因此有時候接收資料前,可以用 Receive_Reset 指令來清除通訊模組的 Buffer。

--

--

No responses yet