#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