??簡介隨著時代的發(fā)展,數(shù)據(jù)上云等需求越來越普遍,不同協(xié)議之間的數(shù)據(jù)轉(zhuǎn)換,也成了用戶普遍的需求之一。本章將帶大家快速實(shí)現(xiàn)如何將EPC6450-AWI工控板的Modbus RTU數(shù)據(jù),快速轉(zhuǎn)換成TCP服務(wù)器數(shù)據(jù),傳送給TCP客戶端,工作框架如圖1.1。

入門基礎(chǔ)本章內(nèi)容,主要使用modbus_master_in、modbus_parse_in、fscript、log、push、tcp_server_ex節(jié)點(diǎn)。用戶在進(jìn)行閱讀之前,需具備一定基礎(chǔ)的AWFlow Designer開發(fā)經(jīng)驗(yàn)。若剛開始接觸,可閱讀以下文章,進(jìn)行基礎(chǔ)知識的學(xué)習(xí)。
-
EsDAMPC-ZC1入門(一)——軟件安裝
-
EsDAMPC-ZC1入門(二)——LED控制
-
EsDAEPC6450-AWI進(jìn)階(協(xié)議轉(zhuǎn)換)——ModbusTCP轉(zhuǎn)TCPClient
硬件前提1. EPC6450-AWI型號工控板

圖2
2.USB轉(zhuǎn)TTL類型串口設(shè)備

圖3
3.溫濕度變送器(Modbus RTU協(xié)議,RS485接口)


