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

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

【EsDA 应用】Modbus RTU Master 转 TCP Client

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

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

简介

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

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

入门基础

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

    EsDA MPC-ZC1 入门(一)—— 软件安装EsDA MPC-ZC1 入门(二)—— LED 控制EsDA EPC6450-AWI 进阶 (协议转换)——Modbus TCP 转 TCP Client

硬件前提

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节点,该节点主要负责对tcp_client节点接收到的数据,进行读取与解析,并传送给下一个节点。log节点,该节点主要负责把接收到的fscript节点输出的数据,显示于串口与调试口。push节点,该节点主要负责将接收到的fscript节点输出的数据,传送至tcp_client节点。tcp_client节点,该节点主要负责将得到的push节点数据,转发给PC上位机上的TCP服务器,并接收服务器下发的数据。

2. 数据流向

通过RS485接口与Modbus RTU协议读取温湿度变送器的数据,对该数据进行数值化生成对应的数值数组,对生成的数值数组进行提取,格式化输出对应的温湿度情况,通过建立TCP客户端,发送至PC上位机上的TCP服务器窗口,服务器也向客户端发送数据,双方进行数据交互。

节点解析

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

此脚本主要实现解析TCP客户端接收到的数据,并将其发送给log节点。

5. push 节点

图11

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

6. tcp_client节点

图12

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

该节点关键参数一览:

主机,此处我们设置为服务器的IP地址(192.168.137.136)。

端口,本地开放连接的端口号,取值为1024-60000,此处取值为7777。

重试时间间隔,此处我们设置为1000,单位为ms。

7. log节点

图13

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

流图下载1. 点击下拉框

图14

2. 点击配置按钮

图15

3. 配置IP地址与端口号

图16

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

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

图17

图18

5. 下载完成

图19

效果验证

1. TCP服务器的搭建

此处需要使用一款助手工具,而本章便用TCP&UDP测试工具进行效果展示。

图20 创建服务器

图21 配置服务器

图22 启动服务器

2. TCP服务器的接收与下发

图23 服务器接收

图24 服务器发送可见客户端接收到的数据如下。

图25 调试信息列表

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

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
KSZ8001LI 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, PQFP48
$5.15 查看
KSZ8463FMLI 1 Microchip Technology Inc DATACOM, MANCHESTER ENCODER
暂无数据 查看
LAN9303I-ABZJ 1 SMSC Ethernet Transceiver, 8 X 8 MM, ROHS COMPLIANT, QFN-56
$8.26 查看
致远电子

致远电子

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

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

查看更多

相关推荐

电子产业图谱

ZLG官方账号,一个汇聚500名工程师的研发测试分享平台,为您提供电子世界领先的产品技术与行业解决方案.