隨著物聯(lián)網(wǎng)技術(shù)蓬勃發(fā)展,Modbus設(shè)備數(shù)據(jù)采集上報(bào)需求日益增加,本文將具體介紹如何利用EsDA快速實(shí)現(xiàn)Modbus RTU Master數(shù)據(jù)轉(zhuǎn)TCP Client數(shù)據(jù),縮短產(chǎn)品研發(fā)時(shí)間。
?簡(jiǎn)介隨著時(shí)代的發(fā)展,數(shù)據(jù)上云等需求越來(lái)越普遍,不同協(xié)議之間的數(shù)據(jù)轉(zhuǎn)換,也成了用戶(hù)普遍的需求之一。本文將帶大家快速實(shí)現(xiàn)將EPC6450-AWI工控板的Modbus RTU數(shù)據(jù),快速轉(zhuǎn)發(fā)成TCP客戶(hù)端數(shù)據(jù),與服務(wù)器建立通信,工作框架如圖1。

圖1本文主要使用本公司的EPC6450-AWI型號(hào)工控板,外接使用Modbus RTU協(xié)議傳輸?shù)臏貪穸?a href="http://www.makelele.cn/tags/變送器/" target="_blank">變送器,讀取相關(guān)溫濕度數(shù)據(jù),并創(chuàng)建TCP客戶(hù)端,向PC機(jī)上的TCP服務(wù)器實(shí)時(shí)發(fā)送溫濕度數(shù)據(jù),進(jìn)行數(shù)據(jù)交互。
?入門(mén)基礎(chǔ)
本章內(nèi)容,主要使用modbus_master_in、modbus_parse_in、fscript、log、push、tcp_client節(jié)點(diǎn)。用戶(hù)在進(jìn)行閱讀之前,需具備一定基礎(chǔ)的AWFlow Designer開(kāi)發(fā)經(jīng)驗(yàn)。若剛開(kāi)始接觸,可閱讀以下文章,進(jìn)行基礎(chǔ)知識(shí)的學(xué)習(xí)。
- EsDAMPC-ZC1入門(mén)(一)——軟件安裝
- EsDAMPC-ZC1入門(mén)(二)——LED控制
- EsDAEPC6450-AWI進(jìn)階(協(xié)議轉(zhuǎn)換)——ModbusTCP轉(zhuǎn)TCPClient
硬件前提
1. EPC6450-AWI型號(hào)工控板

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

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

圖4
此傳感器,內(nèi)部使用了Modbus RTU協(xié)議,數(shù)據(jù)分別存儲(chǔ)在地址為0(溫度)和1(濕度)上。
4.Type-C線、網(wǎng)線、杜邦線若干

圖5
?硬件連接圖

圖6
將USB轉(zhuǎn)TLL接口與DUART接口相接(此處注意RXD接TXD,TXD接RXD),Type-C供電線與工控板Type-C接口相接,網(wǎng)口接NET0接口,溫濕度變送器上的A/B信號(hào)線分別于工控板上的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)化成對(duì)應(yīng)類(lèi)型的數(shù)值數(shù)組。
- fscript1節(jié)點(diǎn),該節(jié)點(diǎn)主要負(fù)責(zé)對(duì)modbus_parse_in節(jié)點(diǎn)所生成的數(shù)值數(shù)組進(jìn)行提取,并格式化輸出對(duì)應(yīng)的溫濕度數(shù)據(jù)。
- fscript2節(jié)點(diǎn),該節(jié)點(diǎn)主要負(fù)責(zé)對(duì)tcp_client節(jié)點(diǎn)接收到的數(shù)據(jù),進(jìn)行讀取與解析,并傳送給下一個(gè)節(jié)點(diǎn)。
- 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_client節(jié)點(diǎn)。
- tcp_client節(jié)點(diǎn),該節(jié)點(diǎn)主要負(fù)責(zé)將得到的push節(jié)點(diǎn)數(shù)據(jù),轉(zhuǎn)發(fā)給PC上位機(jī)上的TCP服務(wù)器,并接收服務(wù)器下發(fā)的數(shù)據(jù)。
2. 數(shù)據(jù)流向通過(guò)RS485接口與Modbus RTU協(xié)議讀取溫濕度變送器的數(shù)據(jù),對(duì)該數(shù)據(jù)進(jìn)行數(shù)值化生成對(duì)應(yīng)的數(shù)值數(shù)組,對(duì)生成的數(shù)值數(shù)組進(jìn)行提取,格式化輸出對(duì)應(yīng)的溫濕度情況,通過(guò)建立TCP客戶(hù)端,發(fā)送至PC上位機(jī)上的TCP服務(wù)器窗口,服務(wù)器也向客戶(hù)端發(fā)送數(shù)據(jù),雙方進(jìn)行數(shù)據(jù)交互。
?節(jié)點(diǎn)解析
1.modbus_master_in節(jié)點(diǎn)

