圖1
本文主要使用本公司的EPC6450-AWI型號工控板,外接使用Modbus RTU協(xié)議傳輸?shù)臏貪穸?a href="http://www.xsypw.cn/tags/變送器/" target="_blank">變送器,讀取相關溫濕度數(shù)據,并創(chuàng)建UDP服務器,向PC機上的UDP客戶端實時發(fā)送溫濕度數(shù)據。 ??入門基礎本章內容,主要使用modbus_master_in、modbus_parse_in、fscript、log、push、udp_server_ex節(jié)點。用戶在進行閱讀之前,需具備一定基礎的AWFlow Designer開發(fā)經驗。若剛開始接觸,可閱讀以下文章,進行基礎知識的學習。
-
EsDAMPC-ZC1入門(一)——軟件安裝
-
EsDAMPC-ZC1入門(二)——LED控制
-
EsDA應用串口服務器——UDPServer
圖2
2. USB轉TTL類型串口設備圖3
3. 溫濕度變送器(ModbusRTU協(xié)議,RS485接口)圖4此傳感器,內部使用了Modbus RTU協(xié)議,數(shù)據分別存儲在地址為0(溫度)和1(濕度)上。
4. Type-C線、網線、杜邦線若干圖5
??硬件連接圖圖6將USB轉TLL接口與DUART接口相接(此處注意RXD接TXD,TXD接RXD),Type-C供電線與工控板Type-C接口相接,網口接eth0接口,溫濕度變送器上的A/B信號線分別與工控板上的RS485A/RS485B相連,+電源線接于5V,-地線接于GND。 ??本章流圖解析 圖71. 本流圖節(jié)點列表
-
modbus_master_in節(jié)點,該節(jié)點負責讀取從機的相關寄存器地址中的數(shù)據。
-
modbus_parse_in節(jié)點,該節(jié)點負責解析modbus_master_in獲取的數(shù)據,將數(shù)據轉化成對應類型的數(shù)值數(shù)組。
-
fscript1節(jié)點,該節(jié)點主要負責對modbus_parse_in節(jié)點所生成的數(shù)值數(shù)組進行提取,并格式化輸出對應的溫濕度數(shù)據。
-
fscript2節(jié)點,該節(jié)點主要負責對PC上的UDP客戶端發(fā)送的數(shù)據流進行讀取與解析,并傳送給log節(jié)點。
-
log節(jié)點,該節(jié)點主要負責把接收到的fscript節(jié)點輸出的數(shù)據,顯示于串口與調試口。
-
push節(jié)點,該節(jié)點主要負責將接收到的fscript節(jié)點輸出的數(shù)據,傳送至udp_server_ex節(jié)點。
-
udp_server_ex節(jié)點,該節(jié)點主要負責將得到的push節(jié)點數(shù)據,轉發(fā)給PC上位機上的UDP客戶端。
通過RS485接口與Modbus RTU協(xié)議讀取溫濕度變送器的數(shù)據,對該數(shù)據進行數(shù)值化生成對應的數(shù)值數(shù)組,對生成的數(shù)值數(shù)組進行提取,格式化輸出對應的溫濕度情況,并將信息顯示在串口與調試窗口上,以及發(fā)送至PC上位機上的UDP客戶端窗口。
??節(jié)點解析1. modbus_master_in節(jié)點圖8該節(jié)點關鍵參數(shù)一覽:
主機參數(shù)配置,此處配置與配置串口參數(shù)同理,配置如下:-
讀取模式,該屬性將決定節(jié)點的觸發(fā)方式。分別有:(1)循環(huán)讀取數(shù)據,該模式節(jié)點將以用戶設定的周期定時輸出數(shù)據,如周期內數(shù)據未被刷新,則在下一周期輸出;(2)根據輸入的信息讀取從機設備的數(shù)據,讀取成功則向下一節(jié)點輸出數(shù)據。可使用push節(jié)點向此節(jié)點輸入讀取所需要的參數(shù)信息,具體請查看輸入參數(shù)。此處我們選用periodic read data模式,即第(1)種。
圖9
(可參照學習EsDAMPC-ZC1應用——串口服務器(一),以及EsDAMPC-ZC1應用——串口服務器(二))
- 從機ID,從機設備的ID號,數(shù)值為0-255。此處從機ID為1,具體用戶可根據實際情況修改。
- 輸出周期,數(shù)值為0-65535,此處我們設置為1000。
- 寄存器地址,該值為讀取的起始寄存器地址,數(shù)值為0-65535,此處我們設置為0。
- 讀取數(shù)量,數(shù)值為0-1000,此處我們設置為2,即讀取兩個數(shù)據(分別為溫度和濕度)。
- 寄存器類型,讀取的寄存器類型。分別有:(1)讀取線圈量,此類型的數(shù)據將輸出uint8_t指針類型的payload;(2)讀取離散量,此類型的數(shù)據將輸出uint8_t指針類型的payload;(3)讀取保持寄存器,此類型的數(shù)據將輸出uint16_t指針類型的payload;(4)讀取輸入寄存器,此類型的數(shù)據將輸出uint16_t指針類型的payload。此處我們設置為read holding resgisters,即第(3)種。
- 數(shù)據轉換模式,該模式有:(1)單地址數(shù)據轉換,此模式只對某一地址的數(shù)據進行轉換,因此輸出payload是對應地址的單個數(shù)據值;(2)多地址數(shù)據轉換,此模式對指定地址及數(shù)量的數(shù)據進行同一的轉換,并將轉換后的值存入array對象;(3)全地址數(shù)據轉換,此模式對輸入的所有數(shù)據進行同一的轉換,并將轉換后的值存入array對象。注:數(shù)據地址及長度必須在modbus輸入節(jié)點的讀取范圍內,否則轉換將失敗。此處我們選擇multi-address address parse模式,即第(2)種。
- 數(shù)據轉換起始地址,此處設置為0。
- 轉換數(shù)量,此處設置為2。
- 數(shù)據轉換類型,讀取的數(shù)據格式,對讀取的數(shù)據進行位整合,例: int32_t:將數(shù)據地址開始的4byte整合成int32_t類型的值。此處我們選擇16bits-unsigned int類型。
- 大小端選擇,此處選擇配置讀取的存儲大小端模式,此處我們設置為小端模式。
a = msg.payload
output.payload = "temp:" + array_get(a, 0)/10 + "C, " + "humi:" + array_get(a, 1)/10 + "RH"
此腳本主要實現(xiàn)將modbus_parse_in節(jié)點所生成的數(shù)值數(shù)組提取數(shù)值,并進行格式化處理,輸出對應的溫濕度數(shù)據。
4. fscript2節(jié)點該節(jié)點為腳本節(jié)點,具體功能代碼如下。
b = istream_read_string(msg.istream, 100, 1000)
msg.payload = b
此腳本主要實現(xiàn)讀取 udp_server_ex 節(jié)點接收到的客戶端數(shù)據,并將數(shù)據傳送給下一個節(jié)點(log節(jié)點)。
5.push節(jié)點圖11該節(jié)點用法較為簡單,直接選擇需要進行傳送的目標節(jié)點即可。6. udp_server_ex節(jié)點圖12該節(jié)點主要實現(xiàn)將push節(jié)點發(fā)送而來的數(shù)據,傳達給連接上來的UDP客戶端。該節(jié)點關鍵參數(shù)一覽:
-
端口,本地開放連接的端口號,取值為1024-60000,此處取值為777。
-
Multicast,為加入的組播地址,本章不需要填寫。
-
輸出模式,存在兩種輸出模式可以選擇,第一種為攜帶報文頭部的模式,第二種為不攜帶報文頭部的模式,此處我們設置為第二種模式payload。
圖14
2.點擊配置按鈕圖15
3.配置ip地址與端口號圖16若用戶不知道流圖下載的端口號,可以在板子重啟時,調試串口中打印信息獲取,或者在shell命令窗口使用ipconfig命令獲取網口配置。4.先選擇配置,后點擊下載按鈕圖17選擇配置圖18點擊下載運行按鈕
5.下載完成圖196.完整調試窗口圖20 ??效果驗證1.查看調試窗口信息圖21點擊對應信息條目可以查看詳情。圖22可見具體的溫濕度數(shù)據信息。2. UDP客戶端此處需要使用一款助手工具,本章便用 TCP&UDP 測試工具進行效果展示。
2.1創(chuàng)建UDP客戶端
圖23點擊創(chuàng)建連接圖24配置相關參數(shù)圖25點擊創(chuàng)建
2.2 建立UDP連接圖26建立連接可見服務器接收到數(shù)據內容如下:圖27查看UDP服務器接收數(shù)據可見客戶端接收到的數(shù)據如下:圖28查看UDP客戶端接收數(shù)據到此,本章結束,如果您對此有興趣,那就趕快行動起來吧! ??關聯(lián)產品 技術交流群長按識別如下二維碼可加入“EsDA嵌入式系統(tǒng)設計自動化交流群”,與志同道合的朋友交流,并有專業(yè)技術人員為您答疑解惑,如有問題可以咨詢小致微信:zlgmcu-888。-
致遠電子
+關注
關注
13文章
408瀏覽量
31333
原文標題:【EsDA 應用】Modbus RTU Master 轉 UDP Server
文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論