本章内容,主要使用modbus_master_in、modbus_parse_in、fscript、log、push、tcp_server_ex节点。用户在进行阅读之前,需具备一定基础的AWFlow Designer开发经验。若刚开始接触,可阅读以下文章,进行基础知识的学习。
EsDA MPC-ZC1 入门(一)—— 软件安装
EsDA MPC-ZC1 入门(二)—— LED 控制
EsDA EPC6450-AWI 进阶 (协议转换)——Modbus TCP 转 TCP Client
图2
图3
图5
1. 本流图节点列表
通过RS485接口与Modbus RTU协议读取温湿度变送器的数据,对该数据进行数值化生成对应的数值数组,对生成的数值数组进行提取,格式化输出对应的温湿度情况,并将信息显示在串口与调试窗口上,以及发送至PC上位机上的TCP客户端窗口。
主机参数配置,此处配置与配置串口参数同理,配置如下:
(可参照学习《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) 单地址数据转换,此模式只对某一地址的数据进行转换,因此输出payload是对应地址的单个数据值; (2) 多地址数据转换,此模式对指定地址及数量的数据进行同一的转换,并将转换后的值存入array对象; (3) 全地址数据转换,此模式对输入的所有数据进行同一的转换,并将转换后的值存入array对象。
注:数据地址及长度必须在modbus输入节点的读取范围内,否则转换将失败。此处我们选择multi-address address parse模式,即第(2)种。
数据转换起始地址,此处设置为0。
转换数量,此处设置为2。
数据转换类型,读取的数据格式,对读取的数据进行位整合,例: int32_t: 将数据地址开始的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"
此脚本主要实现将modbus_parse_in节点所生成的数值数组提取数值,并进行格式化处理,输出对应的温湿度数据。
该节点用法较为简单,直接选择需要进行传送的目标节点即可。
该节点关键参数一览:
该节点主要实现,将上一个节点传输而下的数据,打印至串口和调试窗口上,一个很好用的调试信息反馈节点。
若用户不知道流图下载的端口号,可以在板子重启时,调试串口中打印信息获取,或者在shell命令窗口使用ipconfig命令获取网口配置。
点击对应信息条目可以查看详情。
可见具体的温湿度数据信息。
可见客户端接收到的数据如下。
到此,本章结束,如果您对此有兴趣,那就赶快行动起来吧!
更多往期文章,请点击“ 阅读原文 ”。