#APRUS Lua-断网续传 配置说明
概述
断网续传是Aprus适配器支持的功能之一;用于在网络状态不佳的情况下先保存采集到的点位数据,并在网络状态良好的情况下上传这些数据到云端,以此保证数据的连续性。
断网续传功能依赖于httpsqs数据库
,aprus适配器通过Lua接口
和httpsqs数据库
进行数据交互。
若mqtt服务器断开链接时,向httpsqs发起请求保存数据;若mqtt服务器链接成功则向httpsqs发起请求获取数据,并上报给mqtt服务器。由于httpsqs数据库的存在,在aprus适配器断电的情况下,数据也能够保存下来,并在网络状态良好的情况下上传数据到云端。
1.1 httpsqs API
1.1.1 httpsqs .new
功能 | 创建httpsqs数据库实例对象 |
---|---|
接口描述 | httpsqsObj = httpsqs .new() |
httpsqsObj |
httpsqs .new() 返回的实例对象 |
1.1.2 httpsqs .run
功能 | 运行httpsqs实例对象 |
---|---|
接口描述 | httpsqs.run(httpsqsObj) |
httpsqsObj |
httpsqs .new() 返回的实例对象 |
1.1.3 httpsqs .maxnum
功能 | 设置httpsqs数据库最大队列数量; 需要在httpsqs.run之后运行 |
---|---|
接口描述 | httpsqs.maxnum(httpsqsObj, "qnname ", 1000) |
qnname |
数据库队列名称 |
1000 |
要设置的数据库的队列数量 |
1.1.4 httpsqs .get
功能 | 获取数据库队列的数据 |
---|---|
接口描述 | httpsqs_data=httpsqs.get(httpsqsObj,"qnname ") |
httpsqs_data |
从数据库队列中获取到的数据 |
httpsqsObj |
httpsqs .new() 返回的实例对象 |
"qnname " |
数据库队列名称 |
1.1.4 httpsqs .put
功能 | 向数据库队列中存储数据 |
---|---|
接口描述 | httpsqs.put(httpsqsObj, cjson.encode(config.Httpsqs1)) |
httpsqsObj |
httpsqs .new() 返回的实例对象 |
cjson.encode(config.Httpsqs1) |
将config.Httpsqs1 打包为json格式;config.Httpsqs1 为lua的表,具体的参数如下:Httpsqs1 = { qnname = "test_qnname_1", data = "hello" } ,qnname 为数据库队列名称data 为要存储的数据 |
1.1.5 httpsqs .debug
功能 | 设置数据库LOG打印级别 |
---|---|
接口描述 | httpsqs.debug(httpsqsObj, 0x01010101) |
httpsqsObj | httpsqs .new()返回的实例对象 |
0x01010101 | 值为32位十六进制数字,这个数值分成4个字节,单独每个字节为1时开启对应功能,为0时关闭对应功能。从低位到高4个字节的功能分别是:错误信息、连接信息和一般信息、接收内容详情、发送内容详情。此设置可以帮助您了解设备的运行情况,排查错误,优化性能。请根据需要选择要开启的调试信息级别。 |
## |
1.1.5 httpsqs .DBdebug
功能 | 设置数据库内部LOG打印级别 |
---|---|
接口描述 | httpsqs.DBdebug(httpsqsObj, 0) |
httpsqsObj | httpsqs .new()返回的实例对象 |
0 | 值为32位十六进制数字,这个数值分成4个字节,单独每个字节为1时开启对应功能,为0时关闭对应功能。从低位到高4个字节的功能分别是:错误信息、连接信息和一般信息、接收内容详情、发送内容详情。此设置可以帮助您了解设备的运行情况,排查错误,优化性能。请根据需要选择要开启的调试信息级别。 |
2 APRUS.lua配置说明**
package.cpath="./?.so"
package.cpath = "./?.so"
package.path = "./?.lua"
cjson = require "cjson"
config = require "config"
require "modbus"
require "httpsqs"
function act_control(m, json)
for k, v in pairs(json) do
if k ~= "Act" then
modbus.write(modbusObj, k, v)
end
end
end
function mqttdata_handle(m, topic, data)
local json = cjson.decode(data)
if json.Act == "Control" then
act_control(m, json)
end
end
mqtt_connect = 0 --0断开;1链接
function mqttsys_handle(m, code)
if code == 0 then
config.logInfo.payload = "===================Mqtt Disconnect==================="
user.log(cjson.encode(config.logInfo))
mqtt_connect = 0
elseif code == 1 then
mqttDB_name = "httpsqs_DB"
while true do
mqtt_conndata = httpsqs.get(httpsqsObj, config.Httpsqs1.qnname)
if mqtt_conndata then
mqtt.publish(mqtt3Obj, mqttDB_name, "r", mqtt_conndata)
else
config.logInfo.payload = "=====Mqtt Connected and httpsqs DB is Empty===="
user.log(cjson.encode(config.logInfo))
break;
end
end
mqtt_connect = 1
end
end
function modbusevent_handle(session, code, style_L, val_L, style_E, val_E, z)
if code == 15 then
local json = cjson.encode(mbbuf[session])
if mqtt_connect == 0 then
config.Httpsqs1.data = json
httpsqs.put(httpsqsObj, cjson.encode(config.Httpsqs1))
elseif mqtt_connect == 1 then
mqtt.publish(mqtt3Obj, mbstr[session], "r", json)
mbbuf[session] = {}
end
elseif code > 10 then
mbbuf[session][style_L] = val_L
mbbuf[session][style_E] = val_E
else
local json = cjson.encode({ [style_L] = val_L, [style_E] = val_E, ["Z"] = z })
if mqtt_connect == 0 then
config.Httpsqs1.data = json
httpsqs.put(httpsqsObj, cjson.encode(config.Httpsqs1))
elseif mqtt_connect == 1 then
mqtt.publish(mqtt3Obj, mbstr[session], "r", json)
mbbuf[session] = {}
end
end
end
function modbus_load_collectnodes(session, nodes)
for k, v in pairs(nodes)
do
modbus.add_collectnode(session, v.ID, v.reg, v.addr, v.cnt)
end
end
function modbus_load_varnodes(session, nodes)
for k, v in pairs(nodes)
do
modbus.add_varnode(session, v.ID, v.reg, v.addr, v.dtype, v.dBit, v.format, v.len, v.pMode, v.dStyle, v.dOffset,
v.dExt)
end
end
function init()
mqtt3Obj = mqtt.new()
mqtt.config(mqtt3Obj, "", "gards.mixyun.com", "31883", "aprusdev@aprus", "mixlinker123") --V8
user.setluaver(config.AprusX.luaver)
user.setdevinfo(config.AprusX.devinfo)
user.ipconfig(config.AprusX.ipmode, config.AprusX.inet_addr, config.AprusX.netmask)
end
function start()
init()
----------ModbusTcp Config----------
MBCfg = config.Modbus
--Init Object
modbusObj = nil
mbbuf = { modbusObj }
mbstr = { modbusObj }
--Config Object
modbusObj = modbus.new(MBCfg.device.type)
mbbuf[modbusObj] = {}
mbstr[modbusObj] = "modbusObj"
modbus.config(modbusObj, MBCfg.device.ip, MBCfg.device.port, MBCfg.device.ifname)
--modbus.delay(modbusObj, 50) --设置采集间隔。默认值为20mS --必须在添加采集节点前调用
modbus_load_collectnodes(modbusObj, MBCfg.node.collect)
modbus_load_varnodes(modbusObj, MBCfg.node.variable)
modbus.debug(modbus3Obj, 0x01010101)
----------------------------------
mqtt.run(mqtt3Obj)
modbus.run(modbusObj)
print("<--------------------httpsqs func------------------------>")
httpsqsObj = httpsqs.new()
-- httpsqs.debug(httpsqsObj, 0x01010101)
httpsqs.DBdebug(httpsqsObj, 0)
-- httpsqs.config(httpsqsObj, mqtt3Obj, config.Httpsqs1.qnname)
httpsqs.run(httpsqsObj)
httpsqs.maxnum(httpsqsObj, config.Httpsqs1.qnname, 1000)
print("<--------------------httpsqs run------------------------>")
while true do
local msg = user.waitmsg()
if msg.from == "mqtt-sys" then
mqttsys_handle(msg.session, msg.code)
elseif msg.from == "mqtt-msg" then
mqttdata_handle(msg.session, msg.topic, msg.payload)
elseif msg.from == "modbus" then
modbusevent_handle(msg.session, msg.code, msg.style_L, msg.val_L, msg.style_E, msg.val_E, msg.z)
end
end
end
start()
断网续传相关函数和操作解释
MQTT连接状态函数
mqtt_connect = 0 -- 0断开;1链接
function mqttsys_handle(m, code)
if code == 0 then
config.logInfo.payload = "===================Mqtt Disconnect==================="
user.log(cjson.encode(config.logInfo))
mqtt_connect = 0
elseif code == 1 then
mqttDB_name = "httpsqs_DB"
while true do
mqtt_conndata = httpsqs.get(httpsqsObj, config.Httpsqs1.qnname)
if mqtt_conndata then
mqtt.publish(mqtt3Obj, mqttDB_name, "r", mqtt_conndata)
else
config.logInfo.payload = "=====Mqtt Connected and httpsqs DB is Empty===="
user.log(cjson.encode(config.logInfo))
break
end
end
mqtt_connect = 1
end
end
mqttsys_handle函数为mqtt断开链接时会执行,code = =0为mqtt断开链接,将标志位置0;code == 1为mqtt链接成功,将标志位置1,并调用httpsqs.get函数从数据库拿数据,拿到数据后调用mqqt.publish发送数据;
2.modbus协议产生数据函数(以modbus为例,其他协议同理)
function modbusevent_handle(session, code, style_L, val_L, style_E, val_E, z)
if code == 15 then
local json = cjson.encode(mbbuf[session])
if mqtt_connect == 0 then
config.Httpsqs1.data = json
httpsqs.put(httpsqsObj, cjson.encode(config.Httpsqs1))
elseif mqtt_connect == 1 then
mqtt.publish(mqtt3Obj, mbstr[session], "r", json)
mbbuf[session] = {}
end
elseif code > 10 then
mbbuf[session][style_L] = val_L
mbbuf[session][style_E] = val_E
else
local json = cjson.encode({ [style_L] = val_L, [style_E] = val_E, ["Z"] = z })
if mqtt_connect == 0 then
config.Httpsqs1.data = json
httpsqs.put(httpsqsObj, cjson.encode(config.Httpsqs1))
elseif mqtt_connect == 1 then
mqtt.publish(mqtt3Obj, mbstr[session], "r", json)
mbbuf[session] = {}
end
end
end
在modbus采集到数据即将上报时会调用该函数,在原有modbus协议基础上,增加判断mqtt链接状态(状态位由mqttsys_handle函数置0或1),若mqtt链接成功则之间调用mqtt.publish发送数据;否则调用httpsqs.put函数将数据存起来,在mqtt链接成功时调用httpsqs.get函数从数据库拿数据,拿到数据后调用mqqt.publish发送数据。
3 config.lua配置说明
return
{
AprusX = {
ipmode = "manual", --auto/manual/none
inet_addr = "192.168.1.234",
netmask = "255.255.255.0",
luaver = "V00.R",
devinfo = "ModbusTcpDev",
},
Httpsqs1 = {
qnname = "test_qnname_1",
data = "hello"
},
logInfo = {
payload = "hello"
},
Modbus = {
device = {
type = "tcp",
ip = "192.168.123.66",
port = "1024",
ifname = "eth1",
},
node = {
collect = {
{ ID = 1, reg = "1", addr = 0, cnt = 50 },
-- { ID = 1, reg = "2", addr = 0, cnt = 50 },
-- { ID = 1, reg = "3", addr = 0, cnt = 50 },
-- { ID = 1, reg = "4", addr = 0, cnt = 50 },
},
variable = {
{ ID = 1, reg = "1", addr = 0, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_0" } },
{ ID = 1, reg = "1", addr = 1, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_1" } },
{ ID = 1, reg = "1", addr = 2, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_2" } },
{ ID = 1, reg = "1", addr = 3, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_3" } },
{ ID = 1, reg = "1", addr = 4, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_4" } },
{ ID = 1, reg = "1", addr = 5, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_5" } },
{ ID = 1, reg = "1", addr = 6, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_6" } },
{ ID = 1, reg = "1", addr = 7, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_7" } },
{ ID = 1, reg = "1", addr = 8, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_8" } },
{ ID = 1, reg = "1", addr = 9, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_9" } },
{ ID = 1, reg = "1", addr = 10, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_10" } },
{ ID = 1, reg = "1", addr = 11, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_11" } },
{ ID = 1, reg = "1", addr = 12, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_1_12" } },
-- { ID = 1, reg = "1", addr = 12, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L1_1_12_C" } },
-- { ID = 1, reg = "2", addr = 0, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_0" } },
-- { ID = 1, reg = "2", addr = 1, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_1" } },
-- { ID = 1, reg = "2", addr = 2, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_2" } },
-- { ID = 1, reg = "2", addr = 3, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_3" } },
-- { ID = 1, reg = "2", addr = 4, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_4" } },
-- { ID = 1, reg = "2", addr = 5, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_5" } },
-- { ID = 1, reg = "2", addr = 6, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_6" } },
-- { ID = 1, reg = "2", addr = 7, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_7" } },
-- { ID = 1, reg = "2", addr = 8, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_8" } },
-- { ID = 1, reg = "2", addr = 9, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_9" } },
-- { ID = 1, reg = "2", addr = 10, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_10" } },
-- { ID = 1, reg = "2", addr = 11, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_11" } },
-- { ID = 1, reg = "2", addr = 12, dtype = "bit", dBit = 0, pMode = { 1, 6 }, dStyle = { "L1_2_12" } },
-- { ID = 1, reg = "2", addr = 12, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L1_2_12_C" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 0, pMode = { 1, 7 }, dStyle = { "L1_3_0_0" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 1, pMode = { 1, 7 }, dStyle = { "L1_3_0_1" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 2, pMode = { 1, 7 }, dStyle = { "L1_3_0_2" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 3, pMode = { 1, 7 }, dStyle = { "L1_3_0_3" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 4, pMode = { 1, 7 }, dStyle = { "L1_3_0_4" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 5, pMode = { 1, 7 }, dStyle = { "L1_3_0_5" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 6, pMode = { 1, 7 }, dStyle = { "L1_3_0_6" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 7, pMode = { 1, 7 }, dStyle = { "L1_3_0_7" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 8, pMode = { 1, 7 }, dStyle = { "L1_3_0_8" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 9, pMode = { 1, 7 }, dStyle = { "L1_3_0_9" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 10, pMode = { 1, 7 }, dStyle = { "L1_3_0_10" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 11, pMode = { 1, 7 }, dStyle = { "L1_3_0_11" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 12, pMode = { 1, 7 }, dStyle = { "L1_3_0_12" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 13, pMode = { 1, 7 }, dStyle = { "L1_3_0_13" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 14, pMode = { 1, 7 }, dStyle = { "L1_3_0_14" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 15, pMode = { 1, 7 }, dStyle = { "L1_3_0_15" } },
-- { ID = 1, reg = "3", addr = 0, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L1_3_0_15_C" } },
-- { ID = 1, reg = "3", addr = 1, dtype = "byte", dBit = 0, pMode = { 1, 8 }, dStyle = { "L1_3_1_0" } },
-- { ID = 1, reg = "3", addr = 1, dtype = "byte", dBit = 1, pMode = { 1, 8 }, dStyle = { "L1_3_1_1" } },
-- { ID = 1, reg = "3", addr = 1, dtype = "byte", dBit = 1, pMode = { 2, 0 }, dStyle = { "L1_3_1_1_C" } },
-- { ID = 1, reg = "3", addr = 1, dtype = "byte", pMode = { 2, 0 }, dStyle = { "L1_3_1_C" } },
-- { ID = 1, reg = "3", addr = 1, dtype = "byte", pMode = { 1, 8 }, dStyle = { "L1_3_1_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 1, dtype = "byte", pMode = { 1, 8 }, dStyle = { "L1_3_1_O2" }, dOffset = { { "/", 3 }, { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 2, dtype = "ubyte", pMode = { 1, 8 }, dStyle = { "L1_3_2" } },
-- { ID = 1, reg = "3", addr = 2, dtype = "ubyte", pMode = { 2, 0 }, dStyle = { "L1_3_2_C" } },
-- { ID = 1, reg = "3", addr = 2, dtype = "ubyte", pMode = { 1, 8 }, dStyle = { "L1_3_2_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 2, dtype = "ubyte", pMode = { 1, 8 }, dStyle = { "L1_3_2_O2" }, dOffset = { { "*", 2.123 }, { ".", 1 } } },
-- { ID = 1, reg = "3", addr = 3, dtype = "short", pMode = { 1, 8 }, dStyle = { "L1_3_3" } },
-- { ID = 1, reg = "3", addr = 3, dtype = "short", pMode = { 2, 0 }, dStyle = { "L1_3_3_C" } },
-- { ID = 1, reg = "3", addr = 3, dtype = "short", pMode = { 1, 8 }, dStyle = { "L1_3_3_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 3, dtype = "short", pMode = { 1, 8 }, dStyle = { "L1_3_3_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 4, dtype = "ushort", pMode = { 1, 8 }, dStyle = { "L1_3_4" } },
-- { ID = 1, reg = "3", addr = 4, dtype = "ushort", pMode = { 2, 0 }, dStyle = { "L1_3_4_C" } },
-- { ID = 1, reg = "3", addr = 4, dtype = "ushort", pMode = { 1, 8 }, dStyle = { "L1_3_4_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 4, dtype = "ushort", pMode = { 1, 8 }, dStyle = { "L1_3_4_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 5, dtype = "int", pMode = { 1, 8 }, dStyle = { "L1_3_5" } },
-- { ID = 1, reg = "3", addr = 5, dtype = "int", format = "ABCD", pMode = { 1, 8 }, dStyle = { "L1_3_5_ABCD" } },
-- { ID = 1, reg = "3", addr = 5, dtype = "int", pMode = { 2, 0 }, dStyle = { "L1_3_5_C" } },
-- { ID = 1, reg = "3", addr = 5, dtype = "int", pMode = { 1, 8 }, dStyle = { "L1_3_5_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 5, dtype = "int", pMode = { 1, 8 }, dStyle = { "L1_3_5_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 7, dtype = "uint", pMode = { 1, 8 }, dStyle = { "L1_3_7" } },
-- { ID = 1, reg = "3", addr = 7, dtype = "uint", format = "ABCD", pMode = { 1, 8 }, dStyle = { "L1_3_7_ABCD" } },
-- { ID = 1, reg = "3", addr = 7, dtype = "uint", pMode = { 2, 0 }, dStyle = { "L1_3_7_C" } },
-- { ID = 1, reg = "3", addr = 7, dtype = "uint", pMode = { 1, 8 }, dStyle = { "L1_3_7_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 7, dtype = "uint", pMode = { 1, 8 }, dStyle = { "L1_3_7_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9" } },
-- { ID = 1, reg = "3", addr = 9, dtype = "float", format = "ABCD", pMode = { 1, 8 }, dStyle = { "L1_3_9_ABCD" } },
-- { ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 2, 0 }, dStyle = { "L1_3_9_C" } },
-- { ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O2" }, dOffset = { { "*", 1.5 }, { "+", 10 } } },
-- { ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O3" }, dOffset = { { "*", 1.125 }, { ".", 0 } } },
-- { ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O4" }, dOffset = { { "*", 1.125 }, { ".", 1 } } },
-- { ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O5" }, dOffset = { { "*", 1.125 }, { ".", 2 } } },
-- { ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O6" }, dOffset = { { "*", 1.125 }, { ".", 3 } } },
-- { ID = 1, reg = "3", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_3_9_O7" }, dOffset = { { ".", 3 } } },
-- { ID = 1, reg = "3", addr = 11, dtype = "bytes", len = 20, pMode = { 1, 8 }, dStyle = { "L1_3_11" } },
-- { ID = 1, reg = "3", addr = 11, dtype = "bytes", len = 20, pMode = { 2, 0 }, dStyle = { "L1_3_11_C" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 0, pMode = { 1, 9 }, dStyle = { "L1_4_0_0" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 1, pMode = { 1, 9 }, dStyle = { "L1_4_0_1" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 2, pMode = { 1, 9 }, dStyle = { "L1_4_0_2" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 3, pMode = { 1, 9 }, dStyle = { "L1_4_0_3" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 4, pMode = { 1, 9 }, dStyle = { "L1_4_0_4" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 5, pMode = { 1, 9 }, dStyle = { "L1_4_0_5" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 6, pMode = { 1, 9 }, dStyle = { "L1_4_0_6" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 7, pMode = { 1, 9 }, dStyle = { "L1_4_0_7" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 8, pMode = { 1, 9 }, dStyle = { "L1_4_0_8" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 9, pMode = { 1, 9 }, dStyle = { "L1_4_0_9" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 10, pMode = { 1, 9 }, dStyle = { "L1_4_0_10" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 11, pMode = { 1, 9 }, dStyle = { "L1_4_0_11" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 12, pMode = { 1, 9 }, dStyle = { "L1_4_0_12" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 13, pMode = { 1, 9 }, dStyle = { "L1_4_0_13" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 14, pMode = { 1, 9 }, dStyle = { "L1_4_0_14" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 15, pMode = { 1, 9 }, dStyle = { "L1_4_0_15" } },
-- { ID = 1, reg = "4", addr = 0, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L1_4_0_15" } },
-- { ID = 1, reg = "4", addr = 1, dtype = "byte", pMode = { 1, 8 }, dStyle = { "L1_4_1" } },
-- { ID = 1, reg = "4", addr = 1, dtype = "byte", pMode = { 2, 0 }, dStyle = { "L1_4_1_C" } },
-- { ID = 1, reg = "4", addr = 1, dtype = "byte", pMode = { 1, 8 }, dStyle = { "L1_4_1_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 1, dtype = "byte", pMode = { 1, 8 }, dStyle = { "L1_4_1_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 2, dtype = "ubyte", pMode = { 1, 8 }, dStyle = { "L1_4_2" } },
-- { ID = 1, reg = "4", addr = 2, dtype = "ubyte", pMode = { 2, 0 }, dStyle = { "L1_4_2_C" } },
-- { ID = 1, reg = "4", addr = 2, dtype = "ubyte", pMode = { 1, 8 }, dStyle = { "L1_4_2_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 2, dtype = "ubyte", pMode = { 1, 8 }, dStyle = { "L1_4_2_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 3, dtype = "short", pMode = { 1, 8 }, dStyle = { "L1_4_3" } },
-- { ID = 1, reg = "4", addr = 3, dtype = "short", pMode = { 2, 0 }, dStyle = { "L1_4_3_C" } },
-- { ID = 1, reg = "4", addr = 3, dtype = "short", pMode = { 1, 8 }, dStyle = { "L1_4_3_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 3, dtype = "short", pMode = { 1, 8 }, dStyle = { "L1_4_3_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 4, dtype = "ushort", pMode = { 1, 8 }, dStyle = { "L1_4_4" } },
-- { ID = 1, reg = "4", addr = 4, dtype = "ushort", pMode = { 2, 0 }, dStyle = { "L1_4_4_C" } },
-- { ID = 1, reg = "4", addr = 4, dtype = "ushort", pMode = { 1, 8 }, dStyle = { "L1_4_4_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 4, dtype = "ushort", pMode = { 1, 8 }, dStyle = { "L1_4_4_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 5, dtype = "int", pMode = { 1, 8 }, dStyle = { "L1_4_5" } },
-- { ID = 1, reg = "4", addr = 5, dtype = "int", format = "ABCD", pMode = { 1, 8 }, dStyle = { "L1_4_5_ABCD" } },
-- { ID = 1, reg = "4", addr = 5, dtype = "int", pMode = { 2, 0 }, dStyle = { "L1_4_5_C" } },
-- { ID = 1, reg = "4", addr = 5, dtype = "int", pMode = { 1, 8 }, dStyle = { "L1_4_5_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 5, dtype = "int", pMode = { 1, 8 }, dStyle = { "L1_4_5_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 7, dtype = "uint", pMode = { 1, 8 }, dStyle = { "L1_4_7" } },
-- { ID = 1, reg = "4", addr = 7, dtype = "uint", format = "ABCD", pMode = { 1, 8 }, dStyle = { "L1_3_7_ABCD" } },
-- { ID = 1, reg = "4", addr = 7, dtype = "uint", pMode = { 2, 0 }, dStyle = { "L1_4_7_C" } },
-- { ID = 1, reg = "4", addr = 7, dtype = "uint", pMode = { 1, 8 }, dStyle = { "L1_4_7_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 7, dtype = "uint", pMode = { 1, 8 }, dStyle = { "L1_4_7_O2" }, dOffset = { { "*", 2 }, { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9" } },
-- { ID = 1, reg = "4", addr = 9, dtype = "float", format = "ABCD", pMode = { 1, 8 }, dStyle = { "L1_4_9_ABCD" } },
-- { ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 2, 0 }, dStyle = { "L1_4_9_C" } },
-- { ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9_O1" }, dOffset = { { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9_O2" }, dOffset = { { "*", 1.5 }, { "+", 10 } } },
-- { ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9_O3" }, dOffset = { { "*", 1.125 }, { ".", 0 } } },
-- { ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9_O4" }, dOffset = { { "*", 1.125 }, { ".", 1 } } },
-- { ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9_O5" }, dOffset = { { "*", 1.125 }, { ".", 2 } } },
-- { ID = 1, reg = "4", addr = 9, dtype = "float", pMode = { 1, 8 }, dStyle = { "L1_4_9_O6" }, dOffset = { { "*", 1.125 }, { ".", 3 } } },
-- { ID = 1, reg = "4", addr = 11, dtype = "bytes", len = 20, pMode = { 1, 8 }, dStyle = { "L1_4_11" } },
-- { ID = 1, reg = "4", addr = 11, dtype = "bytes", len = 20, pMode = { 2, 0 }, dStyle = { "L1_4_11_C" } },
-- { ID = 1, reg = "5", addr = 0, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_0" } },
-- { ID = 1, reg = "5", addr = 1, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_1" } },
-- { ID = 1, reg = "5", addr = 2, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_2" } },
-- { ID = 1, reg = "5", addr = 3, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_3" } },
-- { ID = 1, reg = "5", addr = 4, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_4" } },
-- { ID = 1, reg = "5", addr = 5, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_5" } },
-- { ID = 1, reg = "5", addr = 6, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_6" } },
-- { ID = 1, reg = "5", addr = 7, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_7" } },
-- { ID = 1, reg = "5", addr = 8, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_8" } },
-- { ID = 1, reg = "5", addr = 9, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_9" } },
-- { ID = 1, reg = "5", addr = 10, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_10" } },
-- { ID = 1, reg = "5", addr = 11, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_11" } },
-- { ID = 1, reg = "5", addr = 12, dtype = "bit", dBit = 0, pMode = { 1, 5 }, dStyle = { "L1_5_12" } },
-- { ID = 1, reg = "6", addr = 0, dtype = "byte", pMode = { 2, 0 }, dStyle = { "L1_6_0" } },
-- { ID = 1, reg = "6", addr = 1, dtype = "short", pMode = { 2, 0 }, dStyle = { "L1_6_1" } },
-- { ID = 1, reg = "16", addr = 0, dtype = "byte", pMode = { 2, 0 }, dStyle = { "L1_16_0" } },
-- { ID = 1, reg = "16", addr = 0, dtype = "byte", pMode = { 2, 0 }, dStyle = { "L1_16_0_O1" }, dOffset = { { "+", 5 } } },
-- { ID = 1, reg = "16", addr = 1, dtype = "short", pMode = { 2, 0 }, dStyle = { "L1_16_1" } },
-- { ID = 1, reg = "16", addr = 1, dtype = "short", pMode = { 2, 0 }, dStyle = { "L1_16_1_O1" }, dOffset = { { "+", 5 } } },
-- { ID = 1, reg = "16", addr = 2, dtype = "int", pMode = { 2, 0 }, dStyle = { "L1_16_2" } },
-- { ID = 1, reg = "16", addr = 2, dtype = "int", pMode = { 2, 0 }, dStyle = { "L1_16_2_O1" }, dOffset = { { "+", 5 } } },
-- { ID = 1, reg = "16", addr = 9, dtype = "float", pMode = { 2, 0 }, dStyle = { "L1_16_9" } },
-- { ID = 1, reg = "16", addr = 9, dtype = "float", pMode = { 2, 0 }, dStyle = { "L1_16_9_O1" }, dOffset = { { "+", 5 } } },
},
},
},
}
文档更新时间: 2025-01-17 10:39 作者:CGL