圖8
該節(jié)點(diǎn)關(guān)鍵參數(shù)一覽:
- 主機(jī)參數(shù)配置,此處配置與配置串口參數(shù)同理,配置如下:

- 圖9
(可參照學(xué)習(xí)EsDAMPC-ZC1應(yīng)用——串口服務(wù)器(一),以及 EsDAMPC-ZC1應(yīng)用——串口服務(wù)器(二))
- 讀取模式,該屬性將決定節(jié)點(diǎn)的觸發(fā)方式。分別有:(1)循環(huán)讀取數(shù)據(jù),該模式節(jié)點(diǎn)將以用戶(hù)設(shè)定的周期定時(shí)輸出數(shù)據(jù),如周期內(nèi)數(shù)據(jù)未被刷新,則在下一周期輸出;
(2)根據(jù)輸入的信息讀取從機(jī)設(shè)備的數(shù)據(jù),讀取成功則向下一節(jié)點(diǎn)輸出數(shù)據(jù)??墒褂胮ush節(jié)點(diǎn)向此節(jié)點(diǎn)輸入讀取所需要的參數(shù)信息,具體請(qǐng)查看輸入?yún)?shù)。此處我們選用periodic read data模式,即第(1)種。
從機(jī)ID,從機(jī)設(shè)備的ID號(hào),數(shù)值為0-255。此處從機(jī)ID為1,具體用戶(hù)可根據(jù)實(shí)際情況修改。
輸出周期,數(shù)值為0-65535,此處我們?cè)O(shè)置為1000。
寄存器地址,該值為讀取的起始寄存器地址,數(shù)值為0-65535,此處我們?cè)O(shè)置為0。
讀取數(shù)量,數(shù)值為0-1000,此處我們?cè)O(shè)置為2,即讀取兩個(gè)數(shù)據(jù)(分別為溫度和濕度)。
- 寄存器類(lèi)型,讀取的寄存器類(lèi)型。分別有:(1)讀取線圈量,此類(lèi)型的數(shù)據(jù)將輸出uint8_t指針類(lèi)型的payload;(2)讀取離散量,此類(lèi)型的數(shù)據(jù)將輸出uint8_t指針類(lèi)型的payload;(3)讀取保持寄存器,此類(lèi)型的數(shù)據(jù)將輸出uint16_t指針類(lèi)型的payload;
(4)讀取輸入寄存器,此類(lèi)型的數(shù)據(jù)將輸出uint16_t指針類(lèi)型的payload。此處我們?cè)O(shè)置為read holding resgisters,即第(3)種。
2.modbus_parse_in節(jié)點(diǎn)

