加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    •   入门基础
    •   硬件前提
    •   硬件连接图
    •   本章流图解析
    •   节点解析
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

【EsDA 应用】Modbus RTU Master 转 UDP Client

2023/08/19
4175
阅读需 12 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

随着物联网技术蓬勃发展,Modbus 设备数据采集上报需求日益增加,本文将具体介绍如何利用 EsDA 快速实现Modbus RTU Master数据转UDP Client数据,缩短产品研发时间。

简介

随着时代的发展,数据上云等需求越来越普遍,不同协议之间的数据转换,也成了用户普遍的需求之一。本文将带大家快速实现将EPC6450-AWI工控板的Modbus RTU数据,快速转发成UDP客户端数据,并传送给UDP服务器,工作框架如图1.1。

图1本文主要使用本公司的EPC6450-AWI型号工控板,外接使用Modbus RTU协议传输的温湿度变送器,读取相关温湿度数据,并创建UDP客户端,向PC机上的UDP服务器实时发送温湿度数据。

  入门基础

本章内容,主要使用modbus_master_in、modbus_parse_in、fscript、log、push、tcpudp_client节点。用户在进行阅读之前,需具备一定基础的AWFlow Designer开发经验。若刚开始接触,可阅读以下文章,进行基础知识的学习。

    EsDA MPC-ZC1 入门(一)—— 软件安装EsDA MPC-ZC1 入门(二)—— LED 控制EsDA应用 串口服务器 —— UDP Server

  硬件前提

1. EPC6450-AWI型号工控板

图2

2. USB转TTL类型串口设备

图3

3. 温湿度变送器(Modbus RTU协议,RS485接口)

图4

传感器,内部使用了Modbus RTU协议,数据分别存储在地址为0(温度)和1(湿度)上。

4. Type-C线、网线、杜邦线若干

图5

  硬件连接图

图6

将USB转TLL接口与DUART接口相接(此处注意RXD接TXD,TXD接RXD),Type-C供电线与工控板Type-C接口相接,网口接NET0接口,温湿度变送器上的A/B信号线分别于工控板上的RS485A/RS485B相连,+电源线接于5V,-地线接于GND。

  本章流图解析

图7

1. 本流图节点列表

    • modbus_master_in节点,该节点负责读取从机的相关寄存器地址中的数据。modbus_parse_in节点,该节点负责解析modbus_master_in获取的数据,将数据转化成对应类型的数值数组。fscript1节点,该节点主要负责对modbus_parse_in节点所生成的数值数组进行提取,并格式化输出对应的温湿度数据。fscript2节点,该节点主要负责对PC上的UDP服务器发送的数据流进行读取与解析,并传送给log节点。log节点,该节点主要负责把接收到的fscript节点输出的数据,显示于串口与调试口。push节点,该节点主要负责将接收到的fscript节点输出的数据,传送至udp_server_ex节点。

tcpudp_client节点,该节点主要负责将得到的push节点数据,转发给PC上位机上的UDP服务器。

2. 数据流向

通过RS485接口与Modbus RTU协议读取温湿度变送器的数据,对该数据进行数值化生成对应的数值数组,对生成的数值数组进行提取,格式化输出对应的温湿度情况,并将信息显示在串口与调试窗口上,以及发送至PC上位机上的UDP服务器窗口,进行数据交互。

  节点解析

1. modbus_master_in节点

图8

该节点关键参数一览:

    • 主机参数配置,此处配置与配置串口参数同理,配置如下:

图9

(可参照学习 EsDA MPC-ZC1应用——串口服务器(一), 以及 EsDA MPC-ZC1 应用——串口服务器(二))

读取模式,该属性将决定节点的触发方式。分别有:(1) 循环读取数据,该模式节点将以用户设定的周期定时输出数据,如周期内数据未被刷新,则在下一周期输出;

(2) 根据输入的信息读取从机设备的数据,读取成功则向下一节点输出数据。可使用push节点向此节点输入读取所需要的参数信息,具体请查看输入参数。此处我们选用periodic read data模式,即第 (1) 种。

从机ID,从机设备的ID号,数值为0-255。此处从机ID为1,具体用户可根据实际情况修改。

输出周期,数值为0-65535, 此处我们设置为1000。

寄存器地址,该值为读取的起始寄存器地址,数值为0-65535,此处我们设置为0。

读取数量,数值为0-1000,此处我们设置为2,即读取两个数据(分别为温度和湿度)。

寄存器类型,读取的寄存器类型。分别有:(1) 读取线圈量,此类型的数据将输出uint8_t指针类型的payload;(2) 读取离散量,此类型的数据将输出uint8_t指针类型的payload;(3) 读取保持寄存器,此类型的数据将输出uint16_t指针类型的payload;

