本實例我們(men) 介紹下西門子S7-200 SMART PLC如何通過Modbus-RTU協議讀取溫濕度傳(chuan) 感器的數值。實例使用的硬件如下:
- S7-200 SMART CPU ST20;
- 溫濕度傳感器(支持Modbus-RTU協議);
本文包括如下幾個(ge) 主題:
1、溫濕度傳(chuan) 感器外觀、接線及通信參數介紹
2、CPU ST20與(yu) 溫濕度傳(chuan) 感器的接線;
3、CPU ST20的編程;
1、TH10S-B-H溫濕度傳(chuan) 感器外觀、接線及通信參數介紹
本例程使用的溫濕度傳(chuan) 感器能檢測的溫度範圍為(wei) :-40℃~120℃,濕度範圍為(wei) :0%~100% rh,其外觀如下圖所示:
該溫濕度傳(chuan) 感器有四條線,顏色分別是:紅、黑、黃、綠,各線的定義(yi) 如下:
該溫濕度傳(chuan) 感器支持Modbus-RTU協議,相關(guan) 通信參數如下:
- 支持的波特率:1200bps、2400bps、4800bps、9600bps、19200bps,默認為9600bps;
- 通信設置:起始位1位,數據位8位,停止位1位,無校驗位;
- 支持站地址範圍:1~247,默認為1;
- 支持Modbus功能碼0x03讀取數據,數據格式如下表所示:
支持Modbus功能碼0x10或者0x06修改傳(chuan) 感器的站地址或者波特率,數據格式如下表所示:
①0=1200bps;1=2400bps;2=4800bps;3=9600bps;4=19200bps;
2、CPU ST20與(yu) 溫濕度傳(chuan) 感器的接線
本例程使用CPU ST20本體(ti) 集成的串口(編號:Port0)連接溫濕度傳(chuan) 感器。Port0針腳定義(yi) 如下表所示:
需要說明的是,西門子RS485信號線定義(yi) 與(yu) 很多廠家不同:多數廠家定義(yi) RS485信號A線為(wei) 正極,信號B線為(wei) 負極;但是西門子定義(yi) A線為(wei) 負極,信號B線為(wei) 正極。
因此,在本例程中,溫濕度傳(chuan) 感器的黃線(RS485+)應該與(yu) CPU ST20本體(ti) 串口Port0的3號引腳相連;同時,溫濕度傳(chuan) 感器的綠線(RS485-)應該與(yu) Port0的8號引腳相連;
3、CPU ST20的編程
使用S7-200 SMART的庫指令【Modbus RTU Master】中的MBUS_CTRL指令和MBUS_MSG指令來與(yu) 溫濕度傳(chuan) 感器進行Modbus-RTU通信。
MBUS_CTRL指令用來配置Modbus主站的通信參數,需要在每個(ge) 掃描周期都調用。指令各參數含義(yi) 如下:
- Mode:通信協議的類型;0=PPI協議;1=Modbus協議;
- Baud:波特率;
- Parity:校驗位,0=無校驗,1=奇校驗,2=偶校驗;
- Port:端口號,CPU本體串口編號為0,通信板編號為1;
- Timeout:超時的時間值,單位為毫秒;
- Done:指令是否完成;
- Error:指令執行的狀態值,0=沒有錯誤;
指令執行在線狀態如下圖所示:
MBUS_MSG指令用來與(yu) 子站進行數據交換,其各參數含義(yi) 如下:
- First:請求數據交換,需要上升沿信號;
- Slave:從站地址;
- RW:讀取或寫入數據,0=讀取,1=寫入;
- Addr:Modbus寄存器地址;
- Count:要讀取的數據長度;
- DataPtr:數據的存放地址;
- Done:指令是否執行完成,1=完成;
- Error:指令執行的狀態值,0=沒有錯誤;
指令執行在線狀態如下圖所示:
通過狀態圖表,可以監控到讀取的數值為(wei) 293和639,分別表示溫度為(wei) 29.3℃和63.9%rh的濕度,如下圖所示:
好了,這就是CPU ST20通過Modbus-RTU協議讀取溫濕度傳(chuan) 感器數值的例程。