- APRUS Lua-DLT645 配置说明
- 第一章 概述
- 1.1 文档说明
- 第二章 配置说明
- 3.1 config.lua 配置
- 示例配置:
- APRUS Lua-DLT645 配置说明
- 3.1 config.lua配置
- 3.1.1 Ipmode: IP 获取方式
- 3.1.2 Inet_addr: APRUS IP
- 3.1.3 Netmask: 子网掩码
- 3.1.4 Devinfo: 设备类型
- 3.1.5 Luaver: 脚本版本
- 3.1.6 DLT645 Interface: DLT645 设备信息
- DLT645 设备接口信息
- 串行通信参数
- 3.1.7 Node节点信息
- 节点配置说明
- 配置参数表
- 附件一 - 上报模式
- 附件二 - 数据偏移
- 注意事项:
- apurs.lua配置
- user 全局通用/配置类
- 网络配置与消息处理
- 网络配置与消息处理
APRUS Lua-DLT645 配置说明
第一章 概述
1.1 文档说明
本文档概述了APRUS Lua-DLT645协议的相关配置说明。APRUS 的Lua脚本包含两个文件:APRUS.lua
和config.lua
。APRUS通过DLT645协议与电表通信,配置config.lua
即可采集所需数据。修改APRUS.lua
的内容时,请咨询相关技术人员,随意修改可能导致适配器无法正常工作。因此,此文档主要介绍config.lua
内容,旨在帮助相关人员了解如何通过脚本配置实现对应协议的数据采集。
第二章 配置说明
3.1 config.lua 配置
config.lua
由五个部分组成:ipmode
、inet_addr
、netmask
、Luaver
、devinfo
。以下分别介绍这五大部分的功能:
示例配置:
lua
APRUS X={
ipmode="Manual",
inet_addr="192.168.1.234",
netmask="255.255.255.0",
Luaver="MAX.Lua.V030300.R",
devinfo="DLT645Dev",
},
APRUS Lua-DLT645 配置说明
3.1 config.lua配置
config.lua
由五个部分组成:ipmode
、inet_addr
、netmask
、Luaver
、devinfo
。以下分别介绍这五大部分的功能:
序号 | 模块 | 说明 | 备注 |
---|---|---|---|
1 | ipmode | IP获取方式,默认为手动模式 | 不更改 |
2 | inet_addr | APRUS的IP地址,需与对接设备保持在相同网段内 | 不重复 |
3 | netmask | 子网掩码,默认为255.255.255.0 | 不修改 |
4 | Luaver | 脚本版本号,每次变更都需更新 | 区分版本 |
5 | devinfo | 设备类型,表示对接的是哪类设备 | 对接设备 |
3.1.1 Ipmode: IP 获取方式
ipmode="Manual"
。
ipmode
为APRUS 的IP获取方式,默认为Manual
(手动模式),人为填写APRUS的IP。
3.1.2 Inet_addr: APRUS IP
Inet_addr="192.168.1.234"
。
Inet_addr
为APRUS的IP地址,需要同对接设备保持在相同的网段内,否则无法通过网口通信。
3.1.3 Netmask: 子网掩码
netmask="255.255.255.0"
,
netmask
为子网掩码,默认为255.255.255.0,通常情况下保持不变。
3.1.4 Devinfo: 设备类型
devinfo= "DLT645Dev"
。
devinfo
设置设备类型,用于标识对接的是哪种类型的设备。
3.1.5 Luaver: 脚本版本
Luaver = "MAPRUS.L.V030005.R"
。
Luaver
设置当前脚本的版本号,每次更新都需要更改并向上增加版本号;主/子/阶段版本号不能为0,一般情况下如果只更新config.lua
的配置无需更新主/子版本号,只要修改阶段版本号即可。
3.1.6 DLT645 Interface: DLT645 设备信息
示例:
lua
Device={
rate=2400,
databit=8,
stopbit=1,
parity="Even", -- None/Odd/Even
},
DLT645 设备接口信息
串行通信参数
序号 | 模块 | 说明 |
---|---|---|
1 | rate=2400 | 波特率 |
2 | databit=8 | 数据位 |
3 | stopbit=1 | 停止位 |
4 | Parity=”Even” | 校验位 |
3.1.7 Node节点信息
node={
{addr="1",dflags="A010",dtype="bcd-num",pMode={1,5},dStyle={"L1_A010"},Offset={{"/",10000}}},
{addr="1", dflags="04000102", dtype="bcd-str", pMode={1,5}, dStyle={"L1_04000102"}},
{addr="1",dflags="01010000",dtype="other",format="20xxxx-xxxx:xxxxxx.xx",pMode={1,5},dStyle={"L1_01010001"}},
}
节点配置说明
采集及上报配置主要由以下几个参数构成。
配置参数表
配置 | 参数 | 说明 | 备注 |
---|---|---|---|
Node | addr | dlt电表表号,地址 | |
dflags | 数据标识 | 97版本:4字符 07版本:8字符 |
|
dtype | 数据类型 | bcd-num: 按bcd数字类型解析,用于整形类数据 bcd-str: 按bcd字符串类型解析,用于日期等类型数据 other: 用于特殊类型指定,需搭配 format 参数使用。例如:数据标识01010000 返回的数据内容同时包含日期和功率值,则可以指定format="20xx xx-xx xx:xx xxxx.xx" 会输出2020 04-23 15:48 13.98 |
|
format | 特定格式 | 当dtype 为other 时有效。1个X 表示一个位有效数 |
|
author | 操作者 | 用于反向写入数据时使用 (只读取可不使用) | |
pwd | 密码 | 用于反向写入数据时使用 (只读取可不使用) | |
pMode | 上报方式 | 详见附件一 | |
dOffset | 数据偏移 | 详见附件二 | |
dStyle | 上报名称 | 自行设置上报名称 | |
dExt | 条件策略 | (选填)改变上报条件策略, 当pMode 为{2,0}时有效,{">", 100} 表示当原始数据发生改变并且改变值大于100时上报,{"<", 100} 表示当原始数据发生改变并且改变值小于100时上报,{"=", 100} 表示当原始数据发生改变并且改变值等于100时上报 |
附件一 - 上报模式
模块 | 举例 | 参数1 | 参数2 |
---|---|---|---|
pMode | 上报类型 | pMode={1,5} | 1:周期上报 自行设置上报周期 2:改变上报 0 |
附件二 - 数据偏移
模块 | 参数1 | 参数2 | 备注 |
---|---|---|---|
dOffset | dOffset={{“+”,10},{“*”,5}} | “+” N “-“ N “*” N “/“ N “.” N |
保留N位小数 |
注意事项:
- 如果无偏移计算,则无须填写此字段,或者填写为dOffset={}。
- 如果只有单层偏移,那么只需要设置参数1即可,假如一个参数需要10,即dOffset={{““,10}}。
- 如果有双层偏移,那么需要设置参数1,参数2,加入一个参数需要10,然后在+10,即dOffset={{““,10},{“+”,10}}。
- 如果上报数据包含小数且需要保留指定的小数位数时,即可对参数1进行设置,假如需要保留3位小数,即dOffset={{“.”,3}}。
apurs.lua配置
说明:function start()
为主流程入口函数。
user 全局通用/配置类
网络配置与消息处理
网络配置与消息处理
- 本机网络配置方法
`
lua
user.ipconfig(config.APRUSX.ipmode, config.APRUSX.inet_addr, config.APRUSX.netmask)
消息捕获方法
捕获消息:
msg = user.waitmsg()
消息来源标识:
mqtt-sys:来自MQTT系统消息。
mqtt-msg:来自MQTT数据消息。
dlt645:来自DLT645管理器的消息。
通用消息属性 (针对多种协议)
当msg.from为modbus、opcua、mitsufx、mitsumc、dlt645、s7等协议时,以下属性通用:
msg.session: 消息会话对象。
msg.code: 消息号。
msg.style_L: 变量名称。
msg.val_L: 变量值。
msg.style_E: 事件变量名称。
msg.val_E: 事件变量值。
msg.z: 条件改变标志位。
MQTT消息特有属性
当msg.from为mqtt时,使用以下属性:
msg.topic: MQTT话题。
msg.payload: MQTT消息数据。
MQTT系统消息特有属性
当msg.from为mqtt-sys时,msg.code表示MQTT事件:
0: MQTT断开。
1: MQTT连接。
设置Lua版本信息
user.setLuaver(Luaver)
设置设备信息
user.setdevinfo(devinfo)
MQTT对象方法
创建MQTT对象实例:
mqttobj = mqtt.new()
配置MQTT连接信息(选填):
mqtt.config(mqttobj, “mqtt_1”, “192.168.1.159”, “1883”)
订阅话题:
mqtt.subscribe(mqttobj, “p2p”)
发布消息:
mqtt.publish(mqttobj, nil, topic, payload)
运行MQTT对象:
mqtt.run(mqttobj)
备注:支持多实例,最大可创建3个MQTT对象。
DLT645对象方法
创建DLT645对象实例:
dlt645obj = dlt645.new()
配置DLT645对象:
dlt645.config(dlt645obj, rate, databit, stopbit, parity)
添加采集节点:
dlt645.add_collectnode(dlt645obj, addr, flags)
添加变量节点:
dlt645.add_varnode(dlt645obj, addr, dflags, author, pwd, dtype, format, pMode, dStyle, dOffset, dExt)
向被指定节点写入数据:
dlt645.write(dlt645obj, style, val)
启动DLT645实例:
dlt645.run(dlt645obj)
停止DLT645实例:
dlt645.stop(dlt645obj)