1. AprusX Lua DLT645配置说明
- 1. AprusX Lua DLT645配置说明
1.1. 概述
1.1.1. 文档说明
文档概述AprusX Lua DLT645协议相关配置说明,AprusXLua包含两个文件,aprus.lua和config.lua。AprusX Lua通过MitsuMC协议获取三菱PLC数据,通过配置config.lua即可实现数据采集,aprus.lua中请勿进行操作;此文档主要介绍config.lua内容。
此文档目的为让相关人员清楚如何通过对脚本的配置实现对应协议的数据采集,详细介绍lua端config.lua的相关内容,如遇到新的需求或者处理不当的地方联系相关负责人。
1.1.2. 适用对象
本文档的目的读者是所有通过适配器对西门子DLT645系列和电表(DLT645协议)进行数据采集的人员。
1.1.3. 术语和缩略词
序号 | 术语名称 | 其它名称 | 术语说明 |
---|---|---|---|
1 | MixIOT | Mixlinker Internet Of Things | 深圳市智物联网络有限公司物联网系统 |
2 | GARDS | Generic Asynchronous Remote Data Service | 通用异步远程数据服务 |
3 | MQTT | Message Queuing Telemetry Transport Protocol | 消息队列遥感传输协议 |
4 | JSON | JavaScript Object Notation | JS 对象标记 |
5 | APRUS | Advanced Programmable Remote Utility Server | 高级可编程远程数据适配终端 |
1.1.4. 参考资料
[3].《HslCommunicationDemo》
[4].《昆仑通态HMI屏编程软件》
1.2. 背景介绍
此文档只针对MitsuMc协议;针对AprusX DLT645的编写需要做一个大概的描述:
(1). AprusX在数据获取时,分为两部分,数据采集(CollrReg)和数据上报(CollpReg),为什么要分开呢,主要是由于提升采集效率而设定,数据采集过程中尽可能的把能连续采集的一次采集回来。
注意:Mitsufx协议在数据采集的时候是以双字(short)进行采集。
(2). 数据上报是将已经采集的数据进行必要的数据处理,然后上报到云端。
1.3. 配置说明
1.3.1. config.lua简介
Config.lua由5大部分组成,ipmode、inet_addr、netmask、luaver、devinfo;分别来介绍这5大部分的功能:
序号 | 模块 | 说明 | 备注 |
---|---|---|---|
1 | ipmode | IP获取方式 | 默认Manual,不更改 |
2 | Inet_addr | AprusX IP | 与对接的设备保持相同网段,且同网段内IP不能重复 |
3 | netmask | 子网掩码 | 默认255.255.255.0,一般不修改,除非相同网段内没有足够的IP |
4 | luaver | 脚本版本号 | 每次变更脚本都需更新版本,一边区分不同版本的区别 |
5 | devinfo | 设备类型 | 对接的设备类型 |
示例:
AprusX={
ipmode="Manual",
inet_addr="192.168.1.234",
netmask="255.255.255.0",
luaver="MAX.LUA.V030300.R",
devinfo="MitsuMcDev",
},
1.3.2. Ipmode:ip获取方式
Ipmode="Manual",
Ipmode为AprusX的ip获取方式,默认为Manual,手动模式,人为填写AprusX的ip。
1.3.3. Inet_addr:AprusX Ip
Inet_addr="192.168.1.234",
Inet_addr为AprusX的ip,手动填写ip,注意,这里为对接设备的ip,需要同设备保持在相同的网段内,否则无法对接设备。
1.3.4. netmask:子网掩码
netmask="255.255.255.0",
Netmask为子网掩码,默认为255.255.255.0,与客户保持一直,一般情况下均为255.255.255.0不变。
1.3.5. devinfo:设备类型
devinfo= "2DLT645Dev",
Devinfo设置设备类型,不同的适配器对接的设备类型不同,比如对接三菱Mitsufx,等等,由于对接的设备类型不同,因此为了方便使用,知道对接的是哪一个客户的哪类型设备,我们设定了设备类型。
1.3.6. luaver:脚本版本
luaver = "MAprus.L.V030005.R",
Luaver设置当前脚本的版本号,每次更新都需要更改并向上增加版本号;版本号在增加过程中,只需要修改主/子/阶段版本号即可,其他无需修改,主/子/阶段版本号不能为0,一般情况下如果只更新config.lua的配置无需更新主/子版本号,只要修改阶段版本号就行,版本号一定是要像上叠加,这样才能保证之前的版本有备份,才能自动升级。
1.3.7. DLT645:interface: DLT645设备信息
Device={
rate=2400,
databit=8,
stopbit=1,
parity="Even", -- None/Odd/Even
},
DLT645设备接口信息区分三个部分:
序号 | 模块 | 说明 |
---|---|---|
1 | rate=2400 | 波特率 |
2 | databit=8 | 数据位 |
4 | Parity=”Even” | 奇偶校验 |
3 | stopbit=1 | 停止位 |
1.3.8. 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="20xx xx-xx xx:xxxxxx.xx", pMode={1,5},dStyle={"L1_01010001"}},
}
1.3.8.1. 节点配置
采集及上报配置,主要有几个参数构成:
1.3.8.2. 附件一
1.3.8.3. 附件二
1.3.9. Apurs配置
说明:function start() 为主流程入口函数
1.3.9.1. user 全局通用/配置类
1.3.9.1.1. 本机网络配置方法
user.ipconfig(config.AprusX.ipmode, config.AprusX.inet_addr,config.AprusX.netmask)
1.3.9.1.2. 消息捕获方法
msg = user.waitmsg()
- msg.from:消息来源
- mqtt-sys 来自mqtt系统消息
- mqtt-msg 来自mqtt数据消息
- Modbus 来自Modbus管理器消息
- modubs 来自modbus管理器消息
- opcua 来自opcua管理器消息
- mitsufx 来自mitsufx管理器的消息
- mitsumc 来自mitsumc管理器的消息
- dlt645 来自dlt645管理器的消息
- msg.session: 消息会话对象
以下为 msg.from为 Modbus modbus opcua mitsufx mitsumc dlt645通用
- msg.code:消息号
- msg.style_L:变量名称
- msg.val_L:变量值
- msg.style_E:事件变量名称
- msg.val_E:事件变量值
- msg.z:条件改变标志位
以下为 msg.from为 mqtt时使用
- msg.topic:mqtt话题
- msg.payload:mqtt消息数据
- 以下为 msg.from为 mqtt-sys时使用
- msg.code:mqtt事件(0: mqtt断开;1: mqtt 连接)
1.3.9.1.3. 设置lua版本信息
user.setluaver(luaver)
1.3.9.1.4. 设置设备信息
user.setdevinfo(devinfo)
1.3.9.2. mqtt对象方法
1.3.9.2.1. 创建mqtt对象实例
mqttobj = mqtt.new()
1.3.9.2.2. 配置mqtt连接信息 (选填)
mqtt.config(mqttobj, "mqtt_1", "192.168.1.159", "1883")
- param 1 实例
- param 2 实例id
- param 3 mqtt服务器ip
- param 4 mqtt 服务器端口
注:此配置选填 如果不填 则通过gards 服务器自动指定
1.3.9.2.3. 话题订阅
mqtt.subscribe(mqttobj, "p2p")
1.3.9.2.4. 发布消息
mqtt.publish (mqttobj, reserve, topic, payload)
reserve: 预留参数 必须有 可填nil
1.3.9.2.5. mqtt运行
mqtt.run(mqttobj)
备注:支持多实例,最大可创建3个mqtt对象
1.3.9.3. DLT645 对象方法
1.3.9.3.1. 创建DLT645对象实例
dlt645obj = dlt645.new()
1.3.9.3.2. DLT645对象配置
dlt645.config(dlt645obj, rate, databit, stopbit, parity)
- param 1 实例
- param 2 波特率
- param 3 数据位
- param 4 停止位
- param 5 奇偶校验
1.3.9.3.3. DLT645 添加采集节点
dlt645.add_collectnode(dlt645obj, addr, flags)
- param 1 实例
- param 2 电表地址
- param 3 数据标识
1.3.9.3.4. DLT645 添加变量节点
dlt645.add_varnode(dlt645obj, addr, dflags,author,pwd,dtype,format,pMode,dStyle, dOffset, dExt)
- param 1 实例
- param 2 电表地址
- param 3 数据标识
- param 4 操作者
- param 5 密码
- param 6 数据类型
- param 7 采集上报模式
- param 8 采集上报名称
- param 9 数据补偿计算
- param 10 改变上报条件限制
1.3.9.3.5. DLT645变量节点写入数据
dlt645.write(dlt645obj, style, val)
- param 1 实例
- param 2 变量名称
- param 3 变量值
1.3.9.3.6. DLT645实例启动
dlt645.run(dlt645obj)
1.3.9.3.7. DLT645实例暂停运行
dlt645.stop(dlt645obj)