- 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)