- APRUS Lua-Modbus配置说明
- 概述
- 文档说明
- 适用对象
- 术语和缩略词
- 参考资料
- 背景介绍
- 配置说明
- 1 config.lua配置
- 1.1 适配器属性信息—
APRUSX
字段 - 图1-1 Luaver:脚本版本**
- 1.2 Modbus:设备信息—
Device
字段 - (1) Modbus-RTU
- (2) Modbus-TCP
- 1.3 采集、上报结点—
Node
节点信息 - (1) collect:采集结点配置
- (2) variable:上报结点配置
- 1.4 config.lua示例脚本(modbus协议)
- 1.4.1 config.lua示例脚本(RTU基于RS485采集)
- 1.4.2 config.lua示例脚本(TCP基于网口、WIFI采集)
- 2 aprus.lua配置
- 2.1创建Modbus对象实例
- 2.2 Modbus对象配置
- 1) Modbus TCP配置
- 2) Modbus RTU配置
- Modbus RTU双485采集接口配置
- 2.3 Modbus 添加采集节点
- 2.4 Modbus 添加变量节点
- 2.5 Modbus向被指定节点写入数据
- 2.6 Modbus 实例启动
- 2.7 Modbus 实例停止
- 2.8 aprus.lua示例脚本
- 2.8.1 aprus.lua示例脚本(RTU基于RS485采集)
- 2.8.2 aprus.lua示例脚本(TCP基TCP采集)
APRUS Lua-Modbus配置说明
概述
文档说明
APRUS Lua-Modbus协议相关配置说明,APRUS 的Lua包含APRUS.lua
和config.lua
两个文件。
APRUS 通过Modbus协议与支持Modbus协议的设备进行通信,然后配置config.lua
即可采集需要的数据。
如需修改aprus.lua
文件的内容时,请咨询相关的技术人员,随意修改会导致适配器不能正常工作,所以此文档主要介绍config.lua
内容。
此文档目的是为了让相关人员清楚如何通过对脚本的配置实现对应协议的数据采集,详细介绍config.lua的相关内容,如遇到新的需求或者处理不当的地方联系相关负责人。
适用对象
本文档的目的读者是所有通过适配器使用Modbus协议进行数据采集的人员。
术语和缩略词
序号 | 术语名称 | 其它名称 | 术语说明 |
---|---|---|---|
1 | APRUS | Advanced Programmable Remote Utility Server | 高级可编程远程数据适配终端 |
参考资料
- 《HslCommunicationDemo》
- 《昆仑通态HMI屏编程软件》
背景介绍
- APRUS 在数据获取时,分为两部分,数据采集(CollrReg)和数据上报(CollpReg),为什么要分开呢,主要是由于提升采集效率而设定,数据采集过程中尽可能的把能连续采集的一次采集回来。
- 数据上报是将已经采集的数据进行必要的数据处理,然后上报到云端。
配置说明
1 config.lua配置
1.1 适配器属性信息—APRUSX
字段
config.lua
中APRUSX
表的字段由5大部分组成,ipmode、inet_addr、netmask、Luaver、devinfo
分别来介绍这5大部分的功能:
示例:
APRUSX={
ipmode="Manual",
inet_addr="192.168.1.214",
netmask="255.255.255.0",
Luaver="MAX.Lua.V010100.R",
devinfo="ModbusDev",
},
说明:
序号 | 模块 | 说明 | 备注 |
---|---|---|---|
1 | ipmode | IP获取方式 | 默认Manual,不更改 |
2 | Inet_addr | APRUS IP | 与对接的设备保持相同网段,且同网段内IP不能重复 |
1 | netmask | 子网掩码 | 默认255.255.255.0,一般不修改,除非相同网段内没有足够的IP |
4 | Luaver | 脚本版本号 | 每次变更脚本都需更新版本,一边区分不同版本的区别;详见图1-1 |
5 | devinfo | 设备类型 | 对接的设备类型 |
图1-1 Luaver:脚本版本**
Luaver = "MAPRUS.L.V220.R"
Luaver设置当前脚本的版本号,每次更新都需要更改并向上增加版本号;
版本号在增加过程中,只需要修改主/子/阶段版本号即可;
主/子/阶段版本号不能为0,一般情况下如果只更新config.Lua
的配置无需更新主/子版本号;
只要修改阶段版本号就行,版本号一定是要向上叠加,这样才能保证之前的版本有备份,才能自动升级。
1.2 Modbus:设备信息— Device
字段
APRUS适配器支持Modbus-RTU和Modbus-TCP协议,根据协议不同有如下两种设备信息配置:
(1) Modbus-RTU
Device={
type="rtu", -- rtu/tcp
rate=115200,
dataBit=8,
stopBit=1,
parity="None", -- None/Odd/Even
},
(2) Modbus-TCP
Device={
type="tcp", -- rtu/tcp
ip="192.168.1.157",
port="502",
},
Modbus设备信息:
序号 | 模块 | 值 | 说明 |
---|---|---|---|
1 | type | 字符串; “rtu” / “tcp” | Modbus协议类型 |
2 | rate | 值;115200/9600/4800等均可用 | 波特率 |
3 | dataBit | 值;5/6/7/8 | 数据位 |
4 | stopBit | 值; 1/2 | 停止位 |
5 | parity | 字符串;”None”/“Odd”/“Even” | 校验位 |
6 | ip | 字符串; “192.168.1.157” | Modbus设备的IP地址 |
7 | port | 字符串; “502”/“1024” | Modbus设备的端口 |
1.3 采集、上报结点— Node
节点信息
node={
collect={
{ID=1, reg="1", addr=0, cnt=50},
},
variable={
{ID=1,reg="1",addr=1,dtype="byte",dBit=0,pMode={1,8},dStyle={"L1_1_1_0"},dOffset={{"*",2}, {"+", 10}},dExt={}},
},
}
(1) collect:采集结点配置
参数 | 类型;值 | 说明 |
---|---|---|
ID | 值;ID = 1 | 设备ID |
reg | 值;1/2/3/4/5/6/15/16 | 寄存器功能码 |
addr | 值; | 采集地址起始 |
cnt | 值; | 采集长度 |
(2) variable:上报结点配置
variable设置上报配置,上报配置时需要把采集到的数据处理成最终实际使用的数据;
包括数据处理逻辑,上报逻辑,数据分类等等;
由于采集时都是按照双字(short)采集,所以在数据处理的时候要需要注意。
注意:上报配置设置的地址,一定是在采集配置里面有的,否则数据不准确。
参数 | 类型;值 | 说明 |
---|---|---|
ID | 值;ID = 1 | 设备ID |
reg | 字符串;reg=1 | Modbus功能码,可选值为1/2/3/4/5/6/15/16 |
addr | 字符串;addr=0 | 上报地址,需要上报哪个地址设置那个地址 |
dtype | 字符串;dtype=”short” | 变量数据类型,可选值为bit, byte, short/ushort, int/uint, float |
pMode | 值;pMode={1,5} | 采集上报方式; 具体含义详见- 附件一:采集上报方式—pMode字段 |
dOffset | 字典;dOffset={{“+”,10},{“*”,5}} | 数据偏移,在位处理时通常不需要 具体含义详见 附件二:采集上报数据偏移—dOffset字段 |
dBit | 值;dBit=5 | 位处理,位标识 具体含义详见 附件三:采集上报位处理—dBit字段 |
dExt | 字典;dExt={0,{0,0},{0,0}} | (选填) 改变上报条件限制 具体含义详见 附件四:采集上报改变上报条件限制—dExt字段 |
dStyle | 字符串;dStyle={“L1_3_0_0”} | (选填)自行设置 |
len | 值;len=5 | 字符串长度 ;当dtype为bytes时有效 |
format | 字符串;format = “ABCD” | 字节序配置; 具体含义详见 附件五:采集上报字节序配置–dExt字段 |
1.4 config.lua示例脚本(modbus协议)
1.4.1 config.lua示例脚本(RTU基于RS485采集)
return
{
AprusX={
ipmode="none", --auto/manual/none
inet_addr="192.168.1.234",
netmask="255.255.255.0",
luaver="V00.R",
devinfo="ModbusRtuDev",
},
Modbus={
device={
type="rtu", --"rtu"/"ascii"
rate=9600,
databit=8,
stopbit=1,
parity="None", -- None/Odd/Even
},
node={
collect={
{ID=1, reg="1", addr=0, cnt=50},
{ID=1, reg="2", addr=0, cnt=50},
{ID=1, reg="3", addr=0, cnt=50},
{ID=1, reg="4", addr=0, cnt=50},
},
variable={
{ID=1,reg="1",addr=0,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_0"}},
{ID=1,reg="1",addr=1,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_1"}},
{ID=1,reg="1",addr=2,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_2"}},
{ID=1,reg="1",addr=3,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_3"}},
{ID=1,reg="1",addr=4,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_4"}},
{ID=1,reg="1",addr=5,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_5"}},
{ID=1,reg="1",addr=6,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_6"}},
{ID=1,reg="1",addr=7,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_7"}},
{ID=1,reg="1",addr=8,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_8"}},
{ID=1,reg="1",addr=9,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_9"}},
{ID=1,reg="1",addr=10,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_10"}},
{ID=1,reg="1",addr=11,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_11"}},
{ID=1,reg="1",addr=12,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_1_12"}},
{ID=1,reg="1",addr=12,dtype="bit",dBit=0,pMode={2,0},dStyle={"L1_1_12_C"}},
{ID=1,reg="2",addr=0,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_0"}},
{ID=1,reg="2",addr=1,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_1"}},
{ID=1,reg="2",addr=2,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_2"}},
{ID=1,reg="2",addr=3,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_3"}},
{ID=1,reg="2",addr=4,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_4"}},
{ID=1,reg="2",addr=5,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_5"}},
{ID=1,reg="2",addr=6,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_6"}},
{ID=1,reg="2",addr=7,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_7"}},
{ID=1,reg="2",addr=8,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_8"}},
{ID=1,reg="2",addr=9,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_9"}},
{ID=1,reg="2",addr=10,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_10"}},
{ID=1,reg="2",addr=11,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_11"}},
{ID=1,reg="2",addr=12,dtype="bit",dBit=0,pMode={1,6},dStyle={"L1_2_12"}},
{ID=1,reg="2",addr=12,dtype="bit",dBit=0,pMode={2,0},dStyle={"L1_2_12_C"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=0,pMode={1,7},dStyle={"L1_3_0_0"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=1,pMode={1,7},dStyle={"L1_3_0_1"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=2,pMode={1,7},dStyle={"L1_3_0_2"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=3,pMode={1,7},dStyle={"L1_3_0_3"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=4,pMode={1,7},dStyle={"L1_3_0_4"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=5,pMode={1,7},dStyle={"L1_3_0_5"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=6,pMode={1,7},dStyle={"L1_3_0_6"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=7,pMode={1,7},dStyle={"L1_3_0_7"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=8,pMode={1,7},dStyle={"L1_3_0_8"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=9,pMode={1,7},dStyle={"L1_3_0_9"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=10,pMode={1,7},dStyle={"L1_3_0_10"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=11,pMode={1,7},dStyle={"L1_3_0_11"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=12,pMode={1,7},dStyle={"L1_3_0_12"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=13,pMode={1,7},dStyle={"L1_3_0_13"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=14,pMode={1,7},dStyle={"L1_3_0_14"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=15,pMode={1,7},dStyle={"L1_3_0_15"}},
{ID=1,reg="3",addr=0,dtype="bit",dBit=15,pMode={2,0},dStyle={"L1_3_0_15_C"}},
{ID=1,reg="3",addr=1,dtype="byte", dBit=0, pMode={1,8},dStyle={"L1_3_1_0"}},
{ID=1,reg="3",addr=1,dtype="byte", dBit=1, pMode={1,8},dStyle={"L1_3_1_1"}},
{ID=1,reg="3",addr=1,dtype="byte", dBit=1, pMode={2,0},dStyle={"L1_3_1_1_C"}},
{ID=1,reg="3",addr=1,dtype="byte", pMode={2,0},dStyle={"L1_3_1_C"}},
{ID=1,reg="3",addr=1,dtype="byte", pMode={1,8},dStyle={"L1_3_1_O1"}, dOffset={{"+",10}}},
{ID=1,reg="3",addr=1,dtype="byte", pMode={1,8},dStyle={"L1_3_1_O2"}, dOffset={{"/",3}, {"+", 10}}},
{ID=1,reg="3",addr=2,dtype="ubyte", pMode={1,8},dStyle={"L1_3_2"}},
{ID=1,reg="3",addr=2,dtype="ubyte", pMode={2,0},dStyle={"L1_3_2_C"}},
{ID=1,reg="3",addr=2,dtype="ubyte", pMode={1,8},dStyle={"L1_3_2_O1"}, dOffset={{"+",10}}},
{ID=1,reg="3",addr=2,dtype="ubyte", pMode={1,8},dStyle={"L1_3_2_O2"}, dOffset={{"*",2.123}, {".", 1}}},
{ID=1,reg="3",addr=3,dtype="short", pMode={1,8},dStyle={"L1_3_3"}},
{ID=1,reg="3",addr=3,dtype="short", pMode={2,0},dStyle={"L1_3_3_C"}},
{ID=1,reg="3",addr=3,dtype="short", pMode={1,8},dStyle={"L1_3_3_O1"}, dOffset={{"+",10}}},
{ID=1,reg="3",addr=3,dtype="short", pMode={1,8},dStyle={"L1_3_3_O2"}, dOffset={{"*",2}, {"+", 10}}},
{ID=1,reg="3",addr=4,dtype="ushort", pMode={1,8},dStyle={"L1_3_4"}},
{ID=1,reg="3",addr=4,dtype="ushort", pMode={2,0},dStyle={"L1_3_4_C"}},
{ID=1,reg="3",addr=4,dtype="ushort", pMode={1,8},dStyle={"L1_3_4_O1"}, dOffset={{"+",10}}},
{ID=1,reg="3",addr=4,dtype="ushort", pMode={1,8},dStyle={"L1_3_4_O2"}, dOffset={{"*",2}, {"+", 10}}},
{ID=1,reg="3",addr=5,dtype="int", pMode={1,8},dStyle={"L1_3_5"}},
{ID=1,reg="3",addr=5,dtype="int", format="ABCD", pMode={1,8},dStyle={"L1_3_5_ABCD"}},
{ID=1,reg="3",addr=5,dtype="int", pMode={2,0},dStyle={"L1_3_5_C"}},
{ID=1,reg="3",addr=5,dtype="int", pMode={1,8},dStyle={"L1_3_5_O1"}, dOffset={{"+",10}}},
{ID=1,reg="3",addr=5,dtype="int", pMode={1,8},dStyle={"L1_3_5_O2"}, dOffset={{"*",2}, {"+", 10}}},
{ID=1,reg="3",addr=7,dtype="uint", pMode={1,8},dStyle={"L1_3_7"}},
{ID=1,reg="3",addr=7,dtype="uint", format="ABCD", pMode={1,8},dStyle={"L1_3_7_ABCD"}},
{ID=1,reg="3",addr=7,dtype="uint", pMode={2,0},dStyle={"L1_3_7_C"}},
{ID=1,reg="3",addr=7,dtype="uint", pMode={1,8},dStyle={"L1_3_7_O1"}, dOffset={{"+",10}}},
{ID=1,reg="3",addr=7,dtype="uint", pMode={1,8},dStyle={"L1_3_7_O2"}, dOffset={{"*",2}, {"+", 10}}},
{ID=1,reg="3",addr=9,dtype="float", pMode={1,8},dStyle={"L1_3_9"}},
{ID=1,reg="3",addr=9,dtype="float", format="ABCD", pMode={1,8},dStyle={"L1_3_9_ABCD"}},
{ID=1,reg="3",addr=9,dtype="float", pMode={2,0},dStyle={"L1_3_9_C"}},
{ID=1,reg="3",addr=9,dtype="float", pMode={1,8},dStyle={"L1_3_9_O1"}, dOffset={{"+",10}}},
{ID=1,reg="3",addr=9,dtype="float", pMode={1,8},dStyle={"L1_3_9_O2"}, dOffset={{"*",1.5}, {"+", 10}}},
{ID=1,reg="3",addr=9,dtype="float", pMode={1,8},dStyle={"L1_3_9_O3"}, dOffset={{"*",1.125}, {".", 0}}},
{ID=1,reg="3",addr=9,dtype="float", pMode={1,8},dStyle={"L1_3_9_O4"}, dOffset={{"*",1.125}, {".", 1}}},
{ID=1,reg="3",addr=9,dtype="float", pMode={1,8},dStyle={"L1_3_9_O5"}, dOffset={{"*",1.125}, {".", 2}}},
{ID=1,reg="3",addr=9,dtype="float", pMode={1,8},dStyle={"L1_3_9_O6"}, dOffset={{"*",1.125}, {".", 3}}},
{ID=1,reg="3",addr=9,dtype="float", pMode={1,8},dStyle={"L1_3_9_O7"}, dOffset={{".",3}}},
{ID=1,reg="3",addr=11,dtype="bytes", len=20, pMode={1,8},dStyle={"L1_3_11"}},
{ID=1,reg="3",addr=11,dtype="bytes", len=20, pMode={2,0},dStyle={"L1_3_11_C"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=0,pMode={1,9},dStyle={"L1_4_0_0"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=1,pMode={1,9},dStyle={"L1_4_0_1"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=2,pMode={1,9},dStyle={"L1_4_0_2"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=3,pMode={1,9},dStyle={"L1_4_0_3"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=4,pMode={1,9},dStyle={"L1_4_0_4"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=5,pMode={1,9},dStyle={"L1_4_0_5"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=6,pMode={1,9},dStyle={"L1_4_0_6"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=7,pMode={1,9},dStyle={"L1_4_0_7"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=8,pMode={1,9},dStyle={"L1_4_0_8"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=9,pMode={1,9},dStyle={"L1_4_0_9"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=10,pMode={1,9},dStyle={"L1_4_0_10"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=11,pMode={1,9},dStyle={"L1_4_0_11"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=12,pMode={1,9},dStyle={"L1_4_0_12"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=13,pMode={1,9},dStyle={"L1_4_0_13"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=14,pMode={1,9},dStyle={"L1_4_0_14"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=15,pMode={1,9},dStyle={"L1_4_0_15"}},
{ID=1,reg="4",addr=0,dtype="bit",dBit=15,pMode={2,0},dStyle={"L1_4_0_15"}},
{ID=1,reg="4",addr=1,dtype="byte", pMode={1,8},dStyle={"L1_4_1"}},
{ID=1,reg="4",addr=1,dtype="byte", pMode={2,0},dStyle={"L1_4_1_C"}},
{ID=1,reg="4",addr=1,dtype="byte", pMode={1,8},dStyle={"L1_4_1_O1"}, dOffset={{"+",10}}},
{ID=1,reg="4",addr=1,dtype="byte", pMode={1,8},dStyle={"L1_4_1_O2"}, dOffset={{"*",2}, {"+", 10}}},
{ID=1,reg="4",addr=2,dtype="ubyte", pMode={1,8},dStyle={"L1_4_2"}},
{ID=1,reg="4",addr=2,dtype="ubyte", pMode={2,0},dStyle={"L1_4_2_C"}},
{ID=1,reg="4",addr=2,dtype="ubyte", pMode={1,8},dStyle={"L1_4_2_O1"}, dOffset={{"+",10}}},
{ID=1,reg="4",addr=2,dtype="ubyte", pMode={1,8},dStyle={"L1_4_2_O2"}, dOffset={{"*",2}, {"+", 10}}},
{ID=1,reg="4",addr=3,dtype="short", pMode={1,8},dStyle={"L1_4_3"}},
{ID=1,reg="4",addr=3,dtype="short", pMode={2,0},dStyle={"L1_4_3_C"}},
{ID=1,reg="4",addr=3,dtype="short", pMode={1,8},dStyle={"L1_4_3_O1"}, dOffset={{"+",10}}},
{ID=1,reg="4",addr=3,dtype="short", pMode={1,8},dStyle={"L1_4_3_O2"}, dOffset={{"*",2}, {"+", 10}}},
{ID=1,reg="4",addr=4,dtype="ushort", pMode={1,8},dStyle={"L1_4_4"}},
{ID=1,reg="4",addr=4,dtype="ushort", pMode={2,0},dStyle={"L1_4_4_C"}},
{ID=1,reg="4",addr=4,dtype="ushort", pMode={1,8},dStyle={"L1_4_4_O1"}, dOffset={{"+",10}}},
{ID=1,reg="4",addr=4,dtype="ushort", pMode={1,8},dStyle={"L1_4_4_O2"}, dOffset={{"*",2}, {"+", 10}}},
{ID=1,reg="4",addr=5,dtype="int", pMode={1,8},dStyle={"L1_4_5"}},
{ID=1,reg="4",addr=5,dtype="int", format="ABCD", pMode={1,8},dStyle={"L1_4_5_ABCD"}},
{ID=1,reg="4",addr=5,dtype="int", pMode={2,0},dStyle={"L1_4_5_C"}},
{ID=1,reg="4",addr=5,dtype="int", pMode={1,8},dStyle={"L1_4_5_O1"}, dOffset={{"+",10}}},
{ID=1,reg="4",addr=5,dtype="int", pMode={1,8},dStyle={"L1_4_5_O2"}, dOffset={{"*",2}, {"+", 10}}},
{ID=1,reg="4",addr=7,dtype="uint", pMode={1,8},dStyle={"L1_4_7"}},
{ID=1,reg="4",addr=7,dtype="uint", format="ABCD", pMode={1,8},dStyle={"L1_3_7_ABCD"}},
{ID=1,reg="4",addr=7,dtype="uint", pMode={2,0},dStyle={"L1_4_7_C"}},
{ID=1,reg="4",addr=7,dtype="uint", pMode={1,8},dStyle={"L1_4_7_O1"}, dOffset={{"+",10}}},
{ID=1,reg="4",addr=7,dtype="uint", pMode={1,8},dStyle={"L1_4_7_O2"}, dOffset={{"*",2}, {"+", 10}}},
{ID=1,reg="4",addr=9,dtype="float", pMode={1,8},dStyle={"L1_4_9"}},
{ID=1,reg="4",addr=9,dtype="float", format="ABCD", pMode={1,8},dStyle={"L1_4_9_ABCD"}},
{ID=1,reg="4",addr=9,dtype="float", pMode={2,0},dStyle={"L1_4_9_C"}},
{ID=1,reg="4",addr=9,dtype="float", pMode={1,8},dStyle={"L1_4_9_O1"}, dOffset={{"+",10}}},
{ID=1,reg="4",addr=9,dtype="float", pMode={1,8},dStyle={"L1_4_9_O2"}, dOffset={{"*",1.5}, {"+", 10}}},
{ID=1,reg="4",addr=9,dtype="float", pMode={1,8},dStyle={"L1_4_9_O3"}, dOffset={{"*",1.125}, {".", 0}}},
{ID=1,reg="4",addr=9,dtype="float", pMode={1,8},dStyle={"L1_4_9_O4"}, dOffset={{"*",1.125}, {".", 1}}},
{ID=1,reg="4",addr=9,dtype="float", pMode={1,8},dStyle={"L1_4_9_O5"}, dOffset={{"*",1.125}, {".", 2}}},
{ID=1,reg="4",addr=9,dtype="float", pMode={1,8},dStyle={"L1_4_9_O6"}, dOffset={{"*",1.125}, {".", 3}}},
{ID=1,reg="4",addr=11,dtype="bytes", len=20, pMode={1,8},dStyle={"L1_4_11"}},
{ID=1,reg="4",addr=11,dtype="bytes", len=20, pMode={2,0},dStyle={"L1_4_11_C"}},
{ID=1,reg="5",addr=0,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_0"}},
{ID=1,reg="5",addr=1,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_1"}},
{ID=1,reg="5",addr=2,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_2"}},
{ID=1,reg="5",addr=3,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_3"}},
{ID=1,reg="5",addr=4,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_4"}},
{ID=1,reg="5",addr=5,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_5"}},
{ID=1,reg="5",addr=6,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_6"}},
{ID=1,reg="5",addr=7,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_7"}},
{ID=1,reg="5",addr=8,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_8"}},
{ID=1,reg="5",addr=9,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_9"}},
{ID=1,reg="5",addr=10,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_10"}},
{ID=1,reg="5",addr=11,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_11"}},
{ID=1,reg="5",addr=12,dtype="bit",dBit=0,pMode={1,5},dStyle={"L1_5_12"}},
{ID=1,reg="6",addr=0,dtype="byte", pMode={2,0},dStyle={"L1_6_0"}},
{ID=1,reg="6",addr=1,dtype="short", pMode={2,0},dStyle={"L1_6_1"}},
{ID=1,reg="16",addr=0,dtype="byte", pMode={2,0},dStyle={"L1_16_0"}},
{ID=1,reg="16",addr=0,dtype="byte", pMode={2,0},dStyle={"L1_16_0_O1"}, dOffset={{"+", 5}}},
{ID=1,reg="16",addr=1,dtype="short", pMode={2,0},dStyle={"L1_16_1"}},
{ID=1,reg="16",addr=1,dtype="short", pMode={2,0},dStyle={"L1_16_1_O1"}, dOffset={{"+", 5}}},
{ID=1,reg="16",addr=2,dtype="int", pMode={2,0},dStyle={"L1_16_2"}},
{ID=1,reg="16",addr=2,dtype="int", pMode={2,0},dStyle={"L1_16_2_O1"}, dOffset={{"+", 5}}},
{ID=1,reg="16",addr=9,dtype="float", pMode={2,0},dStyle={"L1_16_9"}},
{ID=1,reg="16",addr=9,dtype="float", pMode={2,0},dStyle={"L1_16_9_O1"}, dOffset={{"+", 5}}},
},
},
},
}
1.4.2 config.lua示例脚本(TCP基于网口、WIFI采集)
return
{
AprusX = {
ipmode = "manual", --auto/manual/none
inet_addr = "192.168.1.234", --需要额外注意,同一局域网内IP地址切忌一样,导致冲突进而采集数据包紊乱
netmask = "255.255.255.0",
luaver = "V00.R",
devinfo = "ModbusTcpDev",
},
Modbus = {
device = {
type = "tcp",
ip = "192.168.1.157",
port = "502",
ifname = "eth0",
},
node = {
collect = {
{ ID = 1, reg = "1", addr = 0, cnt = 50 },
{ ID = 1, reg = "2", addr = 0, cnt = 50 },
{ ID = 1, reg = "3", addr = 0, cnt = 50 },
{ ID = 1, reg = "4", addr = 0, cnt = 50 },
},
variable = {
{ ID = 1, reg = "1", addr = 0, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_0" } },
{ ID = 1, reg = "1", addr = 1, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_1" } },
{ ID = 1, reg = "1", addr = 2, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_2" } },
{ ID = 1, reg = "1", addr = 3, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_3" } },
{ ID = 1, reg = "1", addr = 4, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_4" } },
{ ID = 1, reg = "1", addr = 5, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_5" } },
{ ID = 1, reg = "1", addr = 6, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_6" } },
{ ID = 1, reg = "1", addr = 7, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_7" } },
{ ID = 1, reg = "1", addr = 8, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_8" } },
{ ID = 1, reg = "1", addr = 9, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_9" } },
{ ID = 1, reg = "1", addr = 10, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_10" } },
{ ID = 1, reg = "1", addr = 11, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_11" } },
{ ID = 1, reg = "1", addr = 12, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_12" } },
{ ID = 1, reg = "1", addr = 12, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L1_1_12_C" } },
{ ID = 1, reg = "2", addr = 0, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_0" } },
{ ID = 1, reg = "2", addr = 1, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_1" } },
{ ID = 1, reg = "2", addr = 2, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_2" } },
{ ID = 1, reg = "2", addr = 3, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_3" } },
{ ID = 1, reg = "2", addr = 4, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_4" } },
{ ID = 1, reg = "2", addr = 5, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_5" } },
{ ID = 1, reg = "2", addr = 6, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_6" } },
{ ID = 1, reg = "2", addr = 7, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_7" } },
{ ID = 1, reg = "2", addr = 8, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_8" } },
{ ID = 1, reg = "2", addr = 9, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_9" } },
{ ID = 1, reg = "2", addr = 10, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_10" } },
{ ID = 1, reg = "2", addr = 11, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_11" } },
{ ID = 1, reg = "2", addr = 12, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_12" } },
{ ID = 1, reg = "2", addr = 12, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L1_2_12_C" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 0, pMode = { 1, 7 }, dStyle = { "L1_3_0_0" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 1, pMode = { 1, 7 }, dStyle = { "L1_3_0_1" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 2, pMode = { 1, 7 }, dStyle = { "L1_3_0_2" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 3, pMode = { 1, 7 }, dStyle = { "L1_3_0_3" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 4, pMode = { 1, 7 }, dStyle = { "L1_3_0_4" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 5, pMode = { 1, 7 }, dStyle = { "L1_3_0_5" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 6, pMode = { 1, 7 }, dStyle = { "L1_3_0_6" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 7, pMode = { 1, 7 }, dStyle = { "L1_3_0_7" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 8, pMode = { 1, 7 }, dStyle = { "L1_3_0_8" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 9, pMode = { 1, 7 }, dStyle = { "L1_3_0_9" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 10, pMode = { 1, 7 }, dStyle = { "L1_3_0_10" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 11, pMode = { 1, 7 }, dStyle = { "L1_3_0_11" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 12, pMode = { 1, 7 }, dStyle = { "L1_3_0_12" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 13, pMode = { 1, 7 }, dStyle = { "L1_3_0_13" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 14, pMode = { 1, 7 }, dStyle = { "L1_3_0_14" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 15, pMode = { 1, 7 }, dStyle = { "L1_3_0_15" } },
{ ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L1_3_0_15_C" } },
{ ID = 1, reg = "3", addr = 1, dtype = "byte", dBit = 0, pMode = { 1, 8 }, dStyle = { "L1_3_1_0" } },
{ ID = 1, reg = "3", addr = 1, dtype = "byte", dBit = 1, pMode = { 1, 8 }, dStyle = { "L1_3_1_1" } },
{ ID = 1, reg = "3", addr = 1, dtype = "byte", dBit = 1, pMode = { 2, 0 }, dStyle = { "L1_3_1_1_C" } },
{ ID = 1, reg = "3", addr = 1, dtype = "byte", pMode = { 2, 0 }, dStyle = { "L1_3_1_C" } },
{ ID = 1, reg = "3", addr = 1, dtype = "byte", pMode = { 1, 8 }, dStyle = { "L1_3_1_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "3", addr = 1, dtype = "byte", pMode = { 1, 8 }, dStyle = { "L1_3_1_O2" }, dOffset = { { "/", 3 }, { "+", 10 } } },
{ ID = 1, reg = "3", addr = 2, dtype = "ubyte", pMode = { 1, 8 }, dStyle = { "L1_3_2" } },
{ ID = 1, reg = "3", addr = 2, dtype = "ubyte", pMode = { 2, 0 }, dStyle = { "L1_3_2_C" } },
{ ID = 1, reg = "3", addr = 2, dtype = "ubyte", pMode = { 1, 8 }, dStyle = { "L1_3_2_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "3", addr = 2, dtype = "ubyte", pMode = { 1, 8 }, dStyle = { "L1_3_2_O2" }, dOffset = { { "*", 2.123 }, { ".", 1 } } },
{ ID = 1, reg = "3", addr = 3, dtype = "short", pMode = { 1, 8 }, dStyle = { "L1_3_3" } },
{ ID = 1, reg = "3", addr = 3, dtype = "short", pMode = { 2, 0 }, dStyle = { "L1_3_3_C" } },
{ ID = 1, reg = "3", addr = 3, dtype = "short", pMode = { 1, 8 }, dStyle = { "L1_3_3_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "3", addr = 3, dtype = "short", pMode = { 1, 8 }, dStyle = { "L1_3_3_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
{ ID = 1, reg = "3", addr = 4, dtype = "ushort", pMode = { 1, 8 }, dStyle = { "L1_3_4" } },
{ ID = 1, reg = "3", addr = 4, dtype = "ushort", pMode = { 2, 0 }, dStyle = { "L1_3_4_C" } },
{ ID = 1, reg = "3", addr = 4, dtype = "ushort", pMode = { 1, 8 }, dStyle = { "L1_3_4_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "3", addr = 4, dtype = "ushort", pMode = { 1, 8 }, dStyle = { "L1_3_4_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
{ ID = 1, reg = "3", addr = 5, dtype = "int", pMode = { 1, 8 }, dStyle = { "L1_3_5" } },
{ ID = 1, reg = "3", addr = 5, dtype = "int", format = "ABCD", pMode = { 1, 8 }, dStyle = { "L1_3_5_ABCD" } },
{ ID = 1, reg = "3", addr = 5, dtype = "int", pMode = { 2, 0 }, dStyle = { "L1_3_5_C" } },
{ ID = 1, reg = "3", addr = 5, dtype = "int", pMode = { 1, 8 }, dStyle = { "L1_3_5_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "3", addr = 5, dtype = "int", pMode = { 1, 8 }, dStyle = { "L1_3_5_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
{ ID = 1, reg = "3", addr = 7, dtype = "uint", pMode = { 1, 8 }, dStyle = { "L1_3_7" } },
{ ID = 1, reg = "3", addr = 7, dtype = "uint", format = "ABCD", pMode = { 1, 8 }, dStyle = { "L1_3_7_ABCD" } },
{ ID = 1, reg = "3", addr = 7, dtype = "uint", pMode = { 2, 0 }, dStyle = { "L1_3_7_C" } },
{ ID = 1, reg = "3", addr = 7, dtype = "uint", pMode = { 1, 8 }, dStyle = { "L1_3_7_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "3", addr = 7, dtype = "uint", pMode = { 1, 8 }, dStyle = { "L1_3_7_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
{ ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9" } },
{ ID = 1, reg = "3", addr = 9, dtype = "float", format = "ABCD", pMode = { 1, 8 }, dStyle = { "L1_3_9_ABCD" } },
{ ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 2, 0 }, dStyle = { "L1_3_9_C" } },
{ ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O2" }, dOffset = { { "*", 1.5 }, { "+", 10 } } },
{ ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O3" }, dOffset = { { "*", 1.125 }, { ".", 0 } } },
{ ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O4" }, dOffset = { { "*", 1.125 }, { ".", 1 } } },
{ ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O5" }, dOffset = { { "*", 1.125 }, { ".", 2 } } },
{ ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O6" }, dOffset = { { "*", 1.125 }, { ".", 3 } } },
{ ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O7" }, dOffset = { { ".", 3 } } },
{ ID = 1, reg = "3", addr = 11, dtype = "bytes", len = 20, pMode = { 1, 8 }, dStyle = { "L1_3_11" } },
{ ID = 1, reg = "3", addr = 11, dtype = "bytes", len = 20, pMode = { 2, 0 }, dStyle = { "L1_3_11_C" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 0, pMode = { 1, 9 }, dStyle = { "L1_4_0_0" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 1, pMode = { 1, 9 }, dStyle = { "L1_4_0_1" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 2, pMode = { 1, 9 }, dStyle = { "L1_4_0_2" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 3, pMode = { 1, 9 }, dStyle = { "L1_4_0_3" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 4, pMode = { 1, 9 }, dStyle = { "L1_4_0_4" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 5, pMode = { 1, 9 }, dStyle = { "L1_4_0_5" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 6, pMode = { 1, 9 }, dStyle = { "L1_4_0_6" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 7, pMode = { 1, 9 }, dStyle = { "L1_4_0_7" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 8, pMode = { 1, 9 }, dStyle = { "L1_4_0_8" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 9, pMode = { 1, 9 }, dStyle = { "L1_4_0_9" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 10, pMode = { 1, 9 }, dStyle = { "L1_4_0_10" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 11, pMode = { 1, 9 }, dStyle = { "L1_4_0_11" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 12, pMode = { 1, 9 }, dStyle = { "L1_4_0_12" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 13, pMode = { 1, 9 }, dStyle = { "L1_4_0_13" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 14, pMode = { 1, 9 }, dStyle = { "L1_4_0_14" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 15, pMode = { 1, 9 }, dStyle = { "L1_4_0_15" } },
{ ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L1_4_0_15" } },
{ ID = 1, reg = "4", addr = 1, dtype = "byte", pMode = { 1, 8 }, dStyle = { "L1_4_1" } },
{ ID = 1, reg = "4", addr = 1, dtype = "byte", pMode = { 2, 0 }, dStyle = { "L1_4_1_C" } },
{ ID = 1, reg = "4", addr = 1, dtype = "byte", pMode = { 1, 8 }, dStyle = { "L1_4_1_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "4", addr = 1, dtype = "byte", pMode = { 1, 8 }, dStyle = { "L1_4_1_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
{ ID = 1, reg = "4", addr = 2, dtype = "ubyte", pMode = { 1, 8 }, dStyle = { "L1_4_2" } },
{ ID = 1, reg = "4", addr = 2, dtype = "ubyte", pMode = { 2, 0 }, dStyle = { "L1_4_2_C" } },
{ ID = 1, reg = "4", addr = 2, dtype = "ubyte", pMode = { 1, 8 }, dStyle = { "L1_4_2_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "4", addr = 2, dtype = "ubyte", pMode = { 1, 8 }, dStyle = { "L1_4_2_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
{ ID = 1, reg = "4", addr = 3, dtype = "short", pMode = { 1, 8 }, dStyle = { "L1_4_3" } },
{ ID = 1, reg = "4", addr = 3, dtype = "short", pMode = { 2, 0 }, dStyle = { "L1_4_3_C" } },
{ ID = 1, reg = "4", addr = 3, dtype = "short", pMode = { 1, 8 }, dStyle = { "L1_4_3_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "4", addr = 3, dtype = "short", pMode = { 1, 8 }, dStyle = { "L1_4_3_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
{ ID = 1, reg = "4", addr = 4, dtype = "ushort", pMode = { 1, 8 }, dStyle = { "L1_4_4" } },
{ ID = 1, reg = "4", addr = 4, dtype = "ushort", pMode = { 2, 0 }, dStyle = { "L1_4_4_C" } },
{ ID = 1, reg = "4", addr = 4, dtype = "ushort", pMode = { 1, 8 }, dStyle = { "L1_4_4_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "4", addr = 4, dtype = "ushort", pMode = { 1, 8 }, dStyle = { "L1_4_4_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
{ ID = 1, reg = "4", addr = 5, dtype = "int", pMode = { 1, 8 }, dStyle = { "L1_4_5" } },
{ ID = 1, reg = "4", addr = 5, dtype = "int", format = "ABCD", pMode = { 1, 8 }, dStyle = { "L1_4_5_ABCD" } },
{ ID = 1, reg = "4", addr = 5, dtype = "int", pMode = { 2, 0 }, dStyle = { "L1_4_5_C" } },
{ ID = 1, reg = "4", addr = 5, dtype = "int", pMode = { 1, 8 }, dStyle = { "L1_4_5_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "4", addr = 5, dtype = "int", pMode = { 1, 8 }, dStyle = { "L1_4_5_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
{ ID = 1, reg = "4", addr = 7, dtype = "uint", pMode = { 1, 8 }, dStyle = { "L1_4_7" } },
{ ID = 1, reg = "4", addr = 7, dtype = "uint", format = "ABCD", pMode = { 1, 8 }, dStyle = { "L1_3_7_ABCD" } },
{ ID = 1, reg = "4", addr = 7, dtype = "uint", pMode = { 2, 0 }, dStyle = { "L1_4_7_C" } },
{ ID = 1, reg = "4", addr = 7, dtype = "uint", pMode = { 1, 8 }, dStyle = { "L1_4_7_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "4", addr = 7, dtype = "uint", pMode = { 1, 8 }, dStyle = { "L1_4_7_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
{ ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9" } },
{ ID = 1, reg = "4", addr = 9, dtype = "float", format = "ABCD", pMode = { 1, 8 }, dStyle = { "L1_4_9_ABCD" } },
{ ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 2, 0 }, dStyle = { "L1_4_9_C" } },
{ ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9_O1" }, dOffset = { { "+", 10 } } },
{ ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9_O2" }, dOffset = { { "*", 1.5 }, { "+", 10 } } },
{ ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9_O3" }, dOffset = { { "*", 1.125 }, { ".", 0 } } },
{ ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9_O4" }, dOffset = { { "*", 1.125 }, { ".", 1 } } },
{ ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9_O5" }, dOffset = { { "*", 1.125 }, { ".", 2 } } },
{ ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9_O6" }, dOffset = { { "*", 1.125 }, { ".", 3 } } },
{ ID = 1, reg = "4", addr = 11, dtype = "bytes", len = 20, pMode = { 1, 8 }, dStyle = { "L1_4_11" } },
{ ID = 1, reg = "4", addr = 11, dtype = "bytes", len = 20, pMode = { 2, 0 }, dStyle = { "L1_4_11_C" } },
{ ID = 1, reg = "5", addr = 0, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_0" } },
{ ID = 1, reg = "5", addr = 1, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_1" } },
{ ID = 1, reg = "5", addr = 2, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_2" } },
{ ID = 1, reg = "5", addr = 3, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_3" } },
{ ID = 1, reg = "5", addr = 4, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_4" } },
{ ID = 1, reg = "5", addr = 5, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_5" } },
{ ID = 1, reg = "5", addr = 6, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_6" } },
{ ID = 1, reg = "5", addr = 7, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_7" } },
{ ID = 1, reg = "5", addr = 8, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_8" } },
{ ID = 1, reg = "5", addr = 9, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_9" } },
{ ID = 1, reg = "5", addr = 10, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_10" } },
{ ID = 1, reg = "5", addr = 11, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_11" } },
{ ID = 1, reg = "5", addr = 12, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_12" } },
{ ID = 1, reg = "6", addr = 0, dtype = "byte", pMode = { 2, 0 }, dStyle = { "L1_6_0" } },
{ ID = 1, reg = "6", addr = 1, dtype = "short", pMode = { 2, 0 }, dStyle = { "L1_6_1" } },
{ ID = 1, reg = "16", addr = 0, dtype = "byte", pMode = { 2, 0 }, dStyle = { "L1_16_0" } },
{ ID = 1, reg = "16", addr = 0, dtype = "byte", pMode = { 2, 0 }, dStyle = { "L1_16_0_O1" }, dOffset = { { "+", 5 } } },
{ ID = 1, reg = "16", addr = 1, dtype = "short", pMode = { 2, 0 }, dStyle = { "L1_16_1" } },
{ ID = 1, reg = "16", addr = 1, dtype = "short", pMode = { 2, 0 }, dStyle = { "L1_16_1_O1" }, dOffset = { { "+", 5 } } },
{ ID = 1, reg = "16", addr = 2, dtype = "int", pMode = { 2, 0 }, dStyle = { "L1_16_2" } },
{ ID = 1, reg = "16", addr = 2, dtype = "int", pMode = { 2, 0 }, dStyle = { "L1_16_2_O1" }, dOffset = { { "+", 5 } } },
{ ID = 1, reg = "16", addr = 9, dtype = "float", pMode = { 2, 0 }, dStyle = { "L1_16_9" } },
{ ID = 1, reg = "16", addr = 9, dtype = "float", pMode = { 2, 0 }, dStyle = { "L1_16_9_O1" }, dOffset = { { "+", 5 } } },
},
},
},
}
2 aprus.lua配置
说明:function start() 为主流程入口函数
其他非modbus的实例运行请参考
一、内置的通用Lua API
二、数据中心 API
三、mqtt API
四、aprus.lua示例脚本及其解析
五、config.lua示例脚本及其解析
本文仅介绍modbus实例对象方法
2.1创建Modbus对象实例
功能 | 创建Modbus对象实例 |
---|---|
接口描述 | modbusobj = modbus.new(type) |
type | Modbus设备类型<字符串>,目前支持 “rtu” 设备和 “tcp” 设备 |
2.2 Modbus对象配置
1) Modbus TCP配置
功能 | 配置Modbus TCP连接 |
---|---|
接口描述 | modbus.config(modbusobj, Ip, Port, ifname) |
modbusobj | Modbus对象实例 |
Ip | Modbus设备IP地址<字符串> 例:”192.168.1.100” |
Port | Modbus设备端口号<整数> 例:502 |
ifname | Aprus采集Modbus设备的采集口,可选“eth0”,”eth1,”wlan0” |
2) Modbus RTU配置
功能 | 配置Modbus RTU连接 |
---|---|
接口描述 | modbus.config(modbusobj, rate, databit, stopbit, parity) |
modbusobj | Modbus对象实例 |
rate | Modbus设备波特率<整数> 例:9600 |
databit | Modbus设备数据位<整数> 例:8 |
stopbit | Modbus设备停止位<整数> 例:1 |
parity | Modbus设备校验位<字符串> 例:”N” (None), “E” (Even), “O” (Odd) |
Modbus RTU双485采集接口配置
功能 | 选择Modbus RTU双485采集接口 |
---|---|
接口描述 | modbus.select_rs485(modbusobj, "1") |
modbusobj | Modbus对象实例 |
参数 | 参数可填 “1” 或 “2”,不填默认 “1”。 “1”:对应外壳的-485-1。”2”:对应外壳的-485-2 |
备注 | 该接口配置只针对拥有两个485采集口的ApursX系列设备 |
2.3 Modbus 添加采集节点
功能 | 添加Modbus采集节点 |
---|---|
接口描述 | modbus.add_collectnode(modbusobj, ID, reg, addr, cnt, delay) |
modbusobj | Modbus对象实例 |
ID | 节点ID<整数> |
reg | 寄存器操作码<整数> 例:3 (读保持寄存器) |
addr | 寄存器地址<整数> 例:1000 |
cnt | 采集长度<整数> 例:10 |
delay | 设置采集周期(单位:ms)<整数>。选填(默认不填表示采集无间隔) |
2.4 Modbus 添加变量节点
功能 | 添加Modbus变量节点 |
---|---|
接口描述 | modbus.add_collectnode(modbusobj, ID, reg, addr, dtype, dBit, format, len, pMode, dStyle, dOffset, dExt) |
modbusobj | Modbus对象实例 |
ID | 节点ID<整数> |
reg | 寄存器操作码<整数> 例:3 (读保持寄存器) |
addr | 寄存器地址<整数> 例:1000 |
dtype | 变量类型<字符串> 例:”int” |
dBit | 位偏移 (只有当数据类型为bit时有效 但此字段必须有) |
format | 采集上报模式<字符串> 例:”raw” |
len | 变量长度 (只有当数据类型为bytes时有效 但此字段必须有) |
pMode | 采集上报名称<字符串> 例:”temperature” |
dStyle | 数据补偿计算<字符串> 例:”+” |
dOffset | 改变上报条件限制<整数> 例:5 |
dExt | 扩展参数<字符串> 例:”C” (摄氏度) |
2.5 Modbus向被指定节点写入数据
功能 | 向Modbus指定节点写入数据 |
---|---|
接口描述 | modbus.write(modbusobj, style, val) |
modbusobj | Modbus对象实例 |
style | 变量名称<字符串> 例:”temperature” |
val | 变量值<任何合法的数据类型> 例:25 |
2.6 Modbus 实例启动
功能 | 启动Modbus实例 |
---|---|
接口描述 | modbus.run(modbusobj) |
modbusobj | Modbus对象实例 |
2.7 Modbus 实例停止
功能 | 停止Modbus实例 |
---|---|
接口描述 | modbus.stop(modbusobj) |
modbusobj | Modbus对象实例 |
备注 :modbus tcp支持多实例模式,modbus rtu 仅支持单实例模式
2.8 aprus.lua示例脚本
2.8.1 aprus.lua示例脚本(RTU基于RS485采集)
package.cpath="./?.so"
package.path="./?.lua"
cjson = require "cjson"
config = require "config"
require "modbus"
function act_control(m, json)
for k,v in pairs(json) do
if k ~= "Act" then
modbus.write(modbusObj, k, v)
end
end
end
function mqttdata_handle(m, topic, data)
local json = cjson.decode(data)
if json.Act == "Control" then
act_control(m, json)
end
end
function mqttsys_handle(m, code)
if code == 0 then
-- modbus.stop(modbusObj)
elseif code == 1 then
end
end
function modbusevent_handle(session, code, style_L, val_L, style_E, val_E, z)
if code == 15 then
local json = cjson.encode(mbbuf[session])
mqtt.publish(mqtt3Obj, mbstr[session], "r", json)
mbbuf[session] = {}
elseif code > 10 then
mbbuf[session][style_L] = val_L
mbbuf[session][style_E] = val_E
else
local json = cjson.encode({[style_L] = val_L, [style_E] = val_E, ["Z"] = z})
mqtt.publish(mqtt3Obj, mbstr[session], "r", json)
end
end
function modbus_load_collectnodes(session, nodes)
for k,v in pairs(nodes)
do
modbus.add_collectnode(session, v.ID, v.reg, v.addr, v.cnt, v.delay)
end
end
function modbus_load_varnodes(session, nodes)
for k,v in pairs(nodes)
do
modbus.add_varnode(session, v.ID, v.reg, v.addr, v.dtype, v.dBit, v.format, v.len, v.pMode, v.dStyle, v.dOffset, v.dExt)
end
end
function init()
mqtt3Obj = mqtt.new()
user.setluaver(config.AprusX.luaver)
user.setdevinfo(config.AprusX.devinfo)
user.ipconfig(config.AprusX.ipmode, config.AprusX.inet_addr, config.AprusX.netmask)
mqtt.run(mqtt3Obj)
-- user.reset_eth0() --if you want to set eth0 use this interface
-- user.ipconfig_eth0("manual", "10.100.1.123", "255.255.255.0", "10.100.1.1", "114.114.114.114")
end
function start()
init()
----------ModbusRtu Config----------
MBCfg = config.Modbus
--Init Object
modbusObj = nil
mbbuf = { modbusObj }
mbstr = { modbusObj }
--Config Object
modbusObj = modbus.new(MBCfg.device.type)
mbbuf[modbusObj] = {}
mbstr[modbusObj] = "modbusObj"
-- modbus.select_rs485(modbusObj, "2") --you can select "1" or "2", default is "1"
modbus.config(modbusObj, MBCfg.device.rate, MBCfg.device.databit, MBCfg.device.stopbit, MBCfg.device.parity)
--modbus.delay(modbusObj, 50) --设置采集间隔。默认值为20mS --必须在添加采集节点前调用
modbus_load_collectnodes(modbusObj, MBCfg.node.collect)
modbus_load_varnodes(modbusObj, MBCfg.node.variable)
modbus.run(modbusObj)
----------------------------------
while true do
local msg = user.waitmsg()
if msg.from == "mqtt-sys" then
mqttsys_handle(msg.session, msg.code)
elseif msg.from == "mqtt-msg" then
mqttdata_handle(msg.session, msg.topic, msg.payload)
elseif msg.from == "modbus" then
modbusevent_handle(msg.session, msg.code, msg.style_L, msg.val_L, msg.style_E, msg.val_E, msg.z)
end
end
end
start()
2.8.2 aprus.lua示例脚本(TCP基TCP采集)
package.cpath = "./?.so"
package.path = "./?.lua"
cjson = require "cjson"
config = require "config"
require "modbus"
function act_control(m, json)
for k, v in pairs(json) do
if k ~= "Act" then
modbus.write(modbusObj, k, v)
end
end
end
function mqttdata_handle(m, topic, data)
local json = cjson.decode(data)
if json.Act == "Control" then
act_control(m, json)
end
end
function mqttsys_handle(m, code)
if code == 0 then
--modbus.stop(modbusObj)
elseif code == 1 then
--modbus.run(modbusObj)
end
end
function modbusevent_handle(session, code, style_L, val_L, style_E, val_E, z)
if code == 15 then
local json = cjson.encode(mbbuf[session])
mqtt.publish(mqtt3Obj, mbstr[session], "r", json)
mbbuf[session] = {}
elseif code > 10 then
mbbuf[session][style_L] = val_L
mbbuf[session][style_E] = val_E
else
local json = cjson.encode({ [style_L] = val_L, [style_E] = val_E, ["Z"] = z })
mqtt.publish(mqtt3Obj, mbstr[session], "r", json)
end
end
function modbus_load_collectnodes(session, nodes)
for k, v in pairs(nodes)
do
modbus.add_collectnode(session, v.ID, v.reg, v.addr, v.cnt)
end
end
function modbus_load_varnodes(session, nodes)
for k, v in pairs(nodes)
do
modbus.add_varnode(session, v.ID, v.reg, v.addr, v.dtype, v.dBit, v.format, v.len, v.pMode, v.dStyle, v.dOffset,
v.dExt)
end
end
function init()
mqtt3Obj = mqtt.new()
user.setluaver(config.AprusX.luaver)
user.setdevinfo(config.AprusX.devinfo)
user.ipconfig(config.AprusX.ipmode, config.AprusX.inet_addr, config.AprusX.netmask)
mqtt.run(mqtt3Obj)
end
function start()
init()
----------ModbusTcp Config----------
MBCfg = config.Modbus
--Init Object
modbusObj = nil
mbbuf = { modbusObj }
mbstr = { modbusObj }
--Config Object
modbusObj = modbus.new(MBCfg.device.type)
mbbuf[modbusObj] = {}
mbstr[modbusObj] = "modbusObj"
modbus.config(modbusObj, MBCfg.device.ip, MBCfg.device.port, MBCfg.device.ifname)
--modbus.delay(modbusObj, 50) --设置采集间隔。默认值为20mS --必须在添加采集节点前调用
modbus_load_collectnodes(modbusObj, MBCfg.node.collect)
modbus_load_varnodes(modbusObj, MBCfg.node.variable)
----------------------------------
modbus.run(modbusObj)
while true do
local msg = user.waitmsg()
if msg.from == "mqtt-sys" then
mqttsys_handle(msg.session, msg.code)
elseif msg.from == "mqtt-msg" then
mqttdata_handle(msg.session, msg.topic, msg.payload)
elseif msg.from == "modbus" then
modbusevent_handle(msg.session, msg.code, msg.style_L, msg.val_L, msg.style_E, msg.val_E, msg.z)
end
end
end
start()