1 功能简介
基于 FlexLua 的 DTU01 万能采集器以及奥松的 AMS 气体流量计搭建一个作 4G 无线远程气体流量计,将采集到的气体流量值通过 4G Mqtt 通信上报至远端的云服务器,从而实现远程获取管道气体流量的功能。
2 实现方法
对于新手或者不懂编程的来说,只需将 FlexLua 的 DTU01 万能采集器和传感器通过 RS485 接口的 A、B 两根线连接起来,然后在 FlexLua 官网的 M007B 文档中找到源码复制粘贴到 DTU01 采集器内部运行即可实现功能。
3 代码功能说明
M007B 文档中提到的源代码虽然开发者可以直接拿来用,但这里稍微啰嗦一下该代码实现的核心功能,如果感兴趣可以学习一下:
DTU01 每隔一定时间(比如1分钟)通过 RS485 Modbus 协议读取 AMD 气体流量计的传感器数值,随后将其转换成 Json 字符串数据,通过 4G Mqtt 无线发送给云服务器,发送的数据格式如下:
{"Dev":"TH","Data":{"SSLL":1.57,"LJLL":12345.6,"TEMP":27.7,"STATE":0} ,"Err":null}
RS485 Modbus 采集传感器代码如下:
--读取RS485奥松 AMS1100 气体流量计
--获取到的Json数据形如:{"SSLL":1.57,"LJLL":12345.6,"TEMP":27.7,"STATE":0} --瞬时流量1.57L/min,累计流量12345.6L,温度27.7度
function ModbusToJson()
--配置RS485 Modbus转Json功能,并设置Json字符串最大长度为150字节
LIB_ModbusToJsonConfig(150)--必须小于255
--瞬时流量寄存器地址0x0000,16bit无符号整数AB类型,2位小数,Json名称"SSLL"
LIB_ModbusToJsonAdd(0x0000,"U_AB",2,"SSLL")---瞬时流量
--累计流量寄存器地址0x0001,32bit无符号整数ABCD类型,1位小数,Json名称"LJLL"
LIB_ModbusToJsonAdd(0x0001,"UL_ABCD",1,"LJLL")---累计流量
--温度寄存器地址0x0003,16bit整数AB类型,1位小数,Json名称"TEMP"
LIB_ModbusToJsonAdd(0x0003,"U_AB",1,"TEMP")---温度
--设备状态寄存器地址0x0004,16bit整数AB类型,0位小数,Json名称"STATE"
LIB_ModbusToJsonAdd(0x0004,"U_AB",0,"STATE")---设备状态值
--参数设置(9600,无校验,1位停止位,功能码"03",从机地址默认0x01,应答最长等待1000ms,包与包最短间隔100ms)
LIB_ModbusToJsonSend("BAUDRATE_9600","NoneParity","StopBit_1","03",0x01,1000,100)
end
4 气体流量传感器原理和参数
流气体流量传感器是基于热式测量原理, 通过测量电阻变化, 计算被测量气体的质量流量。