(4) 读取输入寄存器,此类型的数据将输出uint16_t指针类型的payload。此处我们设置为read holding resgisters,即第(3)种。

2. modbus_parse_in节点

图10

该节点关键参数一览:

    数据转换模式, 该模式有:(1) 单地址数据转换,此模式只对某一地址的数据进行转换,因此输出payload是对应地址的单个数据值; (2) 多地址数据转换,此模式对指定地址及数量的数据进行同一的转换,并将转换后的值存入array对象; (3) 全地址数据转换,此模式对输入的所有数据进行同一的转换,并将转换后的值存入array对象。注:数据地址及长度必须在modbus输入节点的读取范围内,否则转换将失败。此处我们选择multi-address address parse模式,即第(2)种。数据转换起始地址,此处设置为0。转换数量,此处设置为2。数据转换类型,读取的数据格式,对读取的数据进行位整合,例: int32_t: 将数据地址开始的4byte整合成int32_t类型的值。此处我们选择16bits-unsigned int类型。大小端选择,此处选择配置读取的存储大小端模式,此处我们设置为小端模式。

3. fscript1节点

该节点为脚本节点,具体脚本如下。

a = msg.payload
output.payload = "temp:" + array_get(a, 0)/10 + "C,   " + "humi:" +  array_get(a, 1)/10 + "RH"

此脚本主要实现将modbus_parse_in节点所生成的数值数组提取数值,并进行格式化处理,输出对应的温湿度数据。

4. fscript2节点

该节点为脚本节点,具体脚本如下。

b = istream_read_string(msg.istream, 100, 1000)msg.payload = b

此脚本主要实现读取 tcpudp_client 节点接收到的客户端数据,并将数据传送给下一个节点(log节点)。

5. push 节点

图11

该节点用法较为简单,直接填写需要进行传送的目标节点即可。

6. tcp_client节点

图12

该节点主要实现将push节点发送而来的数据,传达给UDP服务器。

该节点关键参数一览:

使能,为true则允许建立连接,为false则禁止建立连接,此处我们选择true。

协议,此处选择UDP。

主机号,此处填PC上位机上所创建的UDP服务器的IP,为192.168.137.136。

端口号,此处设置为7777。

本地端口号,此处也设置为7777。

重试间隔,此处设置为1000,单位为ms,表示断开连接后,若使能参数为true

则1000ms后便重新连接。

空闲下线,值为0则关闭该功能,在该时间内无数据通信则断开连接,此处设置为0。

心跳包与注册包,具体请看节点的帮助文档,本章此处不填。

保活时间, 此参数仅在TCP协议模式下有效,此处我们设置为120。

7. log节点

图13

该节点主要实现,将上一个节点传输而下的数据,打印至串口和调试窗口上,一个很好用的调试信息反馈节点。

流图下载1. 点击下拉框

图14

2. 点击配置按钮

图15

3. 配置IP地址与端口号

图16

若用户不知道流图下载的端口号,可以在板子重启时,调试串口种打印信息获取,或者在shell命令窗口使用ipconfig命令获取网口配置。

4. 先选择配置,后点击下载按钮

图17

图18

5. 下载完成

图19

  效果验证

1. UDP服务器

此处需要使用一款助手工具,本章便用sscom工具进行效果展示。1.1 UDP服务器接收到的设备数据

图20 点击创建连接

1.2 UDP服务器接收到的设备数据

图21 设备数据

1.3 UDP服务器向设备下发数据

图22 下发数据

2. UDP客户端

可见客户端接收到的数据如下。

图23 查看UDP客户端接收数据

图24 接收数据

详情到此,本章结束,如果您对此有兴趣,那就赶快行动起来吧!

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
BCM89811B1AWMLG 1 Broadcom Limited Ethernet Transceiver, PACKAGE-36
$13.11 查看
LAN8710AI-EZK 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC32, 5 X 5 MM, 0.90 MM HEIGHT, ROHS COMPLIANT, QFN-32

ECAD模型

下载ECAD模型
$1.56 查看
LAN8710A-EZC-ABC 1 Microchip Technology Inc Ethernet Transceiver

ECAD模型

下载ECAD模型
$1.55 查看
致远电子

致远电子

广州致远电子股份有限公司成立于2001年,注册资金5000万元,国家级高新技术认证企业,广州市高端工控测量仪器工程技术研究开发中心,Intel ECA全球合作伙伴和微软嵌入式系统金牌合作伙伴。

广州致远电子股份有限公司成立于2001年,注册资金5000万元,国家级高新技术认证企业,广州市高端工控测量仪器工程技术研究开发中心,Intel ECA全球合作伙伴和微软嵌入式系统金牌合作伙伴。收起

查看更多

相关推荐

电子产业图谱