圖10
該節(jié)點(diǎn)關(guān)鍵參數(shù)一覽:
- 數(shù)據(jù)轉(zhuǎn)換模式,該模式有:(1)單地址數(shù)據(jù)轉(zhuǎn)換,此模式只對(duì)某一地址的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,因此輸出payload是對(duì)應(yīng)地址的單個(gè)數(shù)據(jù)值; (2)多地址數(shù)據(jù)轉(zhuǎn)換,此模式對(duì)指定地址及數(shù)量的數(shù)據(jù)進(jìn)行同一的轉(zhuǎn)換,并將轉(zhuǎn)換后的值存入array對(duì)象; (3)全地址數(shù)據(jù)轉(zhuǎn)換,此模式對(duì)輸入的所有數(shù)據(jù)進(jìn)行同一的轉(zhuǎn)換,并將轉(zhuǎn)換后的值存入array對(duì)象。注:數(shù)據(jù)地址及長(zhǎng)度必須在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)換類(lèi)型,讀取的數(shù)據(jù)格式,對(duì)讀取的數(shù)據(jù)進(jìn)行位整合,例: int32_t:將數(shù)據(jù)地址開(kāi)始的4byte整合成int32_t類(lèi)型的值。此處我們選擇16bits-unsigned int類(lèi)型。
- 大小端選擇,此處選擇配置讀取的存儲(chǔ)大小端模式,此處我們?cè)O(shè)置為小端模式。
3. fscript1節(jié)點(diǎn)
該節(jié)點(diǎn)為腳本節(jié)點(diǎn),具體腳本如下。
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)行格式化處理,輸出對(duì)應(yīng)的溫濕度數(shù)據(jù)。
4.fscript2節(jié)點(diǎn)
該節(jié)點(diǎn)為腳本節(jié)點(diǎn),具體腳本如下。
b = istream_read_string(msg.istream, 100, 1000)msg.payload = b
此腳本主要實(shí)現(xiàn)解析TCP客戶(hù)端接收到的數(shù)據(jù),并將其發(fā)送給log節(jié)點(diǎn)。
5. push節(jié)點(diǎn)
圖11
該節(jié)點(diǎn)用法較為簡(jiǎn)單,直接填寫(xiě)需要進(jìn)行傳送的目標(biāo)節(jié)點(diǎn)即可。6.tcp_client節(jié)點(diǎn)
圖12
該節(jié)點(diǎn)主要實(shí)現(xiàn)將push節(jié)點(diǎn)發(fā)送而來(lái)的數(shù)據(jù),傳達(dá)給TCP服務(wù)器。
該節(jié)點(diǎn)關(guān)鍵參數(shù)一覽:
主機(jī),此處我們?cè)O(shè)置為服務(wù)器的IP地址(192.168.137.136)。
端口,本地開(kāi)放連接的端口號(hào),取值為1024-60000,此處取值為7777。
重試時(shí)間間隔,此處我們?cè)O(shè)置為1000,單位為ms。
7.log節(jié)點(diǎn)
圖13
該節(jié)點(diǎn)主要實(shí)現(xiàn),將上一個(gè)節(jié)點(diǎn)傳輸而下的數(shù)據(jù),打印至串口和調(diào)試窗口上,一個(gè)很好用的調(diào)試信息反饋節(jié)點(diǎn)。
?流圖下載1.點(diǎn)擊下拉框
圖142.點(diǎn)擊配置按鈕
圖153.配置IP地址與端口號(hào)
圖16
若用戶(hù)不知道流圖下載的端口號(hào),可以在板子重啟時(shí),調(diào)試串口種打印信息獲取,或者在shell命令窗口使用ipconfig命令獲取網(wǎng)口配置。4.先選擇配置,后點(diǎn)擊下載按鈕
圖17
圖185.下載完成
圖19
?效果驗(yàn)證
1. TCP服務(wù)器的搭建
此處需要使用一款助手工具,而本章便用TCP&UDP測(cè)試工具進(jìn)行效果展示。
圖20創(chuàng)建服務(wù)器

圖21配置服務(wù)器
圖22啟動(dòng)服務(wù)器2. TCP服務(wù)器的接收與下發(fā)
圖23服務(wù)器接收
圖24服務(wù)器發(fā)送可見(jiàn)客戶(hù)端接收到的數(shù)據(jù)如下。
圖25調(diào)試信息列表
圖26調(diào)試信息詳情到此,本章結(jié)束,如果您對(duì)此有興趣,那就趕快行動(dòng)起來(lái)吧!
-
MODBUS
+關(guān)注
關(guān)注
28文章
2460瀏覽量
83329 -
TCP
+關(guān)注
關(guān)注
8文章
1425瀏覽量
83559 -
RTU
+關(guān)注
關(guān)注
0文章
450瀏覽量
30612
發(fā)布評(píng)論請(qǐng)先 登錄
Modbus RTU 轉(zhuǎn) Modbus TCP 智能網(wǎng)關(guān) 保障發(fā)那科 31i-B 與貝加萊 X20 數(shù)據(jù)同步
西門(mén)子200 SMART與臺(tái)達(dá)DVP PLC通訊:工業(yè)自動(dòng)化Modbus RTU 轉(zhuǎn)Modbus TCP 方案
生物疫苗生產(chǎn)精度保障依托總線協(xié)議的Modbus TCP 轉(zhuǎn) RTU案例
智能物流立體倉(cāng)庫(kù)通訊困境:基于協(xié)議轉(zhuǎn)換的Modbus TCP 轉(zhuǎn) Modbus RTU解決方案
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è)場(chǎng)景下塔訊 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ù)采集中的配置案例
Modbus TCP 轉(zhuǎn) Modbus RTU電腦端 TCP 與西門(mén)子 V20 變頻器的通信案例
艾默生流量計(jì)與Profibus DP主站轉(zhuǎn)Modbus RTU/TCP網(wǎng)關(guān)通訊案例
CAN轉(zhuǎn)Modbus TCP工具的應(yīng)用案例
Modbus TCP轉(zhuǎn)Profibus DP網(wǎng)關(guān)的防撞雷達(dá)應(yīng)用
Modbus TCP轉(zhuǎn)Modbus RTU網(wǎng)關(guān)連接組態(tài)王的5大技巧!
Modbus TCP 到 RTU:輕松轉(zhuǎn)換指南!
Modbus RTU Master 轉(zhuǎn) TCP Client
評(píng)論