文章目錄
- 前言
- 一、溫濕度傳感器
- 二、傳感器與Smart200接線
- 三、PLC程序
- 四、讀取數據
-
- 以16位整數形式讀取數據
- 以32位浮點形式讀取數據
- 五、參考文獻
前言
正在學習(xi) 西門子plc SMART200的Modbus通訊,手裏正好有一塊淘寶買(mai) 的溫濕度傳(chuan) 感器,型號是SD123-T10,故拿來試試學習(xi) 成果。
一、溫濕度傳感器
1、外觀及引腳
2、默認通訊參數
查詢隨機資料,波特率:9600;無奇偶校驗,8位數據位,停止位1位。
本次,我們(men) 分別用整型和浮點型從(cong) 設備讀取數據。
二、傳感器與Smart200接線
1、西門子Port 0口
SMART200 的Port 0口可以支持Modbus RTU協議,作為(wei) Modbus主站,對傳(chuan) 感器進行讀寫(xie) 。這裏,我們(men) 把PLC當作主站,傳(chuan) 感器當作從(cong) 站。
2、西門子 Port 0 口引腳
這裏我們(men) 要注意下,溫度傳(chuan) 感器的3號引腳(RS485-A)對應西門子連接器3號端口(RS485-B),而溫度傳(chuan) 感器的4號引腳(RS485-B)卻對應西門子連接器的8號端口(RS485-A)。
三、PLC程序
1、調用主站通訊
西門子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站協議庫,見下圖:
這裏有兩(liang) 組通訊庫,一個(ge) Master,一個(ge) Master2,我這裏用的是第一個(ge) ,另外一個(ge) 小夥(huo) 伴們(men) 可以試試。
2、 MBUS_CTRL主站初始化和控製子程序引腳說明
根據上述引腳說明,MBUS_CTRL程序為(wei) :
3、主站讀寫(xie) 子程序MBUS_MSG,引腳說明
根據上述引腳說明,MBUS_MSG程序為(wei) :
這裏的幾個(ge) 參數要重點說下
- Slave是溫濕度傳感器的站號,也叫地址,從樣本上可以查到。
- Addr是要讀取參數的地址,在樣本上也能查到,如16位溫度地址40513。
- Count,是讀取數據個數,比如,要同時讀取16位的溫度和濕度,你這裏就給賦值2,如果隻讀一個參數,這裏賦值就是1。也就是說,當Count=2時,係統從從40513開始,往下再多讀取一個,讀到40514停止。如果count是3,那麽從40513開始,再讀取40514和40515,以此類推。
- DataPtr 是讀取數據指針,指針指向讀取數據的地址。這裏隻能用字節,所以要讀取實際數據,還得進行拚接。
四、讀取數據
以16位整數形式讀取數據
讀取整形16位數據就按上述程序來即可,數據指針為(wei) &VB100,因為(wei) 指針對應8位,所以需要2個(ge) 8位字節組成一個(ge) 自字來裝載數據,也就是VW100是設備內(nei) 溫度的實際讀取值,然後再除以10,得到實際溫度值。
如果同時讀取了濕度,也就是count參數為(wei) 2是,那麽(me) 濕度就是VW102,再除以10後,得到實際濕度值,讀取值見下圖:
根據上圖,實際溫度值為(wei) VW100/10=17°,實際濕度值VW102/10=35%
以32位浮點形式讀取數據
根據設備樣本,溫度和濕度數值可以以浮點形式讀取,那麽(me) 程序要進行修改。
MBUS_CTRL 不需要修改。
MBUS_MSG 修改如下:
a)僅(jin) 讀取浮點溫度
Addr :40516 count =2, 因為(wei) 浮點32位,需要讀取2個(ge) 字的地址組成一個(ge) 雙字代表一個(ge) 浮點。所以count=2. 其他不變。
b) 讀取浮點溫度和濕度
Addr :40516 count =4, 因為(wei) 浮點32位,需要讀取4個(ge) 字的地址代表兩(liang) 個(ge) 32位浮點。所以count=4. 其他不變。
重點:
當你用VD100和VD104 讀取出數據的時候,你發現不對,見下圖:
那是因為(wei) 如果MODBUS tcp對方不是西門子設備時候,讀上來的連續2個(ge) 字要交換高低字。也就是說:
原來VD100=VW100+VW102,但是對方因為(wei) 是非西門子產(chan) 品,高地位要換位,即VD100=VW102+VW100。程序見下圖:
五、參考文獻
1、https://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/smartsms/020.html
2、https://zhuanlan.zhihu.com/p/161890397
3、https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1578456&b_id=64