modbus转发大成项目
一、物理结构

二、项目描述
由于客户空压机更新换代,但是PLC过保修期无法更新维护,因此需要将新型号的空压机的数据模拟成为旧型号的空压机供PLC采集数据;
三、实现原理
左侧萨震空压机(新型号空压机)(含温度模块)经过AS-1的485-1采集modbus_RTU的数据,同时开启modbus服务器(TCP)供AS-2的modbus_TCP采集数据;而后AS-2经过地址映射(模拟为寿力空压机(旧型号))、modbus服务器(RTU)供PLC和温度模块采集数据
四、lua脚本
1.AS-1 lua脚本
1.1 Aprus.lua
package.cpath = "./?.so"
package.path = "./?.lua"
cjson = require "cjson"
config = require "config"
require "modbus"
require "ModbusServer"
function PrintTable(tbl, level, filteDefault) --打印表
local msg = ""
filteDefault = filteDefault or true --默认过滤关键字(DeleteMe, _class_type)
level = level or 1
local indent_str = ""
for i = 1, level do
indent_str = indent_str .. " "
end
print(indent_str .. "{")
for k, v in pairs(tbl) do
if filteDefault then
if k ~= "_class_type" and k ~= "DeleteMe" then
local item_str = string.format("%s%s = %s", indent_str .. " ", tostring(k), tostring(v))
print(item_str)
if type(v) == "table" then
PrintTable(v, level + 1)
end
end
else
local item_str = string.format("%s%s = %s", indent_str .. " ", tostring(k), tostring(v))
print(item_str)
if type(v) == "table" then
PrintTable(v, level + 1)
end
end
end
print(indent_str .. "}")
end
--日志函数
function LOG(fmt, ...)
user.log(string.format(fmt, ...))
end
function act_control(m, json)
for k, v in pairs(json) do
if k ~= "Act" then
modbus.write(modbusObj, k, v)
end
end
end
----------------------------------
---回调函数
----------------------------------
--mqtt回调函数
function mqttCB_recvMsg(m, topic, data)
local json = cjson.decode(data)
if json.Act == "Control" then
act_control(m, json)
end
end
function mqttCB_disConnect(session)
LOG("mqtt_disconnected !!!")
LOG("LuaCB SUCCESS")
end
function mqttCB_connect(session)
LOG("mqtt_connected !!!")
LOG("LuaCB SUCCESS")
end
--modbus写入点位校验
function modbus_writeNode_verify(Wnode)
local MBWnode = config.Modbus.node.write
local flag_verify = false
for index, value in ipairs(MBWnode) do
if Wnode.ID == value.ID and Wnode.reg == value.reg and Wnode.addr >= value.addr and Wnode.addr < value.addr + value.cnt - 1 and Wnode.addr + Wnode.cnt <= value.cnt + value.addr then
flag_verify = true
end
end
return flag_verify
end
--写入点位校验
function writeNode_verify(Wnode)
local flag_verify = false
flag_verify = modbus_writeNode_verify(Wnode)
return flag_verify
end
--modbusSvr回调函数
function modbusServerCB_write(session, ID, reg, addr, cnt, data)
local Wnode = { ID = tonumber(ID), reg = tostring(reg), addr = tonumber(addr), cnt = tonumber(cnt) }
if writeNode_verify(Wnode) then
-- LOG("[Lua] [Write] SUCCESS Over before return ")
LOG("[modbusServerCB_write] Wnode <" ..
"ID:" .. Wnode.ID .. " Reg:" .. Wnode.reg .. " Addr:" .. Wnode.addr .. " Cnt:" .. Wnode.cnt .. "> SUCCESS")
modbus.writeNode(modbusObj, cjson.encode(Wnode), data)
else
LOG("[Lua] [Write] Failed Over before return ")
LOG("[modbusServerCB_write] ERROR Wnode Verify <" ..
"ID:" .. Wnode.ID .. " Reg:" .. Wnode.reg .. " Addr:" .. Wnode.addr .. " Cnt:" .. Wnode.cnt .. ">")
end
-- LOG("[modbusServerCB_write] return ")
end
----------------------------------
---模块加载结点
----------------------------------
--modbus加载结点
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, v.delay, v.db)
end
end
--modbus加载结点
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
--modbusSvr加载结点
function MBserver_load_station(svr, cfg)
for k, v in pairs(cfg)
do
-- LOG("<load Station" .. cjson.encode(v) .. ">")
ModbusServer.setStation(svr, cjson.encode(v))
end
end
----------------------------------
---mqtt初始化
----------------------------------
function mqtt_init()
LOG("MqttInit")
mqtt3Obj = mqtt.new()
mqtt.regCB(mqtt3Obj, "recvMsg", mqttCB_recvMsg)
-- mqtt.config(mqtt3Obj, "", "gards.mixyun.com", "31883", "aprusdev@aprus", "mixlinker123")
mqtt.config(mqtt3Obj, "", "10.168.1.100", "1883", "box@aprus", "mixlinker123")
mqtt.run(mqtt3Obj)
end
--modbus初始化
function modbus_init()
MBCfg = config.Modbus
modbusObj = modbus.new(MBCfg.device.type)
-- modbus.debug(modbusObj, 0x01010101)
-- modbus.config(modbusObj, MBCfg.device.ip, MBCfg.device.port, MBCfg.device.ifname)
modbus.config(modbusObj, MBCfg.device.rate, MBCfg.device.databit, MBCfg.device.stopbit, MBCfg.device.parity)
modbus_load_collectnodes(modbusObj, MBCfg.node.collect)
modbus_load_varnodes(modbusObj, MBCfg.node.variable)
modbus.run(modbusObj)
end
--modbusSvr初始化
function modbusServer_init()
MBSvrCfg = config.ModbusServer
mbSvrObj = ModbusServer.new("ModbusServer")
--ModbusServer.debug(mbSvrObj, 0x01010101) --ModbusServer显示详尽的调试信息
ModbusServer.config(mbSvrObj, cjson.encode(MBSvrCfg.ServerConfig))
MBserver_load_station(mbSvrObj, MBSvrCfg.Stations)
ModbusServer.debug(mbSvrObj, 0x01) --ModbusServer显示详尽的调试信息
-- ModbusServer.regCB(mbSvrObj, "write", modbusServerCB_write)
ModbusServer.run(mbSvrObj)
end
----------------------------------
---模块初始化
----------------------------------
function module_init()
modbus_init()
modbusServer_init()
end
----------------------------------
--网口初始化
----------------------------------
function eth_init()
EthCfg = config.Aprus.eth
user.ipconfig_eth0(EthCfg.ipmode, EthCfg.inet_addr, EthCfg.netmask, EthCfg.gateway, EthCfg.dns)
end
--加载数据中心的数据块
function loadDatabase(dbs)
for k, v in pairs(dbs)
do
DataCenter.addDB(cjson.encode(v))
end
end
-- 加载地址映射配置
function loadAddrMaps(maps)
-- 如果 maps 是 nil,直接返回
if not maps then
return
end
for _, map in ipairs(maps) do
-- 查找源数据库配置以获取类型和大小
local src_cfg = nil
for _, db in ipairs(config.DataCenter.DB) do
if db.db_name == map.db_src then
src_cfg = db
break
end
end
if not src_cfg then
LOG("[loadAddrMaps] Source DB %s not found, skip", map.db_src)
goto continue
end
-- 1. 添加基础配置
local base_cfg = {
db_src = map.db_src,
db_dest = map.db_dest,
db_type = src_cfg.db_type,
count = src_cfg.count,
enable = map.enable and 1 or 0
}
local ret = DataCenter.addAddrMapBase(cjson.encode(base_cfg))
if ret ~= 0 then
LOG("[loadAddrMaps] Add base config failed for %s, skip", map.db_src)
goto continue
end
-- 2. 添加地址映射表
local mappings_cfg = {}
for src_addr, dest_addr in pairs(map.addr_maps) do
mappings_cfg["addr_" .. src_addr .. "_dest"] = dest_addr
end
ret = DataCenter.addAddrMapMappings(cjson.encode(mappings_cfg))
if ret ~= 0 then
LOG("[loadAddrMaps] Add mappings failed for %s, skip", map.db_src)
goto continue
end
-- -- 3. 添加转发偏移配置
local forward_cfg = {}
if map.forward_offsets then
for src_addr, offsets in pairs(map.forward_offsets) do
local offset_str = ""
for i, op in ipairs(offsets) do
if i > 1 then
offset_str = offset_str .. ","
end
offset_str = offset_str .. op[1] .. op[2]
end
forward_cfg["addr_" .. src_addr .. "_forward_offset"] = offset_str
end
end
ret = DataCenter.addAddrMapForwardOffsets(cjson.encode(forward_cfg))
if ret ~= 0 then
LOG("[loadAddrMaps] Add forward offsets failed for %s, skip", map.db_src)
goto continue
end
-- -- 4. 添加控制配置(偏移+节点)
-- local control_cfg = {}
-- if map.control_nodes then
-- for src_addr, ctrl in pairs(map.control_nodes) do
-- -- 控制偏移
-- if ctrl.offsets then
-- local offset_str = ""
-- for i, op in ipairs(ctrl.offsets) do
-- if i > 1 then
-- offset_str = offset_str .. ","
-- end
-- offset_str = offset_str .. op[1] .. op[2]
-- end
-- control_cfg["addr_" .. src_addr .. "_control_offset"] = offset_str
-- end
-- -- 控制节点
-- if ctrl.node then
-- local node = ctrl.node
-- control_cfg["addr_" .. src_addr .. "_control_node"] = string.format(
-- '{"ID":%d,"reg":"%s","addr":%d,"cnt":%d,"method":"%s"}',
-- node.ID, node.reg, node.addr, node.cnt, node.method or "none"
-- )
-- end
-- end
-- end
-- ret = DataCenter.addAddrMapControl(cjson.encode(control_cfg))
-- if ret ~= 0 then
-- LOG("[loadAddrMaps] Add control config failed for %s, skip", map.db_src)
-- goto continue
-- end
-- 5. 添加目标节点配置
-- local dest_cfg = {}
-- if map.dest_nodes then
-- for src_addr, node in pairs(map.dest_nodes) do
-- dest_cfg["addr_" .. src_addr .. "_dest_node"] = string.format(
-- '{"ID":%d,"reg":"%s","addr":%d,"cnt":%d,"method":"%s"}',
-- node.ID, node.reg, node.addr, node.cnt, node.method or "none"
-- )
-- end
-- end
-- ret = DataCenter.addAddrMapDestNodes(cjson.encode(dest_cfg))
-- if ret ~= 0 then
-- LOG("[loadAddrMaps] Add dest nodes failed for %s, skip", map.db_src)
-- goto continue
-- end
-- 6. 提交映射配置
ret = DataCenter.commitAddrMap()
if ret ~= 0 then
LOG("[loadAddrMaps] Commit map failed for %s", map.db_src)
else
LOG("[loadAddrMaps] Loaded map successfully: %s->%s", map.db_src, map.db_dest)
end
::continue::
end
end
-- 加载位地址映射配置
function loadAddrMapsBit(bit_maps)
-- 如果 bit_maps 是 nil,直接返回
if not bit_maps then
return
end
for _, bit_map_group in ipairs(bit_maps) do
if not bit_map_group.enable then
goto continue
end
-- 查找源数据库和目标数据库配置
local src_cfg = nil
local dest_cfg = nil
for _, db in ipairs(config.DataCenter.DB) do
if db.db_name == bit_map_group.db_src then
src_cfg = db
end
if db.db_name == bit_map_group.db_dest then
dest_cfg = db
end
if src_cfg and dest_cfg then
break
end
end
if not src_cfg or not dest_cfg then
LOG("[loadAddrMapsBit] Source or dest DB not found, skip group")
goto continue
end
-- 处理每个位映射配置
for _, bit_map in ipairs(bit_map_group) do
-- 确定映射类型
local map_type = 0 -- 默认short->short
if src_cfg.db_type == "short" and dest_cfg.db_type == "bit" then
map_type = 1 -- short->bit
elseif src_cfg.db_type == "bit" and dest_cfg.db_type == "short" then
map_type = 2 -- bit->short
end
-- 构建位映射配置
local bit_cfg = {
db_src = bit_map_group.db_src,
db_dest = bit_map_group.db_dest,
enable = bit_map_group.enable and 1 or 0,
is_offset = bit_map.is_offset and 1 or 0,
map_type = map_type,
src_addr = {
addr = tonumber(bit_map.src_addr.addr) or 0, -- 确保是数字
dBit = tonumber(bit_map.src_addr.dBit) or 0
},
dest_addr = {
addr = tonumber(bit_map.dest_addr.addr) or 0,
dBit = tonumber(bit_map.dest_addr.dBit) or 0
}
}
-- local bit_cfg = {
-- db_src = bit_map_group.db_src,
-- db_dest = bit_map_group.db_dest,
-- enable = bit_map_group.enable and 1 or 0,
-- is_offset = bit_map.is_offset and 1 or 0,
-- map_type = map_type,
-- src_addr = {
-- addr = bit_map.src_addr.addr,
-- dBit = bit_map.src_addr.dBit
-- },
-- dest_addr = {
-- addr = bit_map.dest_addr.addr,
-- dBit = bit_map.dest_addr.dBit
-- }
-- }
PrintTable(bit_cfg)
-- 添加到位映射
local ret = DataCenter.addAddrMapBit(cjson.encode(bit_cfg))
if ret ~= 0 then
LOG("[loadAddrMapsBit] Add bit map failed: %s->%s",
bit_map_group.db_src, bit_map_group.db_dest)
else
LOG("[loadAddrMapsBit] Added bit map: %s->%s, src=%d.%d, dest=%d.%d SUCCESS",
bit_map_group.db_src, bit_map_group.db_dest,
bit_map.src_addr.addr, bit_map.src_addr.dBit,
bit_map.dest_addr.addr, bit_map.dest_addr.dBit)
end
end
::continue::
end
end
function loadControlConfig(control_configs)
-- 所有变量均在函数开头定义并初始化
local ret = 0
local enable_val = 1
local node_base = {}
local node_base_name = ""
local control_config = nil
local config_idx = 0
local control_node = nil
local node_idx = 0
local addr_base = {}
local dest_node = nil
local dest_idx = 0
local add_dest_node_params = {}
local obj_index = 1
local offsets = {}
local offset = nil
local add_offset_params = {}
modbusObjs = { modbusObj }
-- 1. 参数合法性检查
if not control_configs or type(control_configs) ~= "table" then
LOG("[loadControlConfig] Argument is not a valid table.")
return nil
end
-- 如果传入的是一个空table,直接返回成功
if #control_configs == 0 then
LOG("[loadControlConfig] No control configurations to load.")
return ""
end
-- 检查全局modbus对象数组是否存在(这部分逻辑请根据你的实际情况确认)
-- 注意:modbusObjs 应该在调用此函数前就已正确初始化
if not modbusObjs or type(modbusObjs) ~= "table" then
LOG("[loadControlConfig] Global 'modbusObjs' array is not properly initialized.")
return nil
end
LOG("[loadControlConfig] Starting to load control configurations...")
-- 3. 遍历所有控制配置
for node_idx, node_ctrl in ipairs(control_configs) do
-- 检查单个控制配置的完整性
-- if not node_ctrl.name or type(node_ctrl.name) ~= "string" then
-- LOG("[loadControlConfig] The " ..
-- config_idx .. "th control config is missing or has an invalid 'name' field.")
-- return nil
-- end
-- if not node_ctrl.db_src or type(node_ctrl.db_src) ~= "string" then
-- LOG("[loadControlConfig] Control config '" ..
-- node_ctrl.name .. "' is missing or has an invalid 'db_src' field.")
-- return nil
-- end
-- if not node_ctrl.nodes or type(node_ctrl.nodes) ~= "table" then
-- LOG("[loadControlConfig] Control config '" ..
-- node_ctrl.name .. "' is missing or has an invalid 'nodes' field.")
-- return nil
-- end
LOG("[loadControlConfig] Processing control config: " .. node_ctrl.name)
-- 3.1 添加控制配置(调用C接口)
enable_val = node_ctrl.enable ~= nil and (node_ctrl.enable and 1 or 0) or 1
node_base = {
name = node_ctrl.name,
db_src = node_ctrl.db_src,
enable = enable_val
}
LOG("[loadControlConfig] [Step 1-nodeBase [" ..
"node_idx = " .. node_idx .. " ;]" .. "Add control config: " .. cjson.encode(node_base))
node_base_name = DataCenter.addControlConfig(cjson.encode(node_base))
if not node_base_name then
LOG("[loadControlConfig] Failed to add control config '" .. node_ctrl.name .. "'.")
return nil
end
-- 3.2 遍历当前控制配置下的所有控制节点
for addr_idx, addr_ctrl in ipairs(node_ctrl.addrs) do
if not addr_ctrl.src_addr or not addr_ctrl.dest_nodes then
LOG("[loadControlConfig] Skipping invalid node (index: " ..
addr_idx .. ") in config '" .. node_ctrl.name .. "'.")
goto continue_node_loop
end
-- 3.2.1 添加控制节点(调用C接口)
addr_base = {
config_name = node_base_name,
addr_type = addr_ctrl.addr_type or "short",
db_src_type = addr_ctrl.db_src_type or "short",
addr = addr_ctrl.src_addr.addr or 0,
dBit = addr_ctrl.src_addr.dBit or 0
}
LOG("[loadControlConfig] [Step 2-addrBase/" ..
"node_idx = %d ;, addr_idx = %d ;" .. "] Add control node: " .. cjson.encode(addr_base), node_idx,
addr_idx)
ret = DataCenter.addControlNode(cjson.encode(addr_base))
if ret ~= 0 then
LOG("[loadControlConfig] Failed to add control node for config '" ..
node_base_name .. "', Error code: " .. ret)
return nil
end
-- 3.2.2 遍历当前控制节点下的所有目标节点
for dest_idx, dest_node in ipairs(addr_ctrl.dest_nodes) do
-- 3.2.2.1 添加目标节点(调用C接口)
add_dest_node_params = {
config_name = node_base_name,
src_addr = addr_ctrl.src_addr.addr or 0,
src_dBit = addr_ctrl.src_addr.dBit or 0,
ID = dest_node.ID,
reg = dest_node.reg,
addr = dest_node.addr,
cnt = dest_node.cnt or 1,
method = dest_node.method or "modbus"
}
LOG("[loadControlConfig] [Step 3-addr-destAddr/" ..
"node_idx = " ..
node_idx ..
" ;addr_idx = " ..
addr_idx ..
" ;dest_idx = " .. dest_idx .. " ;] Add destination node: " .. cjson.encode(add_dest_node_params))
-- 从全局modbus对象数组中获取对应的对象
obj_index = dest_node.obj or 1 -- 默认使用第一个Modbus对象
if type(obj_index) ~= "number" or obj_index < 1 or obj_index > #modbusObjs then
LOG("[loadControlConfig] Invalid modbus obj index '" ..
tostring(obj_index) .. "' for destination node in config: " .. node_base_name)
return nil
end
Obj_ctrl = modbusObjs[obj_index]
DataCenter.addDestNode(Obj_ctrl, cjson.encode(add_dest_node_params))
-- -- 3.2.2.2 如果有偏移操作,为目标节点添加偏移
-- if dest_node.dOffset and type(dest_node.dOffset) == "table" then
-- -- 兼容 dOffset 是一个操作数或一个操作数数组的情况
-- offsets = type(dest_node.dOffset[1]) == "table" and dest_node.dOffset or { dest_node.dOffset }
-- for _, offset in ipairs(offsets) do
-- add_offset_params = {
-- config_name = node_base_name,
-- src_addr = addr_ctrl.src_addr.addr or 0,
-- src_dBit = addr_ctrl.src_addr.dBit or 0,
-- dest_addr = dest_node.addr or 0,
-- op = offset.op or "+",
-- value = offset.value or 0.0
-- }
-- LOG("[loadControlConfig] [Step 4/" ..
-- addr_idx ..
-- ".2." ..
-- addr_idx ..
-- "." .. dest_idx .. "] Add destination offset: " .. cjson.encode(add_offset_params))
-- ret = DataCenter.addDestOffset(cjson.encode(add_offset_params))
-- if ret ~= 0 then
-- LOG("[loadControlConfig] Failed to add destination offset for config '" ..
-- node_base_name .. "', Error code: " .. ret)
-- return nil
-- end
-- end
-- end
end
::continue_node_loop::
end
LOG("[loadControlConfig] Control config '" .. node_base_name .. "' loaded successfully.")
end
LOG("[loadControlConfig] All control configurations have been processed.")
-- 返回最后一个成功加载的配置名称
return control_configs[#control_configs].name
end
-- 数据中心地址映射主函数
function dataCenter_addrMap()
local ret = DataCenter.addrMapProcess()
if ret ~= 0 then
LOG("[dataCenter_addrMap] Process failed with code %d", ret)
end
end
----------------------------------
--数据中心初始化
----------------------------------
function dataCenter_init()
loadDatabase(config.DataCenter.DB)
LOG("[dataCenter_init] DataCenter initialized")
end
--------------------------------
---mixctrl 系统初始化
--------------------------------
function mixctrl_init()
-- user.remoteSvr(cjson.encode(config.remoteSvr))
dataCenter_init()
mqtt_init()
module_init()
-- eth_init()
-- timer_init()
end
--------------------------------
---mixctrl 系统启动
--------------------------------
function mixctrl_start()
os.execute("usleep 20000")
os.execute("ip route del 10.168.1.1/32 dev eth0 2>/dev/null")
os.execute("ip route add 10.168.1.0/24 dev eth0 2>/dev/null")
os.execute("ifconfig eth0 10.168.1.10 netmask 255.255.255.0 2>/dev/null")
os.execute("ifconfig eth0:9 192.168.123.100>/dev/null")
-- 初始化地址映射
local ret = DataCenter.addrMapInit()
if ret ~= 0 then
LOG("[mixctrl_start] Init failed with code %d", ret)
return false
end
-- 开启错误日志(默认已开启)
DataCenter.setAddrMapDebug(0, 1)
-- -- 开启信息日志
-- DataCenter.setAddrMapDebug(1, 1)
-- -- 开启接收详情日志
-- DataCenter.setAddrMapDebug(2, 1)
-- -- 开启发送详情日志
-- DataCenter.setAddrMapDebug(3, 1)
-- 加载地址映射
-- loadAddrMaps(config.DataCenter.addr_Maps)
-- 加载位地址映射
-- loadAddrMapsBit(config.DataCenter.addr_Maps_bit)
DataCenter.controlInit()
DataCenter.setControlDebug(0x01010101)
loadControlConfig(config.DataCenter.control_nodes)
-- 关联Modbus写入对象到控制节点(示例:实际应根据节点ID关联对应的会话)
-- ModbusSession.attachToControlNodes()
while true do
-- dataCenter_addrMap()
DataCenter.controlProcess()
os.execute("usleep 300000")
end
end
--------------------------------
--mixctrl系统主流程
--------------------------------
mixctrl_init()
mixctrl_start()
1.2 config.lua
return
{
AprusX = {
ipmode = "none", --auto/manual/none
inet_addr = "192.168.1.234",
netmask = "255.255.255.0",
luaver = "V00.R",
devinfo = "ForwardTCPDev",
},
DataCenter = {
DB = {
-- db1
{ db_name = "db1_AO", db_type = "short", addr = 0, count = 100 },
{ db_name = "db2_AO", db_type = "short", addr = 0, count = 100 },
{ db_name = "db3_AO", db_type = "short", addr = 0, count = 100 },
{ db_name = "db1_6_AO_dest", db_type = "short", addr = 0, count = 100 },
{ db_name = "db2_6_AO_dest", db_type = "short", addr = 0, count = 100 },
{ db_name = "db3_6_AO_dest", db_type = "short", addr = 0, count = 100 },
},
--控制节点:当src_addr的值改变时,按控制节点的规则进行控制
control_nodes =
{
--modbusSvr_485-1_ID-1
{
enable = true,
db_src = "db1_6_AO_dest",
name = "Control_Start_Stop_TCP_1_ID_1",
addrs =
{
{
addr_type = "short",
src_addr = { addr = 0 }, --dBit可以不存在,默认为0
-- src_val = { 1, 2 }, --可以不存在,拿到多少写入多少
dest_nodes =
{
--控制结点的值偏移,可以不偏移也可以偏移,从src地址拿到的值运算后写入目标地址
{ ID = 1, reg = "6", addr = 30, dtype = "ushort", dStyle = { "L1_6_30" }, method = "modbus", obj = 1 },
}
},
}
},
--modbusSvr_485-1_ID-2
{
enable = true,
db_src = "db2_6_AO_dest",
name = "Control_Start_Stop_TCP_1_ID_2",
addrs =
{
{
addr_type = "short",
src_addr = { addr = 0 }, --dBit可以不存在,默认为0
-- src_val = { 1, 2 }, --可以不存在,拿到多少写入多少
dest_nodes =
{
--控制结点的值偏移,可以不偏移也可以偏移,从src地址拿到的值运算后写入目标地址
{ ID = 2, reg = "6", addr = 30, dtype = "ushort", dStyle = { "L1_6_30" }, method = "modbus", obj = 1 },
}
},
}
},
--modbusSvr_485-1_ID-3
{
enable = true,
db_src = "db3_6_AO_dest",
name = "Control_Start_Stop_TCP_1_ID_3",
addrs =
{
{
addr_type = "short",
src_addr = { addr = 0 }, --dBit可以不存在,默认为0
-- src_val = { 1, 2 }, --可以不存在,拿到多少写入多少
dest_nodes =
{
--控制结点的值偏移,可以不偏移也可以偏移,从src地址拿到的值运算后写入目标地址
{ ID = 3, reg = "6", addr = 30, dtype = "ushort", dStyle = { "L1_6_30" }, method = "modbus", obj = 1 },
}
},
}
},
}
},
ModbusServer =
{
ServerConfig =
{
type = "tcp",
ip = "192.168.123.10",
port = 8000,
ifname = "eth0",
-- type = "rtu", --"rtu"/"ascii"
-- rs485 = 2,
-- rate = 9600,
-- databit = 8,
-- stopbit = 1,
-- parity = "None", -- None/Odd/Even
},
Stations =
{
--{station=站号(必要), db1=可读写开关量(非必要), db2=只读开关量(非必要), db3=可读写16位数据(非必要), db4=只读16位数据(非必要)},
--例1: {station=1, db1="AXio_DO_2", db2="AXio_DI_4", db3="AXio_AO_n", db4="AXio_AI_4"},
--例2: {station=2, db1="DB_1_100", db2="DB_2_100", db3="DB_3_100", db4="DB_4_100"},
--采集不映射,仅最后映射
{ station = 1, db3 = "db1_AO", db6 = "db1_6_AO_dest" },
{ station = 2, db3 = "db2_AO", db6 = "db2_6_AO_dest" },
{ station = 3, db3 = "db3_AO", db6 = "db3_6_AO_dest" },
},
},
Modbus = {
device = {
type = "rtu", --"rtu"/"ascii"
rate = 9600,
databit = 8,
stopbit = 1,
parity = "None", -- None/Odd/Even
},
node = {
collect = {
{ ID = 1, reg = "3", addr = 0, cnt = 64, db = "db1_AO" }, -- db1_AO count=100
{ ID = 2, reg = "3", addr = 0, cnt = 64, db = "db2_AO" }, -- db1_AO count=100
{ ID = 3, reg = "3", addr = 0, cnt = 64, db = "db3_AO" }, -- db1_AO count=100
},
variable = {
{ ID = 1, reg = "3", addr = 0, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_0" }, dOffset = { { "/", 100 } } }, --机组排气压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,13寄存器地址中
{ ID = 1, reg = "3", addr = 1, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_1" }, dOffset = { { "/", 10 } } }, --排气温度_℃;采集到的值 后转到 1从站,3功能码,11寄存器地址中给
{ ID = 1, reg = "3", addr = 2, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_2" }, dOffset = { { "/", 100 } } }, --油气桶压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,14寄存器地址中
{ ID = 1, reg = "3", addr = 3, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_3" }, dOffset = { { "/", 10 } } }, --油分后温度_℃;采集到的值 后转到 1从站,3功能码,12寄存器地址中
{ ID = 1, reg = "3", addr = 4, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_4" }, dOffset = { { "/", 10 } } }, --A相绕组温度_℃;采集到的值 后转到 1从站,3功能码,15寄存器地址中
{ ID = 1, reg = "3", addr = 5, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_5" }, dOffset = { { "/", 10 } } }, --B相绕组温度_℃;采集到的值 后转到 1从站,3功能码,16寄存器地址中
{ ID = 1, reg = "3", addr = 6, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_6" }, dOffset = { { "/", 10 } } }, --C相绕组温度_℃;采集到的值 后转到 1从站,3功能码,19寄存器地址中
{ ID = 1, reg = "3", addr = 7, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_7" }, dOffset = { { "/", 10 } } }, --进线电压_V;采集到的值 后转到 1从站,3功能码,7寄存器地址中
{ ID = 1, reg = "3", addr = 8, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_8" }, dOffset = { { "/", 10 } } }, --进线电流_A;采集到的值 后转到 1从站,3功能码,8寄存器地址中
{ ID = 1, reg = "3", addr = 9, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_9" }, dOffset = { { "/", 100 } } }, --主机变频器运行频率_HZ
{ ID = 1, reg = "3", addr = 10, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_10" }, dOffset = { { "/", 100 } } }, --主机变频器给定频率_HZ
{ ID = 1, reg = "3", addr = 11, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_11" }, dOffset = { { "/", 10 } } }, --主机变频器母线电压_V
{ ID = 1, reg = "3", addr = 12, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_12" }, dOffset = { { "/", 1 } } }, --主机变频器输出电压_V
{ ID = 1, reg = "3", addr = 13, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_13" }, dOffset = { { "/", 10 } } }, --主机变频器运行电流_A
{ ID = 1, reg = "3", addr = 14, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_14" }, dOffset = { { "/", 1 } } }, --主机变频器运行转速_rpm
{ ID = 1, reg = "3", addr = 15, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_15" }, dOffset = { { "/", 1000 } } }, --主机变频器输出功率_KW
{ ID = 1, reg = "3", addr = 17, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_17" }, dOffset = { { "/", 100 } } }, --风机变频器输出频率_HZ
{ ID = 1, reg = "3", addr = 20, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_20" }, dOffset = { { "/", 1 } } }, --风机变频器输出电压_V
{ ID = 1, reg = "3", addr = 21, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_21" }, dOffset = { { "/", 10 } } }, --风机变频器输出电流_A
{ ID = 1, reg = "3", addr = 22, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_22" }, dOffset = { { "/", 1 } } }, --风机变频器运行转速_Rpm
{ ID = 1, reg = "3", addr = 23, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_23" }, dOffset = { { "/", 1000 } } }, --风机变频器输出功率_KW
{ ID = 1, reg = "3", addr = 38, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L1_3_38" }, dOffset = { { "/", 1 } } }, --机组运行时间_小时
{ ID = 1, reg = "3", addr = 40, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L1_3_40" }, dOffset = { { "/", 1 } } }, --机组加载时间_小时
{ ID = 1, reg = "3", addr = 42, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_42" }, dOffset = { { "/", 100 } } }, --恒定压力_Mpa
{ ID = 1, reg = "3", addr = 43, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_43" }, dOffset = { { "/", 100 } } }, --卸载压力_Mpa
{ ID = 1, reg = "3", addr = 44, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_44" }, dOffset = { { "/", 100 } } }, --加载压力_Mpa
{ ID = 1, reg = "3", addr = 45, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_45" }, dOffset = { { "/", 1 } } }, --油滤使用时间_小时
{ ID = 1, reg = "3", addr = 46, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_46" }, dOffset = { { "/", 1 } } }, --空滤使用时间_小时
{ ID = 1, reg = "3", addr = 47, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_47" }, dOffset = { { "/", 1 } } }, --油分器使用时间_小时
{ ID = 1, reg = "3", addr = 48, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_48" }, dOffset = { { "/", 1 } } }, --润滑油使用时间_小时
{ ID = 1, reg = "3", addr = 49, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_49" }, dOffset = { { "/", 1 } } }, --润滑脂使用时间_小时
{ ID = 1, reg = "3", addr = 50, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_50" }, dOffset = { { "/", 1 } } }, --润滑脂使用时间_小时
{ ID = 1, reg = "3", addr = 51, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_51" }, dOffset = { { "/", 10 } } }, --电机轴承温度_℃
{ ID = 1, reg = "3", addr = 52, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_52" }, dOffset = { { "/", 10 } } }, --注油压力_Mpa
{ ID = 1, reg = "3", addr = 53, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_53" }, dOffset = { { "/", 10 } } }, --油分后压力_Mpa
{ ID = 1, reg = "3", addr = 54, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_54" }, dOffset = { { "/", 10 } } }, --主机前振动_mm/s
{ ID = 1, reg = "3", addr = 55, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_55" }, dOffset = { { "/", 10 } } }, --主机后振动_mm/s
{ ID = 1, reg = "3", addr = 56, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_56" }, dOffset = { { "/", 10 } } }, --电机前振动_mm/s
{ ID = 1, reg = "3", addr = 57, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_57" }, dOffset = { { "/", 10 } } }, --电机后振动_mm/s
{ ID = 1, reg = "3", addr = 58, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_58" }, dOffset = { { "/", 10 } } }, --进气压差_KPA
{ ID = 1, reg = "3", addr = 59, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_59" }, dOffset = { { "/", 10 } } }, --冷却器前端温度_℃
{ ID = 1, reg = "3", addr = 60, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_60" }, dOffset = { { "/", 10 } } }, --冷却器后端温度_℃
{ ID = 1, reg = "3", addr = 62, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L1_3_62" }, dOffset = { { "/", 1 } } }, --累计电量_Kwh
{ ID = 1, reg = "3", addr = 38, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L1_3_38_H" }, dOffset = { { "/", 1 } } }, --机组运行时间H_小时;采集到的值 后转到 1从站,3功能码,1寄存器地址中
{ ID = 1, reg = "3", addr = 39, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L1_3_38_L" }, dOffset = { { "/", 1 } } }, --机组运行时间L_小时;采集到的值 后转到 1从站,3功能码,0寄存器地址中
{ ID = 1, reg = "3", addr = 40, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L1_3_39_H" }, dOffset = { { "/", 1 } } }, --机组加载时间H_小时;采集到的值 后转到 1从站,3功能码,3寄存器地址中
{ ID = 1, reg = "3", addr = 41, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L1_3_39_L" }, dOffset = { { "/", 1 } } }, --机组加载时间L_小时;采集到的值 后转到 1从站,3功能码,2寄存器地址中
{ ID = 1, reg = "6", addr = 30, dtype = "ushort", pMode = { 0, 0 }, dStyle = { "L1_6_30" }, dOffset = { { "/", 1 } } }, --控制地址;modbus server 1从站,6功能码,0寄存器,收到值为1时实际给 L1_6_30 下发控制值为 1;modbus server 1从站,6功能码,0寄存器,收到值为2时实际给 L1_6_30 下发控制值为 2
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L1_3_25_0" } }, --主电机冷却(独立)风机过载
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L1_3_25_1" } }, --空滤保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L1_3_25_2" } }, --油滤保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 3, pMode = { 1, 10 }, dStyle = { "L1_3_25_3" } }, --油滤压差故障
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 4, pMode = { 1, 10 }, dStyle = { "L1_3_25_4" } }, --冷却水断流/水压低
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 5, pMode = { 1, 10 }, dStyle = { "L1_3_25_5" } }, --空滤压差故障
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 6, pMode = { 1, 10 }, dStyle = { "L1_3_25_6" } }, --主电机变频器故障/主电机过载
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 7, pMode = { 1, 10 }, dStyle = { "L1_3_25_7" } }, --急停按钮按下
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L1_3_25_8" } }, --主电机PTC温度开关保护
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 9, pMode = { 1, 10 }, dStyle = { "L1_3_25_9" } }, --电源相序错误/欠压/过压保护
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 10, pMode = { 1, 10 }, dStyle = { "L1_3_25_10" } }, --油分器保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 11, pMode = { 1, 10 }, dStyle = { "L1_3_25_11" } }, --润滑油更换/保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 12, pMode = { 1, 10 }, dStyle = { "L1_3_25_12" } }, --润滑脂更换/保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 13, pMode = { 1, 10 }, dStyle = { "L1_3_25_13" } }, --整机保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 14, pMode = { 1, 10 }, dStyle = { "L1_3_25_14" } }, --排气压力预警
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 15, pMode = { 1, 10 }, dStyle = { "L1_3_25_15" } }, --排气压力过高报警停机
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L1_3_26_0" } }, --排气温度高预警
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L1_3_26_1" } }, --排气温度高报警停机
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L1_3_26_2" } }, --电柜排风扇过载
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 3, pMode = { 1, 10 }, dStyle = { "L1_3_26_3" } }, --冷却风机变频器故障/冷却水流缺水
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L1_3_28_8" } }, --主机变频器启动输出
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 12, pMode = { 1, 10 }, dStyle = { "L1_3_28_12" } }, --系统运行
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 13, pMode = { 1, 10 }, dStyle = { "L1_3_28_13" } }, --系统故障
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 14, pMode = { 1, 10 }, dStyle = { "L1_3_28_14" } }, --主机冷却(独立)风机运行输出
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 15, pMode = { 1, 10 }, dStyle = { "L1_3_28_15" } }, --加载阀输出
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L1_3_29_8" } }, --主机变频器运行反馈
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 9, pMode = { 1, 10 }, dStyle = { "L1_3_29_9" } }, --主机变频器故障
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 10, pMode = { 1, 10 }, dStyle = { "L1_3_29_10" } }, --冷却风机运行
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 11, pMode = { 1, 10 }, dStyle = { "L1_3_29_11" } }, --冷却变频器故障
{ ID = 1, reg = "3", addr = 30, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L1_3_30_0" } }, --开机_控制位
{ ID = 1, reg = "3", addr = 30, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L1_3_30_1" } }, --停机_控制位
{ ID = 1, reg = "3", addr = 30, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L1_3_30_2" } }, --故障复位_控制位
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L1_3_25_0" } }, --主电机冷却(独立)风机过载
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L1_3_25_1" } }, --空滤保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L1_3_25_2" } }, --油滤保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 3, pMode = { 2, 0 }, dStyle = { "L1_3_25_3" } }, --油滤压差故障
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 4, pMode = { 2, 0 }, dStyle = { "L1_3_25_4" } }, --冷却水断流/水压低
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 5, pMode = { 2, 0 }, dStyle = { "L1_3_25_5" } }, --空滤压差故障
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 6, pMode = { 2, 0 }, dStyle = { "L1_3_25_6" } }, --主电机变频器故障/主电机过载
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 7, pMode = { 2, 0 }, dStyle = { "L1_3_25_7" } }, --急停按钮按下
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L1_3_25_8" } }, --主电机PTC温度开关保护
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 9, pMode = { 2, 0 }, dStyle = { "L1_3_25_9" } }, --电源相序错误/欠压/过压保护
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 10, pMode = { 2, 0 }, dStyle = { "L1_3_25_10" } }, --油分器保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 11, pMode = { 2, 0 }, dStyle = { "L1_3_25_11" } }, --润滑油更换/保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 12, pMode = { 2, 0 }, dStyle = { "L1_3_25_12" } }, --润滑脂更换/保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 13, pMode = { 2, 0 }, dStyle = { "L1_3_25_13" } }, --整机保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 14, pMode = { 2, 0 }, dStyle = { "L1_3_25_14" } }, --排气压力预警
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L1_3_25_15" } }, --排气压力过高报警停机
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L1_3_26_0" } }, --排气温度高预警
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L1_3_26_1" } }, --排气温度高报警停机
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L1_3_26_2" } }, --电柜排风扇过载
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 3, pMode = { 2, 0 }, dStyle = { "L1_3_26_3" } }, --冷却风机变频器故障/冷却水流缺水
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L1_3_28_8" } }, --主机变频器启动输出
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 12, pMode = { 2, 0 }, dStyle = { "L1_3_28_12" } }, --系统运行
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 13, pMode = { 2, 0 }, dStyle = { "L1_3_28_13" } }, --系统故障
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 14, pMode = { 2, 0 }, dStyle = { "L1_3_28_14" } }, --主机冷却(独立)风机运行输出
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L1_3_28_15" } }, --加载阀输出
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L1_3_29_8" } }, --主机变频器运行反馈
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 9, pMode = { 2, 0 }, dStyle = { "L1_3_29_9" } }, --主机变频器故障
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 10, pMode = { 2, 0 }, dStyle = { "L1_3_29_10" } }, --冷却风机运行
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 11, pMode = { 2, 0 }, dStyle = { "L1_3_29_11" } }, --冷却变频器故障
{ ID = 1, reg = "3", addr = 30, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L1_3_30_0" } }, --开机_控制位
{ ID = 1, reg = "3", addr = 30, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L1_3_30_1" } }, --停机_控制位
{ ID = 1, reg = "3", addr = 30, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L1_3_30_2" } }, --故障复位_控制位
{ ID = 2, reg = "3", addr = 0, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_0" }, dOffset = { { "/", 100 } } }, --机组排气压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,13寄存器地址中
{ ID = 2, reg = "3", addr = 1, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_1" }, dOffset = { { "/", 10 } } }, --排气温度_℃;采集到的值 后转到 1从站,3功能码,11寄存器地址中给
{ ID = 2, reg = "3", addr = 2, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_2" }, dOffset = { { "/", 100 } } }, --油气桶压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,14寄存器地址中
{ ID = 2, reg = "3", addr = 3, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_3" }, dOffset = { { "/", 10 } } }, --油分后温度_℃;采集到的值 后转到 1从站,3功能码,12寄存器地址中
{ ID = 2, reg = "3", addr = 4, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_4" }, dOffset = { { "/", 10 } } }, --A相绕组温度_℃;采集到的值 后转到 1从站,3功能码,15寄存器地址中
{ ID = 2, reg = "3", addr = 5, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_5" }, dOffset = { { "/", 10 } } }, --B相绕组温度_℃;采集到的值 后转到 1从站,3功能码,16寄存器地址中
{ ID = 2, reg = "3", addr = 6, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_6" }, dOffset = { { "/", 10 } } }, --C相绕组温度_℃;采集到的值 后转到 1从站,3功能码,19寄存器地址中
{ ID = 2, reg = "3", addr = 7, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_7" }, dOffset = { { "/", 10 } } }, --进线电压_V;采集到的值 后转到 1从站,3功能码,7寄存器地址中
{ ID = 2, reg = "3", addr = 8, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_8" }, dOffset = { { "/", 10 } } }, --进线电流_A;采集到的值 后转到 1从站,3功能码,8寄存器地址中
{ ID = 2, reg = "3", addr = 9, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_9" }, dOffset = { { "/", 100 } } }, --主机变频器运行频率_HZ
{ ID = 2, reg = "3", addr = 10, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_10" }, dOffset = { { "/", 100 } } }, --主机变频器给定频率_HZ
{ ID = 2, reg = "3", addr = 11, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_11" }, dOffset = { { "/", 10 } } }, --主机变频器母线电压_V
{ ID = 2, reg = "3", addr = 12, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_12" }, dOffset = { { "/", 1 } } }, --主机变频器输出电压_V
{ ID = 2, reg = "3", addr = 13, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_13" }, dOffset = { { "/", 10 } } }, --主机变频器运行电流_A
{ ID = 2, reg = "3", addr = 14, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_14" }, dOffset = { { "/", 1 } } }, --主机变频器运行转速_rpm
{ ID = 2, reg = "3", addr = 15, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_15" }, dOffset = { { "/", 1000 } } }, --主机变频器输出功率_KW
{ ID = 2, reg = "3", addr = 17, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_17" }, dOffset = { { "/", 100 } } }, --风机变频器输出频率_HZ
{ ID = 2, reg = "3", addr = 20, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_20" }, dOffset = { { "/", 1 } } }, --风机变频器输出电压_V
{ ID = 2, reg = "3", addr = 21, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_21" }, dOffset = { { "/", 10 } } }, --风机变频器输出电流_A
{ ID = 2, reg = "3", addr = 22, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_22" }, dOffset = { { "/", 1 } } }, --风机变频器运行转速_Rpm
{ ID = 2, reg = "3", addr = 23, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_23" }, dOffset = { { "/", 1000 } } }, --风机变频器输出功率_KW
{ ID = 2, reg = "3", addr = 38, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L2_3_38" }, dOffset = { { "/", 1 } } }, --机组运行时间_小时
{ ID = 2, reg = "3", addr = 40, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L2_3_40" }, dOffset = { { "/", 1 } } }, --机组加载时间_小时
{ ID = 2, reg = "3", addr = 42, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_42" }, dOffset = { { "/", 100 } } }, --恒定压力_Mpa
{ ID = 2, reg = "3", addr = 43, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_43" }, dOffset = { { "/", 100 } } }, --卸载压力_Mpa
{ ID = 2, reg = "3", addr = 44, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_44" }, dOffset = { { "/", 100 } } }, --加载压力_Mpa
{ ID = 2, reg = "3", addr = 45, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_45" }, dOffset = { { "/", 1 } } }, --油滤使用时间_小时
{ ID = 2, reg = "3", addr = 46, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_46" }, dOffset = { { "/", 1 } } }, --空滤使用时间_小时
{ ID = 2, reg = "3", addr = 47, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_47" }, dOffset = { { "/", 1 } } }, --油分器使用时间_小时
{ ID = 2, reg = "3", addr = 48, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_48" }, dOffset = { { "/", 1 } } }, --润滑油使用时间_小时
{ ID = 2, reg = "3", addr = 49, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_49" }, dOffset = { { "/", 1 } } }, --润滑脂使用时间_小时
{ ID = 2, reg = "3", addr = 50, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_50" }, dOffset = { { "/", 1 } } }, --润滑脂使用时间_小时
{ ID = 2, reg = "3", addr = 51, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_51" }, dOffset = { { "/", 10 } } }, --电机轴承温度_℃
{ ID = 2, reg = "3", addr = 52, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_52" }, dOffset = { { "/", 10 } } }, --注油压力_Mpa
{ ID = 2, reg = "3", addr = 53, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_53" }, dOffset = { { "/", 10 } } }, --油分后压力_Mpa
{ ID = 2, reg = "3", addr = 54, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_54" }, dOffset = { { "/", 10 } } }, --主机前振动_mm/s
{ ID = 2, reg = "3", addr = 55, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_55" }, dOffset = { { "/", 10 } } }, --主机后振动_mm/s
{ ID = 2, reg = "3", addr = 56, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_56" }, dOffset = { { "/", 10 } } }, --电机前振动_mm/s
{ ID = 2, reg = "3", addr = 57, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_57" }, dOffset = { { "/", 10 } } }, --电机后振动_mm/s
{ ID = 2, reg = "3", addr = 58, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_58" }, dOffset = { { "/", 10 } } }, --进气压差_KPA
{ ID = 2, reg = "3", addr = 59, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_59" }, dOffset = { { "/", 10 } } }, --冷却器前端温度_℃
{ ID = 2, reg = "3", addr = 60, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_60" }, dOffset = { { "/", 10 } } }, --冷却器后端温度_℃
{ ID = 2, reg = "3", addr = 62, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L2_3_62" }, dOffset = { { "/", 1 } } }, --累计电量_Kwh
{ ID = 2, reg = "3", addr = 38, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L2_3_38_H" }, dOffset = { { "/", 1 } } }, --机组运行时间H_小时;采集到的值 后转到 1从站,3功能码,1寄存器地址中
{ ID = 2, reg = "3", addr = 39, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L2_3_38_L" }, dOffset = { { "/", 1 } } }, --机组运行时间L_小时;采集到的值 后转到 1从站,3功能码,0寄存器地址中
{ ID = 2, reg = "3", addr = 40, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L2_3_39_H" }, dOffset = { { "/", 1 } } }, --机组加载时间H_小时;采集到的值 后转到 1从站,3功能码,3寄存器地址中
{ ID = 2, reg = "3", addr = 41, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L2_3_39_L" }, dOffset = { { "/", 1 } } }, --机组加载时间L_小时;采集到的值 后转到 1从站,3功能码,2寄存器地址中
{ ID = 2, reg = "6", addr = 30, dtype = "ushort", pMode = { 0, 0 }, dStyle = { "L2_6_30" }, dOffset = { { "/", 1 } } }, --控制地址;modbus server 1从站,6功能码,0寄存器,收到值为1时实际给 L2_6_30 下发控制值为 1;modbus server 1从站,6功能码,0寄存器,收到值为2时实际给 L2_6_30 下发控制值为 2
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L2_3_25_0" } }, --主电机冷却(独立)风机过载
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L2_3_25_1" } }, --空滤保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L2_3_25_2" } }, --油滤保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 3, pMode = { 1, 10 }, dStyle = { "L2_3_25_3" } }, --油滤压差故障
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 4, pMode = { 1, 10 }, dStyle = { "L2_3_25_4" } }, --冷却水断流/水压低
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 5, pMode = { 1, 10 }, dStyle = { "L2_3_25_5" } }, --空滤压差故障
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 6, pMode = { 1, 10 }, dStyle = { "L2_3_25_6" } }, --主电机变频器故障/主电机过载
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 7, pMode = { 1, 10 }, dStyle = { "L2_3_25_7" } }, --急停按钮按下
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L2_3_25_8" } }, --主电机PTC温度开关保护
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 9, pMode = { 1, 10 }, dStyle = { "L2_3_25_9" } }, --电源相序错误/欠压/过压保护
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 10, pMode = { 1, 10 }, dStyle = { "L2_3_25_10" } }, --油分器保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 11, pMode = { 1, 10 }, dStyle = { "L2_3_25_11" } }, --润滑油更换/保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 12, pMode = { 1, 10 }, dStyle = { "L2_3_25_12" } }, --润滑脂更换/保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 13, pMode = { 1, 10 }, dStyle = { "L2_3_25_13" } }, --整机保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 14, pMode = { 1, 10 }, dStyle = { "L2_3_25_14" } }, --排气压力预警
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 15, pMode = { 1, 10 }, dStyle = { "L2_3_25_15" } }, --排气压力过高报警停机
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L2_3_26_0" } }, --排气温度高预警
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L2_3_26_1" } }, --排气温度高报警停机
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L2_3_26_2" } }, --电柜排风扇过载
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 3, pMode = { 1, 10 }, dStyle = { "L2_3_26_3" } }, --冷却风机变频器故障/冷却水流缺水
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L2_3_28_8" } }, --主机变频器启动输出
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 12, pMode = { 1, 10 }, dStyle = { "L2_3_28_12" } }, --系统运行
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 13, pMode = { 1, 10 }, dStyle = { "L2_3_28_13" } }, --系统故障
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 14, pMode = { 1, 10 }, dStyle = { "L2_3_28_14" } }, --主机冷却(独立)风机运行输出
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 15, pMode = { 1, 10 }, dStyle = { "L2_3_28_15" } }, --加载阀输出
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L2_3_29_8" } }, --主机变频器运行反馈
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 9, pMode = { 1, 10 }, dStyle = { "L2_3_29_9" } }, --主机变频器故障
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 10, pMode = { 1, 10 }, dStyle = { "L2_3_29_10" } }, --冷却风机运行
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 11, pMode = { 1, 10 }, dStyle = { "L2_3_29_11" } }, --冷却变频器故障
{ ID = 2, reg = "3", addr = 30, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L2_3_30_0" } }, --开机_控制位
{ ID = 2, reg = "3", addr = 30, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L2_3_30_1" } }, --停机_控制位
{ ID = 2, reg = "3", addr = 30, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L2_3_30_2" } }, --故障复位_控制位
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L2_3_25_0" } }, --主电机冷却(独立)风机过载
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L2_3_25_1" } }, --空滤保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L2_3_25_2" } }, --油滤保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 3, pMode = { 2, 0 }, dStyle = { "L2_3_25_3" } }, --油滤压差故障
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 4, pMode = { 2, 0 }, dStyle = { "L2_3_25_4" } }, --冷却水断流/水压低
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 5, pMode = { 2, 0 }, dStyle = { "L2_3_25_5" } }, --空滤压差故障
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 6, pMode = { 2, 0 }, dStyle = { "L2_3_25_6" } }, --主电机变频器故障/主电机过载
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 7, pMode = { 2, 0 }, dStyle = { "L2_3_25_7" } }, --急停按钮按下
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L2_3_25_8" } }, --主电机PTC温度开关保护
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 9, pMode = { 2, 0 }, dStyle = { "L2_3_25_9" } }, --电源相序错误/欠压/过压保护
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 10, pMode = { 2, 0 }, dStyle = { "L2_3_25_10" } }, --油分器保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 11, pMode = { 2, 0 }, dStyle = { "L2_3_25_11" } }, --润滑油更换/保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 12, pMode = { 2, 0 }, dStyle = { "L2_3_25_12" } }, --润滑脂更换/保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 13, pMode = { 2, 0 }, dStyle = { "L2_3_25_13" } }, --整机保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 14, pMode = { 2, 0 }, dStyle = { "L2_3_25_14" } }, --排气压力预警
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L2_3_25_15" } }, --排气压力过高报警停机
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L2_3_26_0" } }, --排气温度高预警
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L2_3_26_1" } }, --排气温度高报警停机
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L2_3_26_2" } }, --电柜排风扇过载
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 3, pMode = { 2, 0 }, dStyle = { "L2_3_26_3" } }, --冷却风机变频器故障/冷却水流缺水
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L2_3_28_8" } }, --主机变频器启动输出
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 12, pMode = { 2, 0 }, dStyle = { "L2_3_28_12" } }, --系统运行
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 13, pMode = { 2, 0 }, dStyle = { "L2_3_28_13" } }, --系统故障
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 14, pMode = { 2, 0 }, dStyle = { "L2_3_28_14" } }, --主机冷却(独立)风机运行输出
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L2_3_28_15" } }, --加载阀输出
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L2_3_29_8" } }, --主机变频器运行反馈
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 9, pMode = { 2, 0 }, dStyle = { "L2_3_29_9" } }, --主机变频器故障
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 10, pMode = { 2, 0 }, dStyle = { "L2_3_29_10" } }, --冷却风机运行
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 11, pMode = { 2, 0 }, dStyle = { "L2_3_29_11" } }, --冷却变频器故障
{ ID = 2, reg = "3", addr = 30, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L2_3_30_0" } }, --开机_控制位
{ ID = 2, reg = "3", addr = 30, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L2_3_30_1" } }, --停机_控制位
{ ID = 2, reg = "3", addr = 30, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L2_3_30_2" } }, --故障复位_控制位
{ ID = 3, reg = "3", addr = 0, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_0" }, dOffset = { { "/", 100 } } }, --机组排气压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,13寄存器地址中
{ ID = 3, reg = "3", addr = 1, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_1" }, dOffset = { { "/", 10 } } }, --排气温度_℃;采集到的值 后转到 1从站,3功能码,11寄存器地址中给
{ ID = 3, reg = "3", addr = 2, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_2" }, dOffset = { { "/", 100 } } }, --油气桶压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,14寄存器地址中
{ ID = 3, reg = "3", addr = 3, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_3" }, dOffset = { { "/", 10 } } }, --油分后温度_℃;采集到的值 后转到 1从站,3功能码,12寄存器地址中
{ ID = 3, reg = "3", addr = 4, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_4" }, dOffset = { { "/", 10 } } }, --A相绕组温度_℃;采集到的值 后转到 1从站,3功能码,15寄存器地址中
{ ID = 3, reg = "3", addr = 5, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_5" }, dOffset = { { "/", 10 } } }, --B相绕组温度_℃;采集到的值 后转到 1从站,3功能码,16寄存器地址中
{ ID = 3, reg = "3", addr = 6, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_6" }, dOffset = { { "/", 10 } } }, --C相绕组温度_℃;采集到的值 后转到 1从站,3功能码,19寄存器地址中
{ ID = 3, reg = "3", addr = 7, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_7" }, dOffset = { { "/", 10 } } }, --进线电压_V;采集到的值 后转到 1从站,3功能码,7寄存器地址中
{ ID = 3, reg = "3", addr = 8, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_8" }, dOffset = { { "/", 10 } } }, --进线电流_A;采集到的值 后转到 1从站,3功能码,8寄存器地址中
{ ID = 3, reg = "3", addr = 9, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_9" }, dOffset = { { "/", 100 } } }, --主机变频器运行频率_HZ
{ ID = 3, reg = "3", addr = 10, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_10" }, dOffset = { { "/", 100 } } }, --主机变频器给定频率_HZ
{ ID = 3, reg = "3", addr = 11, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_11" }, dOffset = { { "/", 10 } } }, --主机变频器母线电压_V
{ ID = 3, reg = "3", addr = 12, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_12" }, dOffset = { { "/", 1 } } }, --主机变频器输出电压_V
{ ID = 3, reg = "3", addr = 13, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_13" }, dOffset = { { "/", 10 } } }, --主机变频器运行电流_A
{ ID = 3, reg = "3", addr = 14, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_14" }, dOffset = { { "/", 1 } } }, --主机变频器运行转速_rpm
{ ID = 3, reg = "3", addr = 15, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_15" }, dOffset = { { "/", 1000 } } }, --主机变频器输出功率_KW
{ ID = 3, reg = "3", addr = 17, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_17" }, dOffset = { { "/", 100 } } }, --风机变频器输出频率_HZ
{ ID = 3, reg = "3", addr = 20, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_20" }, dOffset = { { "/", 1 } } }, --风机变频器输出电压_V
{ ID = 3, reg = "3", addr = 21, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_21" }, dOffset = { { "/", 10 } } }, --风机变频器输出电流_A
{ ID = 3, reg = "3", addr = 22, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_22" }, dOffset = { { "/", 1 } } }, --风机变频器运行转速_Rpm
{ ID = 3, reg = "3", addr = 23, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_23" }, dOffset = { { "/", 1000 } } }, --风机变频器输出功率_KW
{ ID = 3, reg = "3", addr = 38, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L3_3_38" }, dOffset = { { "/", 1 } } }, --机组运行时间_小时
{ ID = 3, reg = "3", addr = 40, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L3_3_40" }, dOffset = { { "/", 1 } } }, --机组加载时间_小时
{ ID = 3, reg = "3", addr = 42, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_42" }, dOffset = { { "/", 100 } } }, --恒定压力_Mpa
{ ID = 3, reg = "3", addr = 43, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_43" }, dOffset = { { "/", 100 } } }, --卸载压力_Mpa
{ ID = 3, reg = "3", addr = 44, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_44" }, dOffset = { { "/", 100 } } }, --加载压力_Mpa
{ ID = 3, reg = "3", addr = 45, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_45" }, dOffset = { { "/", 1 } } }, --油滤使用时间_小时
{ ID = 3, reg = "3", addr = 46, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_46" }, dOffset = { { "/", 1 } } }, --空滤使用时间_小时
{ ID = 3, reg = "3", addr = 47, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_47" }, dOffset = { { "/", 1 } } }, --油分器使用时间_小时
{ ID = 3, reg = "3", addr = 48, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_48" }, dOffset = { { "/", 1 } } }, --润滑油使用时间_小时
{ ID = 3, reg = "3", addr = 49, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_49" }, dOffset = { { "/", 1 } } }, --润滑脂使用时间_小时
{ ID = 3, reg = "3", addr = 50, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_50" }, dOffset = { { "/", 1 } } }, --润滑脂使用时间_小时
{ ID = 3, reg = "3", addr = 51, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_51" }, dOffset = { { "/", 10 } } }, --电机轴承温度_℃
{ ID = 3, reg = "3", addr = 52, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_52" }, dOffset = { { "/", 10 } } }, --注油压力_Mpa
{ ID = 3, reg = "3", addr = 53, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_53" }, dOffset = { { "/", 10 } } }, --油分后压力_Mpa
{ ID = 3, reg = "3", addr = 54, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_54" }, dOffset = { { "/", 10 } } }, --主机前振动_mm/s
{ ID = 3, reg = "3", addr = 55, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_55" }, dOffset = { { "/", 10 } } }, --主机后振动_mm/s
{ ID = 3, reg = "3", addr = 56, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_56" }, dOffset = { { "/", 10 } } }, --电机前振动_mm/s
{ ID = 3, reg = "3", addr = 57, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_57" }, dOffset = { { "/", 10 } } }, --电机后振动_mm/s
{ ID = 3, reg = "3", addr = 58, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_58" }, dOffset = { { "/", 10 } } }, --进气压差_KPA
{ ID = 3, reg = "3", addr = 59, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_59" }, dOffset = { { "/", 10 } } }, --冷却器前端温度_℃
{ ID = 3, reg = "3", addr = 60, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_60" }, dOffset = { { "/", 10 } } }, --冷却器后端温度_℃
{ ID = 3, reg = "3", addr = 62, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L3_3_62" }, dOffset = { { "/", 1 } } }, --累计电量_Kwh
{ ID = 3, reg = "3", addr = 38, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L3_3_38_H" }, dOffset = { { "/", 1 } } }, --机组运行时间H_小时;采集到的值 后转到 1从站,3功能码,1寄存器地址中
{ ID = 3, reg = "3", addr = 39, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L3_3_38_L" }, dOffset = { { "/", 1 } } }, --机组运行时间L_小时;采集到的值 后转到 1从站,3功能码,0寄存器地址中
{ ID = 3, reg = "3", addr = 40, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L3_3_39_H" }, dOffset = { { "/", 1 } } }, --机组加载时间H_小时;采集到的值 后转到 1从站,3功能码,3寄存器地址中
{ ID = 3, reg = "3", addr = 41, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L3_3_39_L" }, dOffset = { { "/", 1 } } }, --机组加载时间L_小时;采集到的值 后转到 1从站,3功能码,2寄存器地址中
{ ID = 3, reg = "6", addr = 30, dtype = "ushort", pMode = { 0, 0 }, dStyle = { "L3_6_30" }, dOffset = { { "/", 1 } } }, --控制地址;modbus server 1从站,6功能码,0寄存器,收到值为1时实际给 L3_6_30 下发控制值为 1;modbus server 1从站,6功能码,0寄存器,收到值为2时实际给 L3_6_30 下发控制值为 2
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L3_3_25_0" } }, --主电机冷却(独立)风机过载
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L3_3_25_1" } }, --空滤保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L3_3_25_2" } }, --油滤保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 3, pMode = { 1, 10 }, dStyle = { "L3_3_25_3" } }, --油滤压差故障
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 4, pMode = { 1, 10 }, dStyle = { "L3_3_25_4" } }, --冷却水断流/水压低
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 5, pMode = { 1, 10 }, dStyle = { "L3_3_25_5" } }, --空滤压差故障
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 6, pMode = { 1, 10 }, dStyle = { "L3_3_25_6" } }, --主电机变频器故障/主电机过载
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 7, pMode = { 1, 10 }, dStyle = { "L3_3_25_7" } }, --急停按钮按下
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L3_3_25_8" } }, --主电机PTC温度开关保护
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 9, pMode = { 1, 10 }, dStyle = { "L3_3_25_9" } }, --电源相序错误/欠压/过压保护
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 10, pMode = { 1, 10 }, dStyle = { "L3_3_25_10" } }, --油分器保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 11, pMode = { 1, 10 }, dStyle = { "L3_3_25_11" } }, --润滑油更换/保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 12, pMode = { 1, 10 }, dStyle = { "L3_3_25_12" } }, --润滑脂更换/保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 13, pMode = { 1, 10 }, dStyle = { "L3_3_25_13" } }, --整机保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 14, pMode = { 1, 10 }, dStyle = { "L3_3_25_14" } }, --排气压力预警
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 15, pMode = { 1, 10 }, dStyle = { "L3_3_25_15" } }, --排气压力过高报警停机
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L3_3_26_0" } }, --排气温度高预警
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L3_3_26_1" } }, --排气温度高报警停机
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L3_3_26_2" } }, --电柜排风扇过载
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 3, pMode = { 1, 10 }, dStyle = { "L3_3_26_3" } }, --冷却风机变频器故障/冷却水流缺水
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L3_3_28_8" } }, --主机变频器启动输出
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 12, pMode = { 1, 10 }, dStyle = { "L3_3_28_12" } }, --系统运行
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 13, pMode = { 1, 10 }, dStyle = { "L3_3_28_13" } }, --系统故障
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 14, pMode = { 1, 10 }, dStyle = { "L3_3_28_14" } }, --主机冷却(独立)风机运行输出
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 15, pMode = { 1, 10 }, dStyle = { "L3_3_28_15" } }, --加载阀输出
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L3_3_29_8" } }, --主机变频器运行反馈
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 9, pMode = { 1, 10 }, dStyle = { "L3_3_29_9" } }, --主机变频器故障
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 10, pMode = { 1, 10 }, dStyle = { "L3_3_29_10" } }, --冷却风机运行
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 11, pMode = { 1, 10 }, dStyle = { "L3_3_29_11" } }, --冷却变频器故障
{ ID = 3, reg = "3", addr = 30, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L3_3_30_0" } }, --开机_控制位
{ ID = 3, reg = "3", addr = 30, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L3_3_30_1" } }, --停机_控制位
{ ID = 3, reg = "3", addr = 30, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L3_3_30_2" } }, --故障复位_控制位
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L3_3_25_0" } }, --主电机冷却(独立)风机过载
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L3_3_25_1" } }, --空滤保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L3_3_25_2" } }, --油滤保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 3, pMode = { 2, 0 }, dStyle = { "L3_3_25_3" } }, --油滤压差故障
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 4, pMode = { 2, 0 }, dStyle = { "L3_3_25_4" } }, --冷却水断流/水压低
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 5, pMode = { 2, 0 }, dStyle = { "L3_3_25_5" } }, --空滤压差故障
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 6, pMode = { 2, 0 }, dStyle = { "L3_3_25_6" } }, --主电机变频器故障/主电机过载
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 7, pMode = { 2, 0 }, dStyle = { "L3_3_25_7" } }, --急停按钮按下
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L3_3_25_8" } }, --主电机PTC温度开关保护
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 9, pMode = { 2, 0 }, dStyle = { "L3_3_25_9" } }, --电源相序错误/欠压/过压保护
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 10, pMode = { 2, 0 }, dStyle = { "L3_3_25_10" } }, --油分器保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 11, pMode = { 2, 0 }, dStyle = { "L3_3_25_11" } }, --润滑油更换/保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 12, pMode = { 2, 0 }, dStyle = { "L3_3_25_12" } }, --润滑脂更换/保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 13, pMode = { 2, 0 }, dStyle = { "L3_3_25_13" } }, --整机保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 14, pMode = { 2, 0 }, dStyle = { "L3_3_25_14" } }, --排气压力预警
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L3_3_25_15" } }, --排气压力过高报警停机
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L3_3_26_0" } }, --排气温度高预警
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L3_3_26_1" } }, --排气温度高报警停机
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L3_3_26_2" } }, --电柜排风扇过载
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 3, pMode = { 2, 0 }, dStyle = { "L3_3_26_3" } }, --冷却风机变频器故障/冷却水流缺水
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L3_3_28_8" } }, --主机变频器启动输出
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 12, pMode = { 2, 0 }, dStyle = { "L3_3_28_12" } }, --系统运行
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 13, pMode = { 2, 0 }, dStyle = { "L3_3_28_13" } }, --系统故障
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 14, pMode = { 2, 0 }, dStyle = { "L3_3_28_14" } }, --主机冷却(独立)风机运行输出
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L3_3_28_15" } }, --加载阀输出
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L3_3_29_8" } }, --主机变频器运行反馈
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 9, pMode = { 2, 0 }, dStyle = { "L3_3_29_9" } }, --主机变频器故障
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 10, pMode = { 2, 0 }, dStyle = { "L3_3_29_10" } }, --冷却风机运行
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 11, pMode = { 2, 0 }, dStyle = { "L3_3_29_11" } }, --冷却变频器故障
{ ID = 3, reg = "3", addr = 30, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L3_3_30_0" } }, --开机_控制位
{ ID = 3, reg = "3", addr = 30, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L3_3_30_1" } }, --停机_控制位
{ ID = 3, reg = "3", addr = 30, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L3_3_30_2" } }, --故障复位_控制位
},
},
},
}
2.AS-2lua脚本
2.1 aprus.lua
package.cpath = "./?.so"
package.path = "./?.lua"
cjson = require "cjson"
config = require "config"
require "modbus"
require "ModbusServer"
function PrintTable(tbl, level, filteDefault) --打印表
local msg = ""
filteDefault = filteDefault or true --默认过滤关键字(DeleteMe, _class_type)
level = level or 1
local indent_str = ""
for i = 1, level do
indent_str = indent_str .. " "
end
print(indent_str .. "{")
for k, v in pairs(tbl) do
if filteDefault then
if k ~= "_class_type" and k ~= "DeleteMe" then
local item_str = string.format("%s%s = %s", indent_str .. " ", tostring(k), tostring(v))
print(item_str)
if type(v) == "table" then
PrintTable(v, level + 1)
end
end
else
local item_str = string.format("%s%s = %s", indent_str .. " ", tostring(k), tostring(v))
print(item_str)
if type(v) == "table" then
PrintTable(v, level + 1)
end
end
end
print(indent_str .. "}")
end
--日志函数
function LOG(fmt, ...)
user.log(string.format(fmt, ...))
end
function act_control(m, json)
for k, v in pairs(json) do
if k ~= "Act" then
modbus.write(modbusObj, k, v)
end
end
end
----------------------------------
---回调函数
----------------------------------
--mqtt回调函数
function mqttCB_recvMsg(m, topic, data)
local json = cjson.decode(data)
if json.Act == "Control" then
act_control(m, json)
end
end
function mqttCB_disConnect(session)
LOG("mqtt_disconnected !!!")
LOG("LuaCB SUCCESS")
end
function mqttCB_connect(session)
LOG("mqtt_connected !!!")
LOG("LuaCB SUCCESS")
end
--modbus写入点位校验
function modbus_writeNode_verify(Wnode)
local MBWnode = config.Modbus.node.write
local flag_verify = false
for index, value in ipairs(MBWnode) do
if Wnode.ID == value.ID and Wnode.reg == value.reg and Wnode.addr >= value.addr and Wnode.addr < value.addr + value.cnt - 1 and Wnode.addr + Wnode.cnt <= value.cnt + value.addr then
flag_verify = true
end
end
return flag_verify
end
--写入点位校验
function writeNode_verify(Wnode)
local flag_verify = false
flag_verify = modbus_writeNode_verify(Wnode)
return flag_verify
end
--modbusSvr回调函数
function modbusServerCB_write(session, ID, reg, addr, cnt, data)
local Wnode = { ID = tonumber(ID), reg = tostring(reg), addr = tonumber(addr), cnt = tonumber(cnt) }
if writeNode_verify(Wnode) then
-- LOG("[Lua] [Write] SUCCESS Over before return ")
LOG("[modbusServerCB_write] Wnode <" ..
"ID:" .. Wnode.ID .. " Reg:" .. Wnode.reg .. " Addr:" .. Wnode.addr .. " Cnt:" .. Wnode.cnt .. "> SUCCESS")
modbus.writeNode(modbusObj, cjson.encode(Wnode), data)
else
LOG("[Lua] [Write] Failed Over before return ")
LOG("[modbusServerCB_write] ERROR Wnode Verify <" ..
"ID:" .. Wnode.ID .. " Reg:" .. Wnode.reg .. " Addr:" .. Wnode.addr .. " Cnt:" .. Wnode.cnt .. ">")
end
-- LOG("[modbusServerCB_write] return ")
end
----------------------------------
---模块加载结点
----------------------------------
--modbus加载结点
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, v.delay, v.db)
end
end
--modbus加载结点
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
--modbusSvr加载结点
function MBserver_load_station(svr, cfg)
for k, v in pairs(cfg)
do
-- LOG("<load Station" .. cjson.encode(v) .. ">")
ModbusServer.setStation(svr, cjson.encode(v))
end
end
----------------------------------
---mqtt初始化
----------------------------------
function mqtt_init()
LOG("MqttInit")
mqtt3Obj = mqtt.new()
mqtt.regCB(mqtt3Obj, "recvMsg", mqttCB_recvMsg)
-- mqtt.config(mqtt3Obj, "", "gards.mixyun.com", "31883", "aprusdev@aprus", "mixlinker123")
mqtt.config(mqtt3Obj, "", "10.168.1.100", "1883", "box@aprus", "mixlinker123")
mqtt.run(mqtt3Obj)
user.ipconfig_eth0("manual", "10.168.1.11", "255.255.255.0", "", "114.114.114.114")
end
--modbus初始化
function modbus_init()
MBCfg = config.Modbus
modbusObj = modbus.new(MBCfg.device.type)
-- modbus.debug(modbusObj, 0x01010101)
modbus.config(modbusObj, MBCfg.device.ip, MBCfg.device.port, MBCfg.device.ifname)
-- modbus.config(modbusObj, MBCfg.device.rate, MBCfg.device.databit, MBCfg.device.stopbit, MBCfg.device.parity)
modbus_load_collectnodes(modbusObj, MBCfg.node.collect)
modbus_load_varnodes(modbusObj, MBCfg.node.variable)
modbus.run(modbusObj)
end
--modbusSvr初始化
function modbusServer_init()
MBSvrCfg = config.ModbusServer
mbSvrObj = ModbusServer.new("ModbusServer")
-- ModbusServer.debug(mbSvrObj, 0x01010101) --ModbusServer显示详尽的调试信息
ModbusServer.config(mbSvrObj, cjson.encode(MBSvrCfg.ServerConfig))
MBserver_load_station(mbSvrObj, MBSvrCfg.Stations)
ModbusServer.debug(mbSvrObj, 0x01) --ModbusServer显示详尽的调试信息
-- ModbusServer.regCB(mbSvrObj, "write", modbusServerCB_write)
ModbusServer.run(mbSvrObj)
MBSvrCfg = config.ModbusServer_2
mbSvrObj = ModbusServer.new("ModbusServer")
-- ModbusServer.debug(mbSvrObj, 0x01010101) --ModbusServer显示详尽的调试信息
ModbusServer.config(mbSvrObj, cjson.encode(MBSvrCfg.ServerConfig))
MBserver_load_station(mbSvrObj, MBSvrCfg.Stations)
ModbusServer.debug(mbSvrObj, 0x01) --ModbusServer显示详尽的调试信息
-- ModbusServer.regCB(mbSvrObj, "write", modbusServerCB_write)
ModbusServer.run(mbSvrObj)
end
----------------------------------
---模块初始化
----------------------------------
function module_init()
modbus_init()
modbusServer_init()
end
----------------------------------
--网口初始化
----------------------------------
function eth_init()
EthCfg = config.Aprus.eth
user.ipconfig_eth0(EthCfg.ipmode, EthCfg.inet_addr, EthCfg.netmask, EthCfg.gateway, EthCfg.dns)
end
--加载数据中心的数据块
function loadDatabase(dbs)
for k, v in pairs(dbs)
do
DataCenter.addDB(cjson.encode(v))
end
end
-- 加载地址映射配置
function loadAddrMaps(maps)
-- 如果 maps 是 nil,直接返回
if not maps then
return
end
for _, map in ipairs(maps) do
-- 查找源数据库配置以获取类型和大小
local src_cfg = nil
for _, db in ipairs(config.DataCenter.DB) do
if db.db_name == map.db_src then
src_cfg = db
break
end
end
if not src_cfg then
LOG("[loadAddrMaps] Source DB %s not found, skip", map.db_src)
goto continue
end
-- 1. 添加基础配置
local base_cfg = {
db_src = map.db_src,
db_dest = map.db_dest,
db_type = src_cfg.db_type,
count = src_cfg.count,
enable = map.enable and 1 or 0
}
local ret = DataCenter.addAddrMapBase(cjson.encode(base_cfg))
if ret ~= 0 then
LOG("[loadAddrMaps] Add base config failed for %s, skip", map.db_src)
goto continue
end
-- 2. 添加地址映射表
local mappings_cfg = {}
for src_addr, dest_addr in pairs(map.addr_maps) do
mappings_cfg["addr_" .. src_addr .. "_dest"] = dest_addr
end
ret = DataCenter.addAddrMapMappings(cjson.encode(mappings_cfg))
if ret ~= 0 then
LOG("[loadAddrMaps] Add mappings failed for %s, skip", map.db_src)
goto continue
end
-- -- 3. 添加转发偏移配置
local forward_cfg = {}
if map.forward_offsets then
for src_addr, offsets in pairs(map.forward_offsets) do
local offset_str = ""
for i, op in ipairs(offsets) do
if i > 1 then
offset_str = offset_str .. ","
end
offset_str = offset_str .. op[1] .. op[2]
end
forward_cfg["addr_" .. src_addr .. "_forward_offset"] = offset_str
end
end
ret = DataCenter.addAddrMapForwardOffsets(cjson.encode(forward_cfg))
if ret ~= 0 then
LOG("[loadAddrMaps] Add forward offsets failed for %s, skip", map.db_src)
goto continue
end
-- -- 4. 添加控制配置(偏移+节点)
-- local control_cfg = {}
-- if map.control_nodes then
-- for src_addr, ctrl in pairs(map.control_nodes) do
-- -- 控制偏移
-- if ctrl.offsets then
-- local offset_str = ""
-- for i, op in ipairs(ctrl.offsets) do
-- if i > 1 then
-- offset_str = offset_str .. ","
-- end
-- offset_str = offset_str .. op[1] .. op[2]
-- end
-- control_cfg["addr_" .. src_addr .. "_control_offset"] = offset_str
-- end
-- -- 控制节点
-- if ctrl.node then
-- local node = ctrl.node
-- control_cfg["addr_" .. src_addr .. "_control_node"] = string.format(
-- '{"ID":%d,"reg":"%s","addr":%d,"cnt":%d,"method":"%s"}',
-- node.ID, node.reg, node.addr, node.cnt, node.method or "none"
-- )
-- end
-- end
-- end
-- ret = DataCenter.addAddrMapControl(cjson.encode(control_cfg))
-- if ret ~= 0 then
-- LOG("[loadAddrMaps] Add control config failed for %s, skip", map.db_src)
-- goto continue
-- end
-- 5. 添加目标节点配置
-- local dest_cfg = {}
-- if map.dest_nodes then
-- for src_addr, node in pairs(map.dest_nodes) do
-- dest_cfg["addr_" .. src_addr .. "_dest_node"] = string.format(
-- '{"ID":%d,"reg":"%s","addr":%d,"cnt":%d,"method":"%s"}',
-- node.ID, node.reg, node.addr, node.cnt, node.method or "none"
-- )
-- end
-- end
-- ret = DataCenter.addAddrMapDestNodes(cjson.encode(dest_cfg))
-- if ret ~= 0 then
-- LOG("[loadAddrMaps] Add dest nodes failed for %s, skip", map.db_src)
-- goto continue
-- end
-- 6. 提交映射配置
ret = DataCenter.commitAddrMap()
if ret ~= 0 then
LOG("[loadAddrMaps] Commit map failed for %s", map.db_src)
else
LOG("[loadAddrMaps] Loaded map successfully: %s->%s", map.db_src, map.db_dest)
end
::continue::
end
end
-- 加载位地址映射配置
function loadAddrMapsBit(bit_maps)
-- 如果 bit_maps 是 nil,直接返回
if not bit_maps then
return
end
for _, bit_map_group in ipairs(bit_maps) do
if not bit_map_group.enable then
goto continue
end
-- 查找源数据库和目标数据库配置
local src_cfg = nil
local dest_cfg = nil
for _, db in ipairs(config.DataCenter.DB) do
if db.db_name == bit_map_group.db_src then
src_cfg = db
end
if db.db_name == bit_map_group.db_dest then
dest_cfg = db
end
if src_cfg and dest_cfg then
break
end
end
if not src_cfg or not dest_cfg then
LOG("[loadAddrMapsBit] Source or dest DB not found, skip group")
goto continue
end
-- 处理每个位映射配置
for _, bit_map in ipairs(bit_map_group) do
-- 确定映射类型
local map_type = 0 -- 默认short->short
if src_cfg.db_type == "short" and dest_cfg.db_type == "bit" then
map_type = 1 -- short->bit
elseif src_cfg.db_type == "bit" and dest_cfg.db_type == "short" then
map_type = 2 -- bit->short
end
-- 构建位映射配置
local bit_cfg = {
db_src = bit_map_group.db_src,
db_dest = bit_map_group.db_dest,
enable = bit_map_group.enable and 1 or 0,
is_offset = bit_map.is_offset and 1 or 0,
map_type = map_type,
src_addr = {
addr = tonumber(bit_map.src_addr.addr) or 0, -- 确保是数字
dBit = tonumber(bit_map.src_addr.dBit) or 0
},
dest_addr = {
addr = tonumber(bit_map.dest_addr.addr) or 0,
dBit = tonumber(bit_map.dest_addr.dBit) or 0
}
}
-- local bit_cfg = {
-- db_src = bit_map_group.db_src,
-- db_dest = bit_map_group.db_dest,
-- enable = bit_map_group.enable and 1 or 0,
-- is_offset = bit_map.is_offset and 1 or 0,
-- map_type = map_type,
-- src_addr = {
-- addr = bit_map.src_addr.addr,
-- dBit = bit_map.src_addr.dBit
-- },
-- dest_addr = {
-- addr = bit_map.dest_addr.addr,
-- dBit = bit_map.dest_addr.dBit
-- }
-- }
PrintTable(bit_cfg)
-- 添加到位映射
local ret = DataCenter.addAddrMapBit(cjson.encode(bit_cfg))
if ret ~= 0 then
LOG("[loadAddrMapsBit] Add bit map failed: %s->%s",
bit_map_group.db_src, bit_map_group.db_dest)
else
LOG("[loadAddrMapsBit] Added bit map: %s->%s, src=%d.%d, dest=%d.%d SUCCESS",
bit_map_group.db_src, bit_map_group.db_dest,
bit_map.src_addr.addr, bit_map.src_addr.dBit,
bit_map.dest_addr.addr, bit_map.dest_addr.dBit)
end
end
::continue::
end
end
function loadControlConfig(control_configs)
-- 所有变量均在函数开头定义并初始化
local ret = 0
local enable_val = 1
local node_base = {}
local node_base_name = ""
local control_config = nil
local config_idx = 0
local control_node = nil
local node_idx = 0
local addr_base = {}
local dest_node = nil
local dest_idx = 0
local add_dest_node_params = {}
local obj_index = 1
local offsets = {}
local offset = nil
local add_offset_params = {}
modbusObjs = { modbusObj }
-- 1. 参数合法性检查
if not control_configs or type(control_configs) ~= "table" then
LOG("[loadControlConfig] Argument is not a valid table.")
return nil
end
-- 如果传入的是一个空table,直接返回成功
if #control_configs == 0 then
LOG("[loadControlConfig] No control configurations to load.")
return ""
end
-- 检查全局modbus对象数组是否存在(这部分逻辑请根据你的实际情况确认)
-- 注意:modbusObjs 应该在调用此函数前就已正确初始化
if not modbusObjs or type(modbusObjs) ~= "table" then
LOG("[loadControlConfig] Global 'modbusObjs' array is not properly initialized.")
return nil
end
LOG("[loadControlConfig] Starting to load control configurations...")
-- 3. 遍历所有控制配置
for node_idx, node_ctrl in ipairs(control_configs) do
-- 检查单个控制配置的完整性
-- if not node_ctrl.name or type(node_ctrl.name) ~= "string" then
-- LOG("[loadControlConfig] The " ..
-- config_idx .. "th control config is missing or has an invalid 'name' field.")
-- return nil
-- end
-- if not node_ctrl.db_src or type(node_ctrl.db_src) ~= "string" then
-- LOG("[loadControlConfig] Control config '" ..
-- node_ctrl.name .. "' is missing or has an invalid 'db_src' field.")
-- return nil
-- end
-- if not node_ctrl.nodes or type(node_ctrl.nodes) ~= "table" then
-- LOG("[loadControlConfig] Control config '" ..
-- node_ctrl.name .. "' is missing or has an invalid 'nodes' field.")
-- return nil
-- end
LOG("[loadControlConfig] Processing control config: " .. node_ctrl.name)
-- 3.1 添加控制配置(调用C接口)
enable_val = node_ctrl.enable ~= nil and (node_ctrl.enable and 1 or 0) or 1
node_base = {
name = node_ctrl.name,
db_src = node_ctrl.db_src,
enable = enable_val
}
LOG("[loadControlConfig] [Step 1-nodeBase [" ..
"node_idx = " .. node_idx .. " ;]" .. "Add control config: " .. cjson.encode(node_base))
node_base_name = DataCenter.addControlConfig(cjson.encode(node_base))
if not node_base_name then
LOG("[loadControlConfig] Failed to add control config '" .. node_ctrl.name .. "'.")
return nil
end
-- 3.2 遍历当前控制配置下的所有控制节点
for addr_idx, addr_ctrl in ipairs(node_ctrl.addrs) do
if not addr_ctrl.src_addr or not addr_ctrl.dest_nodes then
LOG("[loadControlConfig] Skipping invalid node (index: " ..
addr_idx .. ") in config '" .. node_ctrl.name .. "'.")
goto continue_node_loop
end
-- 3.2.1 添加控制节点(调用C接口)
addr_base = {
config_name = node_base_name,
addr_type = addr_ctrl.addr_type or "short",
db_src_type = addr_ctrl.db_src_type or "short",
addr = addr_ctrl.src_addr.addr or 0,
dBit = addr_ctrl.src_addr.dBit or 0
}
LOG("[loadControlConfig] [Step 2-addrBase/" ..
"node_idx = %d ;, addr_idx = %d ;" .. "] Add control node: " .. cjson.encode(addr_base), node_idx,
addr_idx)
ret = DataCenter.addControlNode(cjson.encode(addr_base))
if ret ~= 0 then
LOG("[loadControlConfig] Failed to add control node for config '" ..
node_base_name .. "', Error code: " .. ret)
return nil
end
-- 3.2.2 遍历当前控制节点下的所有目标节点
for dest_idx, dest_node in ipairs(addr_ctrl.dest_nodes) do
-- 3.2.2.1 添加目标节点(调用C接口)
add_dest_node_params = {
config_name = node_base_name,
src_addr = addr_ctrl.src_addr.addr or 0,
src_dBit = addr_ctrl.src_addr.dBit or 0,
ID = dest_node.ID,
reg = dest_node.reg,
addr = dest_node.addr,
cnt = dest_node.cnt or 1,
method = dest_node.method or "modbus"
}
LOG("[loadControlConfig] [Step 3-addr-destAddr/" ..
"node_idx = " ..
node_idx ..
" ;addr_idx = " ..
addr_idx ..
" ;dest_idx = " .. dest_idx .. " ;] Add destination node: " .. cjson.encode(add_dest_node_params))
-- 从全局modbus对象数组中获取对应的对象
obj_index = dest_node.obj or 1 -- 默认使用第一个Modbus对象
if type(obj_index) ~= "number" or obj_index < 1 or obj_index > #modbusObjs then
LOG("[loadControlConfig] Invalid modbus obj index '" ..
tostring(obj_index) .. "' for destination node in config: " .. node_base_name)
return nil
end
Obj_ctrl = modbusObjs[obj_index]
DataCenter.addDestNode(Obj_ctrl, cjson.encode(add_dest_node_params))
-- -- 3.2.2.2 如果有偏移操作,为目标节点添加偏移
-- if dest_node.dOffset and type(dest_node.dOffset) == "table" then
-- -- 兼容 dOffset 是一个操作数或一个操作数数组的情况
-- offsets = type(dest_node.dOffset[1]) == "table" and dest_node.dOffset or { dest_node.dOffset }
-- for _, offset in ipairs(offsets) do
-- add_offset_params = {
-- config_name = node_base_name,
-- src_addr = addr_ctrl.src_addr.addr or 0,
-- src_dBit = addr_ctrl.src_addr.dBit or 0,
-- dest_addr = dest_node.addr or 0,
-- op = offset.op or "+",
-- value = offset.value or 0.0
-- }
-- LOG("[loadControlConfig] [Step 4/" ..
-- addr_idx ..
-- ".2." ..
-- addr_idx ..
-- "." .. dest_idx .. "] Add destination offset: " .. cjson.encode(add_offset_params))
-- ret = DataCenter.addDestOffset(cjson.encode(add_offset_params))
-- if ret ~= 0 then
-- LOG("[loadControlConfig] Failed to add destination offset for config '" ..
-- node_base_name .. "', Error code: " .. ret)
-- return nil
-- end
-- end
-- end
end
::continue_node_loop::
end
LOG("[loadControlConfig] Control config '" .. node_base_name .. "' loaded successfully.")
end
LOG("[loadControlConfig] All control configurations have been processed.")
-- 返回最后一个成功加载的配置名称
return control_configs[#control_configs].name
end
-- 数据中心地址映射主函数
function dataCenter_addrMap()
local ret = DataCenter.addrMapProcess()
if ret ~= 0 then
LOG("[dataCenter_addrMap] Process failed with code %d", ret)
end
end
----------------------------------
--数据中心初始化
----------------------------------
function dataCenter_init()
loadDatabase(config.DataCenter.DB)
LOG("[dataCenter_init] DataCenter initialized")
end
--------------------------------
---mixctrl 系统初始化
--------------------------------
function mixctrl_init()
-- user.remoteSvr(cjson.encode(config.remoteSvr))
dataCenter_init()
mqtt_init()
module_init()
-- eth_init()
-- timer_init()
end
--------------------------------
---mixctrl 系统启动
--------------------------------
function mixctrl_start()
os.execute("usleep 20000")
os.execute("ip route del 10.168.1.1/32 dev eth0 2>/dev/null")
os.execute("ip route add 10.168.1.0/24 dev eth0 2>/dev/null")
os.execute("ifconfig eth0 10.168.1.11 netmask 255.255.255.0 2>/dev/null")
--os.execute("ifconfig eth0:9 down 2>/dev/null")
os.execute("ifconfig eth0:9 192.168.123.101>/dev/null")
-- 初始化地址映射
local ret = DataCenter.addrMapInit()
if ret ~= 0 then
LOG("[mixctrl_start] Init failed with code %d", ret)
return false
end
-- 开启错误日志(默认已开启)
DataCenter.setAddrMapDebug(0, 1)
-- -- 开启信息日志
-- DataCenter.setAddrMapDebug(1, 1)
-- -- 开启接收详情日志
-- DataCenter.setAddrMapDebug(2, 1)
-- -- 开启发送详情日志
-- DataCenter.setAddrMapDebug(3, 1)
-- 加载地址映射
loadAddrMaps(config.DataCenter.addr_Maps)
-- 加载位地址映射
loadAddrMapsBit(config.DataCenter.addr_Maps_bit)
DataCenter.controlInit()
DataCenter.setControlDebug(0x01010101)
loadControlConfig(config.DataCenter.control_nodes)
while true do
dataCenter_addrMap()
DataCenter.controlProcess()
os.execute("usleep 300000")
end
end
--------------------------------
--mixctrl系统主流程
--------------------------------
mixctrl_init()
mixctrl_start()
2.2 config.lua
return
{
AprusX = {
ipmode = "none", --auto/manual/none
inet_addr = "192.168.1.234",
netmask = "255.255.255.0",
luaver = "V00.R",
devinfo = "ForwardTCPDev",
},
DataCenter = {
DB = {
-- db1
{ db_name = "db1_AO", db_type = "short", addr = 0, count = 100 },
{ db_name = "db2_AO", db_type = "short", addr = 0, count = 100 },
{ db_name = "db3_AO", db_type = "short", addr = 0, count = 100 },
{ db_name = "db1_AO_dest", db_type = "short", addr = 0, count = 100 },
{ db_name = "db2_AO_dest", db_type = "short", addr = 0, count = 100 },
{ db_name = "db3_AO_dest", db_type = "short", addr = 0, count = 100 },
{ db_name = "db1_6_AO_dest", db_type = "short", addr = 0, count = 100 },
{ db_name = "db2_6_AO_dest", db_type = "short", addr = 0, count = 100 },
{ db_name = "db3_6_AO_dest", db_type = "short", addr = 0, count = 100 },
{ db_name = "db11_AI_dest", db_type = "short", addr = 0, count = 100 },
{ db_name = "db12_AI_dest", db_type = "short", addr = 0, count = 100 },
{ db_name = "db13_AI_dest", db_type = "short", addr = 0, count = 100 },
},
--同类型地址映射
addr_Maps = {
--[[
1.控制配置(源数据)(modbus客户端配置)
那么其中的地址也是addr_maps中的源地址,即addr_maps中的左侧的地址
--]]
--[[
2.转发配置(目标地址)(modbusSvr的配置)
那么其中的地址也是addr_maps中的源地址,即addr_maps中的左侧的地址
--]]
--3.偏移不针对bit,仅针对short
--4.偏移,short的范围是两个字节,超出范围数据会丢失,不正确;
--5.不论是转发配置还是控制配置,都需要在addr_maps中配置地址映射,若不映射仅配置相同地址即可,如[13] = 13,
--6.不配做地址映射的地址的数据,在控制配置(源数据)(modbus客户端配置)为modbus客户端的数据;而转发的数据则无数据为0
-- db1_AO
{
enable = true,
db_src = "db1_AO",
db_dest = "db1_AO_dest",
addr_maps = {
[0] = 13, --机组排气压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,13寄存器地址中
[1] = 11, --排气温度_℃;采集到的值 后转到 1从站,3功能码,11寄存器地址中给
[2] = 14, --油气桶压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,14寄存器地址中
[3] = 12, --油分后温度_℃;采集到的值 后转到 1从站,3功能码,12寄存器地址中
[4] = 15, --A相绕组温度_℃;采集到的值 后转到 1从站,3功能码,15寄存器地址中
[5] = 16, --B相绕组温度_℃;采集到的值 后转到 1从站,3功能码,16寄存器地址中
[6] = 19, --C相绕组温度_℃;采集到的值 后转到 1从站,3功能码,19寄存器地址中
[7] = 7, --进线电压_V;采集到的值 后转到 1从站,3功能码,7寄存器地址中
[8] = 8, --进线电流_A;采集到的值 后转到 1从站,3功能码,8寄存器地址中
[38] = 1, --机组运行时间H_小时;采集到的值 后转到 1从站,3功能码,1寄存器地址中
[39] = 0, --机组运行时间L_小时;采集到的值 后转到 1从站,3功能码,0寄存器地址中
[40] = 3, --机组加载时间H_小时;采集到的值 后转到 1从站,3功能码,3寄存器地址中
[41] = 2, --机组加载时间L_小时;采集到的值 后转到 1从站,3功能码,2寄存器地址中
},
--[[
2.转发配置(源地址)(modbusSvr的配置)
那么其中的地址也是addr_maps中的目标地址,即addr_maps中的左侧的地址
--]]
forward_offsets = {
-- [0] = { { "*", 1000 }, { "/", 2 } }, --4.偏移,short的范围是两个字节,超出范围数据会丢失,不正确;
[0] = { { "*", 145.04 }, { "/", 100 } },
[2] = { { "*", 145.04 }, { "/", 100 } },
[1] = { { "/", 10 }, { "+", 20 } },
[3] = { { "/", 10 }, { "+", 20 } },
[4] = { { "/", 10 }, { "+", 20 } },
[5] = { { "/", 10 }, { "+", 20 } },
[6] = { { "/", 10 }, { "+", 20 } },
},
},
-- db2_AO
{
enable = true,
db_src = "db2_AO",
db_dest = "db2_AO_dest",
addr_maps = {
[0] = 13, --机组排气压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,13寄存器地址中
[1] = 11, --排气温度_℃;采集到的值 后转到 1从站,3功能码,11寄存器地址中给
[2] = 14, --油气桶压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,14寄存器地址中
[3] = 12, --油分后温度_℃;采集到的值 后转到 1从站,3功能码,12寄存器地址中
[4] = 15, --A相绕组温度_℃;采集到的值 后转到 1从站,3功能码,15寄存器地址中
[5] = 16, --B相绕组温度_℃;采集到的值 后转到 1从站,3功能码,16寄存器地址中
[6] = 19, --C相绕组温度_℃;采集到的值 后转到 1从站,3功能码,19寄存器地址中
[7] = 7, --进线电压_V;采集到的值 后转到 1从站,3功能码,7寄存器地址中
[8] = 8, --进线电流_A;采集到的值 后转到 1从站,3功能码,8寄存器地址中
[38] = 1, --机组运行时间H_小时;采集到的值 后转到 1从站,3功能码,1寄存器地址中
[39] = 0, --机组运行时间L_小时;采集到的值 后转到 1从站,3功能码,0寄存器地址中
[40] = 3, --机组加载时间H_小时;采集到的值 后转到 1从站,3功能码,3寄存器地址中
[41] = 2, --机组加载时间L_小时;采集到的值 后转到 1从站,3功能码,2寄存器地址中
},
--[[
2.转发配置(源地址)(modbusSvr的配置)
那么其中的地址也是addr_maps中的目标地址,即addr_maps中的左侧的地址
--]]
forward_offsets = {
-- [0] = { { "*", 1000 }, { "/", 2 } }, --4.偏移,short的范围是两个字节,超出范围数据会丢失,不正确;
[0] = { { "*", 145.04 }, { "/", 100 } },
[2] = { { "*", 145.04 }, { "/", 100 } },
[1] = { { "/", 10 }, { "+", 20 } },
[3] = { { "/", 10 }, { "+", 20 } },
[4] = { { "/", 10 }, { "+", 20 } },
[5] = { { "/", 10 }, { "+", 20 } },
[6] = { { "/", 10 }, { "+", 20 } },
},
},
-- db3_AO
{
enable = true,
db_src = "db3_AO",
db_dest = "db3_AO_dest",
addr_maps = {
[0] = 13, --机组排气压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,13寄存器地址中
[1] = 11, --排气温度_℃;采集到的值 后转到 1从站,3功能码,11寄存器地址中给
[2] = 14, --油气桶压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,14寄存器地址中
[3] = 12, --油分后温度_℃;采集到的值 后转到 1从站,3功能码,12寄存器地址中
[4] = 15, --A相绕组温度_℃;采集到的值 后转到 1从站,3功能码,15寄存器地址中
[5] = 16, --B相绕组温度_℃;采集到的值 后转到 1从站,3功能码,16寄存器地址中
[6] = 19, --C相绕组温度_℃;采集到的值 后转到 1从站,3功能码,19寄存器地址中
[7] = 7, --进线电压_V;采集到的值 后转到 1从站,3功能码,7寄存器地址中
[8] = 8, --进线电流_A;采集到的值 后转到 1从站,3功能码,8寄存器地址中
[38] = 1, --机组运行时间H_小时;采集到的值 后转到 1从站,3功能码,1寄存器地址中
[39] = 0, --机组运行时间L_小时;采集到的值 后转到 1从站,3功能码,0寄存器地址中
[40] = 3, --机组加载时间H_小时;采集到的值 后转到 1从站,3功能码,3寄存器地址中
[41] = 2, --机组加载时间L_小时;采集到的值 后转到 1从站,3功能码,2寄存器地址中
},
--[[
2.转发配置(源地址)(modbusSvr的配置)
那么其中的地址也是addr_maps中的目标地址,即addr_maps中的左侧的地址
--]]
forward_offsets = {
-- [0] = { { "*", 1000 }, { "/", 2 } }, --4.偏移,short的范围是两个字节,超出范围数据会丢失,不正确;
[0] = { { "*", 145.04 }, { "/", 100 } },
[2] = { { "*", 145.04 }, { "/", 100 } },
[1] = { { "/", 10 }, { "+", 20 } },
[3] = { { "/", 10 }, { "+", 20 } },
[4] = { { "/", 10 }, { "+", 20 } },
[5] = { { "/", 10 }, { "+", 20 } },
[6] = { { "/", 10 }, { "+", 20 } },
},
},
-- db1_AO
{
enable = true,
db_src = "db1_AO",
db_dest = "db11_AI_dest",
addr_maps = {
[51] = 3, --油分后温度_℃;采集到的值 后转到 12从站,4功能码,3寄存器地址中
[4] = 0, --A相绕组温度_℃;采集到的值 后转到 12从站,4功能码,0寄存器地址中
[5] = 1, --B相绕组温度_℃;采集到的值 后转到 12从站,4功能码,1寄存器地址中
[6] = 2, --C相绕组温度_℃;采集到的值 后转到 12从站,4功能码,2寄存器地址中
},
--[[
2.转发配置(源地址)(modbusSvr的配置)
那么其中的地址也是addr_maps中的目标地址,即addr_maps中的左侧的地址
--]]
forward_offsets = {
[51] = { { "*", 1 } },
[4] = { { "*", 1 } },
[5] = { { "*", 1 } },
[6] = { { "*", 1 } },
},
},
-- db2_AO
{
enable = true,
db_src = "db2_AO",
db_dest = "db12_AI_dest",
addr_maps = {
[51] = 3, --油分后温度_℃;采集到的值 后转到 12从站,4功能码,3寄存器地址中
[4] = 0, --A相绕组温度_℃;采集到的值 后转到 12从站,4功能码,0寄存器地址中
[5] = 1, --B相绕组温度_℃;采集到的值 后转到 12从站,4功能码,1寄存器地址中
[6] = 2, --C相绕组温度_℃;采集到的值 后转到 12从站,4功能码,2寄存器地址中
},
--[[
2.转发配置(源地址)(modbusSvr的配置)
那么其中的地址也是addr_maps中的目标地址,即addr_maps中的左侧的地址
--]]
forward_offsets = {
[51] = { { "*", 1 } },
[4] = { { "*", 1 } },
[5] = { { "*", 1 } },
[6] = { { "*", 1 } },
},
},
-- db3_AO
{
enable = true,
db_src = "db3_AO",
db_dest = "db13_AI_dest",
addr_maps = {
[51] = 3, --油分后温度_℃;采集到的值 后转到 12从站,4功能码,3寄存器地址中
[4] = 0, --A相绕组温度_℃;采集到的值 后转到 12从站,4功能码,0寄存器地址中
[5] = 1, --B相绕组温度_℃;采集到的值 后转到 12从站,4功能码,1寄存器地址中
[6] = 2, --C相绕组温度_℃;采集到的值 后转到 12从站,4功能码,2寄存器地址中
},
--[[
2.转发配置(源地址)(modbusSvr的配置)
那么其中的地址也是addr_maps中的目标地址,即addr_maps中的左侧的地址
--]]
forward_offsets = {
[51] = { { "*", 1 } },
[4] = { { "*", 1 } },
[5] = { { "*", 1 } },
[6] = { { "*", 1 } },
},
},
},
--位址映射
addr_Maps_bit =
{
{
enable = true,
db_src = "db1_AO",
db_dest = "db1_AO_dest",
--short->short
{ --系统运行:采集到的值后转到 1从站,3功能码,23寄存器地址,bit9位
--需考虑src和dest的类型,short(中的bit)-->short(中的bit); short-->bit;
is_offset = false, --值是否反相
src_addr = { addr = 28, dBit = 12 },
dest_addr = { addr = 23, dBit = 9 },
},
{ --故障输出:采集到的值后转到 1从站,3功能码,23寄存器地址,bit13位
src_addr = { addr = 28, dBit = 13 },
dest_addr = { addr = 23, dBit = 13 },
},
{ --加载阀输出:采集到的值后转到 1从站,3功能码,23寄存器地址,bit10位
src_addr = { addr = 28, dBit = 15 },
dest_addr = { addr = 23, dBit = 10 },
},
},
{
enable = true,
db_src = "db2_AO",
db_dest = "db2_AO_dest",
--short->short
{ --系统运行:采集到的值后转到 1从站,3功能码,23寄存器地址,bit9位
--需考虑src和dest的类型,short(中的bit)-->short(中的bit); short-->bit;
is_offset = false, --值是否反相
src_addr = { addr = 28, dBit = 12 },
dest_addr = { addr = 23, dBit = 9 },
},
{ --故障输出:采集到的值后转到 1从站,3功能码,23寄存器地址,bit13位
src_addr = { addr = 28, dBit = 13 },
dest_addr = { addr = 23, dBit = 13 },
},
{ --加载阀输出:采集到的值后转到 1从站,3功能码,23寄存器地址,bit10位
src_addr = { addr = 28, dBit = 15 },
dest_addr = { addr = 23, dBit = 10 },
},
},
{
enable = true,
db_src = "db3_AO",
db_dest = "db3_AO_dest",
--short->short
{ --系统运行:采集到的值后转到 1从站,3功能码,23寄存器地址,bit9位
--需考虑src和dest的类型,short(中的bit)-->short(中的bit); short-->bit;
is_offset = false, --值是否反相
src_addr = { addr = 28, dBit = 12 },
dest_addr = { addr = 23, dBit = 9 },
},
{ --故障输出:采集到的值后转到 1从站,3功能码,23寄存器地址,bit13位
src_addr = { addr = 28, dBit = 13 },
dest_addr = { addr = 23, dBit = 13 },
},
{ --加载阀输出:采集到的值后转到 1从站,3功能码,23寄存器地址,bit10位
src_addr = { addr = 28, dBit = 15 },
dest_addr = { addr = 23, dBit = 10 },
},
},
},
--控制节点:当src_addr的值改变时,按控制节点的规则进行控制
control_nodes =
{
--modbusSvr_485-1_ID-1
{
enable = true,
db_src = "db1_6_AO_dest",
name = "Control_Start_Stop_485_1_ID_1",
addrs =
{
{
addr_type = "short",
src_addr = { addr = 0 }, --dBit可以不存在,默认为0
-- src_val = { 1, 2 }, --可以不存在,拿到多少写入多少
dest_nodes =
{
--控制结点的值偏移,可以不偏移也可以偏移,从src地址拿到的值运算后写入目标地址
{ ID = 1, reg = "6", addr = 0, dtype = "ushort", dStyle = { "L1_6_30" }, method = "modbus", obj = 1 },
}
},
}
},
--modbusSvr_485-1_ID-2
{
enable = true,
db_src = "db2_6_AO_dest",
name = "Control_Start_Stop_485_1_ID_2",
addrs =
{
{
addr_type = "short",
src_addr = { addr = 0 }, --dBit可以不存在,默认为0
-- src_val = { 1, 2 }, --可以不存在,拿到多少写入多少
dest_nodes =
{
--控制结点的值偏移,可以不偏移也可以偏移,从src地址拿到的值运算后写入目标地址
{ ID = 2, reg = "6", addr = 0, dtype = "ushort", dStyle = { "L1_6_30" }, method = "modbus", obj = 1 },
}
},
}
},
--modbusSvr_485-1_ID-3
{
enable = true,
db_src = "db3_6_AO_dest",
name = "Control_Start_Stop_485_1_ID_3",
addrs =
{
{
addr_type = "short",
src_addr = { addr = 0 }, --dBit可以不存在,默认为0
-- src_val = { 1, 2 }, --可以不存在,拿到多少写入多少
dest_nodes =
{
--控制结点的值偏移,可以不偏移也可以偏移,从src地址拿到的值运算后写入目标地址
{ ID = 3, reg = "6", addr = 0, dtype = "ushort", dStyle = { "L1_6_30" }, method = "modbus", obj = 1 },
}
},
}
},
--modbusSvr_485-2_ID-1
{
enable = true,
db_src = "db1_6_AO_dest",
name = "Control_Start_Stop_485_2_ID_1",
addrs =
{
{
addr_type = "short",
src_addr = { addr = 0 }, --dBit可以不存在,默认为0
-- src_val = { 1, 2 }, --可以不存在,拿到多少写入多少
dest_nodes =
{
--控制结点的值偏移,可以不偏移也可以偏移,从src地址拿到的值运算后写入目标地址
{ ID = 1, reg = "6", addr = 0, dtype = "ushort", dStyle = { "L1_6_30" }, method = "modbus", obj = 1 },
}
},
}
},
--modbusSvr_485-2_ID-2
{
enable = true,
db_src = "db2_6_AO_dest",
name = "Control_Start_Stop_485_2_ID_2",
addrs =
{
{
addr_type = "short",
src_addr = { addr = 0 }, --dBit可以不存在,默认为0
-- src_val = { 1, 2 }, --可以不存在,拿到多少写入多少
dest_nodes =
{
--控制结点的值偏移,可以不偏移也可以偏移,从src地址拿到的值运算后写入目标地址
{ ID = 2, reg = "6", addr = 0, dtype = "ushort", dStyle = { "L1_6_30" }, method = "modbus", obj = 1 },
}
},
}
},
--modbusSvr_485-2_ID-3
{
enable = true,
db_src = "db3_6_AO_dest",
name = "Control_Start_Stop_485_2_ID_3",
addrs =
{
{
addr_type = "short",
src_addr = { addr = 0 }, --dBit可以不存在,默认为0
-- src_val = { 1, 2 }, --可以不存在,拿到多少写入多少
dest_nodes =
{
--控制结点的值偏移,可以不偏移也可以偏移,从src地址拿到的值运算后写入目标地址
{ ID = 3, reg = "6", addr = 0, dtype = "ushort", dStyle = { "L1_6_30" }, method = "modbus", obj = 1 },
}
},
}
},
}
},
ModbusServer =
{
ServerConfig =
{
type = "rtu", --"rtu"/"ascii"
rs485 = 1,
rate = 9600,
databit = 8,
stopbit = 1,
parity = "None", -- None/Odd/Even
},
Stations =
{
--{station=站号(必要), db1=可读写开关量(非必要), db2=只读开关量(非必要), db3=可读写16位数据(非必要), db4=只读16位数据(非必要)},
--例1: {station=1, db1="AXio_DO_2", db2="AXio_DI_4", db3="AXio_AO_n", db4="AXio_AI_4"},
--例2: {station=2, db1="DB_1_100", db2="DB_2_100", db3="DB_3_100", db4="DB_4_100"},
-- 站配置(关联dest库)
{ station = 1, db3 = "db1_AO_dest", db6 = "db1_6_AO_dest" },
{ station = 2, db3 = "db2_AO_dest", db6 = "db2_6_AO_dest" },
{ station = 3, db3 = "db3_AO_dest", db6 = "db3_6_AO_dest" },
{ station = 11, db3 = "db1_6_AO_dest", db4 = "db11_AI_dest" },
{ station = 12, db3 = "db2_6_AO_dest", db4 = "db12_AI_dest" },
{ station = 13, db3 = "db3_6_AO_dest", db4 = "db13_AI_dest" },
},
},
ModbusServer_2 =
{
ServerConfig =
{
type = "rtu", --"rtu"/"ascii"
rs485 = 2,
rate = 9600,
databit = 8,
stopbit = 1,
parity = "None", -- None/Odd/Even
},
Stations =
{
--{station=站号(必要), db1=可读写开关量(非必要), db2=只读开关量(非必要), db3=可读写16位数据(非必要), db4=只读16位数据(非必要)},
--例1: {station=1, db1="AXio_DO_2", db2="AXio_DI_4", db3="AXio_AO_n", db4="AXio_AI_4"},
--例2: {station=2, db1="DB_1_100", db2="DB_2_100", db3="DB_3_100", db4="DB_4_100"},
-- 站配置(关联dest库)
{ station = 1, db3 = "db1_AO_dest", db6 = "db1_6_AO_dest" },
{ station = 2, db3 = "db2_AO_dest", db6 = "db2_6_AO_dest" },
{ station = 3, db3 = "db3_AO_dest", db6 = "db3_6_AO_dest" },
{ station = 11, db3 = "db1_6_AO_dest", db4 = "db11_AI_dest" },
{ station = 12, db3 = "db2_6_AO_dest", db4 = "db12_AI_dest" },
{ station = 13, db3 = "db3_6_AO_dest", db4 = "db13_AI_dest" },
},
},
Modbus = {
device = {
type = "tcp",
ip = "192.168.123.10",
port = "8000",
ifname = "eth0",
-- type = "rtu", --"rtu"/"ascii"
-- rate = 9600,
-- databit = 8,
-- stopbit = 1,
-- parity = "None", -- None/Odd/Even
},
node = {
collect = {
{ ID = 1, reg = "3", addr = 0, cnt = 64, db = "db1_AO" }, -- db1_AO count=100
{ ID = 2, reg = "3", addr = 0, cnt = 64, db = "db2_AO" }, -- db1_AO count=100
{ ID = 3, reg = "3", addr = 0, cnt = 64, db = "db3_AO" }, -- db1_AO count=100
},
variable = {
{ ID = 1, reg = "3", addr = 0, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_0" }, dOffset = { { "/", 100 } } }, --机组排气压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,13寄存器地址中
{ ID = 1, reg = "3", addr = 1, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_1" }, dOffset = { { "/", 10 } } }, --排气温度_℃;采集到的值 后转到 1从站,3功能码,11寄存器地址中给
{ ID = 1, reg = "3", addr = 2, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_2" }, dOffset = { { "/", 100 } } }, --油气桶压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,14寄存器地址中
{ ID = 1, reg = "3", addr = 3, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_3" }, dOffset = { { "/", 10 } } }, --油分后温度_℃;采集到的值 后转到 1从站,3功能码,12寄存器地址中
{ ID = 1, reg = "3", addr = 4, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_4" }, dOffset = { { "/", 10 } } }, --A相绕组温度_℃;采集到的值 后转到 1从站,3功能码,15寄存器地址中
{ ID = 1, reg = "3", addr = 5, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_5" }, dOffset = { { "/", 10 } } }, --B相绕组温度_℃;采集到的值 后转到 1从站,3功能码,16寄存器地址中
{ ID = 1, reg = "3", addr = 6, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_6" }, dOffset = { { "/", 10 } } }, --C相绕组温度_℃;采集到的值 后转到 1从站,3功能码,19寄存器地址中
{ ID = 1, reg = "3", addr = 7, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_7" }, dOffset = { { "/", 10 } } }, --进线电压_V;采集到的值 后转到 1从站,3功能码,7寄存器地址中
{ ID = 1, reg = "3", addr = 8, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_8" }, dOffset = { { "/", 10 } } }, --进线电流_A;采集到的值 后转到 1从站,3功能码,8寄存器地址中
{ ID = 1, reg = "3", addr = 9, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_9" }, dOffset = { { "/", 100 } } }, --主机变频器运行频率_HZ
{ ID = 1, reg = "3", addr = 10, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_10" }, dOffset = { { "/", 100 } } }, --主机变频器给定频率_HZ
{ ID = 1, reg = "3", addr = 11, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_11" }, dOffset = { { "/", 10 } } }, --主机变频器母线电压_V
{ ID = 1, reg = "3", addr = 12, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_12" }, dOffset = { { "/", 1 } } }, --主机变频器输出电压_V
{ ID = 1, reg = "3", addr = 13, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_13" }, dOffset = { { "/", 10 } } }, --主机变频器运行电流_A
{ ID = 1, reg = "3", addr = 14, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_14" }, dOffset = { { "/", 1 } } }, --主机变频器运行转速_rpm
{ ID = 1, reg = "3", addr = 15, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_15" }, dOffset = { { "/", 1000 } } }, --主机变频器输出功率_KW
{ ID = 1, reg = "3", addr = 17, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_17" }, dOffset = { { "/", 100 } } }, --风机变频器输出频率_HZ
{ ID = 1, reg = "3", addr = 20, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_20" }, dOffset = { { "/", 1 } } }, --风机变频器输出电压_V
{ ID = 1, reg = "3", addr = 21, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_21" }, dOffset = { { "/", 10 } } }, --风机变频器输出电流_A
{ ID = 1, reg = "3", addr = 22, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_22" }, dOffset = { { "/", 1 } } }, --风机变频器运行转速_Rpm
{ ID = 1, reg = "3", addr = 23, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_23" }, dOffset = { { "/", 1000 } } }, --风机变频器输出功率_KW
{ ID = 1, reg = "3", addr = 38, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L1_3_38" }, dOffset = { { "/", 1 } } }, --机组运行时间_小时
{ ID = 1, reg = "3", addr = 40, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L1_3_40" }, dOffset = { { "/", 1 } } }, --机组加载时间_小时
{ ID = 1, reg = "3", addr = 42, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_42" }, dOffset = { { "/", 100 } } }, --恒定压力_Mpa
{ ID = 1, reg = "3", addr = 43, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_43" }, dOffset = { { "/", 100 } } }, --卸载压力_Mpa
{ ID = 1, reg = "3", addr = 44, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_44" }, dOffset = { { "/", 100 } } }, --加载压力_Mpa
{ ID = 1, reg = "3", addr = 45, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_45" }, dOffset = { { "/", 1 } } }, --油滤使用时间_小时
{ ID = 1, reg = "3", addr = 46, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_46" }, dOffset = { { "/", 1 } } }, --空滤使用时间_小时
{ ID = 1, reg = "3", addr = 47, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_47" }, dOffset = { { "/", 1 } } }, --油分器使用时间_小时
{ ID = 1, reg = "3", addr = 48, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_48" }, dOffset = { { "/", 1 } } }, --润滑油使用时间_小时
{ ID = 1, reg = "3", addr = 49, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_49" }, dOffset = { { "/", 1 } } }, --润滑脂使用时间_小时
{ ID = 1, reg = "3", addr = 50, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_50" }, dOffset = { { "/", 1 } } }, --润滑脂使用时间_小时
{ ID = 1, reg = "3", addr = 51, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_51" }, dOffset = { { "/", 10 } } }, --电机轴承温度_℃
{ ID = 1, reg = "3", addr = 52, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_52" }, dOffset = { { "/", 10 } } }, --注油压力_Mpa
{ ID = 1, reg = "3", addr = 53, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_53" }, dOffset = { { "/", 10 } } }, --油分后压力_Mpa
{ ID = 1, reg = "3", addr = 54, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_54" }, dOffset = { { "/", 10 } } }, --主机前振动_mm/s
{ ID = 1, reg = "3", addr = 55, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_55" }, dOffset = { { "/", 10 } } }, --主机后振动_mm/s
{ ID = 1, reg = "3", addr = 56, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_56" }, dOffset = { { "/", 10 } } }, --电机前振动_mm/s
{ ID = 1, reg = "3", addr = 57, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_57" }, dOffset = { { "/", 10 } } }, --电机后振动_mm/s
{ ID = 1, reg = "3", addr = 58, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_58" }, dOffset = { { "/", 10 } } }, --进气压差_KPA
{ ID = 1, reg = "3", addr = 59, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_59" }, dOffset = { { "/", 10 } } }, --冷却器前端温度_℃
{ ID = 1, reg = "3", addr = 60, dtype = "short", pMode = { 1, 3 }, dStyle = { "L1_3_60" }, dOffset = { { "/", 10 } } }, --冷却器后端温度_℃
{ ID = 1, reg = "3", addr = 62, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L1_3_62" }, dOffset = { { "/", 1 } } }, --累计电量_Kwh
{ ID = 1, reg = "3", addr = 38, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L1_3_38_H" }, dOffset = { { "/", 1 } } }, --机组运行时间H_小时;采集到的值 后转到 1从站,3功能码,1寄存器地址中
{ ID = 1, reg = "3", addr = 39, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L1_3_38_L" }, dOffset = { { "/", 1 } } }, --机组运行时间L_小时;采集到的值 后转到 1从站,3功能码,0寄存器地址中
{ ID = 1, reg = "3", addr = 40, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L1_3_39_H" }, dOffset = { { "/", 1 } } }, --机组加载时间H_小时;采集到的值 后转到 1从站,3功能码,3寄存器地址中
{ ID = 1, reg = "3", addr = 41, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L1_3_39_L" }, dOffset = { { "/", 1 } } }, --机组加载时间L_小时;采集到的值 后转到 1从站,3功能码,2寄存器地址中
{ ID = 1, reg = "6", addr = 30, dtype = "ushort", pMode = { 0, 0 }, dStyle = { "L1_6_30" }, dOffset = { { "/", 1 } } }, --控制地址;modbus server 1从站,6功能码,0寄存器,收到值为1时实际给 L1_6_30 下发控制值为 1;modbus server 1从站,6功能码,0寄存器,收到值为2时实际给 L1_6_30 下发控制值为 2
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L1_3_25_0" } }, --主电机冷却(独立)风机过载
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L1_3_25_1" } }, --空滤保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L1_3_25_2" } }, --油滤保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 3, pMode = { 1, 10 }, dStyle = { "L1_3_25_3" } }, --油滤压差故障
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 4, pMode = { 1, 10 }, dStyle = { "L1_3_25_4" } }, --冷却水断流/水压低
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 5, pMode = { 1, 10 }, dStyle = { "L1_3_25_5" } }, --空滤压差故障
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 6, pMode = { 1, 10 }, dStyle = { "L1_3_25_6" } }, --主电机变频器故障/主电机过载
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 7, pMode = { 1, 10 }, dStyle = { "L1_3_25_7" } }, --急停按钮按下
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L1_3_25_8" } }, --主电机PTC温度开关保护
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 9, pMode = { 1, 10 }, dStyle = { "L1_3_25_9" } }, --电源相序错误/欠压/过压保护
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 10, pMode = { 1, 10 }, dStyle = { "L1_3_25_10" } }, --油分器保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 11, pMode = { 1, 10 }, dStyle = { "L1_3_25_11" } }, --润滑油更换/保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 12, pMode = { 1, 10 }, dStyle = { "L1_3_25_12" } }, --润滑脂更换/保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 13, pMode = { 1, 10 }, dStyle = { "L1_3_25_13" } }, --整机保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 14, pMode = { 1, 10 }, dStyle = { "L1_3_25_14" } }, --排气压力预警
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 15, pMode = { 1, 10 }, dStyle = { "L1_3_25_15" } }, --排气压力过高报警停机
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L1_3_26_0" } }, --排气温度高预警
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L1_3_26_1" } }, --排气温度高报警停机
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L1_3_26_2" } }, --电柜排风扇过载
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 3, pMode = { 1, 10 }, dStyle = { "L1_3_26_3" } }, --冷却风机变频器故障/冷却水流缺水
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L1_3_28_8" } }, --主机变频器启动输出
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 12, pMode = { 1, 10 }, dStyle = { "L1_3_28_12" } }, --系统运行
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 13, pMode = { 1, 10 }, dStyle = { "L1_3_28_13" } }, --系统故障
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 14, pMode = { 1, 10 }, dStyle = { "L1_3_28_14" } }, --主机冷却(独立)风机运行输出
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 15, pMode = { 1, 10 }, dStyle = { "L1_3_28_15" } }, --加载阀输出
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L1_3_29_8" } }, --主机变频器运行反馈
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 9, pMode = { 1, 10 }, dStyle = { "L1_3_29_9" } }, --主机变频器故障
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 10, pMode = { 1, 10 }, dStyle = { "L1_3_29_10" } }, --冷却风机运行
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 11, pMode = { 1, 10 }, dStyle = { "L1_3_29_11" } }, --冷却变频器故障
{ ID = 1, reg = "3", addr = 30, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L1_3_30_0" } }, --开机_控制位
{ ID = 1, reg = "3", addr = 30, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L1_3_30_1" } }, --停机_控制位
{ ID = 1, reg = "3", addr = 30, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L1_3_30_2" } }, --故障复位_控制位
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L1_3_25_0" } }, --主电机冷却(独立)风机过载
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L1_3_25_1" } }, --空滤保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L1_3_25_2" } }, --油滤保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 3, pMode = { 2, 0 }, dStyle = { "L1_3_25_3" } }, --油滤压差故障
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 4, pMode = { 2, 0 }, dStyle = { "L1_3_25_4" } }, --冷却水断流/水压低
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 5, pMode = { 2, 0 }, dStyle = { "L1_3_25_5" } }, --空滤压差故障
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 6, pMode = { 2, 0 }, dStyle = { "L1_3_25_6" } }, --主电机变频器故障/主电机过载
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 7, pMode = { 2, 0 }, dStyle = { "L1_3_25_7" } }, --急停按钮按下
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L1_3_25_8" } }, --主电机PTC温度开关保护
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 9, pMode = { 2, 0 }, dStyle = { "L1_3_25_9" } }, --电源相序错误/欠压/过压保护
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 10, pMode = { 2, 0 }, dStyle = { "L1_3_25_10" } }, --油分器保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 11, pMode = { 2, 0 }, dStyle = { "L1_3_25_11" } }, --润滑油更换/保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 12, pMode = { 2, 0 }, dStyle = { "L1_3_25_12" } }, --润滑脂更换/保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 13, pMode = { 2, 0 }, dStyle = { "L1_3_25_13" } }, --整机保养时间到
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 14, pMode = { 2, 0 }, dStyle = { "L1_3_25_14" } }, --排气压力预警
{ ID = 1, reg = "3", addr = 25, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L1_3_25_15" } }, --排气压力过高报警停机
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L1_3_26_0" } }, --排气温度高预警
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L1_3_26_1" } }, --排气温度高报警停机
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L1_3_26_2" } }, --电柜排风扇过载
{ ID = 1, reg = "3", addr = 26, dtype = "bit", dBit = 3, pMode = { 2, 0 }, dStyle = { "L1_3_26_3" } }, --冷却风机变频器故障/冷却水流缺水
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L1_3_28_8" } }, --主机变频器启动输出
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 12, pMode = { 2, 0 }, dStyle = { "L1_3_28_12" } }, --系统运行
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 13, pMode = { 2, 0 }, dStyle = { "L1_3_28_13" } }, --系统故障
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 14, pMode = { 2, 0 }, dStyle = { "L1_3_28_14" } }, --主机冷却(独立)风机运行输出
{ ID = 1, reg = "3", addr = 28, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L1_3_28_15" } }, --加载阀输出
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L1_3_29_8" } }, --主机变频器运行反馈
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 9, pMode = { 2, 0 }, dStyle = { "L1_3_29_9" } }, --主机变频器故障
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 10, pMode = { 2, 0 }, dStyle = { "L1_3_29_10" } }, --冷却风机运行
{ ID = 1, reg = "3", addr = 29, dtype = "bit", dBit = 11, pMode = { 2, 0 }, dStyle = { "L1_3_29_11" } }, --冷却变频器故障
{ ID = 1, reg = "3", addr = 30, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L1_3_30_0" } }, --开机_控制位
{ ID = 1, reg = "3", addr = 30, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L1_3_30_1" } }, --停机_控制位
{ ID = 1, reg = "3", addr = 30, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L1_3_30_2" } }, --故障复位_控制位
{ ID = 2, reg = "3", addr = 0, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_0" }, dOffset = { { "/", 100 } } }, --机组排气压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,13寄存器地址中
{ ID = 2, reg = "3", addr = 1, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_1" }, dOffset = { { "/", 10 } } }, --排气温度_℃;采集到的值 后转到 1从站,3功能码,11寄存器地址中给
{ ID = 2, reg = "3", addr = 2, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_2" }, dOffset = { { "/", 100 } } }, --油气桶压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,14寄存器地址中
{ ID = 2, reg = "3", addr = 3, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_3" }, dOffset = { { "/", 10 } } }, --油分后温度_℃;采集到的值 后转到 1从站,3功能码,12寄存器地址中
{ ID = 2, reg = "3", addr = 4, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_4" }, dOffset = { { "/", 10 } } }, --A相绕组温度_℃;采集到的值 后转到 1从站,3功能码,15寄存器地址中
{ ID = 2, reg = "3", addr = 5, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_5" }, dOffset = { { "/", 10 } } }, --B相绕组温度_℃;采集到的值 后转到 1从站,3功能码,16寄存器地址中
{ ID = 2, reg = "3", addr = 6, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_6" }, dOffset = { { "/", 10 } } }, --C相绕组温度_℃;采集到的值 后转到 1从站,3功能码,19寄存器地址中
{ ID = 2, reg = "3", addr = 7, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_7" }, dOffset = { { "/", 10 } } }, --进线电压_V;采集到的值 后转到 1从站,3功能码,7寄存器地址中
{ ID = 2, reg = "3", addr = 8, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_8" }, dOffset = { { "/", 10 } } }, --进线电流_A;采集到的值 后转到 1从站,3功能码,8寄存器地址中
{ ID = 2, reg = "3", addr = 9, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_9" }, dOffset = { { "/", 100 } } }, --主机变频器运行频率_HZ
{ ID = 2, reg = "3", addr = 10, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_10" }, dOffset = { { "/", 100 } } }, --主机变频器给定频率_HZ
{ ID = 2, reg = "3", addr = 11, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_11" }, dOffset = { { "/", 10 } } }, --主机变频器母线电压_V
{ ID = 2, reg = "3", addr = 12, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_12" }, dOffset = { { "/", 1 } } }, --主机变频器输出电压_V
{ ID = 2, reg = "3", addr = 13, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_13" }, dOffset = { { "/", 10 } } }, --主机变频器运行电流_A
{ ID = 2, reg = "3", addr = 14, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_14" }, dOffset = { { "/", 1 } } }, --主机变频器运行转速_rpm
{ ID = 2, reg = "3", addr = 15, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_15" }, dOffset = { { "/", 1000 } } }, --主机变频器输出功率_KW
{ ID = 2, reg = "3", addr = 17, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_17" }, dOffset = { { "/", 100 } } }, --风机变频器输出频率_HZ
{ ID = 2, reg = "3", addr = 20, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_20" }, dOffset = { { "/", 1 } } }, --风机变频器输出电压_V
{ ID = 2, reg = "3", addr = 21, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_21" }, dOffset = { { "/", 10 } } }, --风机变频器输出电流_A
{ ID = 2, reg = "3", addr = 22, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_22" }, dOffset = { { "/", 1 } } }, --风机变频器运行转速_Rpm
{ ID = 2, reg = "3", addr = 23, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_23" }, dOffset = { { "/", 1000 } } }, --风机变频器输出功率_KW
{ ID = 2, reg = "3", addr = 38, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L2_3_38" }, dOffset = { { "/", 1 } } }, --机组运行时间_小时
{ ID = 2, reg = "3", addr = 40, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L2_3_40" }, dOffset = { { "/", 1 } } }, --机组加载时间_小时
{ ID = 2, reg = "3", addr = 42, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_42" }, dOffset = { { "/", 100 } } }, --恒定压力_Mpa
{ ID = 2, reg = "3", addr = 43, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_43" }, dOffset = { { "/", 100 } } }, --卸载压力_Mpa
{ ID = 2, reg = "3", addr = 44, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_44" }, dOffset = { { "/", 100 } } }, --加载压力_Mpa
{ ID = 2, reg = "3", addr = 45, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_45" }, dOffset = { { "/", 1 } } }, --油滤使用时间_小时
{ ID = 2, reg = "3", addr = 46, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_46" }, dOffset = { { "/", 1 } } }, --空滤使用时间_小时
{ ID = 2, reg = "3", addr = 47, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_47" }, dOffset = { { "/", 1 } } }, --油分器使用时间_小时
{ ID = 2, reg = "3", addr = 48, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_48" }, dOffset = { { "/", 1 } } }, --润滑油使用时间_小时
{ ID = 2, reg = "3", addr = 49, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_49" }, dOffset = { { "/", 1 } } }, --润滑脂使用时间_小时
{ ID = 2, reg = "3", addr = 50, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_50" }, dOffset = { { "/", 1 } } }, --润滑脂使用时间_小时
{ ID = 2, reg = "3", addr = 51, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_51" }, dOffset = { { "/", 10 } } }, --电机轴承温度_℃
{ ID = 2, reg = "3", addr = 52, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_52" }, dOffset = { { "/", 10 } } }, --注油压力_Mpa
{ ID = 2, reg = "3", addr = 53, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_53" }, dOffset = { { "/", 10 } } }, --油分后压力_Mpa
{ ID = 2, reg = "3", addr = 54, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_54" }, dOffset = { { "/", 10 } } }, --主机前振动_mm/s
{ ID = 2, reg = "3", addr = 55, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_55" }, dOffset = { { "/", 10 } } }, --主机后振动_mm/s
{ ID = 2, reg = "3", addr = 56, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_56" }, dOffset = { { "/", 10 } } }, --电机前振动_mm/s
{ ID = 2, reg = "3", addr = 57, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_57" }, dOffset = { { "/", 10 } } }, --电机后振动_mm/s
{ ID = 2, reg = "3", addr = 58, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_58" }, dOffset = { { "/", 10 } } }, --进气压差_KPA
{ ID = 2, reg = "3", addr = 59, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_59" }, dOffset = { { "/", 10 } } }, --冷却器前端温度_℃
{ ID = 2, reg = "3", addr = 60, dtype = "short", pMode = { 1, 3 }, dStyle = { "L2_3_60" }, dOffset = { { "/", 10 } } }, --冷却器后端温度_℃
{ ID = 2, reg = "3", addr = 62, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L2_3_62" }, dOffset = { { "/", 1 } } }, --累计电量_Kwh
{ ID = 2, reg = "3", addr = 38, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L2_3_38_H" }, dOffset = { { "/", 1 } } }, --机组运行时间H_小时;采集到的值 后转到 1从站,3功能码,1寄存器地址中
{ ID = 2, reg = "3", addr = 39, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L2_3_38_L" }, dOffset = { { "/", 1 } } }, --机组运行时间L_小时;采集到的值 后转到 1从站,3功能码,0寄存器地址中
{ ID = 2, reg = "3", addr = 40, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L2_3_39_H" }, dOffset = { { "/", 1 } } }, --机组加载时间H_小时;采集到的值 后转到 1从站,3功能码,3寄存器地址中
{ ID = 2, reg = "3", addr = 41, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L2_3_39_L" }, dOffset = { { "/", 1 } } }, --机组加载时间L_小时;采集到的值 后转到 1从站,3功能码,2寄存器地址中
{ ID = 2, reg = "6", addr = 30, dtype = "ushort", pMode = { 0, 0 }, dStyle = { "L2_6_30" }, dOffset = { { "/", 1 } } }, --控制地址;modbus server 1从站,6功能码,0寄存器,收到值为1时实际给 L2_6_30 下发控制值为 1;modbus server 1从站,6功能码,0寄存器,收到值为2时实际给 L2_6_30 下发控制值为 2
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L2_3_25_0" } }, --主电机冷却(独立)风机过载
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L2_3_25_1" } }, --空滤保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L2_3_25_2" } }, --油滤保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 3, pMode = { 1, 10 }, dStyle = { "L2_3_25_3" } }, --油滤压差故障
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 4, pMode = { 1, 10 }, dStyle = { "L2_3_25_4" } }, --冷却水断流/水压低
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 5, pMode = { 1, 10 }, dStyle = { "L2_3_25_5" } }, --空滤压差故障
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 6, pMode = { 1, 10 }, dStyle = { "L2_3_25_6" } }, --主电机变频器故障/主电机过载
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 7, pMode = { 1, 10 }, dStyle = { "L2_3_25_7" } }, --急停按钮按下
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L2_3_25_8" } }, --主电机PTC温度开关保护
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 9, pMode = { 1, 10 }, dStyle = { "L2_3_25_9" } }, --电源相序错误/欠压/过压保护
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 10, pMode = { 1, 10 }, dStyle = { "L2_3_25_10" } }, --油分器保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 11, pMode = { 1, 10 }, dStyle = { "L2_3_25_11" } }, --润滑油更换/保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 12, pMode = { 1, 10 }, dStyle = { "L2_3_25_12" } }, --润滑脂更换/保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 13, pMode = { 1, 10 }, dStyle = { "L2_3_25_13" } }, --整机保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 14, pMode = { 1, 10 }, dStyle = { "L2_3_25_14" } }, --排气压力预警
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 15, pMode = { 1, 10 }, dStyle = { "L2_3_25_15" } }, --排气压力过高报警停机
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L2_3_26_0" } }, --排气温度高预警
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L2_3_26_1" } }, --排气温度高报警停机
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L2_3_26_2" } }, --电柜排风扇过载
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 3, pMode = { 1, 10 }, dStyle = { "L2_3_26_3" } }, --冷却风机变频器故障/冷却水流缺水
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L2_3_28_8" } }, --主机变频器启动输出
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 12, pMode = { 1, 10 }, dStyle = { "L2_3_28_12" } }, --系统运行
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 13, pMode = { 1, 10 }, dStyle = { "L2_3_28_13" } }, --系统故障
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 14, pMode = { 1, 10 }, dStyle = { "L2_3_28_14" } }, --主机冷却(独立)风机运行输出
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 15, pMode = { 1, 10 }, dStyle = { "L2_3_28_15" } }, --加载阀输出
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L2_3_29_8" } }, --主机变频器运行反馈
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 9, pMode = { 1, 10 }, dStyle = { "L2_3_29_9" } }, --主机变频器故障
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 10, pMode = { 1, 10 }, dStyle = { "L2_3_29_10" } }, --冷却风机运行
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 11, pMode = { 1, 10 }, dStyle = { "L2_3_29_11" } }, --冷却变频器故障
{ ID = 2, reg = "3", addr = 30, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L2_3_30_0" } }, --开机_控制位
{ ID = 2, reg = "3", addr = 30, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L2_3_30_1" } }, --停机_控制位
{ ID = 2, reg = "3", addr = 30, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L2_3_30_2" } }, --故障复位_控制位
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L2_3_25_0" } }, --主电机冷却(独立)风机过载
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L2_3_25_1" } }, --空滤保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L2_3_25_2" } }, --油滤保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 3, pMode = { 2, 0 }, dStyle = { "L2_3_25_3" } }, --油滤压差故障
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 4, pMode = { 2, 0 }, dStyle = { "L2_3_25_4" } }, --冷却水断流/水压低
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 5, pMode = { 2, 0 }, dStyle = { "L2_3_25_5" } }, --空滤压差故障
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 6, pMode = { 2, 0 }, dStyle = { "L2_3_25_6" } }, --主电机变频器故障/主电机过载
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 7, pMode = { 2, 0 }, dStyle = { "L2_3_25_7" } }, --急停按钮按下
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L2_3_25_8" } }, --主电机PTC温度开关保护
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 9, pMode = { 2, 0 }, dStyle = { "L2_3_25_9" } }, --电源相序错误/欠压/过压保护
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 10, pMode = { 2, 0 }, dStyle = { "L2_3_25_10" } }, --油分器保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 11, pMode = { 2, 0 }, dStyle = { "L2_3_25_11" } }, --润滑油更换/保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 12, pMode = { 2, 0 }, dStyle = { "L2_3_25_12" } }, --润滑脂更换/保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 13, pMode = { 2, 0 }, dStyle = { "L2_3_25_13" } }, --整机保养时间到
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 14, pMode = { 2, 0 }, dStyle = { "L2_3_25_14" } }, --排气压力预警
{ ID = 2, reg = "3", addr = 25, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L2_3_25_15" } }, --排气压力过高报警停机
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L2_3_26_0" } }, --排气温度高预警
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L2_3_26_1" } }, --排气温度高报警停机
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L2_3_26_2" } }, --电柜排风扇过载
{ ID = 2, reg = "3", addr = 26, dtype = "bit", dBit = 3, pMode = { 2, 0 }, dStyle = { "L2_3_26_3" } }, --冷却风机变频器故障/冷却水流缺水
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L2_3_28_8" } }, --主机变频器启动输出
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 12, pMode = { 2, 0 }, dStyle = { "L2_3_28_12" } }, --系统运行
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 13, pMode = { 2, 0 }, dStyle = { "L2_3_28_13" } }, --系统故障
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 14, pMode = { 2, 0 }, dStyle = { "L2_3_28_14" } }, --主机冷却(独立)风机运行输出
{ ID = 2, reg = "3", addr = 28, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L2_3_28_15" } }, --加载阀输出
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L2_3_29_8" } }, --主机变频器运行反馈
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 9, pMode = { 2, 0 }, dStyle = { "L2_3_29_9" } }, --主机变频器故障
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 10, pMode = { 2, 0 }, dStyle = { "L2_3_29_10" } }, --冷却风机运行
{ ID = 2, reg = "3", addr = 29, dtype = "bit", dBit = 11, pMode = { 2, 0 }, dStyle = { "L2_3_29_11" } }, --冷却变频器故障
{ ID = 2, reg = "3", addr = 30, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L2_3_30_0" } }, --开机_控制位
{ ID = 2, reg = "3", addr = 30, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L2_3_30_1" } }, --停机_控制位
{ ID = 2, reg = "3", addr = 30, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L2_3_30_2" } }, --故障复位_控制位
{ ID = 3, reg = "3", addr = 0, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_0" }, dOffset = { { "/", 100 } } }, --机组排气压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,13寄存器地址中
{ ID = 3, reg = "3", addr = 1, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_1" }, dOffset = { { "/", 10 } } }, --排气温度_℃;采集到的值 后转到 1从站,3功能码,11寄存器地址中给
{ ID = 3, reg = "3", addr = 2, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_2" }, dOffset = { { "/", 100 } } }, --油气桶压力_Mpa;采集到的值*145.04 后转到 1从站,3功能码,14寄存器地址中
{ ID = 3, reg = "3", addr = 3, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_3" }, dOffset = { { "/", 10 } } }, --油分后温度_℃;采集到的值 后转到 1从站,3功能码,12寄存器地址中
{ ID = 3, reg = "3", addr = 4, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_4" }, dOffset = { { "/", 10 } } }, --A相绕组温度_℃;采集到的值 后转到 1从站,3功能码,15寄存器地址中
{ ID = 3, reg = "3", addr = 5, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_5" }, dOffset = { { "/", 10 } } }, --B相绕组温度_℃;采集到的值 后转到 1从站,3功能码,16寄存器地址中
{ ID = 3, reg = "3", addr = 6, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_6" }, dOffset = { { "/", 10 } } }, --C相绕组温度_℃;采集到的值 后转到 1从站,3功能码,19寄存器地址中
{ ID = 3, reg = "3", addr = 7, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_7" }, dOffset = { { "/", 10 } } }, --进线电压_V;采集到的值 后转到 1从站,3功能码,7寄存器地址中
{ ID = 3, reg = "3", addr = 8, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_8" }, dOffset = { { "/", 10 } } }, --进线电流_A;采集到的值 后转到 1从站,3功能码,8寄存器地址中
{ ID = 3, reg = "3", addr = 9, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_9" }, dOffset = { { "/", 100 } } }, --主机变频器运行频率_HZ
{ ID = 3, reg = "3", addr = 10, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_10" }, dOffset = { { "/", 100 } } }, --主机变频器给定频率_HZ
{ ID = 3, reg = "3", addr = 11, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_11" }, dOffset = { { "/", 10 } } }, --主机变频器母线电压_V
{ ID = 3, reg = "3", addr = 12, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_12" }, dOffset = { { "/", 1 } } }, --主机变频器输出电压_V
{ ID = 3, reg = "3", addr = 13, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_13" }, dOffset = { { "/", 10 } } }, --主机变频器运行电流_A
{ ID = 3, reg = "3", addr = 14, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_14" }, dOffset = { { "/", 1 } } }, --主机变频器运行转速_rpm
{ ID = 3, reg = "3", addr = 15, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_15" }, dOffset = { { "/", 1000 } } }, --主机变频器输出功率_KW
{ ID = 3, reg = "3", addr = 17, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_17" }, dOffset = { { "/", 100 } } }, --风机变频器输出频率_HZ
{ ID = 3, reg = "3", addr = 20, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_20" }, dOffset = { { "/", 1 } } }, --风机变频器输出电压_V
{ ID = 3, reg = "3", addr = 21, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_21" }, dOffset = { { "/", 10 } } }, --风机变频器输出电流_A
{ ID = 3, reg = "3", addr = 22, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_22" }, dOffset = { { "/", 1 } } }, --风机变频器运行转速_Rpm
{ ID = 3, reg = "3", addr = 23, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_23" }, dOffset = { { "/", 1000 } } }, --风机变频器输出功率_KW
{ ID = 3, reg = "3", addr = 38, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L3_3_38" }, dOffset = { { "/", 1 } } }, --机组运行时间_小时
{ ID = 3, reg = "3", addr = 40, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L3_3_40" }, dOffset = { { "/", 1 } } }, --机组加载时间_小时
{ ID = 3, reg = "3", addr = 42, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_42" }, dOffset = { { "/", 100 } } }, --恒定压力_Mpa
{ ID = 3, reg = "3", addr = 43, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_43" }, dOffset = { { "/", 100 } } }, --卸载压力_Mpa
{ ID = 3, reg = "3", addr = 44, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_44" }, dOffset = { { "/", 100 } } }, --加载压力_Mpa
{ ID = 3, reg = "3", addr = 45, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_45" }, dOffset = { { "/", 1 } } }, --油滤使用时间_小时
{ ID = 3, reg = "3", addr = 46, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_46" }, dOffset = { { "/", 1 } } }, --空滤使用时间_小时
{ ID = 3, reg = "3", addr = 47, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_47" }, dOffset = { { "/", 1 } } }, --油分器使用时间_小时
{ ID = 3, reg = "3", addr = 48, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_48" }, dOffset = { { "/", 1 } } }, --润滑油使用时间_小时
{ ID = 3, reg = "3", addr = 49, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_49" }, dOffset = { { "/", 1 } } }, --润滑脂使用时间_小时
{ ID = 3, reg = "3", addr = 50, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_50" }, dOffset = { { "/", 1 } } }, --润滑脂使用时间_小时
{ ID = 3, reg = "3", addr = 51, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_51" }, dOffset = { { "/", 10 } } }, --电机轴承温度_℃
{ ID = 3, reg = "3", addr = 52, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_52" }, dOffset = { { "/", 10 } } }, --注油压力_Mpa
{ ID = 3, reg = "3", addr = 53, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_53" }, dOffset = { { "/", 10 } } }, --油分后压力_Mpa
{ ID = 3, reg = "3", addr = 54, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_54" }, dOffset = { { "/", 10 } } }, --主机前振动_mm/s
{ ID = 3, reg = "3", addr = 55, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_55" }, dOffset = { { "/", 10 } } }, --主机后振动_mm/s
{ ID = 3, reg = "3", addr = 56, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_56" }, dOffset = { { "/", 10 } } }, --电机前振动_mm/s
{ ID = 3, reg = "3", addr = 57, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_57" }, dOffset = { { "/", 10 } } }, --电机后振动_mm/s
{ ID = 3, reg = "3", addr = 58, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_58" }, dOffset = { { "/", 10 } } }, --进气压差_KPA
{ ID = 3, reg = "3", addr = 59, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_59" }, dOffset = { { "/", 10 } } }, --冷却器前端温度_℃
{ ID = 3, reg = "3", addr = 60, dtype = "short", pMode = { 1, 3 }, dStyle = { "L3_3_60" }, dOffset = { { "/", 10 } } }, --冷却器后端温度_℃
{ ID = 3, reg = "3", addr = 62, dtype = "uint", format = "ABCD", pMode = { 1, 3 }, dStyle = { "L3_3_62" }, dOffset = { { "/", 1 } } }, --累计电量_Kwh
{ ID = 3, reg = "3", addr = 38, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L3_3_38_H" }, dOffset = { { "/", 1 } } }, --机组运行时间H_小时;采集到的值 后转到 1从站,3功能码,1寄存器地址中
{ ID = 3, reg = "3", addr = 39, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L3_3_38_L" }, dOffset = { { "/", 1 } } }, --机组运行时间L_小时;采集到的值 后转到 1从站,3功能码,0寄存器地址中
{ ID = 3, reg = "3", addr = 40, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L3_3_39_H" }, dOffset = { { "/", 1 } } }, --机组加载时间H_小时;采集到的值 后转到 1从站,3功能码,3寄存器地址中
{ ID = 3, reg = "3", addr = 41, dtype = "ushort", pMode = { 1, 3 }, dStyle = { "L3_3_39_L" }, dOffset = { { "/", 1 } } }, --机组加载时间L_小时;采集到的值 后转到 1从站,3功能码,2寄存器地址中
{ ID = 3, reg = "6", addr = 30, dtype = "ushort", pMode = { 0, 0 }, dStyle = { "L3_6_30" }, dOffset = { { "/", 1 } } }, --控制地址;modbus server 1从站,6功能码,0寄存器,收到值为1时实际给 L3_6_30 下发控制值为 1;modbus server 1从站,6功能码,0寄存器,收到值为2时实际给 L3_6_30 下发控制值为 2
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L3_3_25_0" } }, --主电机冷却(独立)风机过载
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L3_3_25_1" } }, --空滤保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L3_3_25_2" } }, --油滤保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 3, pMode = { 1, 10 }, dStyle = { "L3_3_25_3" } }, --油滤压差故障
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 4, pMode = { 1, 10 }, dStyle = { "L3_3_25_4" } }, --冷却水断流/水压低
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 5, pMode = { 1, 10 }, dStyle = { "L3_3_25_5" } }, --空滤压差故障
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 6, pMode = { 1, 10 }, dStyle = { "L3_3_25_6" } }, --主电机变频器故障/主电机过载
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 7, pMode = { 1, 10 }, dStyle = { "L3_3_25_7" } }, --急停按钮按下
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L3_3_25_8" } }, --主电机PTC温度开关保护
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 9, pMode = { 1, 10 }, dStyle = { "L3_3_25_9" } }, --电源相序错误/欠压/过压保护
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 10, pMode = { 1, 10 }, dStyle = { "L3_3_25_10" } }, --油分器保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 11, pMode = { 1, 10 }, dStyle = { "L3_3_25_11" } }, --润滑油更换/保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 12, pMode = { 1, 10 }, dStyle = { "L3_3_25_12" } }, --润滑脂更换/保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 13, pMode = { 1, 10 }, dStyle = { "L3_3_25_13" } }, --整机保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 14, pMode = { 1, 10 }, dStyle = { "L3_3_25_14" } }, --排气压力预警
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 15, pMode = { 1, 10 }, dStyle = { "L3_3_25_15" } }, --排气压力过高报警停机
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L3_3_26_0" } }, --排气温度高预警
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L3_3_26_1" } }, --排气温度高报警停机
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L3_3_26_2" } }, --电柜排风扇过载
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 3, pMode = { 1, 10 }, dStyle = { "L3_3_26_3" } }, --冷却风机变频器故障/冷却水流缺水
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L3_3_28_8" } }, --主机变频器启动输出
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 12, pMode = { 1, 10 }, dStyle = { "L3_3_28_12" } }, --系统运行
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 13, pMode = { 1, 10 }, dStyle = { "L3_3_28_13" } }, --系统故障
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 14, pMode = { 1, 10 }, dStyle = { "L3_3_28_14" } }, --主机冷却(独立)风机运行输出
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 15, pMode = { 1, 10 }, dStyle = { "L3_3_28_15" } }, --加载阀输出
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 8, pMode = { 1, 10 }, dStyle = { "L3_3_29_8" } }, --主机变频器运行反馈
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 9, pMode = { 1, 10 }, dStyle = { "L3_3_29_9" } }, --主机变频器故障
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 10, pMode = { 1, 10 }, dStyle = { "L3_3_29_10" } }, --冷却风机运行
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 11, pMode = { 1, 10 }, dStyle = { "L3_3_29_11" } }, --冷却变频器故障
{ ID = 3, reg = "3", addr = 30, dtype = "bit", dBit = 0, pMode = { 1, 10 }, dStyle = { "L3_3_30_0" } }, --开机_控制位
{ ID = 3, reg = "3", addr = 30, dtype = "bit", dBit = 1, pMode = { 1, 10 }, dStyle = { "L3_3_30_1" } }, --停机_控制位
{ ID = 3, reg = "3", addr = 30, dtype = "bit", dBit = 2, pMode = { 1, 10 }, dStyle = { "L3_3_30_2" } }, --故障复位_控制位
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L3_3_25_0" } }, --主电机冷却(独立)风机过载
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L3_3_25_1" } }, --空滤保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L3_3_25_2" } }, --油滤保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 3, pMode = { 2, 0 }, dStyle = { "L3_3_25_3" } }, --油滤压差故障
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 4, pMode = { 2, 0 }, dStyle = { "L3_3_25_4" } }, --冷却水断流/水压低
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 5, pMode = { 2, 0 }, dStyle = { "L3_3_25_5" } }, --空滤压差故障
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 6, pMode = { 2, 0 }, dStyle = { "L3_3_25_6" } }, --主电机变频器故障/主电机过载
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 7, pMode = { 2, 0 }, dStyle = { "L3_3_25_7" } }, --急停按钮按下
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L3_3_25_8" } }, --主电机PTC温度开关保护
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 9, pMode = { 2, 0 }, dStyle = { "L3_3_25_9" } }, --电源相序错误/欠压/过压保护
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 10, pMode = { 2, 0 }, dStyle = { "L3_3_25_10" } }, --油分器保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 11, pMode = { 2, 0 }, dStyle = { "L3_3_25_11" } }, --润滑油更换/保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 12, pMode = { 2, 0 }, dStyle = { "L3_3_25_12" } }, --润滑脂更换/保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 13, pMode = { 2, 0 }, dStyle = { "L3_3_25_13" } }, --整机保养时间到
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 14, pMode = { 2, 0 }, dStyle = { "L3_3_25_14" } }, --排气压力预警
{ ID = 3, reg = "3", addr = 25, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L3_3_25_15" } }, --排气压力过高报警停机
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L3_3_26_0" } }, --排气温度高预警
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L3_3_26_1" } }, --排气温度高报警停机
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L3_3_26_2" } }, --电柜排风扇过载
{ ID = 3, reg = "3", addr = 26, dtype = "bit", dBit = 3, pMode = { 2, 0 }, dStyle = { "L3_3_26_3" } }, --冷却风机变频器故障/冷却水流缺水
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L3_3_28_8" } }, --主机变频器启动输出
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 12, pMode = { 2, 0 }, dStyle = { "L3_3_28_12" } }, --系统运行
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 13, pMode = { 2, 0 }, dStyle = { "L3_3_28_13" } }, --系统故障
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 14, pMode = { 2, 0 }, dStyle = { "L3_3_28_14" } }, --主机冷却(独立)风机运行输出
{ ID = 3, reg = "3", addr = 28, dtype = "bit", dBit = 15, pMode = { 2, 0 }, dStyle = { "L3_3_28_15" } }, --加载阀输出
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 8, pMode = { 2, 0 }, dStyle = { "L3_3_29_8" } }, --主机变频器运行反馈
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 9, pMode = { 2, 0 }, dStyle = { "L3_3_29_9" } }, --主机变频器故障
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 10, pMode = { 2, 0 }, dStyle = { "L3_3_29_10" } }, --冷却风机运行
{ ID = 3, reg = "3", addr = 29, dtype = "bit", dBit = 11, pMode = { 2, 0 }, dStyle = { "L3_3_29_11" } }, --冷却变频器故障
{ ID = 3, reg = "3", addr = 30, dtype = "bit", dBit = 0, pMode = { 2, 0 }, dStyle = { "L3_3_30_0" } }, --开机_控制位
{ ID = 3, reg = "3", addr = 30, dtype = "bit", dBit = 1, pMode = { 2, 0 }, dStyle = { "L3_3_30_1" } }, --停机_控制位
{ ID = 3, reg = "3", addr = 30, dtype = "bit", dBit = 2, pMode = { 2, 0 }, dStyle = { "L3_3_30_2" } }, --故障复位_控制位
},
},
},
}
文档更新时间: 2025-12-01 16:05 作者:CGL