1. AprusX Lua MitsuFx配置说明
- 1. AprusX Lua MitsuFx配置说明
1.1. 概述
1.1.1. 文档说明
文档概述AprusX Lua Mitsufx协议相关配置说明,AprusXLua包含两个文件,aprus.lua和config.lua。AprusX Lua通过Mitsufx协议获取三菱fx系列数据,通过配置config.lua即可实现数据采集,aprus.lua中请勿进行操作;此文档主要介绍config.lua内容。
此文档目的为让相关人员清楚如何通过对脚本的配置实现对应协议的数据采集,详细介绍lua端config.lua的相关内容,如遇到新的需求或者处理不当的地方联系相关负责人。
1.1.2. 适用对象
本文档的目的读者是所有通过适配器对西门子Mitsufx系列PLC(Mitsufx协议)进行数据采集的人员。
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. 背景介绍
此文档只针对Mitsufx协议;针对AprusX Mitsufx的编写需要做一个大概的描述:
(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= “MitsuFxDev”。
Devinfo设置设备类型,不同的适配器对接的设备类型不同,比如对接三菱Mitsufx,等等,由于对接的设备类型不同,因此为了方便使用,知道对接的是哪一个客户的哪类型设备,我们设定了设备类型。
1.3.6. luaver:脚本版本
luaver = "MAprus.L.V030005.R"
Luaver设置当前脚本的版本号,每次更新都需要更改并向上增加版本号;版本号在增加过程中,只需要修改主/子/阶段版本号即可,其他无需修改,主/子/阶段版本号不能为0,一般情况下如果只更新config.lua的配置无需更新主/子版本号,只要修改阶段版本号就行,版本号一定是要像上叠加,这样才能保证之前的版本有备份,才能自动升级。
1.3.7. Mitsufx:Device: Mitsufx设备信息
Device={
Rate=38400,
DataBit=8,
StopBit=1,
Parity="None", -- None/Odd/Even
format=0, --0 No CR LF 1 Use CR LF
checksum=1 --0 No CheckSum 1 Use CheckSum
},
Mitsufx设备信息区分三个部分:
序号 | 模块 | 说明 |
---|---|---|
1 | Rate=38400 | 波特率 |
2 | DataBit=8 | 数据位:5/6/7/8 |
3 | StopBit=1 | 停止位:1/2 |
4 | Parity="None" | 校验位:None/Odd/Even |
5 | Format=0 | Fx协议格式:0不追加cr lf 1 启用cr lf |
6 | Checksum=1 | Fx协议:0 不使用校验 1 使用校验 |
1.3.8. Node节点信息
node={
collect={
{ID=1, reg="1", addr=0, cnt=50},
},
variable={
{ID=1,reg="M",addr=1,dtype="byte",dBit=0,pMode={1,8},dStyle={"L1_3_1_0"}},
},
}
1.3.8.1. collect:采集配置
Collect设置采集配置,采集配置主要有几个参数构成,需要注意的是Modbus协议采集时都是通过双字(short)去采集。
collect={
{ID=1, reg='X', addr=0, cnt=5},
{ID=1, reg='Y', addr=0, cnt=5},
{ID=1, reg='M', addr=0, cnt=5},
{ID=1, reg='S', addr=0, cnt=5},
{ID=1, reg='D', addr=0, cnt=5},
}
采集配置 | 参数 | 说明 | 备注 |
---|---|---|---|
CollrReg | ID | 设备ID | |
reg | 寄存器类型 | M/S/D/X/Y TC/TR/TN/TS CC/CR/CN/CS | |
addr | 采集地址起始 | 当寄存器类型不为D时 实际地址为 addr*16 当寄存器类型为D时 实际地址为 addr | |
cnt | 采集长度 | D寄存器最大采集长度64 M/S/D寄存器最大采集长度32 |
1.3.8.2. variable:上报配置
Variable设置上报配置,上报配置时需要把采集到的数据处理成最终实际使用的数据,包括数据处理逻辑,上报逻辑,数据分类等等;由于采集时都是按照双字(short)采集,所以在数据处理的时候要需要注意。
注意:上报配置设置的地址,一定是在采集配置里面有的,否则数据不准确。
1.3.9. 附件一
1.3.10. 附件二
注意:
- 如果无偏移,那么参数1,参数2的数据全部设为0,即
dOffset={\{0,0\},\{0,0\}}
- 如果只有单层偏移,那么只需要设置参数1即可,假如一个参数需要*10,即
dOffset={\{"\*",10\},\{0,0\}}
- 如果有双层偏移,那么需要设置参数1,参数2,加入一个参数需要*10,然后在+10,即
dOffset={\{"\*",10\},\{"+",10\}}
1.3.11. 附件三
标识 | 说明 |
---|---|
dBit | 当dtype为bit时有效,范围 0~15 标识第几位 |
当dtype为byte/ubyte时有效 范围0~1 标识 低/高字节 |
1.4. Apurs配置
说明:function start() 为主流程入口函数
1.4.1. user 全局通用/配置类
1.4.1.1. 本机网络配置方法
user.ipconfig(config.AprusX.ipmode, config.AprusX.inet_addr,config.AprusX.netmask)
1.4.1.2. 消息捕获方法
msg = user.waitmsg()
- msg.from:消息来源
- mqtt-sys 来自mqtt系统消息
- mqtt-msg 来自mqtt数据消息
- Modbus 来自Modbus管理器消息
- modubs 来自modbus管理器消息
- opcua 来自opcua管理器消息
- mitsufx 来自mitsufx管理器的消息
- msg.session: 消息会话对象
以下为 msg.from为 Modbus modbus opcua mitsufx通用
- 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.4.1.3. 设置lua版本信息
user.setluaver(luaver)
1.4.1.4. 设置设备信息
user.setdevinfo(devinfo)
1.4.2. mqtt对象方法
1.4.2.1. 创建mqtt对象实例
mqttobj = mqtt.new()
1.4.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.4.2.3. 话题订阅
mqtt.subscribe(mqttobj, "p2p")
1.4.2.4. 发布消息
mqtt. publish (mqttobj, reserve, topic, payload)
reserve: 预留参数 必须有 可填nil
1.4.2.5. mqtt运行
mqtt.run(mqttobj)
备注:支持多实例,最大可创建3个mqtt对象
1.4.3. Mitsufx 对象方法
1.4.3.1. 创建mitsufx对象实例
mitsufxobj = mitsufx.new()
1.4.3.2. Mitsufx对象配置
mitsufx.config(mitsufxobj, rate, databit, stopbit, parity, format, checksum)
- param1 实例
- param2 fx设备波特率
- param3 fx设备数据位
- param4 fx设备停止位
- param5 fx设备校验
- param6 fx协议格式设置
- param7 fx协议校验控制
1.4.3.3. Mitsufx 添加采集节点
mitsufx.add_collectnode(mitsufxobj, ID, reg, addr, cnt)
- param 1 实例
- param 2 寄存器操作码
- param 3 寄存器地址
- param 4 采集长度
1.4.3.4. Mitsufx 添加变量节点
mitsufx.add_collectnode (mitsufxobj, ID, reg, addr, dtype, dBit, len, pMode,dStyle, dOffset, dExt)
- param 1 实例
- param 2 设备ID
- param 3 寄存器类型
- param 4 寄存器地址
- param 5 变量类型
- param 6 位偏移 (只有当数据类型为bit时有效 但此字段必须有)
- param 7 变量长度 (只有当数据类型为bytes时有效 但此字段必须有)
- param 8 采集上报模式
- param 9 采集上报名称
- param 10 数据补偿计算
- param 11 改变上报条件限制
1.4.3.5. Mitsufx变量节点写入数据
mitsufx.write(mitsufxobj, style, val)
- param 1 实例
- param 2 变量名称
- param 3 变量值
1.4.3.6. Mitsufx 实例启动
mitsufx.run(mitsufxobj)
1.4.3.7. Mitsufx 实例暂停运行
mitsufx.stop(mitsufxobj)
备注 : mitsufx 仅支持单实例模式