APRUS Lua-Modbus3 配置说明
1. 概述
本章主要为APRUS Lua-Modbus3 协议的相关配置说明,该协议主要针对支持(捷豹)3字节浮点数 modbus 协议(汉字温压液晶)(以下简称modbus3)的设备。APRUS适配器可通过modbus3协议与对接设备进行通信。而其中APRUS的Lua包含apru.lua和config.lua两个文件,客户只需配置config.lua就可以对支持modbus3协议的设备进行数据采集。
目前版本支持采集结点起始地址为0开始采集数据,根据相关协议无法自主选择采集点位个数及点位类型;上报类型仅支持float上报;一次采集到的数据包中含有不同的上报值类型,可以通过上报结点的vartype字段进行区分。
如需修改APRUS.lua文件的内容时,请咨询相关的技术人员,随意修改会导致适配器不能正常工作,所以此文档主要介绍config.lua内容。
2. APRUS.lua配置说明
2.1 导入modbus3协议支持库
语句:require "modbus3"
说明:导入modbus3协议支持库
2.2 加载config.lua配置文件
语句:config = require "config"
说明:导入config.lua中的配置信息(下一节介绍config.lua)
2.3 创建modbus3对象
语句:modbus3obj = modbus3.new("modbus3")
说明:创建modbus3对象,返回modbus3obj 供全局使用
2.4 配置modbus3对象接口参数
语句:modbus3.config(modbus3obj, cjson.encode(config.MODBUS3.Device))
说明:配置modbus3通信接口RS485参数
2.5 添加modbus3采集节点
语句:modbus3_load_collectnodes(modbus3obj,config.MODBUS3.ColNode)
说明:添加config.lua中所配置的采集节点
2.6 添加modbus3上报变量节点
语句:modbus3_load_varnodes(modbus3obj,config.MODBUS3.VarNode)
说明:添加config.lua中所配置的变量节点
2.7 运行modbus3实例
语句:modbus3.run(modbus3obj)
说明:在mqtt建立连接后 运行modbus3实例 即开始采集+运算
2.8 暂停modbus3实例
语句:modbus3.stop(modbus3obj)
说明:在mqtt连接断开时 暂停modbus3实例
2.9 设置modbus3实例的调试打印级别
语句:modbus3.debug(modbus3Obj, debugNumber)
说明:启用详细的modbus3调试信息。第一个参数为modbus3.new实例的返回值,第二个参数的值为32位十六进制数字,这个数值分成4个字节,单独每个字节为1时开启对应功能,为0时关闭对应功能。从低位到高4个字节的功能分别是:错误信息、连接信息和一般信息、接收内容详情、发送内容详情。此设置可以帮助您了解设备的运行情况,排查错误,优化性能。请根据需要选择要开启的调试信息级别。
2.10 等待modbus3事件
语句:local msg = user.waitmsg()
说明:启动事件等待,该接口会返回全局各种事件,包括modbus3对象事件
2.11 msg 事件处理
语句:elseif msg.from == "modbus3" then msg_handle(msg.obj, msg.name, msg.code, msg.data)
说明:当接收到msg 对象事件时,调用处理函数modbus3_handle msg.obj 即new时所返回的对象 msg.name 即new时所配置的对象名称 msg.code 事件码 区分改变上报事件 周期上报事件等等 msg.data 事件数据
2.12 mqtt数据上报
语句:
function modbus3_handle(obj, name, code, data)
mqtt.publish(mqtt3Obj, name, "r", data)
end
1.13 反向控制(暂不支持)
语句 modbus3.write(modbus3obj, cjson.encode({[“name”] = k, [“val”] = v}))
说明 反向控制时调用的modbus3写入接口
2 config.lua配置说明
Demo示例:
return
{
AprusX = {
ipmode = "none", --auto/manual/none
inet_addr = "192.168.1.234",
netmask = "255.255.255.0",
luaver = "V00.R",
devinfo = "ModbusRtuDev",
},
MODBUS3 = {
Device = {
portindex = 1,
rate = 9600,
databit = 8,
stopbit = 1,
parity = "None", -- None/Odd/Even
queryInterval = 100
},
ColNode = {
{ ID = 1, reg = "3", addr = 0, cnt = 20, dbName = "MOBUS_ID1A00B6" },
-- { ID = 2, reg = "3", addr = 0, cnt = 20, dbName = "MOBUS_ID2A00B6" },
},
VarNode = {
{ ID = 1, reg = "3", addr = 0, vartype = "flow", dtype = "float", cycle = 6, name = "L1_3_0_flow" },
{ ID = 1, reg = "3", addr = 0, vartype = "temperature", dtype = "float", cycle = 6, name = "L1_3_0_temperature" },
{ ID = 1, reg = "3", addr = 0, vartype = "pressure", dtype = "float", cycle = 6, name = "L1_3_0_pressure" },
{ ID = 1, reg = "3", addr = 0, vartype = "density", dtype = "float", cycle = 6, name = "L1_3_0_density" },
{ ID = 1, reg = "3", addr = 0, vartype = "frequency", dtype = "float", cycle = 6, name = "L1_3_0_frequency " },
{ ID = 1, reg = "3", addr = 0, vartype = "cumulative_flow", dtype = "float", cycle = 6, offset = "*100;+1;~1", name = "L1_3_0_cumulative_flow" },
{ ID = 2, reg = "3", addr = 0, vartype = "flow", dtype = "float", cycle = 6, name = "L1_3_0_flow" },
{ ID = 2, reg = "3", addr = 0, vartype = "temperature", dtype = "float", cycle = 6, name = "L2_3_0_temperature" },
{ ID = 2, reg = "3", addr = 0, vartype = "pressure", dtype = "float", cycle = 6, name = "L2_3_0_pressure" },
{ ID = 2, reg = "3", addr = 0, vartype = "density", dtype = "float", cycle = 6, name = "L2_3_0_density" },
{ ID = 2, reg = "3", addr = 0, vartype = "frequency", dtype = "float", cycle = 6, name = "L2_3_0_frequency " },
{ ID = 2, reg = "3", addr = 0, vartype = "cumulative_flow", dtype = "float", cycle = 6, name = "L2_3_0_cumulative_flow" },
}
},
}
1. APRUS: 接口属性
1.1 ipmode
值: “auto”/“manual”/“none”
说明: ip获取方式
1.2 inet_addr
值: “192.168.1.234”
说明: APRUS的IP地址
1.3 netmask
值: “255.255.255.0”
说明: 子网掩码
1.4 luaver
值: “MAX.LUA.V032700.R”
说明: APRUS的Lua版本信息,根据实际脚本自行填写
1.5 devinfo
值: “modbus3Dev”
说明: 与APRUS对接设备,可根据需求自行填写
2. modbus3-Device: 接口属性
2.1 portindex
值: 整型:1/2
说明: RS485-1/ 2接口
2.2 rate
值: 整型:2400/4800/…/15200
说明: 波特率
2.3 databit
值: 整型:5/6/7/8
说明: 数据位
2.4 stopbit
值: 整型:1/2
说明: 停止位
2.5 parity
值: 字符串:Even/Odd/None
说明: 校验
3. modbus3-ColNode :采集节点属性
3.1 ID
值: 整型:1~n
说明: 设备ID
3.2 reg
值: 字符串:3
说明: 寄存器类型
3.3 addr
值: 整型:0
说明: 采集起始地址
3.4 cnt
值: 整型:20
说明: 采集单位数
3.5 dbname
值: 字符串:MOBUS_ID1A00B6
说明: 数据中心的数据库名字(详见数据中心)
4. modbus3-VarNode:上报节点属性
4.1 ID
值: 整型:1~n
说明: 设备ID
4.2 reg
值: 字符串:3
说明: 寄存器类型
4.3 addr
值: 整型:0
说明: 数据起始地址
4.4 vartype
值: 字符串:flow /temperature/pressure/density/frequency/cumulative_flow
说明: 上报数据类型:流量值/温度值/压力值/密度值/频率值/累计流量
4.5 dtype
值: 字符串:float
说明: 变量类型
4.6 cycle
值: 整型:0~n
说明: 单位:秒
等于0:即指定上报类型为改变上报
大于0:即指定上报周期
4.7 offset(选填)
值: + - * / ~ 数字
例如: offset=”*10; +5.123; ~1” 表示乘以10 再加5.123 结果保留1位小数
4.8 name
值: 字符串:上报名称