APRUS Lua-DLT645 配置说明

第一章 概述

1.1 文档说明

本文档概述了APRUS Lua-DLT645协议的相关配置说明。APRUS 的Lua脚本包含两个文件:APRUS.luaconfig.lua。APRUS通过DLT645协议与电表通信,配置config.lua即可采集所需数据。修改APRUS.lua的内容时,请咨询相关技术人员,随意修改可能导致适配器无法正常工作。因此,此文档主要介绍config.lua内容,旨在帮助相关人员了解如何通过脚本配置实现对应协议的数据采集。

第二章 配置说明

3.1 config.lua 配置

config.lua由五个部分组成:ipmodeinet_addrnetmaskLuaverdevinfo。以下分别介绍这五大部分的功能:

示例配置:

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由五个部分组成:ipmodeinet_addrnetmaskLuaverdevinfo。以下分别介绍这五大部分的功能:

序号 模块 说明 备注
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 特定格式 dtypeother时有效。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位小数

注意事项:

  1. 如果无偏移计算,则无须填写此字段,或者填写为dOffset={}。
  2. 如果只有单层偏移,那么只需要设置参数1即可,假如一个参数需要10,即dOffset={{““,10}}。
  3. 如果有双层偏移,那么需要设置参数1,参数2,加入一个参数需要10,然后在+10,即dOffset={{““,10},{“+”,10}}。
  4. 如果上报数据包含小数且需要保留指定的小数位数时,即可对参数1进行设置,假如需要保留3位小数,即dOffset={{“.”,3}}。

apurs.lua配置

说明:function start()为主流程入口函数。

user 全局通用/配置类

网络配置与消息处理

网络配置与消息处理

  1. 本机网络配置方法
    `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)

文档更新时间: 2025-01-10 15:53   作者:CGL