APRUS Lua-MitsuFx 配置说明
第一章 概述
1.1 文档说明
- 文档概述:APRUS Lua-MitsuFx协议相关配置说明,APRUS 的Lua包含
APRUS.lua
和config.lua
两个文件。APRUS 通过MitsuFx协议与三菱FX系列PLC通信,然后配置config.lua
即可采集需要的数据。 - 修改提示:如需修改
APRUS.lua
文件的内容时,请咨询相关的技术人员,随意修改会导致适配器不能正常工作,所以此文档主要介绍config.lua
内容。 - 目的:为了让相关人员清楚如何通过对脚本的配置实现对应协议的数据采集,详细介绍
config.lua
的相关内容,如遇到新的需求或者处理不当的地方联系相关负责人。
1.2 适用对象
本文档的目的读者是所有通过适配器对三菱Fx系列PLC(MitsuFx协议)进行数据采集的人员。
1.3 术语和缩略词
序号 | 术语名称 | 其它名称 | 术语说明 |
---|---|---|---|
1 | APRUS | Advanced Programmable Remote Utility Server | 高级可编程远程数据适配终端 |
1.4 参考资料
- [1].《HslCommunicationDemo》
- [2].《昆仑通态HMI屏编程软件》
第二章 背景介绍
- 数据获取两部分:APRUS 在数据获取时分为数据采集(CollrReg)和数据上报(CollpReg),主要是为了提升采集效率而设定。
- 数据上报:将已经采集的数据进行必要的数据处理,然后上报到云端。
第三章 配置说明
3.1 config.lua 配置
config.lua
由5大部分组成,分别是ipmode
、inet_addr
、netmask
、Luaver
、devinfo
。下面将分别介绍这5大部分的功能。
示例
APRUS X={
ipmode="Manual",
inet_addr="192.168.1.234",
netmask="255.255.255.0",
Luaver="MAX.Lua.V030300.R",
devinfo="MitsuFxDev",
},
说明
ipmode: IP获取方式
ipmode=”Manual”。
ipmode为APRUS 的ip获取方式,默认为Manual,手动模式,人为填写APRUS的ip。Inet_addr: APRUS IP
Inet_addr=”192.168.1.234”。
Inet_addr为APRUS 的ip,手动填写ip,需要同对接设备保持在相同的网段内,否则无法与对接设备通信。netmask: 子网掩码
netmask=”255.255.255.0”,
netmask为子网掩码,默认为255.255.255.0,与客户设备保持一直,一般情况下均为255.255.255.0不变。Luaver: 脚本版本号
Luaver = “MAPRUS.L.V030005.R”。
Luaver设置当前脚本的版本号,每次更新都需要更改并向上增加版本号;版本号在增加过程中,只需要修改主/子/阶段版本号即可,其他无需修改,主/子/阶段版本号不能为0,一般情况下如果只更新config.Lua的配置无需更新主/子版本号,只要修改阶段版本号就行,版本号一定是要向上叠加,这样才能保证之前的版本有备份,才能自动升级。devinfo: 设备类型
devinfo= “MitsuFxDev”。
devinfo设置设备类型,由于对接的设备类型不同,因此为了方便使用,知道对接的是哪类设备,我们设定了设备类型。
3.1.6 MitsuFx:Device: MitsuFx设备信息
- 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
},
序号 模块 说明
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 使用校验
3.1.7 Node节点信息
- Node节点信息
node={
collect={{ID=1, reg="M", addr=0, cnt=32},
},
variable={{ID=1,reg="M",addr=1,dtype="byte",pMode={1,5},dStyle={"L1_M_1_O1"}, dOffset={{"*",10}},dExt={}},
},
1.collect:采集配置
collect设置采集配置,采集配置主要有几个参数构成。
采集配置 参数 说明 备注
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
2.variable:上报配置
variable设置上报配置,上报配置时需要把采集到的数据处理成最终实际使用的数据,包括数据处理逻辑,上报逻辑,数据分类等等;由于采集时都是按照双字(short)采集,所以在数据处理的时候要需要注意。
注意:上报配置设置的地址,一定是在采集配置里面有的,否则数据不准确。
采集配置 参数 说明 备注
CollpReg ID 设备ID ID = 1
reg MitsuFx寄存器功能码 寄存器类型 M/S/D/X/Y TC/TR/TN/TS CC/CR/CN/CS
addr 上报地址 需要上报的数据地址
dtype 变量数据类型 dtype=”short” bit byte short/ushort(Word类型即为short/ushort) Int/uint(Double Word类型即为int/uint) float
pMode 采集上报方式 pMode={1,5} 详见附件一
dOffset 数据偏移 dOffset={{“+”,10},{“+”,5}} 数据偏移在关于bit处理的时候是不需要的,详见附件二
dBit 位处理 dBit=5 位标识,详见附件三
dExt 附件报文处理 dExt={{0,0},{0,0}} (选填)改变上报条件限制, 当pMode为{2,0}时有效,{“>”, 100} 表示 当原始数据发生改变 并且改变值大于100时上报,{“<”, 100} 表示 当原始数据发生改变 并且改变值小于100时上报,{“=”, 100} 表示 当原始数据发生改变 并且改变值等于100时上报
dStyle KEY dStyle={“L1_3_0_0”} 自行设置
len 字符串长度 len=5 当dtype为bytes时有效,表示字符串长度
3.2 apurs.lua配置
- 说明:
function start() 为主流程入口函数
3.2.1 user 全局通用/配置类
本机网络配置方法
user.ipconfig(config.APRUSX.ipmode,config.APRUSX.inet_addr,config.APRUSX.netmask)
消息捕获方法
msg = user.waitmsg()
msg.from:消息来源 mqtt-sys 来自mqtt系统消息 mqtt-msg 来自mqtt数据消息 mitsufx 来自mitsufx管理器的消息以下为 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:条件改变标志位以下为 msg.from为 mqtt时使用
msg.topic:mqtt话题
msg.payload:mqtt消息数据以下为 msg.from为 mqtt-sys时使用
msg.code:mqtt事件 0: mqtt断开 1: mqtt 连接
设置Lua版本信息
user.setLuaver(Luaver)
设置设备信息
user.setdevinfo(devinfo)
3.2.2 mqtt对象方法
创建mqtt对象实例
mqttobj = mqtt.new()
配置mqtt连接信息 (选填)
mqtt.config(mqttobj, “mqtt_1”, “192.168.1.159”, “1883”)
param 1 mqtt对象实例
param 2 实例id
param 3 mqtt服务器ip
param 4 mqtt 服务器端口
注:此配置选填,如果不填,则通过gards 服务器自动指定话题订阅
mqtt.subscribe(mqttobj, “p2p”)
发布消息
mqtt.publish (mqttobj, reserve, topic, payload)
reserve: 预留参数,必须有,可填nil。mqtt运行
mqtt.run(mqttobj)
备注:支持多实例,最大可创建3个mqtt对象
3.2.3 MitsuFx 对象方法
创建MitsuFx对象实例
mitsufxobj = mitsufx.new()
MitsuFx对象配置
mitsufx.config(mitsufxobj, rate, databit, stopbit, parity, format, checksum)
param 1 MitsuFx对象实例
param 2 fx设备波特率
param 3 fx设备数据位
param 4 fx设备停止位
param 5 fx设备校验
param 6 fx协议格式设置
param 7 fx协议校验控制MitsuFx添加采集节点
mitsufx.add_collectnode(mitsufxobj, ID, reg, addr, cnt)
param 1 MitsuFx对象实例
param 2 寄存器操作码
param 3 寄存器地址
param 4 采集长度MitsuFx添加变量节点
mitsufx.add_collectnode (mitsufxobj, ID, reg, addr, dtype, dBit, len, pMode, dStyle, dOffset, dExt)
param 1 MitsuFx对象实例
param 2 设备ID
param 3 寄存器类型
param 4 寄存器地址
param 5 变量类型
param 6 位偏移 (只有当数据类型为bit时有效 但此字段必须有)
param 7 变量长度 (只有当数据类型为bytes时有效 但此字段必须有)
param 8 采集上报模式
param 9 采集上报名称
param 10 数据补偿计算
param 11 改变上报条件限制Mitsufx向被指定节点写入数据
mitsufx.write(mitsufxobj, style, val)
param 1 MitsuFx对象实例
param 2 变量名称
param 3 变量值Mitsufx 实例启动
mitsufx.run(mitsufxobj)
Mitsufx 实例停止
mitsufx.stop(mitsufxobj)
备注 : mitsufx 仅支持单实例模式