圖5
硬件連接圖
圖6將USB轉(zhuǎn)TLL接口與DUART接口相接(此處注意RXD接TXD,TXD接RXD),Type-C供電線與工控板Type-C接口相接,網(wǎng)口接eth0接口,溫濕度變送器上的A/B信號線分別與工控板上的RS485A/RS485B相連,+電源線接于5V,-地線接于GND。
本章流圖解析
圖7
1. 本流圖節(jié)點(diǎn)列表
- modbus_master_in節(jié)點(diǎn),該節(jié)點(diǎn)負(fù)責(zé)讀取從機(jī)的相關(guān)寄存器地址中的數(shù)據(jù)。
- modbus_parse_in節(jié)點(diǎn),該節(jié)點(diǎn)負(fù)責(zé)解析modbus_master_in獲取的數(shù)據(jù),將數(shù)據(jù)轉(zhuǎn)化成對應(yīng)類型的數(shù)值數(shù)組。
- fscript節(jié)點(diǎn),該節(jié)點(diǎn)主要負(fù)責(zé)對modbus_parse_in節(jié)點(diǎn)所生成的數(shù)值數(shù)組進(jìn)行提取,并格式化輸出對應(yīng)的溫濕度數(shù)據(jù)。
- log節(jié)點(diǎn),該節(jié)點(diǎn)主要負(fù)責(zé)把接收到的fscript節(jié)點(diǎn)輸出的數(shù)據(jù),顯示于串口與調(diào)試口。
- push節(jié)點(diǎn),該節(jié)點(diǎn)主要負(fù)責(zé)將接收到的fscript節(jié)點(diǎn)輸出的數(shù)據(jù),傳送至tcp_server_ex節(jié)點(diǎn)。
- tcp_server_ex節(jié)點(diǎn),該節(jié)點(diǎn)主要負(fù)責(zé)將得到的push節(jié)點(diǎn)數(shù)據(jù),轉(zhuǎn)發(fā)給PC上位機(jī)上的TCP客戶端。
通過RS485接口與Modbus RTU協(xié)議讀取溫濕度變送器的數(shù)據(jù),對該數(shù)據(jù)進(jìn)行數(shù)值化生成對應(yīng)的數(shù)值數(shù)組,對生成的數(shù)值數(shù)組進(jìn)行提取,格式化輸出對應(yīng)的溫濕度情況,并將信息顯示在串口與調(diào)試窗口上,以及發(fā)送至PC上位機(jī)上的TCP客戶端窗口。
節(jié)點(diǎn)解析1. modbus_master_in節(jié)點(diǎn)
圖8該節(jié)點(diǎn)關(guān)鍵參數(shù)一覽:-
主機(jī)參數(shù)配置,此處配置與配置串口參數(shù)同理,配置如下:
圖9(可參照學(xué)習(xí)《EsDA MPC-ZC1應(yīng)用——串口服務(wù)器(一)》, 以及《EsDA MPC-ZC1 應(yīng)用——串口服務(wù)器(二)》)
-
讀取模式,該屬性將決定節(jié)點(diǎn)的觸發(fā)方式。分別有:(1)循環(huán)讀取數(shù)據(jù),該模式節(jié)點(diǎn)將以用戶設(shè)定的周期定時輸出數(shù)據(jù),如周期內(nèi)數(shù)據(jù)未被刷新,則在下一周期輸出;(2)根據(jù)輸入的信息讀取從機(jī)設(shè)備的數(shù)據(jù),讀取成功則向下一節(jié)點(diǎn)輸出數(shù)據(jù)。可使用push節(jié)點(diǎn)向此節(jié)點(diǎn)輸入讀取所需要的參數(shù)信息,具體請查看輸入?yún)?shù)。此處我們選用periodic read data模式,即第(1)種。
-
從機(jī)ID,從機(jī)設(shè)備的ID號,數(shù)值為0-255。此處從機(jī)ID為1,具體用戶可根據(jù)實(shí)際情況修改。
-
輸出周期,數(shù)值為0-65535,此處我們設(shè)置為1000。
寄存器地址,該值為讀取的起始寄存器地址,數(shù)值為0-65535,此處我們設(shè)置為0。 -
讀取數(shù)量,數(shù)值為0-1000,此處我們設(shè)置為2,即讀取兩個數(shù)據(jù)(分別為溫度和濕度)。
- 寄存器類型,讀取的寄存器類型。分別有:(1)讀取線圈量,此類型的數(shù)據(jù)將輸出uint8_t指針類型的payload;(2)讀取離散量,此類型的數(shù)據(jù)將輸出uint8_t指針類型的payload;(3)讀取保持寄存器,此類型的數(shù)據(jù)將輸出uint16_t指針類型的payload;(4)讀取輸入寄存器,此類型的數(shù)據(jù)將輸出uint16_t指針類型的payload。此處我們設(shè)置為read holding resgisters,即第(3)種。
圖10該節(jié)點(diǎn)關(guān)鍵參數(shù)一覽:
-
數(shù)據(jù)轉(zhuǎn)換模式,該模式有:(1)單地址數(shù)據(jù)轉(zhuǎn)換,此模式只對某一地址的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,因此輸出payload是對應(yīng)地址的單個數(shù)據(jù)值;(2)多地址數(shù)據(jù)轉(zhuǎn)換,此模式對指定地址及數(shù)量的數(shù)據(jù)進(jìn)行同一的轉(zhuǎn)換,并將轉(zhuǎn)換后的值存入array對象;(3)全地址數(shù)據(jù)轉(zhuǎn)換,此模式對輸入的所有數(shù)據(jù)進(jìn)行同一的轉(zhuǎn)換,并將轉(zhuǎn)換后的值存入array對象。
注:數(shù)據(jù)地址及長度必須在modbus輸入節(jié)點(diǎn)的讀取范圍內(nèi),否則轉(zhuǎn)換將失敗。此處我們選擇multi-address address parse模式,即第(2)種。
-
數(shù)據(jù)轉(zhuǎn)換起始地址,此處設(shè)置為0。
-
轉(zhuǎn)換數(shù)量,此處設(shè)置為2。
-
數(shù)據(jù)轉(zhuǎn)換類型,讀取的數(shù)據(jù)格式,對讀取的數(shù)據(jù)進(jìn)行位整合,例: int32_t:將數(shù)據(jù)地址開始的4byte整合成int32_t類型的值。此處我們選擇16bits-unsigned int類型。
-
大小端選擇,此處選擇配置讀取的存儲大小端模式,此處我們設(shè)置為小端模式。
a = msg.payload
output.payload = "temp:" + array_get(a, 0)/10 + "C, " + "humi:" + array_get(a, 1)/10 + "RH"
此腳本主要實(shí)現(xiàn)將modbus_parse_in節(jié)點(diǎn)所生成的數(shù)值數(shù)組提取數(shù)值,并進(jìn)行格式化處理,輸出對應(yīng)的溫濕度數(shù)據(jù)。
4. push節(jié)點(diǎn)
圖11該節(jié)點(diǎn)用法較為簡單,直接選擇需要進(jìn)行傳送的目標(biāo)節(jié)點(diǎn)即可。
5.tcp_server_ex節(jié)點(diǎn)
圖12該節(jié)點(diǎn)主要實(shí)現(xiàn)將push節(jié)點(diǎn)發(fā)送而來的數(shù)據(jù),傳達(dá)給連接上來的TCP客戶端。該節(jié)點(diǎn)關(guān)鍵參數(shù)一覽:
- 端口,本地開放連接的端口號,取值為1024-60000,此處取值為5353。
- 最大連接數(shù),是指可支持的最大客戶端連接數(shù)量,此處我們設(shè)置為8。
- 輸出模式,存在兩種輸出模式可以選擇,第一種為攜帶報文頭部的模式,第二種為不攜帶報文頭部的模式,此處我們設(shè)置為第二種模式payload。
- ?;顣r間,取值范圍為0-100000,此處我們設(shè)置為120。
- 空閑掉線時間,取值范圍為0-100000,此處我們設(shè)置為0。
圖13該節(jié)點(diǎn)主要實(shí)現(xiàn),將上一個節(jié)點(diǎn)傳輸而下的數(shù)據(jù),打印至串口和調(diào)試窗口上,一個很好用的調(diào)試信息反饋節(jié)點(diǎn)。
流圖下載1.點(diǎn)擊下拉框
圖142.點(diǎn)擊配置按鈕
圖153.配置ip地址與端口號
圖16若用戶不知道流圖下載的端口號,可以在板子重啟時,調(diào)試串口中打印信息獲取,或者在shell命令窗口使用ipconfig命令獲取網(wǎng)口配置。
4.先選擇配置,后點(diǎn)擊下載按鈕
圖175.下載完成
圖186.完整調(diào)試窗口
圖19
效果驗(yàn)證1.查看調(diào)試窗口信息
圖20點(diǎn)擊對應(yīng)信息條目可以查看詳情。
圖21可見具體的溫濕度數(shù)據(jù)信息。
2.TCP客戶端此處需要使用一款助手工具,而本章便用SSCOM進(jìn)行效果展示。
圖22可見客戶端接收到的數(shù)據(jù)如下。
圖23到此,本章結(jié)束,如果您對此有興趣,那就趕快行動起來吧!
技術(shù)交流群長按識別如下二維碼可加入“EsDA嵌入式系統(tǒng)設(shè)計(jì)自動化交流群”,與志同道合的朋友交流,并有專業(yè)技術(shù)人員為您答疑解惑,如有問題可以咨詢小致微信:zlgmcu-888。
?
-
致遠(yuǎn)電子
+關(guān)注
關(guān)注
13文章
424瀏覽量
32665
原文標(biāo)題:【EsDA 應(yīng)用】Modbus RTU Master 轉(zhuǎn) TCP Server
文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Modbus RTU 轉(zhuǎn) Modbus TCP 智能網(wǎng)關(guān) 保障發(fā)那科 31i-B 與貝加萊 X20 數(shù)據(jù)同步
西門子200 SMART與臺達(dá)DVP PLC通訊:工業(yè)自動化Modbus RTU 轉(zhuǎn)Modbus TCP 方案
生物疫苗生產(chǎn)精度保障依托總線協(xié)議的Modbus TCP 轉(zhuǎn) RTU案例
智能物流立體倉庫通訊困境:基于協(xié)議轉(zhuǎn)換的Modbus TCP 轉(zhuǎn) Modbus RTU解決方案
光伏逆變器上料-測試協(xié)同依托數(shù)據(jù)采集的Modbus TCP 轉(zhuǎn) Modbus RTU協(xié)議應(yīng)用案例
用Profinet轉(zhuǎn)Modbus RTU協(xié)議網(wǎng)關(guān)有什么好處
DLT698轉(zhuǎn)Modbus RTU-TCP網(wǎng)關(guān)
Profinet從轉(zhuǎn)Modbus(TCP)主總線協(xié)議轉(zhuǎn)換網(wǎng)關(guān)
Modbus RTU轉(zhuǎn)Profinet總線協(xié)議網(wǎng)關(guān)
工業(yè)場景下塔訊 Modbus RTU 轉(zhuǎn) Modbus TCP 網(wǎng)關(guān)實(shí)現(xiàn)橫河流量計(jì)與 WinCC 數(shù)據(jù)交互案例
塔訊 Modbus RTU 轉(zhuǎn) Modbus TCP 在污水處理廠 PLC 數(shù)據(jù)采集中的配置案例
通用串口轉(zhuǎn)Modbus TCP 網(wǎng)關(guān)
Modbus TCP 轉(zhuǎn) Modbus RTU電腦端 TCP 與西門子 V20 變頻器的通信案例
艾默生流量計(jì)與Profibus DP主站轉(zhuǎn)Modbus RTU/TCP網(wǎng)關(guān)通訊案例
E+H流量計(jì)與Profibus DP主站轉(zhuǎn)Modbus RTU/TCP網(wǎng)關(guān)通訊
【EsDA 應(yīng)用】Modbus RTU Master 轉(zhuǎn) TCP Server
評論