From 996cbac88c7b6bcd178d9181005bc913881468b4 Mon Sep 17 00:00:00 2001 From: lixiaoyuan Date: Fri, 19 Sep 2025 18:54:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9MQTT=E9=80=9A=E8=AE=AF?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=A7=A3=E6=9E=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/EMU对外通信点表最终修改1版_v9.xlsx | Bin 269693 -> 269159 bytes bin/Release/assets/config/app.json | 33 +- .../config/{regaddrs.py => pyregaddrs.py} | 44 +- bin/Release/assets/config/regaddrs.bak.json | 890 +++++++++ bin/Release/assets/config/regaddrs.json | 1639 +++++++++-------- bin/Release/assets/config/regaddrsShow.json | 66 +- src/app/Application.cpp | 52 +- src/app/Config.cpp | 82 +- src/app/Config.h | 43 +- src/app/DataStruct.cpp | 12 +- src/app/DataStruct.h | 46 +- src/app/Device.cpp | 167 +- src/app/Device.h | 9 + src/app/Policy.cpp | 25 +- src/app/Station.cpp | 304 +-- src/app/Station.h | 57 +- src/common/Spdlogger.cpp | 8 +- src/database/Dao.cpp | 13 +- src/database/Dao.h | 2 +- src/database/DaoEntity.cpp | 15 +- src/database/DaoEntity.h | 4 +- src/database/DataModelDef.h | 2 +- src/main.cpp | 5 +- src/protocol/HttpEntity.cpp | 230 ++- src/protocol/HttpEntity.h | 2 + src/protocol/MqttEntity.cpp | 389 ++-- src/protocol/MqttEntity.h | 19 +- 27 files changed, 2743 insertions(+), 1415 deletions(-) rename bin/Release/assets/config/{regaddrs.py => pyregaddrs.py} (59%) create mode 100644 bin/Release/assets/config/regaddrs.bak.json diff --git a/bin/Release/assets/config/EMU对外通信点表最终修改1版_v9.xlsx b/bin/Release/assets/config/EMU对外通信点表最终修改1版_v9.xlsx index 8ab243ce51b1f88b39b92d998755acf0ab4c24f2..5588ee92685dc2bf0953289fae3c0ad9967cb2cc 100644 GIT binary patch literal 269159 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 diff --git a/bin/Release/assets/config/app.json b/bin/Release/assets/config/app.json index 97f616b..3540810 100644 --- a/bin/Release/assets/config/app.json +++ b/bin/Release/assets/config/app.json @@ -1,8 +1,35 @@ { + "debug":0, "launchdate": "2025-09-01", + "weburl": "http://127.0.0.1:19601/", "database": {"host": "localhost", "port": 3306, "user": "root", "passwd": "123456", "dbname": "ess"}, - "token":"", - "http": {"port": 19801}, + + "http": {"token":0, "port": 19801, "encryption":0, "encryptKey":""}, "mqtt": {"host":"mqtt://43.136.119.46:6203","username":"jsyhsec","password":"123456"}, - "weburl": "http://127.0.0.1:19601/" + "topic": { + "EMS_YX": {"deviceType":101, "polling":0, "enabled": 1}, + "EMS_YC": {"deviceType":101, "polling":0, "enabled": 1}, + "EMS_YT": {"deviceType":101, "polling":0, "enabled": 1}, + "PCS_YX": {"deviceType":102, "polling":1, "enabled": 1}, + "PCS_YC": {"deviceType":102, "polling":1, "enabled": 1}, + "PCU_YX": {"deviceType":103, "polling":0, "enabled": 1}, + "PCU_YC": {"deviceType":103, "polling":0, "enabled": 1}, + "BMS_YX": {"deviceType":104, "polling":0, "enabled": 1}, + "BMS_YC": {"deviceType":104, "polling":0, "enabled": 1}, + "BCU_YC": {"deviceType":105, "polling":1, "enabled": 1}, + "BCU_YX": {"deviceType":105, "polling":1, "enabled": 1}, + "MEM_YC": {"deviceType":3, "polling":0, "enabled": 1}, + "TH_YC": {"deviceType":10, "polling":1, "enabled": 1}, + "Fire40_YX": {"deviceType":7, "polling":1, "enabled": 1}, + "Cooling_YC": {"deviceType":14, "polling":1, "enabled": 1}, + "Cooling_YX": {"deviceType":14, "polling":1, "enabled": 1}, + "Gateway_YX": {"deviceType":15, "polling":1, "enabled": 1}, + "Gateway_YC": {"deviceType":15, "polling":1, "enabled": 1}, + "Charger_YC": {"deviceType":106, "polling":0, "enabled": 1} + }, + "view": {"latitude":0,"longitude":0,"altitude":0}, + "video": { + "1":{"host":"", "port":9000, "user":"", "passwd":""} + }, + "statistics": {"enabled": 1, "interval": 30} } \ No newline at end of file diff --git a/bin/Release/assets/config/regaddrs.py b/bin/Release/assets/config/pyregaddrs.py similarity index 59% rename from bin/Release/assets/config/regaddrs.py rename to bin/Release/assets/config/pyregaddrs.py index 7c46c92..92fe6ca 100644 --- a/bin/Release/assets/config/regaddrs.py +++ b/bin/Release/assets/config/pyregaddrs.py @@ -10,21 +10,21 @@ def read_sheet(wb, topic, sht_name): sheet = wb[sht_name] text = "" - for i in range(1, sheet.max_row): + for i in range(2, sheet.max_row+1): # print(str(sheet.cell(i, 1).value)) addr = read_cell(sheet, i, 8) name = read_cell(sheet,i, 2) datatype = read_cell(sheet,i, 4) unit = read_cell(sheet, i, 5) + is_alert = (read_cell(sheet, i, 7) == "告警") remark = read_cell(sheet, i, 6) - remark = name + remark - if (len(addr) == 6): + if (len(addr) <= 6 and len(addr) >=2 and addr != "寄存器地址"): if (len(unit)>0): remark += '(' + unit + ')' if (len(text)>0): text += ',\n' - text += '\t\t\t{"key": "%s", "datatype": "%s", "remark": "%s"}' % (addr, datatype, remark.replace("\n", "")) + text += '\t\t\t{"key": "%s", "datatype": "%s", "alert": %d, "name":"%s", "remark": "%s"}' % (addr, datatype, is_alert, name, remark.replace("\n", "")) if (len(text)>0): @@ -53,37 +53,9 @@ text += ',\n' + read_sheet(wb, "TH_YC", "温湿度状态遥测") text += ',\n' + read_sheet(wb, "Fire40_YX", "消防4.0遥信") text += ',\n' + read_sheet(wb, "Cooling_YC", "冷机遥测") text += ',\n' + read_sheet(wb, "Cooling_YX", "冷机遥信") +text += ',\n' + read_sheet(wb, "Gateway_YC", "网关遥测") +text += ',\n' + read_sheet(wb, "Gateway_YX", "网关遥信") +text += ',\n' + read_sheet(wb, "Charger_YC", "充电桩遥测") with open('regaddrs.json', 'w', encoding='utf-8') as f: - f.write("{\n" + text + "\n}") - - -def read_sheet_alarm(wb, device_type, sht_name): - sheet = wb[sht_name] - text = "" - for i in range(1, sheet.max_row): - addr = read_cell(sheet, i, 8) - is_alarm = (read_cell(sheet, i, 7) == "告警") - - if (len(addr) == 6 and is_alarm) : - name = read_cell(sheet,i, 2) - datatype = read_cell(sheet,i, 4) - unit = read_cell(sheet, i, 5) - remark = read_cell(sheet, i, 6) - remark = name + remark - - if (len(unit)>0): - remark += '(' + unit + ')' - if (len(text)>0): - text += ',\n' - text += '\t\t\t{"key": "%s", "datatype": "%s", "remark": "%s"}' % (addr, datatype, remark.replace("\n", "")) - if (len(text)>0): - text = "\n" + text + "\n\t\t" - text = '\t"%s":{\n\t\t"addr":[%s]\n\t}' % (device_type, text) - return text; - -text_err = "" -text_err = read_sheet_alarm(wb, 103, "PCU遥信") -text_err += ',\n' + read_sheet_alarm(wb, 104, "PCS遥信") -with open('regddrsErr.json', 'w', encoding='utf-8') as f: - f.write("{\n" + text_err + "\n}") + f.write("{\n" + text + "\n}") \ No newline at end of file diff --git a/bin/Release/assets/config/regaddrs.bak.json b/bin/Release/assets/config/regaddrs.bak.json new file mode 100644 index 0000000..2f7ce5a --- /dev/null +++ b/bin/Release/assets/config/regaddrs.bak.json @@ -0,0 +1,890 @@ +{ + "EMS_YT":{ + "addr":[ + {"key": "0x0001", "datatype": "uint16", "remark": "EMS工作模式0:无效1:本地控制模式, EMS不接受平台调控2:平台控制模式, EMS接收平台调控指令(-)"}, + {"key": "0x0002", "datatype": "int16", "remark": "有功功率并网恒功率模式下交流侧功率值:<0: 充电功率0: 静置>0: 放电功率(kW)"}, + {"key": "0x0003", "datatype": "uint16", "remark": "PCS开关机0: 关机1: 开机(-)"}, + {"key": "0x0004", "datatype": "uint16", "remark": "主控对象储能遥控对象:0:无效1:华云2:轻舟"}, + {"key": "0x0005", "datatype": "int16", "remark": "A相有功功率(1kW)"}, + {"key": "0x0006", "datatype": "int16", "remark": "B相有功功率(1kW)"}, + {"key": "0x0007", "datatype": "int16", "remark": "C相有功功率(1kW)"}, + {"key": "0x0008", "datatype": "int16", "remark": "三相总有功功率(1kW)"}, + {"key": "0x0009", "datatype": "int16", "remark": "A相无功功率(1kVar)"}, + {"key": "0x000A", "datatype": "int16", "remark": "B相无功功率(1kVar)"}, + {"key": "0x000B", "datatype": "int16", "remark": "C相无功功率(1kVar)"}, + {"key": "0x000C", "datatype": "int16", "remark": "三相总无功功率(1kVar)"}, + {"key": "0x000D", "datatype": "int16", "remark": "A相电流(0.01A)"}, + {"key": "0x000E", "datatype": "int16", "remark": "B相电流(0.01A)"}, + {"key": "0x000F", "datatype": "int16", "remark": "C相电流(0.01A)"}, + {"key": "0x0010", "datatype": "uint16", "remark": "A相电压(1V)"}, + {"key": "0x0011", "datatype": "uint16", "remark": "B相电压(1V)"}, + {"key": "0x0012", "datatype": "uint16", "remark": "C相电压(1V)"}, + {"key": "0x0013", "datatype": "int16", "remark": "A相交流功率因数(0.01)"}, + {"key": "0x0014", "datatype": "int16", "remark": "B相交流功率因数(0.01)"}, + {"key": "0x0015", "datatype": "int16", "remark": "C相交流功率因数(0.01)"}, + {"key": "0x0016", "datatype": "int16", "remark": "A相视在功率(1kVA)"}, + {"key": "0x0017", "datatype": "int16", "remark": "B相视在功率(1kVA)"}, + {"key": "0x0018", "datatype": "int16", "remark": "C相视在功率(1kVA)"}, + {"key": "0x0019", "datatype": "int16", "remark": "正向总有功总需量(1kW)"}, + {"key": "0x001A", "datatype": "int16", "remark": "数据有效性0无效 1有效"}, + {"key": "0x001B", "datatype": "uint16", "remark": "EMS工作模式0:无效1:本地控制模式, EMS不接受平台调控2:平台控制模式, EMS接收平台调控指令(-)"}, + {"key": "0x001C", "datatype": "uint16", "remark": "有功功率并网恒功率模式下交流侧功率值:功率绝对值 没有正负(kW)"}, + {"key": "0x001D", "datatype": "uint16", "remark": "充放电类型0: 关机1: 充电2:放电3:待机(-)"}, + {"key": "0x001E", "datatype": "uint16", "remark": "最大SOC"}, + {"key": "0x001F", "datatype": "uint16", "remark": "最小SOC"}, + {"key": "0x0020", "datatype": "uint16", "remark": "自动并离网0:手动1:自动"}, + {"key": "0x0021", "datatype": "uint16", "remark": "并网离网0:并网1:离网"} + ] + }, + "EMS_YX":{ + "addr":[ + {"key": "0x2001", "datatype": "uint16", "remark": "BMS(电池堆)通信状态0:正常1:故障"}, + {"key": "0x2002", "datatype": "uint64", "remark": "BCU(电池簇)通信状态0:正常1:故障"}, + {"key": "0x2006", "datatype": "uint16", "remark": "PCU(主控)通信状态0:正常1:故障"}, + {"key": "0x2007", "datatype": "uint64", "remark": "PCS(模块)通信状态0:正常1:故障"}, + {"key": "0x200B", "datatype": "uint16", "remark": "电表总接点通信状态0:正常1:故障"}, + {"key": "0x200C", "datatype": "uint32", "remark": "电表通信状态0:正常1:故障"}, + {"key": "0x200E", "datatype": "uint16", "remark": "消防通信状态0:正常1:故障"}, + {"key": "0x200F", "datatype": "uint16", "remark": "UPS通信状态0:正常1:故障"}, + {"key": "0x2010", "datatype": "uint16", "remark": "温湿度总接点通信状态0:正常1:故障"}, + {"key": "0x2011", "datatype": "uint32", "remark": "温湿度通信状态0:正常1:故障"}, + {"key": "0x2013", "datatype": "uint16", "remark": "空调总接点通信状态0:正常1:故障"}, + {"key": "0x2014", "datatype": "uint32", "remark": "空调通信状态0:正常1:故障"}, + {"key": "0x2016", "datatype": "uint16", "remark": "控制干接点(配电系统)状态0:开路1:闭合"}, + {"key": "0x2017", "datatype": "uint16", "remark": "状态干接点(配电系统)状态0:开路1:闭合"}, + {"key": "0x2018", "datatype": "uint16", "remark": "BCU总通信状态0:正常 1:告警 2:故障"}, + {"key": "0x2019", "datatype": "uint16", "remark": "PCU总通信状态0:正常 1:告警 2:故障"}, + {"key": "0x201A", "datatype": "uint16", "remark": "电表总通信状态0:正常 1:告警 2:故障"}, + {"key": "0x201B", "datatype": "uint16", "remark": "消防总通信状态0:正常 1:告警 2:故障"}, + {"key": "0x201C", "datatype": "uint16", "remark": "UPS总通信状态0:正常 1:告警 2:故障"}, + {"key": "0x201D", "datatype": "uint16", "remark": "温湿度总通信状态0:正常 1:告警 2:故障"}, + {"key": "0x201E", "datatype": "uint16", "remark": "空调总通信状态0:正常 1:告警 2:故障"}, + {"key": "0x201F", "datatype": "uint16", "remark": "EMU通信状态0:正常 1:告警 2:故障"}, + {"key": "0x2020", "datatype": "uint16", "remark": "冷机总通信状态0:正常 1:告警 2:故障"}, + {"key": "0x2021", "datatype": "uint16", "remark": "冷机总接点通信状态0:正常1:故障"}, + {"key": "0x2022", "datatype": "uint16", "remark": "冷机通信状态0:正常1:故障"}, + {"key": "0x207A", "datatype": "uint16", "remark": "判断总表的三相总有功 < -5.0fkW 充电 >5.0fkW放电 否则停机0:充电 1:放电 2:停机"} + ] + }, + "EMS_YC":{ + "addr":[ + {"key": "0x1001", "datatype": "uint16", "remark": "BMS(电池堆)个数1"}, + {"key": "0x1002", "datatype": "uint16", "remark": "BCU通道个数1~2"}, + {"key": "0x1003", "datatype": "uint16", "remark": "BCU(电池簇)个数1~40"}, + {"key": "0x1004", "datatype": "uint16", "remark": "PCU(主控)个数1~4"}, + {"key": "0x1005", "datatype": "uint16", "remark": "PCU通道个数1~4"}, + {"key": "0x1006", "datatype": "uint16", "remark": "PCS(模块)个数1~40"}, + {"key": "0x1007", "datatype": "uint16", "remark": "电表通道个数1"}, + {"key": "0x1008", "datatype": "uint16", "remark": "电表个数1~10"}, + {"key": "0x1009", "datatype": "uint16", "remark": "消防通道个数1~10"}, + {"key": "0x100A", "datatype": "uint16", "remark": "消防个数1~10"}, + {"key": "0x100B", "datatype": "uint16", "remark": "UPS通道个数1~10"}, + {"key": "0x100C", "datatype": "uint16", "remark": "UPS个数1~10"}, + {"key": "0x100D", "datatype": "uint16", "remark": "温湿度通道个数1"}, + {"key": "0x100E", "datatype": "uint16", "remark": "温湿度个数1~10"}, + {"key": "0x100F", "datatype": "uint16", "remark": "空调通道个数1"}, + {"key": "0x1010", "datatype": "uint16", "remark": "空调个数1~10"}, + {"key": "0x1011", "datatype": "uint16", "remark": "控制干接点(配电系统)个数16"}, + {"key": "0x1012", "datatype": "uint16", "remark": "状态干接点(配电系统)个数16"}, + {"key": "0x1072", "datatype": "uint32", "remark": "系统最大可充电功率(1KW)"}, + {"key": "0x1074", "datatype": "uint32", "remark": "系统最大可放电功率(1KW)"}, + {"key": "0x1076", "datatype": "uint32", "remark": "储能母线电压(0.1V)"}, + {"key": "0x1078", "datatype": "int32", "remark": "储能母线电流(0.1A)"}, + {"key": "0x107A", "datatype": "uint16", "remark": "储能系统SOC(0.1)"}, + {"key": "0x107B", "datatype": "uint16", "remark": "储能系统SOH(0.1)"}, + {"key": "0x107C", "datatype": "uint16", "remark": "电流变比"}, + {"key": "0x107D", "datatype": "uint16", "remark": "电压变比"}, + {"key": "0x107E", "datatype": "uint32", "remark": "A相电压(1V)"}, + {"key": "0x1080", "datatype": "uint32", "remark": "B相电压(1V)"}, + {"key": "0x1082", "datatype": "uint32", "remark": "C相电压(1V)"}, + {"key": "0x1084", "datatype": "int32", "remark": "A相电流(1A)"}, + {"key": "0x1086", "datatype": "int32", "remark": "B相电流(1A)"}, + {"key": "0x1088", "datatype": "int32", "remark": "C相电流(1A)"}, + {"key": "0x108A", "datatype": "uint32", "remark": "AB相电压(1V)"}, + {"key": "0x108C", "datatype": "uint32", "remark": "BC相电压(1V)"}, + {"key": "0x108E", "datatype": "uint32", "remark": "CA相电压(1V)"}, + {"key": "0x1090", "datatype": "int32", "remark": "A相有功功率(1kW)"}, + {"key": "0x1092", "datatype": "int32", "remark": "B相有功功率(1kW)"}, + {"key": "0x1094", "datatype": "int32", "remark": "C相有功功率(1kW)"}, + {"key": "0x1096", "datatype": "int32", "remark": "三相总有功功率(1kW)"}, + {"key": "0x1098", "datatype": "int32", "remark": "当前控制功率(0.1kW)"}, + {"key": "0x109A", "datatype": "uint32", "remark": "负荷率(0.01)"}, + {"key": "0x109C", "datatype": "uint32", "remark": "三相不平衡度(0.01)"}, + {"key": "0x109E", "datatype": "uint32", "remark": "功率因素比率(0.01)"}, + {"key": "0x10A0", "datatype": "int32", "remark": "进线开关柜功率(1kW)"}, + {"key": "0x10A2", "datatype": "int32", "remark": "用户关口表功率(1kW)"}, + {"key": "0x1104", "datatype": "int32", "remark": "正向总有功总需量(1kW)"}, + {"key": "0x1106", "datatype": "uint32", "remark": "尖段电价(1RMB)"}, + {"key": "0x1108", "datatype": "uint32", "remark": "峰段电价(1RMB)"}, + {"key": "0x110A", "datatype": "uint32", "remark": "平段电价(1RMB)"}, + {"key": "0x110C", "datatype": "uint32", "remark": "谷段电价(1RMB)"}, + {"key": "0x110E", "datatype": "uint32", "remark": "日充电电量(1kWh)"}, + {"key": "0x1110", "datatype": "uint32", "remark": "日放电电量(1kWh)"}, + {"key": "0x1112", "datatype": "uint32", "remark": "日充电费用(1RMB)"}, + {"key": "0x1114", "datatype": "uint32", "remark": "日放电费用(1RMB)"}, + {"key": "0x1116", "datatype": "int32", "remark": "日收益(1RMB)"}, + {"key": "0x1118", "datatype": "uint32", "remark": "日正向尖有功电能(1kWh)"}, + {"key": "0x111A", "datatype": "uint32", "remark": "日正向峰有功电能(1kWh)"}, + {"key": "0x111C", "datatype": "uint32", "remark": "日正向平有功电能(1kWh)"}, + {"key": "0x111E", "datatype": "uint32", "remark": "日正向谷有功电能(1kWh)"}, + {"key": "0x1120", "datatype": "uint32", "remark": "日正向总有功电能(1kWh)"}, + {"key": "0x1122", "datatype": "uint32", "remark": "日反向尖有功电能(1kWh)"}, + {"key": "0x1124", "datatype": "uint32", "remark": "日反向峰有功电能(1kWh)"}, + {"key": "0x1126", "datatype": "uint32", "remark": "日反向平有功电能(1kWh)"}, + {"key": "0x1128", "datatype": "uint32", "remark": "日反向谷有功电能(1kWh)"}, + {"key": "0x112A", "datatype": "uint32", "remark": "日反向总有功电能(1kWh)"}, + {"key": "0x112C", "datatype": "uint32", "remark": "总充电电量(1kWh)"}, + {"key": "0x112E", "datatype": "uint32", "remark": "总放电电量(1kWh)"}, + {"key": "0x1130", "datatype": "uint32", "remark": "总充电费用(1RMB)"}, + {"key": "0x1132", "datatype": "uint32", "remark": "总放电费用(1RMB)"}, + {"key": "0x1134", "datatype": "int32", "remark": "总收益(1RMB)"}, + {"key": "0x1136", "datatype": "uint32", "remark": "总正向尖有功电能(1kWh)"}, + {"key": "0x1138", "datatype": "uint32", "remark": "总正向峰有功电能(1kWh)"}, + {"key": "0x113A", "datatype": "uint32", "remark": "总正向平有功电能(1kWh)"}, + {"key": "0x113C", "datatype": "uint32", "remark": "总正向谷有功电能(1kWh)"}, + {"key": "0x113E", "datatype": "uint32", "remark": "总正向总有功电能(1kWh)"}, + {"key": "0x1140", "datatype": "uint32", "remark": "总反向尖有功电能(1kWh)"}, + {"key": "0x1142", "datatype": "uint32", "remark": "总反向峰有功电能(1kWh)"}, + {"key": "0x1144", "datatype": "uint32", "remark": "总反向平有功电能(1kWh)"}, + {"key": "0x1146", "datatype": "uint32", "remark": "总反向谷有功电能(1kWh)"}, + {"key": "0x1148", "datatype": "uint32", "remark": "总反向总有功电能(1kWh)"}, + {"key": "0x11AE", "datatype": "int16", "remark": "交流A相电压(1V)"}, + {"key": "0x11AF", "datatype": "int16", "remark": "交流B相电压(1V)"}, + {"key": "0x11B0", "datatype": "int16", "remark": "交流C相电压(1V)"}, + {"key": "0x11B1", "datatype": "int16", "remark": "交流A相频率(1Hz)"}, + {"key": "0x11B2", "datatype": "int16", "remark": "交流B相频率(1Hz)"}, + {"key": "0x11B3", "datatype": "int16", "remark": "交流C相频率(1Hz)"}, + {"key": "0x11B4", "datatype": "int32", "remark": "总直流功率(1kW)"}, + {"key": "0x11B6", "datatype": "uint32", "remark": "总直流电压(0.1V)"}, + {"key": "0x11B8", "datatype": "int32", "remark": "总直流电流(0.1A)"}, + {"key": "0x121B", "datatype": "int16", "remark": "储能系统温度(0.1℃)"}, + {"key": "0x121C", "datatype": "uint16", "remark": "储能充放电时段hh(时)"}, + {"key": "0x121D", "datatype": "uint16", "remark": "储能充放电时段mm(分)"}, + {"key": "0x121E", "datatype": "uint16", "remark": "储能充放电时段ss(秒)"} + ] + }, + "PCU_YC":{ + "addr":[ + {"key": "0x0001", "datatype": "uint16", "remark": "所属通道号1~4"}, + {"key": "0x0002", "datatype": "uint32", "remark": "充电功率最大许可(1KW)"}, + {"key": "0x0004", "datatype": "uint32", "remark": "放电功率最大许可(1KW)"}, + {"key": "0x0006", "datatype": "uint32", "remark": "交流日总充电量(1KWh)"}, + {"key": "0x0008", "datatype": "uint32", "remark": "交流日总放电量(1KWh)"}, + {"key": "0x000A", "datatype": "uint32", "remark": "交流总充电量(1KWh)"}, + {"key": "0x000C", "datatype": "uint32", "remark": "交流总放电量(1KWh)"}, + {"key": "0x000E", "datatype": "int16", "remark": "有功功率期望值(1KW)"}, + {"key": "0x000F", "datatype": "int16", "remark": "无功功率期望值(1kVar)"}, + {"key": "0x0010", "datatype": "int16", "remark": "PCS侧线电压VAB(1v)"}, + {"key": "0x0011", "datatype": "int16", "remark": "PCS侧线电压VBC(1v)"}, + {"key": "0x0012", "datatype": "int16", "remark": "PCS侧线电压VCA(1v)"}, + {"key": "0x0013", "datatype": "int16", "remark": "PCS侧线A相电压(1v)"}, + {"key": "0x0014", "datatype": "int16", "remark": "PCS侧线B相电压(1v)"}, + {"key": "0x0015", "datatype": "int16", "remark": "PCS侧线C相电压(1v)"}, + {"key": "0x0016", "datatype": "int16", "remark": "PCS侧A相频率(1Hz)"}, + {"key": "0x0017", "datatype": "int16", "remark": "PCS侧B相频率(1Hz)"}, + {"key": "0x0018", "datatype": "int16", "remark": "PCS侧C相频率(1Hz)"}, + {"key": "0x0019", "datatype": "int16", "remark": "PCS侧功率因数A(1)"}, + {"key": "0x001A", "datatype": "int16", "remark": "PCS侧功率因数B(1)"}, + {"key": "0x001B", "datatype": "int16", "remark": "PCS侧功率因数C(1)"}, + {"key": "0x001C", "datatype": "int16", "remark": "PCS侧相电流A(1A)"}, + {"key": "0x001D", "datatype": "int16", "remark": "PCS侧相电流B(1A)"}, + {"key": "0x001E", "datatype": "int16", "remark": "PCS侧相电流C(1A)"}, + {"key": "0x001F", "datatype": "int16", "remark": "PCS侧有功功率A(1kW)"}, + {"key": "0x0020", "datatype": "int16", "remark": "PCS侧有功功率B(1kW)"}, + {"key": "0x0021", "datatype": "int16", "remark": "PCS侧有功功率C(1kW)"}, + {"key": "0x0022", "datatype": "int16", "remark": "PCS侧无功功率A(1kVar)"}, + {"key": "0x0023", "datatype": "int16", "remark": "PCS侧无功功率B(1kVar)"}, + {"key": "0x0024", "datatype": "int16", "remark": "PCS侧无功功率C(1kVar)"}, + {"key": "0x0025", "datatype": "int16", "remark": "PCS侧视在功率A(1kVar)"}, + {"key": "0x0026", "datatype": "int16", "remark": "PCS侧视在功率B(1kVar)"}, + {"key": "0x0027", "datatype": "int16", "remark": "PCS侧视在功率C(1kVar)"}, + {"key": "0x0028", "datatype": "int16", "remark": "PCS侧三相总有功功率(1kW)"}, + {"key": "0x0029", "datatype": "int16", "remark": "PCS侧三相总无功功率(1kVar)"}, + {"key": "0x002A", "datatype": "int16", "remark": "PCS侧三相总视在功率(1kVA)"}, + {"key": "0x002B", "datatype": "int16", "remark": "PCS侧三相总功率因数(1)"}, + {"key": "0x002C", "datatype": "int16", "remark": "PCU模块温度(1℃)"}, + {"key": "0x002D", "datatype": "int16", "remark": "外部温度NTC1(1℃)"}, + {"key": "0x002E", "datatype": "int16", "remark": "外部温度NTC2(1℃)"}, + {"key": "0x002F", "datatype": "int16", "remark": "外部温度NTC3(1℃)"}, + {"key": "0x0030", "datatype": "int16", "remark": "台区负载侧A相电流(1A)"}, + {"key": "0x0031", "datatype": "int16", "remark": "台区负载侧B相电流(1A)"}, + {"key": "0x0032", "datatype": "int16", "remark": "台区负载侧C相电流(1A)"}, + {"key": "0x0033", "datatype": "int16", "remark": "台区负载侧A相有功功率(1kW)"}, + {"key": "0x0034", "datatype": "int16", "remark": "台区负载侧B相有功功率(1kW)"}, + {"key": "0x0035", "datatype": "int16", "remark": "台区负载侧C相有功功率(1kW)"}, + {"key": "0x0036", "datatype": "int16", "remark": "台区负载侧总有功功率(1kW)"}, + {"key": "0x0037", "datatype": "int16", "remark": "台区负载侧A相无功功率(1kVar)"}, + {"key": "0x0038", "datatype": "int16", "remark": "台区负载侧B相无功功率(1kVar)"}, + {"key": "0x0039", "datatype": "int16", "remark": "台区负载侧C相无功功率(1kVar)"}, + {"key": "0x003A", "datatype": "int16", "remark": "台区负载侧总无功功率(1kVar)"}, + {"key": "0x003B", "datatype": "int16", "remark": "台区负载侧A相视在功率(1kVA)"}, + {"key": "0x003C", "datatype": "int16", "remark": "台区负载侧B相视在功率(1kVA)"}, + {"key": "0x003D", "datatype": "int16", "remark": "台区负载侧C相视在功率(1kVA)"}, + {"key": "0x003E", "datatype": "int16", "remark": "台区负载侧总视在功率(1kVA)"}, + {"key": "0x003F", "datatype": "int16", "remark": "台区负载侧A相功率因数(1)"}, + {"key": "0x0040", "datatype": "int16", "remark": "台区负载侧B相功率因数(1)"}, + {"key": "0x0041", "datatype": "int16", "remark": "台区负载侧C相功率因数(1)"}, + {"key": "0x0042", "datatype": "int16", "remark": "台区负载侧总功率因数(1)"}, + {"key": "0x0043", "datatype": "int16", "remark": "负载侧线电压AB(1V)"}, + {"key": "0x0044", "datatype": "int16", "remark": "负载侧线电压BC(1V)"}, + {"key": "0x0045", "datatype": "int16", "remark": "负载侧线电压CA(1V)"}, + {"key": "0x0046", "datatype": "int16", "remark": "负载侧相电压AN(1V)"}, + {"key": "0x0047", "datatype": "int16", "remark": "负载侧相电压BN(1V)"}, + {"key": "0x0048", "datatype": "int16", "remark": "负载侧相电压CN(1V)"}, + {"key": "0x0049", "datatype": "int16", "remark": "负载侧A功率因素(1)"}, + {"key": "0x004A", "datatype": "int16", "remark": "负载侧B功率因素(1)"}, + {"key": "0x004B", "datatype": "int16", "remark": "负载侧C功率因素(1)"}, + {"key": "0x004C", "datatype": "int16", "remark": "负载侧A视在功率(1kVA)"}, + {"key": "0x004D", "datatype": "int16", "remark": "负载侧B视在功率(1kVA)"} + ] + }, + "PCU_YX":{ + "addr":[ + {"key": "0x1001", "datatype": "uint16", "remark": "所属通道号1~4"}, + {"key": "0x1002", "datatype": "uint16", "remark": "故障状态1故障,0正常"}, + {"key": "0x1003", "datatype": "uint16", "remark": "告警状态1告警,0正常"}, + {"key": "0x1004", "datatype": "uint16", "remark": "设备在线1在线,0无效"}, + {"key": "0x1005", "datatype": "uint16", "remark": "本地远程1本地,0远程"}, + {"key": "0x1006", "datatype": "uint16", "remark": "启停状态1开机,0关机"}, + {"key": "0x1007", "datatype": "uint16", "remark": "电网状态1离网,0并网"}, + {"key": "0x1008", "datatype": "uint16", "remark": "模块状态1开机,0待机"}, + {"key": "0x1009", "datatype": "uint16", "remark": "EPO急停1故障,0正常"}, + {"key": "0x100A", "datatype": "uint16", "remark": "防雷器异常1告警,0正常"}, + {"key": "0x100B", "datatype": "uint16", "remark": "负载电压反序1故障,0正常"}, + {"key": "0x100C", "datatype": "uint16", "remark": "市电电压反序1故障,0正常"}, + {"key": "0x100D", "datatype": "uint16", "remark": "输出相反序1故障,0正常"}, + {"key": "0x100E", "datatype": "uint16", "remark": "过载告警1告警,0正常"}, + {"key": "0x100F", "datatype": "uint16", "remark": "过载超时1故障,0正常"}, + {"key": "0x1010", "datatype": "uint16", "remark": "交流过流保护1故障,0正常"}, + {"key": "0x1011", "datatype": "uint16", "remark": "逆变电压异常1故障,0正常"}, + {"key": "0x1012", "datatype": "uint16", "remark": "内部串口异常1故障,0正常"}, + {"key": "0x1013", "datatype": "uint16", "remark": "485通信故障1故障,0正常"}, + {"key": "0x1014", "datatype": "uint16", "remark": "CAN通信故障1故障,0正常"}, + {"key": "0x1015", "datatype": "uint16", "remark": "E2PROM故障1故障,0正常"}, + {"key": "0x1016", "datatype": "uint16", "remark": "电网过压1故障,0正常"}, + {"key": "0x1017", "datatype": "uint16", "remark": "电网欠压1故障,0正常"}, + {"key": "0x1018", "datatype": "uint16", "remark": "电网过频1故障,0正常"}, + {"key": "0x1019", "datatype": "uint16", "remark": "电网欠频1故障,0正常"}, + {"key": "0x101A", "datatype": "uint16", "remark": "电网快检综合异常1故障,0正常"}, + {"key": "0x101B", "datatype": "uint16", "remark": "电网幅值快检异常1故障,0正常"}, + {"key": "0x101C", "datatype": "uint16", "remark": "电网拖尾异常1故障,0正常"}, + {"key": "0x101D", "datatype": "uint16", "remark": "消防输入信号NO1闭合,0断开"}, + {"key": "0x101E", "datatype": "uint16", "remark": "急停按钮信号NC1急停,0正常"}, + {"key": "0x101F", "datatype": "uint16", "remark": "避雷器NC1故障,0正常"}, + {"key": "0x1020", "datatype": "uint16", "remark": "避雷器断路器NC1故障,0正常"}, + {"key": "0x1021", "datatype": "uint16", "remark": "PCS总断路器NC1闭合,0断开"}, + {"key": "0x1022", "datatype": "uint16", "remark": "电操状态NO1闭合,0断开"}, + {"key": "0x1023", "datatype": "uint16", "remark": "远程关机NO1开机,0无效"}, + {"key": "0x1024", "datatype": "uint16", "remark": "远程开机NO1开机,0无效"}, + {"key": "0x1025", "datatype": "uint16", "remark": "BA故障信号NO1故障,0正常"}, + {"key": "0x1026", "datatype": "uint16", "remark": "PCS_01状态1在线,0掉线"}, + {"key": "0x1027", "datatype": "uint16", "remark": "PCS_02状态1在线,0掉线"}, + {"key": "0x1028", "datatype": "uint16", "remark": "PCS_03状态1在线,0掉线"}, + {"key": "0x1029", "datatype": "uint16", "remark": "PCS_04状态1在线,0掉线"}, + {"key": "0x102A", "datatype": "uint16", "remark": "PCS_05状态1在线,0掉线"}, + {"key": "0x102B", "datatype": "uint16", "remark": "PCS_06状态1在线,0掉线"}, + {"key": "0x102C", "datatype": "uint16", "remark": "PCS_07状态1在线,0掉线"}, + {"key": "0x102D", "datatype": "uint16", "remark": "PCS_09状态1在线,0掉线"}, + {"key": "0x102E", "datatype": "uint16", "remark": "PCS_10状态1在线,0掉线"}, + {"key": "0x102F", "datatype": "uint16", "remark": "PCS_01下发设置1故障,0正常"}, + {"key": "0x1030", "datatype": "uint16", "remark": "PCS_02下发设置1故障,0正常"}, + {"key": "0x1031", "datatype": "uint16", "remark": "PCS_03下发设置1故障,0正常"}, + {"key": "0x1032", "datatype": "uint16", "remark": "PCS_04下发设置1故障,0正常"}, + {"key": "0x1033", "datatype": "uint16", "remark": "PCS_05下发设置1故障,0正常"}, + {"key": "0x1034", "datatype": "uint16", "remark": "PCS_06下发设置1故障,0正常"}, + {"key": "0x1035", "datatype": "uint16", "remark": "PCS_07下发设置1故障,0正常"}, + {"key": "0x1036", "datatype": "uint16", "remark": "PCS_08下发设置1故障,0正常"}, + {"key": "0x1037", "datatype": "uint16", "remark": "PCS_09下发设置1故障,0正常"}, + {"key": "0x1038", "datatype": "uint16", "remark": "PCS_10下发设置1:故障,0正常"}, + {"key": "0x1039", "datatype": "uint16", "remark": "内部DSP通信故障1:故障,0正常"}, + {"key": "0x103A", "datatype": "uint16", "remark": "BMS CAN通信故障1:故障,0正常"} + ] + }, + "PCS_YC":{ + "addr":[ + {"key": "0x0001", "datatype": "uint16", "remark": "所属主控号1~4"}, + {"key": "0x0002", "datatype": "uint16", "remark": "所属PCS号1~40"}, + {"key": "0x0003", "datatype": "uint32", "remark": "总充电量(1kWh)"}, + {"key": "0x0005", "datatype": "uint32", "remark": "总放电量(1kWh)"}, + {"key": "0x0007", "datatype": "int16", "remark": "散热器温度(1℃)"}, + {"key": "0x0008", "datatype": "int16", "remark": "内部温度(1℃)"}, + {"key": "0x0009", "datatype": "int16", "remark": "最大允许充电功率(0.1kW)"}, + {"key": "0x000A", "datatype": "int16", "remark": "最大允许放电功率(0.1kW)"}, + {"key": "0x000B", "datatype": "int16", "remark": "有功功率期望(1kWh)"}, + {"key": "0x000C", "datatype": "int16", "remark": "无功功率期望(1kVar)"}, + {"key": "0x000D", "datatype": "int16", "remark": "AB线电压(1V)"}, + {"key": "0x000E", "datatype": "int16", "remark": "BC线电压(1V)"}, + {"key": "0x000F", "datatype": "int16", "remark": "CA线电压(1V)"}, + {"key": "0x0010", "datatype": "int16", "remark": "A相电压(1V)"}, + {"key": "0x0011", "datatype": "int16", "remark": "B相电压(1V)"}, + {"key": "0x0012", "datatype": "int16", "remark": "C相电压(1V)"}, + {"key": "0x0013", "datatype": "int16", "remark": "A相频率(1Hz)"}, + {"key": "0x0014", "datatype": "int16", "remark": "B相频率(1Hz)"}, + {"key": "0x0015", "datatype": "int16", "remark": "C相频率(1Hz)"}, + {"key": "0x0016", "datatype": "int16", "remark": "A相功率因数(1)"}, + {"key": "0x0017", "datatype": "int16", "remark": "B相功率因数(1)"}, + {"key": "0x0018", "datatype": "int16", "remark": "C相功率因数(1)"}, + {"key": "0x0019", "datatype": "int16", "remark": "A相电流(1A)"}, + {"key": "0x001A", "datatype": "int16", "remark": "B相电流(1A)"}, + {"key": "0x001B", "datatype": "int16", "remark": "C相电流(1A)"}, + {"key": "0x001C", "datatype": "int16", "remark": "A相有功功率(1kW)"}, + {"key": "0x001D", "datatype": "int16", "remark": "B相有功功率(1kW)"}, + {"key": "0x001E", "datatype": "int16", "remark": "C相有功功率(1kW)"}, + {"key": "0x001F", "datatype": "int16", "remark": "A相无功功率(1kVar)"}, + {"key": "0x0020", "datatype": "int16", "remark": "B相无功功率(1kVar)"}, + {"key": "0x0021", "datatype": "int16", "remark": "C相无功功率(1kVar)"}, + {"key": "0x0022", "datatype": "int16", "remark": "A相视在功率(1kVA)"}, + {"key": "0x0023", "datatype": "int16", "remark": "B相视在功率(1kVA)"}, + {"key": "0x0024", "datatype": "int16", "remark": "C相视在功率(1kVA)"}, + {"key": "0x0025", "datatype": "int16", "remark": "三相总有功功率(1kW)"}, + {"key": "0x0026", "datatype": "int16", "remark": "三相总无功功率(1kVar)"}, + {"key": "0x0027", "datatype": "int16", "remark": "三相总视在功率(1kVA)"}, + {"key": "0x0028", "datatype": "int16", "remark": "三相总功率因数(1)"}, + {"key": "0x0029", "datatype": "int16", "remark": "直流功率(1kW)"}, + {"key": "0x002A", "datatype": "int16", "remark": "直流电压(1V)"}, + {"key": "0x002B", "datatype": "int16", "remark": "直流电流(1A)"}, + {"key": "0x002C", "datatype": "int16", "remark": "充电功率(1kW)"}, + {"key": "0x002D", "datatype": "int16", "remark": "放电功率(1kW)"}, + {"key": "0x002E", "datatype": "int16", "remark": "PF值(1)"}, + {"key": "0x002F", "datatype": "int16", "remark": "UV线/U相电网计量线电压(1V)"}, + {"key": "0x0030", "datatype": "int16", "remark": "VW线/V相电网计量线电压(1V)"}, + {"key": "0x0031", "datatype": "int16", "remark": "WU线/W相电网计量线电压(1V)"}, + {"key": "0x0032", "datatype": "int16", "remark": "U相电网计量电流(1A)"}, + {"key": "0x0033", "datatype": "int16", "remark": "V相电网计量电流(1A)"}, + {"key": "0x0034", "datatype": "int16", "remark": "W相电网计量电流(1A)"}, + {"key": "0x0035", "datatype": "int16", "remark": "正母线电压(1V)"}, + {"key": "0x0036", "datatype": "int16", "remark": "可用功率(1kVA)"}, + {"key": "0x0037", "datatype": "int16", "remark": "负母线电压(1V)"}, + {"key": "0x0038", "datatype": "int16", "remark": "A相IGBT温度(1℃)"}, + {"key": "0x0039", "datatype": "int16", "remark": "B相IGBT温度(1℃)"}, + {"key": "0x003A", "datatype": "int16", "remark": "C相IGBT温度(1℃)"}, + {"key": "0x003B", "datatype": "int16", "remark": "逆变侧AB线电压(1V)"}, + {"key": "0x003C", "datatype": "int16", "remark": "逆变侧BC线电压(1V)"}, + {"key": "0x003D", "datatype": "int16", "remark": "逆变侧CA线电压(1V)"}, + {"key": "0x003E", "datatype": "int16", "remark": "逆变侧A相电压(1V)"}, + {"key": "0x003F", "datatype": "int16", "remark": "逆变侧B相电压(1V)"}, + {"key": "0x0040", "datatype": "int16", "remark": "逆变侧C相电压(1V)"}, + {"key": "0x0041", "datatype": "int16", "remark": "逆变侧A相电流(1A)"}, + {"key": "0x0042", "datatype": "int16", "remark": "逆变侧B相电流(1A)"}, + {"key": "0x0043", "datatype": "int16", "remark": "逆变侧C相电流(1A)"}, + {"key": "0x0044", "datatype": "int16", "remark": "逆变侧A相电流直流分量(1A)"}, + {"key": "0x0045", "datatype": "int16", "remark": "逆变侧B相电流直流分量(1A)"}, + {"key": "0x0046", "datatype": "int16", "remark": "逆变侧C相电流直流分量(1A)"}, + {"key": "0x0047", "datatype": "int16", "remark": "离网频率(1Hz)"}, + {"key": "0x0048", "datatype": "int16", "remark": "A相负载量(1)"}, + {"key": "0x0049", "datatype": "int16", "remark": "B相负载量(1)"}, + {"key": "0x004A", "datatype": "int16", "remark": "C相负载量(1)"}, + {"key": "0x004B", "datatype": "int16", "remark": "总负载量(1)"}, + {"key": "0x004C", "datatype": "int16", "remark": "逆变侧AB线电压直流分量(1A)"}, + {"key": "0x004D", "datatype": "int16", "remark": "逆变侧BC线电压直流分量(1A)"}, + {"key": "0x004E", "datatype": "int16", "remark": "逆变侧CA线电压直流分量(1A)"}, + {"key": "0x004F", "datatype": "int16", "remark": "在线数量"} + ] + }, + "PCS_YX":{ + "addr":[ + {"key": "0x1001", "datatype": "uint16", "remark": "所属主控号1~4"}, + {"key": "0x1002", "datatype": "uint16", "remark": "所属PCS号1~40"}, + {"key": "0x1003", "datatype": "uint16", "remark": "故障状态1故障,0正常"}, + {"key": "0x1004", "datatype": "uint16", "remark": "告警状态1告警,0正常"}, + {"key": "0x1005", "datatype": "uint16", "remark": "设备在线1在线,0无效"}, + {"key": "0x1006", "datatype": "uint16", "remark": "禁止充电1禁止,0无效"}, + {"key": "0x1007", "datatype": "uint16", "remark": "禁止放电1禁止,0无效"}, + {"key": "0x1008", "datatype": "uint16", "remark": "运行状态1开机,0关机"}, + {"key": "0x1009", "datatype": "uint16", "remark": "充放状态0:待机,1:充电,2:放电,3:搁置"}, + {"key": "0x100A", "datatype": "uint16", "remark": "电网状态1离网,0并网"}, + {"key": "0x100B", "datatype": "uint16", "remark": "逆变供电0禁止,1使能"}, + {"key": "0x100C", "datatype": "uint16", "remark": "缓启动完成0禁止,1使能"}, + {"key": "0x100D", "datatype": "uint16", "remark": "主机标志0禁止,1使能"}, + {"key": "0x100E", "datatype": "uint16", "remark": "并离网状态0:并网, 1:离网"}, + {"key": "0x100F", "datatype": "uint16", "remark": "同步请求标志0:无效;1:动作"}, + {"key": "0x1010", "datatype": "uint16", "remark": "绝缘故障1:故障,0正常"}, + {"key": "0x1011", "datatype": "uint16", "remark": "漏电保护1:故障,0正常"}, + {"key": "0x1012", "datatype": "uint16", "remark": "直流过压1:故障,0正常"}, + {"key": "0x1013", "datatype": "uint16", "remark": "市电幅值异常1:故障,0正常"}, + {"key": "0x1014", "datatype": "uint16", "remark": "市电相序异常1:故障,0正常"}, + {"key": "0x1015", "datatype": "uint16", "remark": "温度开关异常1:故障,0正常"}, + {"key": "0x1016", "datatype": "uint16", "remark": "市电频率异常1:故障,0正常"}, + {"key": "0x1017", "datatype": "uint16", "remark": "IGBT过温1:故障,0正常"}, + {"key": "0x1018", "datatype": "uint16", "remark": "交流接地故障1:故障,0正常"}, + {"key": "0x1019", "datatype": "uint16", "remark": "逆变过流异常1:故障,0正常"}, + {"key": "0x101A", "datatype": "uint16", "remark": "直流缓起故障1:故障,0正常"}, + {"key": "0x101B", "datatype": "uint16", "remark": "直流主继电器故障1:故障,0正常"}, + {"key": "0x101C", "datatype": "uint16", "remark": "风机异常1:故障,0正常"}, + {"key": "0x101D", "datatype": "uint16", "remark": "主接触器异常1:故障,0正常"}, + {"key": "0x101E", "datatype": "uint16", "remark": "均浮充切换超时1:故障,0正常"}, + {"key": "0x101F", "datatype": "uint16", "remark": "硬件故障1:故障,0正常"}, + {"key": "0x1020", "datatype": "uint16", "remark": "机内过温1:故障,0正常"}, + {"key": "0x1021", "datatype": "uint16", "remark": "软启动故障1:故障,0正常"}, + {"key": "0x1022", "datatype": "uint16", "remark": "触摸屏通讯故障1:故障,0正常"}, + {"key": "0x1023", "datatype": "uint16", "remark": "防雷器故障1:故障,0正常"}, + {"key": "0x1024", "datatype": "uint16", "remark": "急停故障1:故障,0正常"}, + {"key": "0x1025", "datatype": "uint16", "remark": "BMS系统故障1:故障,0正常"}, + {"key": "0x1026", "datatype": "uint16", "remark": "BMS通讯故障1:故障,0正常"}, + {"key": "0x1027", "datatype": "uint16", "remark": "BMS干接点通讯故障1:故障,0正常"}, + {"key": "0x1028", "datatype": "uint16", "remark": "远程通讯故障1:故障,0正常"}, + {"key": "0x1029", "datatype": "uint16", "remark": "门禁告警1:故障,0正常"}, + {"key": "0x102A", "datatype": "uint16", "remark": "锁相异常1:故障,0正常"}, + {"key": "0x102B", "datatype": "uint16", "remark": "IGBT过温告警1:故障,0正常"}, + {"key": "0x102C", "datatype": "uint16", "remark": "硬件过流保护1:故障,0正常"}, + {"key": "0x102D", "datatype": "uint16", "remark": "驱动故障1:故障,0正常"}, + {"key": "0x102E", "datatype": "uint16", "remark": "ID冲突1:故障,0正常"}, + {"key": "0x102F", "datatype": "uint16", "remark": "电池过压1:故障,0正常"}, + {"key": "0x1030", "datatype": "uint16", "remark": "电池欠压1:故障,0正常"}, + {"key": "0x1031", "datatype": "uint16", "remark": "直流过流保护1:故障,0正常"}, + {"key": "0x1032", "datatype": "uint16", "remark": "输出电压异常1:故障,0正常"}, + {"key": "0x1033", "datatype": "uint16", "remark": "离网输出电压不符合1:故障,0正常"}, + {"key": "0x1034", "datatype": "uint16", "remark": "输出过载保护1:故障,0正常"}, + {"key": "0x1035", "datatype": "uint16", "remark": "输出短路保护1:故障,0正常"}, + {"key": "0x1036", "datatype": "uint16", "remark": "并机通信异常1:故障,0正常"}, + {"key": "0x1037", "datatype": "uint16", "remark": "电池保险异常1:故障,0正常"}, + {"key": "0x1038", "datatype": "uint16", "remark": "电池重载低压1:故障,0正常"}, + {"key": "0x1039", "datatype": "uint16", "remark": "电池低压告警1:故障,0正常"}, + {"key": "0x103A", "datatype": "uint16", "remark": "一拖二压差过大1:故障,0正常"}, + {"key": "0x103B", "datatype": "uint16", "remark": "电池反接故障1:故障,0正常"}, + {"key": "0x103C", "datatype": "uint16", "remark": "电池电压异常1:故障,0正常"}, + {"key": "0x103D", "datatype": "uint16", "remark": "过载告警1:故障,0正常"}, + {"key": "0x103E", "datatype": "uint16", "remark": "外部接触器异常1:故障,0正常"}, + {"key": "0x103F", "datatype": "uint16", "remark": "IGBT温度传感器异常1:故障,0正常"}, + {"key": "0x1040", "datatype": "uint16", "remark": "整机温度传感器异常1:故障,0正常"}, + {"key": "0x1041", "datatype": "uint16", "remark": "市电CT异常1:故障,0正常"}, + {"key": "0x1042", "datatype": "uint16", "remark": "逆变电流三相不平衡1:故障,0正常"}, + {"key": "0x1043", "datatype": "uint16", "remark": "逆变电流直流分量异常1:故障,0正常"}, + {"key": "0x1044", "datatype": "uint16", "remark": "母线不平衡1:故障,0正常"}, + {"key": "0x1045", "datatype": "uint16", "remark": "逆变电压直流分量异常1:故障,0正常"}, + {"key": "0x1046", "datatype": "uint16", "remark": "主接触器控制异常1:故障,0正常"}, + {"key": "0x1047", "datatype": "uint16", "remark": "逆变电压控制异常1:故障,0正常"}, + {"key": "0x1048", "datatype": "uint16", "remark": "直流霍尔异常1:故障,0正常"}, + {"key": "0x1049", "datatype": "uint16", "remark": "电池单体过压1:故障,0正常"}, + {"key": "0x104A", "datatype": "uint16", "remark": "电池单体欠压1:故障,0正常"}, + {"key": "0x104B", "datatype": "uint16", "remark": "电网过压1:故障,0正常"}, + {"key": "0x104C", "datatype": "uint16", "remark": "电网欠压1:故障,0正常"}, + {"key": "0x104D", "datatype": "uint16", "remark": "电网过频1:故障,0正常"}, + {"key": "0x104E", "datatype": "uint16", "remark": "电网欠频1:故障,0正常"}, + {"key": "0x104F", "datatype": "uint16", "remark": "市电不平衡1:故障,0正常"}, + {"key": "0x1050", "datatype": "uint16", "remark": "参数设置不匹配1:故障,0正常"}, + {"key": "0x1051", "datatype": "uint16", "remark": "SPI通信异常1:故障,0正常"}, + {"key": "0x1052", "datatype": "uint16", "remark": "SCI通信异常1:故障,0正常"}, + {"key": "0x1053", "datatype": "uint16", "remark": "IIC通信异常1:故障,0正常"}, + {"key": "0x1054", "datatype": "uint16", "remark": "Xintf通信异常1:故障,0正常"}, + {"key": "0x1055", "datatype": "uint16", "remark": "零偏校准异常1:故障,0正常"}, + {"key": "0x1056", "datatype": "uint16", "remark": "烟雾告警1:故障,0正常"}, + {"key": "0x1057", "datatype": "uint16", "remark": "无电池组故障1异常,0正常"}, + {"key": "0x1058", "datatype": "uint16", "remark": "环温降频1异常,0正常"}, + {"key": "0x1059", "datatype": "uint16", "remark": "交流过载1异常,0正常"}, + {"key": "0x105A", "datatype": "uint16", "remark": "采样异常1异常,0正常"}, + {"key": "0x105B", "datatype": "uint16", "remark": "24V辅源故障1异常,0正常"}, + {"key": "0x105C", "datatype": "uint16", "remark": "直流欠压异常1异常,0正常"}, + {"key": "0x105D", "datatype": "uint16", "remark": "散热器过温1异常,0正常"}, + {"key": "0x105E", "datatype": "uint16", "remark": "CAN配置故障1异常,0正常"}, + {"key": "0x105F", "datatype": "uint16", "remark": "3.3V辅源故障1异常,0正常"}, + {"key": "0x1060", "datatype": "uint16", "remark": "环境过温1异常,0正常"}, + {"key": "0x1061", "datatype": "uint16", "remark": "A相IGBT逆变过流1异常,0正常"}, + {"key": "0x1062", "datatype": "uint16", "remark": "B相IGBT逆变过流1异常,0正常"} + ] + }, + "BMS_YC":{ + "addr":[ + {"key": "0x0001", "datatype": "uint16", "remark": "SOC(0.1)"}, + {"key": "0x0002", "datatype": "uint16", "remark": "SOH(0.1)"}, + {"key": "0x0003", "datatype": "uint32", "remark": "电压(0.1V)"}, + {"key": "0x0005", "datatype": "int32", "remark": "电流(0.1A)"}, + {"key": "0x0007", "datatype": "uint32", "remark": "可充电量(1kWh)"}, + {"key": "0x0009", "datatype": "uint32", "remark": "可放电量(1kWh)"}, + {"key": "0x000B", "datatype": "uint32", "remark": "单次可充电量(1kWh)"}, + {"key": "0x000D", "datatype": "uint32", "remark": "单次可放电量(1kWh)"}, + {"key": "0x000F", "datatype": "int32", "remark": "堆功率(1kW)"}, + {"key": "0x0011", "datatype": "uint32", "remark": "充电量累加(1kWh)"}, + {"key": "0x0013", "datatype": "uint32", "remark": "放电量累加(1kWh)"}, + {"key": "0x0015", "datatype": "uint16", "remark": "簇最大SOC(0.1)"}, + {"key": "0x0016", "datatype": "uint16", "remark": "簇最小SOC(0.1)"}, + {"key": "0x0017", "datatype": "uint16", "remark": "簇最大SOC号"}, + {"key": "0x0018", "datatype": "uint16", "remark": "簇最小SOC号"}, + {"key": "0x0019", "datatype": "uint16", "remark": "簇SOC差值(0.1)"}, + {"key": "0x001A", "datatype": "uint16", "remark": "簇最大电压(0.1V)"}, + {"key": "0x001B", "datatype": "uint16", "remark": "簇最小电压(0.1V)"}, + {"key": "0x001C", "datatype": "uint16", "remark": "簇最大电压号"}, + {"key": "0x001D", "datatype": "uint16", "remark": "簇最小电压号"}, + {"key": "0x001E", "datatype": "uint16", "remark": "簇电压差值(0.1V)"}, + {"key": "0x001F", "datatype": "uint16", "remark": "单体最大电压簇号"}, + {"key": "0x0020", "datatype": "uint16", "remark": "单体最大电压节号"}, + {"key": "0x0021", "datatype": "uint16", "remark": "单体最大电压(mV)"}, + {"key": "0x0022", "datatype": "uint16", "remark": "单体最小电压簇号"}, + {"key": "0x0023", "datatype": "uint16", "remark": "单体最小电压节号"}, + {"key": "0x0024", "datatype": "uint16", "remark": "单体最小电压(mV)"}, + {"key": "0x0025", "datatype": "uint16", "remark": "单体平均电压(mV)"}, + {"key": "0x0026", "datatype": "uint16", "remark": "单体电压差(mV)"}, + {"key": "0x0027", "datatype": "uint16", "remark": "单体最大温度簇号"}, + {"key": "0x0028", "datatype": "uint16", "remark": "单体最大温度节号"}, + {"key": "0x0029", "datatype": "int16", "remark": "单体最大温度(0.1℃)"}, + {"key": "0x002A", "datatype": "uint16", "remark": "单体最小温度簇号"}, + {"key": "0x002B", "datatype": "uint16", "remark": "单体最小温度节号"}, + {"key": "0x002C", "datatype": "int16", "remark": "单体最小温度(0.1℃)"}, + {"key": "0x002D", "datatype": "int16", "remark": "单体平均温度(0.1℃)"}, + {"key": "0x002E", "datatype": "int16", "remark": "单体温度差(0.1℃)"}, + {"key": "0x002F", "datatype": "uint16", "remark": "最大内阻簇号"}, + {"key": "0x0030", "datatype": "uint16", "remark": "最大内阻节号"}, + {"key": "0x0031", "datatype": "uint16", "remark": "最大内阻(mΩ)"}, + {"key": "0x0032", "datatype": "uint16", "remark": "最小内阻簇号"}, + {"key": "0x0033", "datatype": "uint16", "remark": "最小内阻节号"}, + {"key": "0x0034", "datatype": "uint16", "remark": "最小内阻(mΩ)"}, + {"key": "0x0035", "datatype": "uint16", "remark": "单体平均内阻(mΩ)"}, + {"key": "0x0036", "datatype": "uint16", "remark": "单体内阻差(mΩ)"}, + {"key": "0x0037", "datatype": "uint16", "remark": "单体最大SOH簇号"}, + {"key": "0x0038", "datatype": "uint16", "remark": "单体最大SOH节号"}, + {"key": "0x0039", "datatype": "uint16", "remark": "单体最大SOH(0.001)"}, + {"key": "0x003A", "datatype": "uint16", "remark": "单体最小SOH簇号"}, + {"key": "0x003B", "datatype": "uint16", "remark": "单体最小SOH节号"}, + {"key": "0x003C", "datatype": "uint16", "remark": "单体最小SOH(0.001)"}, + {"key": "0x003D", "datatype": "uint16", "remark": "单体最大SOc簇号"}, + {"key": "0x003E", "datatype": "uint16", "remark": "单体最大SOc节号"}, + {"key": "0x0040", "datatype": "uint16", "remark": "单体最大Soc(0.001)"}, + {"key": "0x0041", "datatype": "uint16", "remark": "单体最小SOc簇号"}, + {"key": "0x0042", "datatype": "uint16", "remark": "单体最小SOc节号"}, + {"key": "0x0043", "datatype": "uint16", "remark": "单体最小SOc(0.001)"}, + {"key": "0x0043", "datatype": "uint32", "remark": "系统剩余最大可充电功率(1KW)"}, + {"key": "0x0045", "datatype": "uint32", "remark": "系统剩余最大可放电功率(1KW)"}, + {"key": "0x0047", "datatype": "uint16", "remark": "可充电状态"}, + {"key": "0x0048", "datatype": "uint16", "remark": "可放电状态"}, + {"key": "0x0049", "datatype": "uint16", "remark": "运行状态"} + ] + }, + "BCU_YC":{ + "addr":[ + {"key": "0x0001", "datatype": "uint16", "remark": "所属通道号1~4"}, + {"key": "0x0002", "datatype": "uint16", "remark": "所属BCU号1~40"}, + {"key": "0x0003", "datatype": "uint32", "remark": "簇电压(0.1V)"}, + {"key": "0x0005", "datatype": "int32", "remark": "簇电流(0.1A)"}, + {"key": "0x0007", "datatype": "int32", "remark": "簇温度(0.1℃)"}, + {"key": "0x0009", "datatype": "uint32", "remark": "簇电阻(1mΩ)"}, + {"key": "0x000B", "datatype": "uint16", "remark": "簇SOC(0.1)"}, + {"key": "0x000C", "datatype": "uint16", "remark": "簇SOH(0.1)"}, + {"key": "0x000D", "datatype": "uint32", "remark": "簇正绝缘电阻(1kΩ)"}, + {"key": "0x000F", "datatype": "uint32", "remark": "簇负绝缘电阻(1kΩ)"}, + {"key": "0x0011", "datatype": "int32", "remark": "簇允许最大充电电流(0.1A)"}, + {"key": "0x0013", "datatype": "int32", "remark": "簇允许最大放电电流(0.1A)"}, + {"key": "0x0015", "datatype": "uint32", "remark": "簇允许最大充电功率(1kW)"}, + {"key": "0x0017", "datatype": "uint32", "remark": "簇允许最大放电功率(1kW)"}, + {"key": "0x0019", "datatype": "uint32", "remark": "簇可充容量(0.1Ah)"}, + {"key": "0x001B", "datatype": "uint32", "remark": "簇可放容量(0.1Ah)"}, + {"key": "0x001D", "datatype": "uint32", "remark": "簇单次累计充容量(0.1Ah)"}, + {"key": "0x001F", "datatype": "uint32", "remark": "簇单次累计放容量(0.1Ah)"}, + {"key": "0x0021", "datatype": "uint32", "remark": "簇总累计充容量(0.1Ah)"}, + {"key": "0x0023", "datatype": "uint32", "remark": "簇总累计放容量(0.1Ah)"}, + {"key": "0x0025", "datatype": "uint32", "remark": "簇可充电量(1kWh)"}, + {"key": "0x0027", "datatype": "uint32", "remark": "簇可放电量(1kWh)"}, + {"key": "0x0029", "datatype": "uint32", "remark": "簇单次充电量(1kWh)"}, + {"key": "0x002B", "datatype": "uint32", "remark": "簇单次放电量(1kWh)"}, + {"key": "0x002D", "datatype": "uint32", "remark": "簇累计充电量(1kWh)"}, + {"key": "0x002F", "datatype": "uint32", "remark": "簇累计放电量(1kWh)"}, + {"key": "0x0031", "datatype": "uint32", "remark": "pack累计簇总压(0.1V)"}, + {"key": "0x0033", "datatype": "uint32", "remark": "簇与pack压差(0.1V)"}, + {"key": "0x0035", "datatype": "uint32", "remark": "簇与PCS压差(0.1V)"}, + {"key": "0x0037", "datatype": "uint16", "remark": "簇中BMU个数"}, + {"key": "0x0038", "datatype": "uint16", "remark": "簇中BMU中单体个数"}, + {"key": "0x0039", "datatype": "uint16", "remark": "簇中BMU中温度个数"}, + {"key": "0x003A", "datatype": "uint16", "remark": "簇中单体个数"}, + {"key": "0x003B", "datatype": "uint16", "remark": "簇中温度个数"}, + {"key": "0x003C", "datatype": "uint16", "remark": "单体最高SOC节号"}, + {"key": "0x003D", "datatype": "uint16", "remark": "单体最高SOC(0.1)"}, + {"key": "0x003E", "datatype": "uint16", "remark": "单体最低SOC节号"}, + {"key": "0x003F", "datatype": "uint16", "remark": "单体最低SOC(0.1)"}, + {"key": "0x0040", "datatype": "uint16", "remark": "单体最高SOH节号"}, + {"key": "0x0041", "datatype": "uint16", "remark": "单体最高SOH(0.1)"}, + {"key": "0x0042", "datatype": "uint16", "remark": "单体最低SOH节号"}, + {"key": "0x0043", "datatype": "uint16", "remark": "单体最低SOH(0.1)"}, + {"key": "0x0044", "datatype": "uint16", "remark": "单体最高电压节号"}, + {"key": "0x0045", "datatype": "uint16", "remark": "单体最高电压(mV)"}, + {"key": "0x0046", "datatype": "uint16", "remark": "单体最低电压节号"}, + {"key": "0x0047", "datatype": "uint16", "remark": "单体最低电压(mV)"}, + {"key": "0x0048", "datatype": "uint16", "remark": "单体电压差(mV)"}, + {"key": "0x0049", "datatype": "uint16", "remark": "单体平均电压(mV)"}, + {"key": "0x004A", "datatype": "uint16", "remark": "单体最高温度节号"}, + {"key": "0x004B", "datatype": "int16", "remark": "单体最高温度(0.1℃)"}, + {"key": "0x004C", "datatype": "uint16", "remark": "单体最低温度节号"}, + {"key": "0x004D", "datatype": "int16", "remark": "单体最低温度(0.1℃)"}, + {"key": "0x004E", "datatype": "int16", "remark": "单体温度差(0.1℃)"}, + {"key": "0x004F", "datatype": "int16", "remark": "单体平均温度(0.1℃)"}, + {"key": "0x0050", "datatype": "uint16", "remark": "单体最高内阻节号"}, + {"key": "0x0051", "datatype": "uint16", "remark": "单体最高内阻(mΩ)"}, + {"key": "0x0052", "datatype": "uint16", "remark": "单体最低内阻节号"}, + {"key": "0x0053", "datatype": "uint16", "remark": "单体最低内阻(mΩ)"}, + {"key": "0x0054", "datatype": "uint16", "remark": "单体内阻差(mΩ)"}, + {"key": "0x0055", "datatype": "uint16", "remark": "单体平均内阻(mΩ)"} + ] + }, + "BCU_YX":{ + "addr":[ + {"key": "0xA001", "datatype": "uint16", "remark": "所属通道号1~4"}, + {"key": "0xA002", "datatype": "uint16", "remark": "所属BCU号1~40"}, + {"key": "0xA003", "datatype": "uint16", "remark": "蓄电池充放电状态0x11开路0x22待机0x33充电0x44放电"}, + {"key": "0xA004", "datatype": "uint16", "remark": "电池组运行状态0x11跳机 0x22待机 0x33放空 0x44充满 0x55预警 0x66正常"}, + {"key": "0xA005", "datatype": "uint16", "remark": "簇DO1状态1:断开 2:闭合"}, + {"key": "0xA006", "datatype": "uint16", "remark": "簇DO2状态1:断开 2:闭合"}, + {"key": "0xA007", "datatype": "uint16", "remark": "继电器总正0:断开 1:闭合 2:粘连"}, + {"key": "0xA008", "datatype": "uint16", "remark": "继电器总负0:断开 1:闭合 2:粘连"}, + {"key": "0xA009", "datatype": "uint16", "remark": "继电器预充0:断开 1:闭合 2:粘连"}, + {"key": "0xA00A", "datatype": "uint16", "remark": "继电器bmu供电0:断开 1:闭合 2:粘连"}, + {"key": "0xA00B", "datatype": "uint16", "remark": "整簇总电压过高告警0:正常 1:告警"}, + {"key": "0xA00C", "datatype": "uint16", "remark": "整簇总电压过低告警0:正常 1:告警"}, + {"key": "0xA00D", "datatype": "uint16", "remark": "整簇中单体电压过高告警0:正常 1:告警"}, + {"key": "0xA00E", "datatype": "uint16", "remark": "整簇中单体电压过低告警0:正常 1:告警"}, + {"key": "0xA00F", "datatype": "uint16", "remark": "整簇中单体电压偏差过大告警0:正常 1:告警"}, + {"key": "0xA010", "datatype": "uint16", "remark": "整簇中单体温度偏差过大告警0:正常 1:告警"}, + {"key": "0xA011", "datatype": "uint16", "remark": "整簇中单体温度过高告警0:正常 1:告警"}, + {"key": "0xA012", "datatype": "uint16", "remark": "整簇中单体温度过低告警0:正常 1:告警"}, + {"key": "0xA013", "datatype": "uint16", "remark": "整簇总充电电流过高告警0:正常 1:告警"}, + {"key": "0xA014", "datatype": "uint16", "remark": "整簇总放电电流过高告警0:正常 1:告警"}, + {"key": "0xA015", "datatype": "uint16", "remark": "整簇总SOC过高告警0:正常 1:告警"}, + {"key": "0xA016", "datatype": "uint16", "remark": "整簇总SOC过低告警0:正常 1:告警"}, + {"key": "0xA017", "datatype": "uint16", "remark": "高压盒主正接触器粘连告警0:正常 1:告警"}, + {"key": "0xA018", "datatype": "uint16", "remark": "高压盒主正接触器不能吸合告警0:正常 1:告警"}, + {"key": "0xA019", "datatype": "uint16", "remark": "高压盒主负接触器粘连告警0:正常 1:告警"}, + {"key": "0xA01A", "datatype": "uint16", "remark": "高压盒主负接触器不能吸合告警0:正常 1:告警"}, + {"key": "0xA01B", "datatype": "uint16", "remark": "高压盒预充接触器粘连告警0:正常 1:告警"}, + {"key": "0xA01C", "datatype": "uint16", "remark": "高压盒预充接触器不能吸合告警0:正常 1:告警"}, + {"key": "0xA01D", "datatype": "uint16", "remark": "预充失败告警0:正常 1:告警"}, + {"key": "0xA01E", "datatype": "uint16", "remark": "BCU电压检测模块出现问题告警0:正常 1:告警"}, + {"key": "0xA01F", "datatype": "uint16", "remark": "BCU温度检测模块出现问题告警0:正常 1:告警"}, + {"key": "0xA020", "datatype": "uint16", "remark": "BCU电流检测模块出现问题告警0:正常 1:告警"}, + {"key": "0xA021", "datatype": "uint16", "remark": "BCU绝缘检测模块出现问题告警0:正常 1:告警"}, + {"key": "0xA022", "datatype": "uint16", "remark": "高压盒内总压检测模块出现问题告警0:正常 1:告警"}, + {"key": "0xA023", "datatype": "uint16", "remark": "高压盒外总压检测模块出现问题告警0:正常 1:告警"}, + {"key": "0xA024", "datatype": "uint16", "remark": "PCS-CAN通信故障告警0:正常 1:告警"}, + {"key": "0xA025", "datatype": "uint16", "remark": "高压盒供电电压过高告警0:正常 1:告警"}, + {"key": "0xA026", "datatype": "uint16", "remark": "绝缘正极故障告警0:正常 1:告警"}, + {"key": "0xA027", "datatype": "uint16", "remark": "绝缘负极故障告警0:正常 1:告警"}, + {"key": "0xA028", "datatype": "uint16", "remark": "绝缘中间侧故障告警0:正常 1:告警"}, + {"key": "0xA029", "datatype": "uint16", "remark": "绝缘故障告警0:正常 1:告警"}, + {"key": "0xA02A", "datatype": "uint16", "remark": "BMU中电压采样线开路告警0:正常 1:告警"}, + {"key": "0xA02B", "datatype": "uint16", "remark": "BMU中NTC采样线短开路告警0:正常 1:告警"}, + {"key": "0xA02C", "datatype": "uint16", "remark": "BMU中采样芯片故障告警0:正常 1:告警"}, + {"key": "0xA02D", "datatype": "uint16", "remark": "BMU中电池温度升高过快告警0:正常 1:告警"}, + {"key": "0xA02E", "datatype": "uint16", "remark": "BMU中电池内部短路告警0:正常 1:告警"}, + {"key": "0xA02F", "datatype": "uint16", "remark": "BMU充电均衡模块出现故障告警0:正常 1:告警"}, + {"key": "0xA030", "datatype": "uint16", "remark": "BMU放电均衡模块出现故障告警0:正常 1:告警"}, + {"key": "0xA031", "datatype": "uint16", "remark": "BMU通信故障告警0:正常 1:告警"}, + {"key": "0xA032", "datatype": "uint16", "remark": "单体内阻过大告警0:正常 1:告警"}, + {"key": "0xA033", "datatype": "uint16", "remark": "单体内阻过小告警0:正常 1:告警"}, + {"key": "0xA034", "datatype": "uint16", "remark": "单体内阻阻差过大告警0:正常 1:告警"}, + {"key": "0xA035", "datatype": "uint16", "remark": "簇内阻过大告警0:正常 1:告警"}, + {"key": "0xA036", "datatype": "uint16", "remark": "簇内阻过小告警0:正常 1:告警"}, + {"key": "0xA037", "datatype": "uint16", "remark": "SOC初始化无效告警0:正常 1:告警"}, + {"key": "0xA038", "datatype": "uint16", "remark": "充电时soc降低故障告警0:正常 1:告警"}, + {"key": "0xA039", "datatype": "uint16", "remark": "放电时soc升高告警0:正常 1:告警"}, + {"key": "0xA03A", "datatype": "uint16", "remark": "静止时SOC跳变告警0:正常 1:告警"}, + {"key": "0xA03B", "datatype": "uint16", "remark": "整簇总电压过高保护0:正常 1:保护"}, + {"key": "0xA03C", "datatype": "uint16", "remark": "整簇总电压过低保护0:正常 1:保护"}, + {"key": "0xA03D", "datatype": "uint16", "remark": "整簇中单体电压过高保护0:正常 1:保护"}, + {"key": "0xA03E", "datatype": "uint16", "remark": "整簇中单体电压过低保护0:正常 1:保护"}, + {"key": "0xA03F", "datatype": "uint16", "remark": "整簇中单体电压偏差过大保护0:正常 1:保护"}, + {"key": "0xA040", "datatype": "uint16", "remark": "整簇中单体温度偏差过大保护0:正常 1:保护"}, + {"key": "0xA041", "datatype": "uint16", "remark": "整簇中单体温度过高保护0:正常 1:保护"}, + {"key": "0xA042", "datatype": "uint16", "remark": "整簇中单体温度过低保护0:正常 1:保护"}, + {"key": "0xA043", "datatype": "uint16", "remark": "整簇总充电电流过高保护0:正常 1:保护"}, + {"key": "0xA044", "datatype": "uint16", "remark": "整簇总放电电流过高保护0:正常 1:保护"}, + {"key": "0xA045", "datatype": "uint16", "remark": "整簇总SOC过高保护0:正常 1:保护"}, + {"key": "0xA046", "datatype": "uint16", "remark": "整簇总SOC过低保护0:正常 1:保护"}, + {"key": "0xA047", "datatype": "uint16", "remark": "高压盒主正接触器粘连保护0:正常 1:保护"}, + {"key": "0xA048", "datatype": "uint16", "remark": "高压盒主正接触器不能吸合保护0:正常 1:保护"}, + {"key": "0xA049", "datatype": "uint16", "remark": "高压盒主负接触器粘连保护0:正常 1:保护"}, + {"key": "0xA04A", "datatype": "uint16", "remark": "高压盒主负接触器不能吸合保护0:正常 1:保护"}, + {"key": "0xA04B", "datatype": "uint16", "remark": "高压盒预充接触器粘连保护0:正常 1:保护"}, + {"key": "0xA04C", "datatype": "uint16", "remark": "高压盒预充接触器不能吸合保护0:正常 1:保护"}, + {"key": "0xA04D", "datatype": "uint16", "remark": "预充失败保护0:正常 1:保护"}, + {"key": "0xA04E", "datatype": "uint16", "remark": "BCU电压检测模块出现问题保护0:正常 1:保护"}, + {"key": "0xA04F", "datatype": "uint16", "remark": "BCU温度检测模块出现问题保护0:正常 1:保护"}, + {"key": "0xA050", "datatype": "uint16", "remark": "BCU电流检测模块出现问题保护0:正常 1:保护"}, + {"key": "0xA051", "datatype": "uint16", "remark": "BCU绝缘检测模块出现问题保护0:正常 1:保护"}, + {"key": "0xA052", "datatype": "uint16", "remark": "高压盒内总压检测模块出现问题保护0:正常 1:保护"}, + {"key": "0xA053", "datatype": "uint16", "remark": "高压盒外总压检测模块出现问题保护0:正常 1:保护"}, + {"key": "0xA054", "datatype": "uint16", "remark": "PCS-CAN通信故障保护0:正常 1:保护"}, + {"key": "0xA055", "datatype": "uint16", "remark": "高压盒供电电压过高保护0:正常 1:保护"}, + {"key": "0xA056", "datatype": "uint16", "remark": "绝缘正极故障保护0:正常 1:保护"}, + {"key": "0xA057", "datatype": "uint16", "remark": "绝缘负极故障保护0:正常 1:保护"}, + {"key": "0xA058", "datatype": "uint16", "remark": "绝缘中间侧故障保护0:正常 1:保护"}, + {"key": "0xA059", "datatype": "uint16", "remark": "绝缘故障保护0:正常 1:保护"}, + {"key": "0xA05A", "datatype": "uint16", "remark": "BMU中电压采样线开路保护0:正常 1:保护"}, + {"key": "0xA05B", "datatype": "uint16", "remark": "BMU中NTC采样线短开路保护0:正常 1:保护"}, + {"key": "0xA05C", "datatype": "uint16", "remark": "BMU中采样芯片故障保护0:正常 1:保护"}, + {"key": "0xA05D", "datatype": "uint16", "remark": "BMU中电池温度升高过快保护0:正常 1:保护"}, + {"key": "0xA05E", "datatype": "uint16", "remark": "BMU中电池内部短路保护0:正常 1:保护"}, + {"key": "0xA05F", "datatype": "uint16", "remark": "BMU充电均衡模块出现故障保护0:正常 1:保护"}, + {"key": "0xA060", "datatype": "uint16", "remark": "BMU放电均衡模块出现故障保护0:正常 1:保护"}, + {"key": "0xA061", "datatype": "uint16", "remark": "BMU通信故障保护0:正常 1:保护"}, + {"key": "0xA062", "datatype": "uint16", "remark": "单体内阻过大保护0:正常 1:保护"}, + {"key": "0xA063", "datatype": "uint16", "remark": "单体内阻过小保护0:正常 1:保护"}, + {"key": "0xA064", "datatype": "uint16", "remark": "单体内阻阻差过大保护0:正常 1:保护"}, + {"key": "0xA065", "datatype": "uint16", "remark": "簇内阻过大保护0:正常 1:保护"}, + {"key": "0xA066", "datatype": "uint16", "remark": "簇内阻过小保护0:正常 1:保护"}, + {"key": "0xA067", "datatype": "uint16", "remark": "SOC初始化无效保护0:正常 1:保护"}, + {"key": "0xA068", "datatype": "uint16", "remark": "充电时soc降低故障保护0:正常 1:保护"}, + {"key": "0xA069", "datatype": "uint16", "remark": "放电时soc升高保护0:正常 1:保护"}, + {"key": "0xA06A", "datatype": "uint16", "remark": "静止时SOC跳变保护0:正常 1:保护"} + ] + }, + "MEM_YC":{ + "addr":[ + {"key": "0x0001", "datatype": "uint16", "remark": "所属通道号1"}, + {"key": "0x0008", "datatype": "uint16", "remark": "电表类型0:储能站总表1:逆变前侧电表2:逆变后侧电表3:配电柜电表4:并网口电表"}, + {"key": "0x0009", "datatype": "uint16", "remark": "电流变比"}, + {"key": "0x000A", "datatype": "uint16", "remark": "电压变比"}, + {"key": "0x000B", "datatype": "uint32", "remark": "A相电压(1V)"}, + {"key": "0x000D", "datatype": "uint32", "remark": "B相电压(1V)"}, + {"key": "0x000F", "datatype": "uint32", "remark": "C相电压(1V)"}, + {"key": "0x0011", "datatype": "int32", "remark": "A相电流(1A)"}, + {"key": "0x0013", "datatype": "int32", "remark": "B相电流(1A)"}, + {"key": "0x0015", "datatype": "int32", "remark": "C相电流(1A)"}, + {"key": "0x0017", "datatype": "uint32", "remark": "AB相电压(1V)"}, + {"key": "0x0019", "datatype": "uint32", "remark": "BC相电压(1V)"}, + {"key": "0x001B", "datatype": "uint32", "remark": "CA相电压(1V)"}, + {"key": "0x001D", "datatype": "int32", "remark": "A相有功(1kW)"}, + {"key": "0x001F", "datatype": "int32", "remark": "B相有功(1kW)"}, + {"key": "0x0021", "datatype": "int32", "remark": "C相有功(1kW)"}, + {"key": "0x0023", "datatype": "int32", "remark": "三相总有功(1kW)"}, + {"key": "0x0025", "datatype": "int32", "remark": "正向总有功总需量(1kW)"}, + {"key": "0x0027", "datatype": "uint32", "remark": "尖段电价(1RMB)"}, + {"key": "0x0029", "datatype": "uint32", "remark": "峰段电价(1RMB)"}, + {"key": "0x002B", "datatype": "uint32", "remark": "平段电价(1RMB)"}, + {"key": "0x002D", "datatype": "uint32", "remark": "谷段电价(1RMB)"}, + {"key": "0x002F", "datatype": "uint32", "remark": "日充电电量(1kWh)"}, + {"key": "0x0031", "datatype": "uint32", "remark": "日放电电量(1kWh)"}, + {"key": "0x0033", "datatype": "uint32", "remark": "日充电费用(1RMB)"}, + {"key": "0x0035", "datatype": "uint32", "remark": "日放电费用(1RMB)"}, + {"key": "0x0037", "datatype": "int32", "remark": "日收益(1RMB)"}, + {"key": "0x0039", "datatype": "uint32", "remark": "日正向尖有功电能(1kWh)"}, + {"key": "0x003B", "datatype": "uint32", "remark": "日正向峰有功电能(1kWh)"}, + {"key": "0x003D", "datatype": "uint32", "remark": "日正向平有功电能(1kWh)"}, + {"key": "0x003F", "datatype": "uint32", "remark": "日正向谷有功电能(1kWh)"}, + {"key": "0x0041", "datatype": "uint32", "remark": "日正向总有功电能(1kWh)"}, + {"key": "0x0043", "datatype": "uint32", "remark": "日反向尖有功电能(1kWh)"}, + {"key": "0x0045", "datatype": "uint32", "remark": "日反向峰有功电能(1kWh)"}, + {"key": "0x0047", "datatype": "uint32", "remark": "日反向平有功电能(1kWh)"}, + {"key": "0x0049", "datatype": "uint32", "remark": "日反向谷有功电能(1kWh)"}, + {"key": "0x004B", "datatype": "uint32", "remark": "日反向总有功电能(1kWh)"}, + {"key": "0x004D", "datatype": "uint32", "remark": "总充电电量(1kWh)"}, + {"key": "0x004F", "datatype": "uint32", "remark": "总放电电量(1kWh)"}, + {"key": "0x0051", "datatype": "uint32", "remark": "总充电费用(1RMB)"}, + {"key": "0x0053", "datatype": "uint32", "remark": "总放电费用(1RMB)"}, + {"key": "0x0055", "datatype": "int32", "remark": "总收益(1RMB)"}, + {"key": "0x0057", "datatype": "uint32", "remark": "总正向尖有功电能(1kWh)"}, + {"key": "0x0059", "datatype": "uint32", "remark": "总正向峰有功电能(1kWh)"}, + {"key": "0x005B", "datatype": "uint32", "remark": "总正向平有功电能(1kWh)"}, + {"key": "0x005D", "datatype": "uint32", "remark": "总正向谷有功电能(1kWh)"}, + {"key": "0x005F", "datatype": "uint32", "remark": "总正向总有功电能(1kWh)"}, + {"key": "0x0061", "datatype": "uint32", "remark": "总反向尖有功电能(1kWh)"}, + {"key": "0x0063", "datatype": "uint32", "remark": "总反向峰有功电能(1kWh)"}, + {"key": "0x0065", "datatype": "uint32", "remark": "总反向平有功电能(1kWh)"}, + {"key": "0x0067", "datatype": "uint32", "remark": "总反向谷有功电能(1kWh)"}, + {"key": "0x0069", "datatype": "uint32", "remark": "总反向总有功电能(1kWh)"} + ] + }, + "TH_YC":{ + "addr":[ + {"key": "0x0001", "datatype": "uint16", "remark": "所属通道号1"}, + {"key": "0x0002", "datatype": "uint16", "remark": "所属温湿度号1~10"}, + {"key": "0x0003", "datatype": "int16", "remark": "温度(0.1℃)"}, + {"key": "0x0004", "datatype": "int16", "remark": "湿度(0.1℃)"} + + ] + }, + "Fire40_YX":{ + "addr":[ + {"key": "0x0001", "datatype": "uint16", "remark": "所属通道号1~10"}, + {"key": "0x0002", "datatype": "uint16", "remark": "主控数量1"}, + {"key": "0x0003", "datatype": "uint16", "remark": "主控ID1"}, + {"key": "0x0004", "datatype": "uint16", "remark": "主控状态0:正常 1:预警 2:火警"}, + {"key": "0x0005", "datatype": "uint32", "remark": "主控硬件版本"}, + {"key": "0x0007", "datatype": "uint32", "remark": "主控软件版本"}, + {"key": "0x0009", "datatype": "uint16", "remark": "主电状态0:使用市电 1:使用备电"}, + {"key": "0x000A", "datatype": "uint32", "remark": "备电电流(0.1A)"}, + {"key": "0x000C", "datatype": "uint32", "remark": "备电电压(0.1V)"}, + {"key": "0x000E", "datatype": "uint32", "remark": "可用容量(0.01Ah)"}, + {"key": "0x0010", "datatype": "uint32", "remark": "可充放容量(0.01Ah)"}, + {"key": "0x0012", "datatype": "uint16", "remark": "警铃是否使用"}, + {"key": "0x0013", "datatype": "uint16", "remark": "警铃状态0:无效 1:掉线 2:正常 3:启动"}, + {"key": "0x0014", "datatype": "uint16", "remark": "瓶头阀是否使用"}, + {"key": "0x0015", "datatype": "uint16", "remark": "瓶头阀状态0:无效 1:掉线 2:正常 3:启动"}, + {"key": "0x0016", "datatype": "uint16", "remark": "手报是否使用"}, + {"key": "0x0017", "datatype": "uint16", "remark": "手报状态0:无效 1:掉线 2:正常 3:启动"}, + {"key": "0x0018", "datatype": "uint16", "remark": "簇控制器数量"}, + {"key": "0x0019", "datatype": "uint16", "remark": "复合探测器总数量"}, + {"key": "0x001A", "datatype": "uint16", "remark": "烟雾探测器总数量"}, + {"key": "0x001B", "datatype": "uint16", "remark": "压力探测器总数量"}, + {"key": "0x001C", "datatype": "uint16", "remark": "吸气式探测器总数量"}, + {"key": "0x001D", "datatype": "uint16", "remark": "PACK探测器总数量"}, + {"key": "0x001E", "datatype": "uint16", "remark": "电池总数量"} + ] + }, + "Cooling_YC":{ + "addr":[ + {"key": "0x0001", "datatype": "uint16", "remark": "所属通道号1"}, + {"key": "0x0002", "datatype": "uint16", "remark": "所属冷机号1~10"}, + {"key": "0x0003", "datatype": "int16", "remark": "制冷点(0.1℃)"}, + {"key": "0x0004", "datatype": "int16", "remark": "制冷偏差(0.1℃)"}, + {"key": "0x0005", "datatype": "int16", "remark": "高温告警值(0.1℃)"}, + {"key": "0x0006", "datatype": "int16", "remark": "低温告警值(0.1℃)"}, + {"key": "0x0007", "datatype": "int16", "remark": "制热点(0.1℃)"}, + {"key": "0x0008", "datatype": "int16", "remark": "制热偏差(0.1℃)"}, + {"key": "0x0009", "datatype": "int16", "remark": "电芯温度(0.1℃)"}, + {"key": "0x000A", "datatype": "int16", "remark": "环境湿度(0.1℃)"}, + {"key": "0x000B", "datatype": "int16", "remark": "吸气温度(0.1℃)"}, + {"key": "0x000C", "datatype": "int16", "remark": "排气温度(0.1℃)"}, + {"key": "0x000D", "datatype": "int16", "remark": "进水温度/供液温度(0.1℃)"}, + {"key": "0x000E", "datatype": "int16", "remark": "出水温度/回液温度(0.1℃)"}, + {"key": "0x000F", "datatype": "int16", "remark": "进水压力/供液压力(0.1)"}, + {"key": "0x0010", "datatype": "int16", "remark": "出水压力/回液压力(0.1)"}, + {"key": "0x0011", "datatype": "int16", "remark": "高压压力(0.1)"}, + {"key": "0x0012", "datatype": "int16", "remark": "低压压力(0.1)"}, + {"key": "0x0013", "datatype": "int16", "remark": "循环水泵转速"}, + {"key": "0x0014", "datatype": "int16", "remark": "压缩机频率"}, + {"key": "0x0015", "datatype": "int16", "remark": "室外风机转速"} + ] + }, + "Cooling_YX":{ + "addr":[ + {"key": "0x1001", "datatype": "uint16", "remark": "所属通道号1"}, + {"key": "0x1002", "datatype": "uint16", "remark": "所属冷机号1~10"}, + {"key": "0x1003", "datatype": "uint16", "remark": "开关0:关机,1:开机"}, + {"key": "0x1004", "datatype": "uint16", "remark": "采样模式(0-出水温度 1-电芯温度)"}, + {"key": "0x1005", "datatype": "uint16", "remark": "制冷状态0:关闭,1:启动"}, + {"key": "0x1006", "datatype": "uint16", "remark": "制热状态0:关闭,1:启动"}, + {"key": "0x1007", "datatype": "uint16", "remark": "高温告警0:正常,1:告警"}, + {"key": "0x1008", "datatype": "uint16", "remark": "低温告警0:正常,1:告警"}, + {"key": "0x1009", "datatype": "uint16", "remark": "高压告警0:正常,1:告警"}, + {"key": "0x100A", "datatype": "uint16", "remark": "低压告警0:正常,1:告警"}, + {"key": "0x100B", "datatype": "uint16", "remark": "进水温度传感器0:正常,1:告警"}, + {"key": "0x100C", "datatype": "uint16", "remark": "出水温度传感器0:正常,1:告警"}, + {"key": "0x100D", "datatype": "uint16", "remark": "进水压力传感器0:正常,1:告警"}, + {"key": "0x100E", "datatype": "uint16", "remark": "出水压力传感器0:正常,1:告警"} + ] + }, + "Gateway_YC":{ + "addr":[ + {"key": "40001", "datatype": "uint16", "remark": "模式"}, + {"key": "40002", "datatype": "uint16", "remark": "峰谷时间段"}, + {"key": "40021", "datatype": "uint16", "remark": "自定时间段"}, + {"key": "40038", "datatype": "uint16", "remark": "其他参数"} + ] + }, + "Charger_YC":{ + "addr":[ + {"key": "11", "datatype": "uint16", "remark": "枪1:状态"}, + {"key": "12", "datatype": "uint16", "remark": "枪1:需求电压"}, + {"key": "13", "datatype": "uint16", "remark": "枪1:需求电流"}, + {"key": "14", "datatype": "uint16", "remark": "枪1:需求功率"}, + {"key": "15", "datatype": "uint16", "remark": "枪1:输出电压"}, + {"key": "16", "datatype": "uint16", "remark": "枪1:输出电流"}, + {"key": "17", "datatype": "uint16", "remark": "枪1:输出功率"}, + {"key": "18", "datatype": "uint16", "remark": "枪1:功率限值"}, + {"key": "21", "datatype": "uint16", "remark": "枪2:状态"}, + {"key": "22", "datatype": "uint16", "remark": "枪2:需求电压"}, + {"key": "23", "datatype": "uint16", "remark": "枪2:需求电流"}, + {"key": "24", "datatype": "uint16", "remark": "枪2:需求功率"}, + {"key": "25", "datatype": "uint16", "remark": "枪2:输出电压"}, + {"key": "26", "datatype": "uint16", "remark": "枪2:输出电流"}, + {"key": "27", "datatype": "uint16", "remark": "枪2:输出功率"}, + {"key": "28", "datatype": "uint16", "remark": "枪2:功率限值"} + ] + } +} \ No newline at end of file diff --git a/bin/Release/assets/config/regaddrs.json b/bin/Release/assets/config/regaddrs.json index d56984d..5247cdb 100644 --- a/bin/Release/assets/config/regaddrs.json +++ b/bin/Release/assets/config/regaddrs.json @@ -1,870 +1,901 @@ { "EMS_YT":{ "addr":[ - {"key": "0x0001", "datatype": "uint16", "remark": "EMS工作模式0:无效1:本地控制模式, EMS不接受平台调控2:平台控制模式, EMS接收平台调控指令(-)"}, - {"key": "0x0002", "datatype": "int16", "remark": "有功功率并网恒功率模式下交流侧功率值:<0: 充电功率0: 静置>0: 放电功率(kW)"}, - {"key": "0x0003", "datatype": "uint16", "remark": "PCS开关机0: 关机1: 开机(-)"}, - {"key": "0x0004", "datatype": "uint16", "remark": "主控对象储能遥控对象:0:无效1:华云2:轻舟"}, - {"key": "0x0005", "datatype": "int16", "remark": "A相有功功率(1kW)"}, - {"key": "0x0006", "datatype": "int16", "remark": "B相有功功率(1kW)"}, - {"key": "0x0007", "datatype": "int16", "remark": "C相有功功率(1kW)"}, - {"key": "0x0008", "datatype": "int16", "remark": "三相总有功功率(1kW)"}, - {"key": "0x0009", "datatype": "int16", "remark": "A相无功功率(1kVar)"}, - {"key": "0x000A", "datatype": "int16", "remark": "B相无功功率(1kVar)"}, - {"key": "0x000B", "datatype": "int16", "remark": "C相无功功率(1kVar)"}, - {"key": "0x000C", "datatype": "int16", "remark": "三相总无功功率(1kVar)"}, - {"key": "0x000D", "datatype": "int16", "remark": "A相电流(0.01A)"}, - {"key": "0x000E", "datatype": "int16", "remark": "B相电流(0.01A)"}, - {"key": "0x000F", "datatype": "int16", "remark": "C相电流(0.01A)"}, - {"key": "0x0010", "datatype": "uint16", "remark": "A相电压(1V)"}, - {"key": "0x0011", "datatype": "uint16", "remark": "B相电压(1V)"}, - {"key": "0x0012", "datatype": "uint16", "remark": "C相电压(1V)"}, - {"key": "0x0013", "datatype": "int16", "remark": "A相交流功率因数(0.01)"}, - {"key": "0x0014", "datatype": "int16", "remark": "B相交流功率因数(0.01)"}, - {"key": "0x0015", "datatype": "int16", "remark": "C相交流功率因数(0.01)"}, - {"key": "0x0016", "datatype": "int16", "remark": "A相视在功率(1kVA)"}, - {"key": "0x0017", "datatype": "int16", "remark": "B相视在功率(1kVA)"}, - {"key": "0x0018", "datatype": "int16", "remark": "C相视在功率(1kVA)"}, - {"key": "0x0019", "datatype": "int16", "remark": "正向总有功总需量(1kW)"}, - {"key": "0x001A", "datatype": "int16", "remark": "数据有效性0无效 1有效"}, - {"key": "0x001B", "datatype": "uint16", "remark": "EMS工作模式0:无效1:本地控制模式, EMS不接受平台调控2:平台控制模式, EMS接收平台调控指令(-)"}, - {"key": "0x001C", "datatype": "uint16", "remark": "有功功率并网恒功率模式下交流侧功率值:功率绝对值 没有正负(kW)"}, - {"key": "0x001D", "datatype": "uint16", "remark": "充放电类型0: 关机1: 充电2:放电3:待机(-)"}, - {"key": "0x001E", "datatype": "uint16", "remark": "最大SOC"}, - {"key": "0x001F", "datatype": "uint16", "remark": "最小SOC"}, - {"key": "0x0020", "datatype": "uint16", "remark": "自动并离网0:手动1:自动"}, - {"key": "0x0021", "datatype": "uint16", "remark": "并网离网0:并网1:离网"} + {"key": "0x0001", "datatype": "uint16", "alert": 0, "name":"EMS工作模式", "remark": "0:无效1:本地控制模式, EMS不接受平台调控2:平台控制模式, EMS接收平台调控指令(-)"}, + {"key": "0x0002", "datatype": "int16", "alert": 0, "name":"有功功率", "remark": "并网恒功率模式下交流侧功率值:<0: 充电功率0: 静置>0: 放电功率(kW)"}, + {"key": "0x0003", "datatype": "uint16", "alert": 0, "name":"PCS开关机", "remark": "0: 关机1: 开机(-)"}, + {"key": "0x0004", "datatype": "uint16", "alert": 0, "name":"主控对象", "remark": "储能遥控对象:0:无效1:华云2:轻舟"}, + {"key": "0x0005", "datatype": "int16", "alert": 0, "name":"A相有功功率", "remark": "(1kW)"}, + {"key": "0x0006", "datatype": "int16", "alert": 0, "name":"B相有功功率", "remark": "(1kW)"}, + {"key": "0x0007", "datatype": "int16", "alert": 0, "name":"C相有功功率", "remark": "(1kW)"}, + {"key": "0x0008", "datatype": "int16", "alert": 0, "name":"三相总有功功率", "remark": "(1kW)"}, + {"key": "0x0009", "datatype": "int16", "alert": 0, "name":"A相无功功率", "remark": "(1kVar)"}, + {"key": "0x000A", "datatype": "int16", "alert": 0, "name":"B相无功功率", "remark": "(1kVar)"}, + {"key": "0x000B", "datatype": "int16", "alert": 0, "name":"C相无功功率", "remark": "(1kVar)"}, + {"key": "0x000C", "datatype": "int16", "alert": 0, "name":"三相总无功功率", "remark": "(1kVar)"}, + {"key": "0x000D", "datatype": "int16", "alert": 0, "name":"A相电流", "remark": "(0.01A)"}, + {"key": "0x000E", "datatype": "int16", "alert": 0, "name":"B相电流", "remark": "(0.01A)"}, + {"key": "0x000F", "datatype": "int16", "alert": 0, "name":"C相电流", "remark": "(0.01A)"}, + {"key": "0x0010", "datatype": "uint16", "alert": 0, "name":"A相电压", "remark": "(1V)"}, + {"key": "0x0011", "datatype": "uint16", "alert": 0, "name":"B相电压", "remark": "(1V)"}, + {"key": "0x0012", "datatype": "uint16", "alert": 0, "name":"C相电压", "remark": "(1V)"}, + {"key": "0x0013", "datatype": "int16", "alert": 0, "name":"A相交流功率因数", "remark": "(0.01)"}, + {"key": "0x0014", "datatype": "int16", "alert": 0, "name":"B相交流功率因数", "remark": "(0.01)"}, + {"key": "0x0015", "datatype": "int16", "alert": 0, "name":"C相交流功率因数", "remark": "(0.01)"}, + {"key": "0x0016", "datatype": "int16", "alert": 0, "name":"A相视在功率", "remark": "(1kVA)"}, + {"key": "0x0017", "datatype": "int16", "alert": 0, "name":"B相视在功率", "remark": "(1kVA)"}, + {"key": "0x0018", "datatype": "int16", "alert": 0, "name":"C相视在功率", "remark": "(1kVA)"}, + {"key": "0x0019", "datatype": "int16", "alert": 0, "name":"正向总有功总需量", "remark": "(1kW)"}, + {"key": "0x001A", "datatype": "int16", "alert": 0, "name":"数据有效性", "remark": "0无效 1有效"}, + {"key": "0x001B", "datatype": "uint16", "alert": 0, "name":"EMS工作模式", "remark": "0:无效1:本地控制模式, EMS不接受平台调控2:平台控制模式, EMS接收平台调控指令(-)"}, + {"key": "0x001C", "datatype": "uint16", "alert": 0, "name":"有功功率", "remark": "并网恒功率模式下交流侧功率值:功率绝对值 没有正负(kW)"}, + {"key": "0x001D", "datatype": "uint16", "alert": 0, "name":"充放电类型", "remark": "0: 关机1: 充电2:放电3:待机(-)"}, + {"key": "0x001E", "datatype": "uint16", "alert": 0, "name":"最大SOC", "remark": ""}, + {"key": "0x001F", "datatype": "uint16", "alert": 0, "name":"最小SOC", "remark": ""}, + {"key": "0x0020", "datatype": "uint16", "alert": 0, "name":"自动并离网", "remark": "0:手动1:自动"}, + {"key": "0x0021", "datatype": "uint16", "alert": 0, "name":"并网离网", "remark": "0:并网1:离网"} ] }, "EMS_YX":{ "addr":[ - {"key": "0x2001", "datatype": "uint16", "remark": "BMS(电池堆)通信状态0:正常1:故障"}, - {"key": "0x2002", "datatype": "uint64", "remark": "BCU(电池簇)通信状态0:正常1:故障"}, - {"key": "0x2006", "datatype": "uint16", "remark": "PCU(主控)通信状态0:正常1:故障"}, - {"key": "0x2007", "datatype": "uint64", "remark": "PCS(模块)通信状态0:正常1:故障"}, - {"key": "0x200B", "datatype": "uint16", "remark": "电表总接点通信状态0:正常1:故障"}, - {"key": "0x200C", "datatype": "uint32", "remark": "电表通信状态0:正常1:故障"}, - {"key": "0x200E", "datatype": "uint16", "remark": "消防通信状态0:正常1:故障"}, - {"key": "0x200F", "datatype": "uint16", "remark": "UPS通信状态0:正常1:故障"}, - {"key": "0x2010", "datatype": "uint16", "remark": "温湿度总接点通信状态0:正常1:故障"}, - {"key": "0x2011", "datatype": "uint32", "remark": "温湿度通信状态0:正常1:故障"}, - {"key": "0x2013", "datatype": "uint16", "remark": "空调总接点通信状态0:正常1:故障"}, - {"key": "0x2014", "datatype": "uint32", "remark": "空调通信状态0:正常1:故障"}, - {"key": "0x2016", "datatype": "uint16", "remark": "控制干接点(配电系统)状态0:开路1:闭合"}, - {"key": "0x2017", "datatype": "uint16", "remark": "状态干接点(配电系统)状态0:开路1:闭合"}, - {"key": "0x2018", "datatype": "uint16", "remark": "BCU总通信状态0:正常 1:告警 2:故障"}, - {"key": "0x2019", "datatype": "uint16", "remark": "PCU总通信状态0:正常 1:告警 2:故障"}, - {"key": "0x201A", "datatype": "uint16", "remark": "电表总通信状态0:正常 1:告警 2:故障"}, - {"key": "0x201B", "datatype": "uint16", "remark": "消防总通信状态0:正常 1:告警 2:故障"}, - {"key": "0x201C", "datatype": "uint16", "remark": "UPS总通信状态0:正常 1:告警 2:故障"}, - {"key": "0x201D", "datatype": "uint16", "remark": "温湿度总通信状态0:正常 1:告警 2:故障"}, - {"key": "0x201E", "datatype": "uint16", "remark": "空调总通信状态0:正常 1:告警 2:故障"}, - {"key": "0x201F", "datatype": "uint16", "remark": "EMU通信状态0:正常 1:告警 2:故障"}, - {"key": "0x2020", "datatype": "uint16", "remark": "冷机总通信状态0:正常 1:告警 2:故障"}, - {"key": "0x2021", "datatype": "uint16", "remark": "冷机总接点通信状态0:正常1:故障"}, - {"key": "0x2022", "datatype": "uint16", "remark": "冷机通信状态0:正常1:故障"}, - {"key": "0x207A", "datatype": "uint16", "remark": "判断总表的三相总有功 < -5.0fkW 充电 >5.0fkW放电 否则停机0:充电 1:放电 2:停机"} + {"key": "0x2001", "datatype": "uint16", "alert": 0, "name":"BMS(电池堆)通信状态", "remark": "0:正常1:故障"}, + {"key": "0x2002", "datatype": "uint64", "alert": 0, "name":"BCU(电池簇)通信状态", "remark": "0:正常1:故障"}, + {"key": "0x2006", "datatype": "uint16", "alert": 0, "name":"PCU(主控)通信状态", "remark": "0:正常1:故障"}, + {"key": "0x2007", "datatype": "uint64", "alert": 0, "name":"PCS(模块)通信状态", "remark": "0:正常1:故障"}, + {"key": "0x200B", "datatype": "uint16", "alert": 0, "name":"电表总接点通信状态", "remark": "0:正常1:故障"}, + {"key": "0x200C", "datatype": "uint32", "alert": 0, "name":"电表通信状态", "remark": "0:正常1:故障"}, + {"key": "0x200E", "datatype": "uint16", "alert": 0, "name":"消防通信状态", "remark": "0:正常1:故障"}, + {"key": "0x200F", "datatype": "uint16", "alert": 0, "name":"UPS通信状态", "remark": "0:正常1:故障"}, + {"key": "0x2010", "datatype": "uint16", "alert": 0, "name":"温湿度总接点通信状态", "remark": "0:正常1:故障"}, + {"key": "0x2011", "datatype": "uint32", "alert": 0, "name":"温湿度通信状态", "remark": "0:正常1:故障"}, + {"key": "0x2013", "datatype": "uint16", "alert": 0, "name":"空调总接点通信状态", "remark": "0:正常1:故障"}, + {"key": "0x2014", "datatype": "uint32", "alert": 0, "name":"空调通信状态", "remark": "0:正常1:故障"}, + {"key": "0x2016", "datatype": "uint16", "alert": 0, "name":"控制干接点(配电系统)状态", "remark": "0:开路1:闭合"}, + {"key": "0x2017", "datatype": "uint16", "alert": 0, "name":"状态干接点(配电系统)状态", "remark": "0:开路1:闭合"}, + {"key": "0x2018", "datatype": "uint16", "alert": 0, "name":"BCU总通信状态", "remark": "0:正常 1:告警 2:故障"}, + {"key": "0x2019", "datatype": "uint16", "alert": 0, "name":"PCU总通信状态", "remark": "0:正常 1:告警 2:故障"}, + {"key": "0x201A", "datatype": "uint16", "alert": 0, "name":"电表总通信状态", "remark": "0:正常 1:告警 2:故障"}, + {"key": "0x201B", "datatype": "uint16", "alert": 0, "name":"消防总通信状态", "remark": "0:正常 1:告警 2:故障"}, + {"key": "0x201C", "datatype": "uint16", "alert": 0, "name":"UPS总通信状态", "remark": "0:正常 1:告警 2:故障"}, + {"key": "0x201D", "datatype": "uint16", "alert": 0, "name":"温湿度总通信状态", "remark": "0:正常 1:告警 2:故障"}, + {"key": "0x201E", "datatype": "uint16", "alert": 0, "name":"空调总通信状态", "remark": "0:正常 1:告警 2:故障"}, + {"key": "0x201F", "datatype": "uint16", "alert": 0, "name":"EMU通信状态", "remark": "0:正常 1:告警 2:故障"}, + {"key": "0x2020", "datatype": "uint16", "alert": 0, "name":"冷机总通信状态", "remark": "0:正常 1:告警 2:故障"}, + {"key": "0x2021", "datatype": "uint16", "alert": 0, "name":"冷机总接点通信状态", "remark": "0:正常1:故障"}, + {"key": "0x2022", "datatype": "uint16", "alert": 0, "name":"冷机通信状态", "remark": "0:正常1:故障"}, + {"key": "0x207A", "datatype": "uint16", "alert": 0, "name":"判断总表的三相总有功 < -5.0fkW 充电 >5.0fkW放电 否则停机", "remark": "0:充电 1:放电 2:停机"} ] }, "EMS_YC":{ "addr":[ - {"key": "0x1001", "datatype": "uint16", "remark": "BMS(电池堆)个数1"}, - {"key": "0x1002", "datatype": "uint16", "remark": "BCU通道个数1~2"}, - {"key": "0x1003", "datatype": "uint16", "remark": "BCU(电池簇)个数1~40"}, - {"key": "0x1004", "datatype": "uint16", "remark": "PCU(主控)个数1~4"}, - {"key": "0x1005", "datatype": "uint16", "remark": "PCU通道个数1~4"}, - {"key": "0x1006", "datatype": "uint16", "remark": "PCS(模块)个数1~40"}, - {"key": "0x1007", "datatype": "uint16", "remark": "电表通道个数1"}, - {"key": "0x1008", "datatype": "uint16", "remark": "电表个数1~10"}, - {"key": "0x1009", "datatype": "uint16", "remark": "消防通道个数1~10"}, - {"key": "0x100A", "datatype": "uint16", "remark": "消防个数1~10"}, - {"key": "0x100B", "datatype": "uint16", "remark": "UPS通道个数1~10"}, - {"key": "0x100C", "datatype": "uint16", "remark": "UPS个数1~10"}, - {"key": "0x100D", "datatype": "uint16", "remark": "温湿度通道个数1"}, - {"key": "0x100E", "datatype": "uint16", "remark": "温湿度个数1~10"}, - {"key": "0x100F", "datatype": "uint16", "remark": "空调通道个数1"}, - {"key": "0x1010", "datatype": "uint16", "remark": "空调个数1~10"}, - {"key": "0x1011", "datatype": "uint16", "remark": "控制干接点(配电系统)个数16"}, - {"key": "0x1012", "datatype": "uint16", "remark": "状态干接点(配电系统)个数16"}, - {"key": "0x1072", "datatype": "uint32", "remark": "系统最大可充电功率(1KW)"}, - {"key": "0x1074", "datatype": "uint32", "remark": "系统最大可放电功率(1KW)"}, - {"key": "0x1076", "datatype": "uint32", "remark": "储能母线电压(0.1V)"}, - {"key": "0x1078", "datatype": "int32", "remark": "储能母线电流(0.1A)"}, - {"key": "0x107A", "datatype": "uint16", "remark": "储能系统SOC(0.1)"}, - {"key": "0x107B", "datatype": "uint16", "remark": "储能系统SOH(0.1)"}, - {"key": "0x107C", "datatype": "uint16", "remark": "电流变比"}, - {"key": "0x107D", "datatype": "uint16", "remark": "电压变比"}, - {"key": "0x107E", "datatype": "uint32", "remark": "A相电压(1V)"}, - {"key": "0x1080", "datatype": "uint32", "remark": "B相电压(1V)"}, - {"key": "0x1082", "datatype": "uint32", "remark": "C相电压(1V)"}, - {"key": "0x1084", "datatype": "int32", "remark": "A相电流(1A)"}, - {"key": "0x1086", "datatype": "int32", "remark": "B相电流(1A)"}, - {"key": "0x1088", "datatype": "int32", "remark": "C相电流(1A)"}, - {"key": "0x108A", "datatype": "uint32", "remark": "AB相电压(1V)"}, - {"key": "0x108C", "datatype": "uint32", "remark": "BC相电压(1V)"}, - {"key": "0x108E", "datatype": "uint32", "remark": "CA相电压(1V)"}, - {"key": "0x1090", "datatype": "int32", "remark": "A相有功功率(1kW)"}, - {"key": "0x1092", "datatype": "int32", "remark": "B相有功功率(1kW)"}, - {"key": "0x1094", "datatype": "int32", "remark": "C相有功功率(1kW)"}, - {"key": "0x1096", "datatype": "int32", "remark": "三相总有功功率(1kW)"}, - {"key": "0x1098", "datatype": "int32", "remark": "当前控制功率(0.1kW)"}, - {"key": "0x109A", "datatype": "uint32", "remark": "负荷率(0.01)"}, - {"key": "0x109C", "datatype": "uint32", "remark": "三相不平衡度(0.01)"}, - {"key": "0x109E", "datatype": "uint32", "remark": "功率因素比率(0.01)"}, - {"key": "0x10A0", "datatype": "int32", "remark": "进线开关柜功率(1kW)"}, - {"key": "0x10A2", "datatype": "int32", "remark": "用户关口表功率(1kW)"}, - {"key": "0x1104", "datatype": "int32", "remark": "正向总有功总需量(1kW)"}, - {"key": "0x1106", "datatype": "uint32", "remark": "尖段电价(1RMB)"}, - {"key": "0x1108", "datatype": "uint32", "remark": "峰段电价(1RMB)"}, - {"key": "0x110A", "datatype": "uint32", "remark": "平段电价(1RMB)"}, - {"key": "0x110C", "datatype": "uint32", "remark": "谷段电价(1RMB)"}, - {"key": "0x110E", "datatype": "uint32", "remark": "日充电电量(1kWh)"}, - {"key": "0x1110", "datatype": "uint32", "remark": "日放电电量(1kWh)"}, - {"key": "0x1112", "datatype": "uint32", "remark": "日充电费用(1RMB)"}, - {"key": "0x1114", "datatype": "uint32", "remark": "日放电费用(1RMB)"}, - {"key": "0x1116", "datatype": "int32", "remark": "日收益(1RMB)"}, - {"key": "0x1118", "datatype": "uint32", "remark": "日正向尖有功电能(1kWh)"}, - {"key": "0x111A", "datatype": "uint32", "remark": "日正向峰有功电能(1kWh)"}, - {"key": "0x111C", "datatype": "uint32", "remark": "日正向平有功电能(1kWh)"}, - {"key": "0x111E", "datatype": "uint32", "remark": "日正向谷有功电能(1kWh)"}, - {"key": "0x1120", "datatype": "uint32", "remark": "日正向总有功电能(1kWh)"}, - {"key": "0x1122", "datatype": "uint32", "remark": "日反向尖有功电能(1kWh)"}, - {"key": "0x1124", "datatype": "uint32", "remark": "日反向峰有功电能(1kWh)"}, - {"key": "0x1126", "datatype": "uint32", "remark": "日反向平有功电能(1kWh)"}, - {"key": "0x1128", "datatype": "uint32", "remark": "日反向谷有功电能(1kWh)"}, - {"key": "0x112A", "datatype": "uint32", "remark": "日反向总有功电能(1kWh)"}, - {"key": "0x112C", "datatype": "uint32", "remark": "总充电电量(1kWh)"}, - {"key": "0x112E", "datatype": "uint32", "remark": "总放电电量(1kWh)"}, - {"key": "0x1130", "datatype": "uint32", "remark": "总充电费用(1RMB)"}, - {"key": "0x1132", "datatype": "uint32", "remark": "总放电费用(1RMB)"}, - {"key": "0x1134", "datatype": "int32", "remark": "总收益(1RMB)"}, - {"key": "0x1136", "datatype": "uint32", "remark": "总正向尖有功电能(1kWh)"}, - {"key": "0x1138", "datatype": "uint32", "remark": "总正向峰有功电能(1kWh)"}, - {"key": "0x113A", "datatype": "uint32", "remark": "总正向平有功电能(1kWh)"}, - {"key": "0x113C", "datatype": "uint32", "remark": "总正向谷有功电能(1kWh)"}, - {"key": "0x113E", "datatype": "uint32", "remark": "总正向总有功电能(1kWh)"}, - {"key": "0x1140", "datatype": "uint32", "remark": "总反向尖有功电能(1kWh)"}, - {"key": "0x1142", "datatype": "uint32", "remark": "总反向峰有功电能(1kWh)"}, - {"key": "0x1144", "datatype": "uint32", "remark": "总反向平有功电能(1kWh)"}, - {"key": "0x1146", "datatype": "uint32", "remark": "总反向谷有功电能(1kWh)"}, - {"key": "0x1148", "datatype": "uint32", "remark": "总反向总有功电能(1kWh)"}, - {"key": "0x11AE", "datatype": "int16", "remark": "交流A相电压(1V)"}, - {"key": "0x11AF", "datatype": "int16", "remark": "交流B相电压(1V)"}, - {"key": "0x11B0", "datatype": "int16", "remark": "交流C相电压(1V)"}, - {"key": "0x11B1", "datatype": "int16", "remark": "交流A相频率(1Hz)"}, - {"key": "0x11B2", "datatype": "int16", "remark": "交流B相频率(1Hz)"}, - {"key": "0x11B3", "datatype": "int16", "remark": "交流C相频率(1Hz)"}, - {"key": "0x11B4", "datatype": "int32", "remark": "总直流功率(1kW)"}, - {"key": "0x11B6", "datatype": "uint32", "remark": "总直流电压(0.1V)"}, - {"key": "0x11B8", "datatype": "int32", "remark": "总直流电流(0.1A)"}, - {"key": "0x121B", "datatype": "int16", "remark": "储能系统温度(0.1℃)"}, - {"key": "0x121C", "datatype": "uint16", "remark": "储能充放电时段hh(时)"}, - {"key": "0x121D", "datatype": "uint16", "remark": "储能充放电时段mm(分)"}, - {"key": "0x121E", "datatype": "uint16", "remark": "储能充放电时段ss(秒)"} + {"key": "0x1001", "datatype": "uint16", "alert": 0, "name":"BMS(电池堆)个数", "remark": "1"}, + {"key": "0x1002", "datatype": "uint16", "alert": 0, "name":"BCU通道个数", "remark": "1~2"}, + {"key": "0x1003", "datatype": "uint16", "alert": 0, "name":"BCU(电池簇)个数", "remark": "1~40"}, + {"key": "0x1004", "datatype": "uint16", "alert": 0, "name":"PCU(主控)个数", "remark": "1~4"}, + {"key": "0x1005", "datatype": "uint16", "alert": 0, "name":"PCU通道个数", "remark": "1~4"}, + {"key": "0x1006", "datatype": "uint16", "alert": 0, "name":"PCS(模块)个数", "remark": "1~40"}, + {"key": "0x1007", "datatype": "uint16", "alert": 0, "name":"电表通道个数", "remark": "1"}, + {"key": "0x1008", "datatype": "uint16", "alert": 0, "name":"电表个数", "remark": "1~10"}, + {"key": "0x1009", "datatype": "uint16", "alert": 0, "name":"消防通道个数", "remark": "1~10"}, + {"key": "0x100A", "datatype": "uint16", "alert": 0, "name":"消防个数", "remark": "1~10"}, + {"key": "0x100B", "datatype": "uint16", "alert": 0, "name":"UPS通道个数", "remark": "1~10"}, + {"key": "0x100C", "datatype": "uint16", "alert": 0, "name":"UPS个数", "remark": "1~10"}, + {"key": "0x100D", "datatype": "uint16", "alert": 0, "name":"温湿度通道个数", "remark": "1"}, + {"key": "0x100E", "datatype": "uint16", "alert": 0, "name":"温湿度个数", "remark": "1~10"}, + {"key": "0x100F", "datatype": "uint16", "alert": 0, "name":"空调通道个数", "remark": "1"}, + {"key": "0x1010", "datatype": "uint16", "alert": 0, "name":"空调个数", "remark": "1~10"}, + {"key": "0x1011", "datatype": "uint16", "alert": 0, "name":"控制干接点(配电系统)个数", "remark": "16"}, + {"key": "0x1012", "datatype": "uint16", "alert": 0, "name":"状态干接点(配电系统)个数", "remark": "16"}, + {"key": "0x1072", "datatype": "uint32", "alert": 0, "name":"系统最大可充电功率", "remark": "(1KW)"}, + {"key": "0x1074", "datatype": "uint32", "alert": 0, "name":"系统最大可放电功率", "remark": "(1KW)"}, + {"key": "0x1076", "datatype": "uint32", "alert": 0, "name":"储能母线电压", "remark": "(0.1V)"}, + {"key": "0x1078", "datatype": "int32", "alert": 0, "name":"储能母线电流", "remark": "(0.1A)"}, + {"key": "0x107A", "datatype": "uint16", "alert": 0, "name":"储能系统SOC", "remark": "(0.1)"}, + {"key": "0x107B", "datatype": "uint16", "alert": 0, "name":"储能系统SOH", "remark": "(0.1)"}, + {"key": "0x107C", "datatype": "uint16", "alert": 0, "name":"电流变比", "remark": ""}, + {"key": "0x107D", "datatype": "uint16", "alert": 0, "name":"电压变比", "remark": ""}, + {"key": "0x107E", "datatype": "uint32", "alert": 0, "name":"A相电压", "remark": "(1V)"}, + {"key": "0x1080", "datatype": "uint32", "alert": 0, "name":"B相电压", "remark": "(1V)"}, + {"key": "0x1082", "datatype": "uint32", "alert": 0, "name":"C相电压", "remark": "(1V)"}, + {"key": "0x1084", "datatype": "int32", "alert": 0, "name":"A相电流", "remark": "(1A)"}, + {"key": "0x1086", "datatype": "int32", "alert": 0, "name":"B相电流", "remark": "(1A)"}, + {"key": "0x1088", "datatype": "int32", "alert": 0, "name":"C相电流", "remark": "(1A)"}, + {"key": "0x108A", "datatype": "uint32", "alert": 0, "name":"AB相电压", "remark": "(1V)"}, + {"key": "0x108C", "datatype": "uint32", "alert": 0, "name":"BC相电压", "remark": "(1V)"}, + {"key": "0x108E", "datatype": "uint32", "alert": 0, "name":"CA相电压", "remark": "(1V)"}, + {"key": "0x1090", "datatype": "int32", "alert": 0, "name":"A相有功功率", "remark": "(1kW)"}, + {"key": "0x1092", "datatype": "int32", "alert": 0, "name":"B相有功功率", "remark": "(1kW)"}, + {"key": "0x1094", "datatype": "int32", "alert": 0, "name":"C相有功功率", "remark": "(1kW)"}, + {"key": "0x1096", "datatype": "int32", "alert": 0, "name":"三相总有功功率", "remark": "(1kW)"}, + {"key": "0x1098", "datatype": "int32", "alert": 0, "name":"当前控制功率", "remark": "(0.1kW)"}, + {"key": "0x109A", "datatype": "uint32", "alert": 0, "name":"负荷率", "remark": "(0.01)"}, + {"key": "0x109C", "datatype": "uint32", "alert": 0, "name":"三相不平衡度", "remark": "(0.01)"}, + {"key": "0x109E", "datatype": "uint32", "alert": 0, "name":"功率因素比率", "remark": "(0.01)"}, + {"key": "0x10A0", "datatype": "int32", "alert": 0, "name":"进线开关柜功率", "remark": "(1kW)"}, + {"key": "0x10A2", "datatype": "int32", "alert": 0, "name":"用户关口表功率", "remark": "(1kW)"}, + {"key": "0x1104", "datatype": "int32", "alert": 0, "name":"正向总有功总需量", "remark": "(1kW)"}, + {"key": "0x1106", "datatype": "uint32", "alert": 0, "name":"尖段电价", "remark": "(1RMB)"}, + {"key": "0x1108", "datatype": "uint32", "alert": 0, "name":"峰段电价", "remark": "(1RMB)"}, + {"key": "0x110A", "datatype": "uint32", "alert": 0, "name":"平段电价", "remark": "(1RMB)"}, + {"key": "0x110C", "datatype": "uint32", "alert": 0, "name":"谷段电价", "remark": "(1RMB)"}, + {"key": "0x110E", "datatype": "uint32", "alert": 0, "name":"日充电电量", "remark": "(1kWh)"}, + {"key": "0x1110", "datatype": "uint32", "alert": 0, "name":"日放电电量", "remark": "(1kWh)"}, + {"key": "0x1112", "datatype": "uint32", "alert": 0, "name":"日充电费用", "remark": "(1RMB)"}, + {"key": "0x1114", "datatype": "uint32", "alert": 0, "name":"日放电费用", "remark": "(1RMB)"}, + {"key": "0x1116", "datatype": "int32", "alert": 0, "name":"日收益", "remark": "(1RMB)"}, + {"key": "0x1118", "datatype": "uint32", "alert": 0, "name":"日正向尖有功电能", "remark": "(1kWh)"}, + {"key": "0x111A", "datatype": "uint32", "alert": 0, "name":"日正向峰有功电能", "remark": "(1kWh)"}, + {"key": "0x111C", "datatype": "uint32", "alert": 0, "name":"日正向平有功电能", "remark": "(1kWh)"}, + {"key": "0x111E", "datatype": "uint32", "alert": 0, "name":"日正向谷有功电能", "remark": "(1kWh)"}, + {"key": "0x1120", "datatype": "uint32", "alert": 0, "name":"日正向总有功电能", "remark": "(1kWh)"}, + {"key": "0x1122", "datatype": "uint32", "alert": 0, "name":"日反向尖有功电能", "remark": "(1kWh)"}, + {"key": "0x1124", "datatype": "uint32", "alert": 0, "name":"日反向峰有功电能", "remark": "(1kWh)"}, + {"key": "0x1126", "datatype": "uint32", "alert": 0, "name":"日反向平有功电能", "remark": "(1kWh)"}, + {"key": "0x1128", "datatype": "uint32", "alert": 0, "name":"日反向谷有功电能", "remark": "(1kWh)"}, + {"key": "0x112A", "datatype": "uint32", "alert": 0, "name":"日反向总有功电能", "remark": "(1kWh)"}, + {"key": "0x112C", "datatype": "uint32", "alert": 0, "name":"总充电电量", "remark": "(1kWh)"}, + {"key": "0x112E", "datatype": "uint32", "alert": 0, "name":"总放电电量", "remark": "(1kWh)"}, + {"key": "0x1130", "datatype": "uint32", "alert": 0, "name":"总充电费用", "remark": "(1RMB)"}, + {"key": "0x1132", "datatype": "uint32", "alert": 0, "name":"总放电费用", "remark": "(1RMB)"}, + {"key": "0x1134", "datatype": "int32", "alert": 0, "name":"总收益", "remark": "(1RMB)"}, + {"key": "0x1136", "datatype": "uint32", "alert": 0, "name":"总正向尖有功电能", "remark": "(1kWh)"}, + {"key": "0x1138", "datatype": "uint32", "alert": 0, "name":"总正向峰有功电能", "remark": "(1kWh)"}, + {"key": "0x113A", "datatype": "uint32", "alert": 0, "name":"总正向平有功电能", "remark": "(1kWh)"}, + {"key": "0x113C", "datatype": "uint32", "alert": 0, "name":"总正向谷有功电能", "remark": "(1kWh)"}, + {"key": "0x113E", "datatype": "uint32", "alert": 0, "name":"总正向总有功电能", "remark": "(1kWh)"}, + {"key": "0x1140", "datatype": "uint32", "alert": 0, "name":"总反向尖有功电能", "remark": "(1kWh)"}, + {"key": "0x1142", "datatype": "uint32", "alert": 0, "name":"总反向峰有功电能", "remark": "(1kWh)"}, + {"key": "0x1144", "datatype": "uint32", "alert": 0, "name":"总反向平有功电能", "remark": "(1kWh)"}, + {"key": "0x1146", "datatype": "uint32", "alert": 0, "name":"总反向谷有功电能", "remark": "(1kWh)"}, + {"key": "0x1148", "datatype": "uint32", "alert": 0, "name":"总反向总有功电能", "remark": "(1kWh)"}, + {"key": "0x11AE", "datatype": "int16", "alert": 0, "name":"交流A相电压", "remark": "(1V)"}, + {"key": "0x11AF", "datatype": "int16", "alert": 0, "name":"交流B相电压", "remark": "(1V)"}, + {"key": "0x11B0", "datatype": "int16", "alert": 0, "name":"交流C相电压", "remark": "(1V)"}, + {"key": "0x11B1", "datatype": "int16", "alert": 0, "name":"交流A相频率", "remark": "(1Hz)"}, + {"key": "0x11B2", "datatype": "int16", "alert": 0, "name":"交流B相频率", "remark": "(1Hz)"}, + {"key": "0x11B3", "datatype": "int16", "alert": 0, "name":"交流C相频率", "remark": "(1Hz)"}, + {"key": "0x11B4", "datatype": "int32", "alert": 0, "name":"总直流功率", "remark": "(1kW)"}, + {"key": "0x11B6", "datatype": "uint32", "alert": 0, "name":"总直流电压", "remark": "(0.1V)"}, + {"key": "0x11B8", "datatype": "int32", "alert": 0, "name":"总直流电流", "remark": "(0.1A)"}, + {"key": "0x121B", "datatype": "int16", "alert": 0, "name":"储能系统温度", "remark": "(0.1℃)"}, + {"key": "0x121C", "datatype": "uint16", "alert": 0, "name":"储能充放电时段hh", "remark": "(时)"}, + {"key": "0x121D", "datatype": "uint16", "alert": 0, "name":"储能充放电时段mm", "remark": "(分)"}, + {"key": "0x121E", "datatype": "uint16", "alert": 0, "name":"储能充放电时段ss", "remark": "(秒)"}, + {"key": "0x121F", "datatype": "int16", "alert": 0, "name":"储能系统各时段功率", "remark": "(1kW)"} ] }, "PCU_YC":{ "addr":[ - {"key": "0x0001", "datatype": "uint16", "remark": "所属通道号1~4"}, - {"key": "0x0002", "datatype": "uint32", "remark": "充电功率最大许可(1KW)"}, - {"key": "0x0004", "datatype": "uint32", "remark": "放电功率最大许可(1KW)"}, - {"key": "0x0006", "datatype": "uint32", "remark": "交流日总充电量(1KWh)"}, - {"key": "0x0008", "datatype": "uint32", "remark": "交流日总放电量(1KWh)"}, - {"key": "0x000A", "datatype": "uint32", "remark": "交流总充电量(1KWh)"}, - {"key": "0x000C", "datatype": "uint32", "remark": "交流总放电量(1KWh)"}, - {"key": "0x000E", "datatype": "int16", "remark": "有功功率期望值(1KW)"}, - {"key": "0x000F", "datatype": "int16", "remark": "无功功率期望值(1kVar)"}, - {"key": "0x0010", "datatype": "int16", "remark": "PCS侧线电压VAB(1v)"}, - {"key": "0x0011", "datatype": "int16", "remark": "PCS侧线电压VBC(1v)"}, - {"key": "0x0012", "datatype": "int16", "remark": "PCS侧线电压VCA(1v)"}, - {"key": "0x0013", "datatype": "int16", "remark": "PCS侧线A相电压(1v)"}, - {"key": "0x0014", "datatype": "int16", "remark": "PCS侧线B相电压(1v)"}, - {"key": "0x0015", "datatype": "int16", "remark": "PCS侧线C相电压(1v)"}, - {"key": "0x0016", "datatype": "int16", "remark": "PCS侧A相频率(1Hz)"}, - {"key": "0x0017", "datatype": "int16", "remark": "PCS侧B相频率(1Hz)"}, - {"key": "0x0018", "datatype": "int16", "remark": "PCS侧C相频率(1Hz)"}, - {"key": "0x0019", "datatype": "int16", "remark": "PCS侧功率因数A(1)"}, - {"key": "0x001A", "datatype": "int16", "remark": "PCS侧功率因数B(1)"}, - {"key": "0x001B", "datatype": "int16", "remark": "PCS侧功率因数C(1)"}, - {"key": "0x001C", "datatype": "int16", "remark": "PCS侧相电流A(1A)"}, - {"key": "0x001D", "datatype": "int16", "remark": "PCS侧相电流B(1A)"}, - {"key": "0x001E", "datatype": "int16", "remark": "PCS侧相电流C(1A)"}, - {"key": "0x001F", "datatype": "int16", "remark": "PCS侧有功功率A(1kW)"}, - {"key": "0x0020", "datatype": "int16", "remark": "PCS侧有功功率B(1kW)"}, - {"key": "0x0021", "datatype": "int16", "remark": "PCS侧有功功率C(1kW)"}, - {"key": "0x0022", "datatype": "int16", "remark": "PCS侧无功功率A(1kVar)"}, - {"key": "0x0023", "datatype": "int16", "remark": "PCS侧无功功率B(1kVar)"}, - {"key": "0x0024", "datatype": "int16", "remark": "PCS侧无功功率C(1kVar)"}, - {"key": "0x0025", "datatype": "int16", "remark": "PCS侧视在功率A(1kVar)"}, - {"key": "0x0026", "datatype": "int16", "remark": "PCS侧视在功率B(1kVar)"}, - {"key": "0x0027", "datatype": "int16", "remark": "PCS侧视在功率C(1kVar)"}, - {"key": "0x0028", "datatype": "int16", "remark": "PCS侧三相总有功功率(1kW)"}, - {"key": "0x0029", "datatype": "int16", "remark": "PCS侧三相总无功功率(1kVar)"}, - {"key": "0x002A", "datatype": "int16", "remark": "PCS侧三相总视在功率(1kVA)"}, - {"key": "0x002B", "datatype": "int16", "remark": "PCS侧三相总功率因数(1)"}, - {"key": "0x002C", "datatype": "int16", "remark": "PCU模块温度(1℃)"}, - {"key": "0x002D", "datatype": "int16", "remark": "外部温度NTC1(1℃)"}, - {"key": "0x002E", "datatype": "int16", "remark": "外部温度NTC2(1℃)"}, - {"key": "0x002F", "datatype": "int16", "remark": "外部温度NTC3(1℃)"}, - {"key": "0x0030", "datatype": "int16", "remark": "台区负载侧A相电流(1A)"}, - {"key": "0x0031", "datatype": "int16", "remark": "台区负载侧B相电流(1A)"}, - {"key": "0x0032", "datatype": "int16", "remark": "台区负载侧C相电流(1A)"}, - {"key": "0x0033", "datatype": "int16", "remark": "台区负载侧A相有功功率(1kW)"}, - {"key": "0x0034", "datatype": "int16", "remark": "台区负载侧B相有功功率(1kW)"}, - {"key": "0x0035", "datatype": "int16", "remark": "台区负载侧C相有功功率(1kW)"}, - {"key": "0x0036", "datatype": "int16", "remark": "台区负载侧总有功功率(1kW)"}, - {"key": "0x0037", "datatype": "int16", "remark": "台区负载侧A相无功功率(1kVar)"}, - {"key": "0x0038", "datatype": "int16", "remark": "台区负载侧B相无功功率(1kVar)"}, - {"key": "0x0039", "datatype": "int16", "remark": "台区负载侧C相无功功率(1kVar)"}, - {"key": "0x003A", "datatype": "int16", "remark": "台区负载侧总无功功率(1kVar)"}, - {"key": "0x003B", "datatype": "int16", "remark": "台区负载侧A相视在功率(1kVA)"}, - {"key": "0x003C", "datatype": "int16", "remark": "台区负载侧B相视在功率(1kVA)"}, - {"key": "0x003D", "datatype": "int16", "remark": "台区负载侧C相视在功率(1kVA)"}, - {"key": "0x003E", "datatype": "int16", "remark": "台区负载侧总视在功率(1kVA)"}, - {"key": "0x003F", "datatype": "int16", "remark": "台区负载侧A相功率因数(1)"}, - {"key": "0x0040", "datatype": "int16", "remark": "台区负载侧B相功率因数(1)"}, - {"key": "0x0041", "datatype": "int16", "remark": "台区负载侧C相功率因数(1)"}, - {"key": "0x0042", "datatype": "int16", "remark": "台区负载侧总功率因数(1)"}, - {"key": "0x0043", "datatype": "int16", "remark": "负载侧线电压AB(1V)"}, - {"key": "0x0044", "datatype": "int16", "remark": "负载侧线电压BC(1V)"}, - {"key": "0x0045", "datatype": "int16", "remark": "负载侧线电压CA(1V)"}, - {"key": "0x0046", "datatype": "int16", "remark": "负载侧相电压AN(1V)"}, - {"key": "0x0047", "datatype": "int16", "remark": "负载侧相电压BN(1V)"}, - {"key": "0x0048", "datatype": "int16", "remark": "负载侧相电压CN(1V)"}, - {"key": "0x0049", "datatype": "int16", "remark": "负载侧A功率因素(1)"}, - {"key": "0x004A", "datatype": "int16", "remark": "负载侧B功率因素(1)"}, - {"key": "0x004B", "datatype": "int16", "remark": "负载侧C功率因素(1)"}, - {"key": "0x004C", "datatype": "int16", "remark": "负载侧A视在功率(1kVA)"}, - {"key": "0x004D", "datatype": "int16", "remark": "负载侧B视在功率(1kVA)"} + {"key": "0x0001", "datatype": "uint16", "alert": 0, "name":"所属通道号", "remark": "1~4"}, + {"key": "0x0002", "datatype": "uint32", "alert": 0, "name":"充电功率最大许可", "remark": "(1KW)"}, + {"key": "0x0004", "datatype": "uint32", "alert": 0, "name":"放电功率最大许可", "remark": "(1KW)"}, + {"key": "0x0006", "datatype": "uint32", "alert": 0, "name":"交流日总充电量", "remark": "(1KWh)"}, + {"key": "0x0008", "datatype": "uint32", "alert": 0, "name":"交流日总放电量", "remark": "(1KWh)"}, + {"key": "0x000A", "datatype": "uint32", "alert": 0, "name":"交流总充电量", "remark": "(1KWh)"}, + {"key": "0x000C", "datatype": "uint32", "alert": 0, "name":"交流总放电量", "remark": "(1KWh)"}, + {"key": "0x000E", "datatype": "int16", "alert": 0, "name":"有功功率期望值", "remark": "(1KW)"}, + {"key": "0x000F", "datatype": "int16", "alert": 0, "name":"无功功率期望值", "remark": "(1kVar)"}, + {"key": "0x0010", "datatype": "int16", "alert": 0, "name":"PCS侧线电压VAB", "remark": "(1v)"}, + {"key": "0x0011", "datatype": "int16", "alert": 0, "name":"PCS侧线电压VBC", "remark": "(1v)"}, + {"key": "0x0012", "datatype": "int16", "alert": 0, "name":"PCS侧线电压VCA", "remark": "(1v)"}, + {"key": "0x0013", "datatype": "int16", "alert": 0, "name":"PCS侧线A相电压", "remark": "(1v)"}, + {"key": "0x0014", "datatype": "int16", "alert": 0, "name":"PCS侧线B相电压", "remark": "(1v)"}, + {"key": "0x0015", "datatype": "int16", "alert": 0, "name":"PCS侧线C相电压", "remark": "(1v)"}, + {"key": "0x0016", "datatype": "int16", "alert": 0, "name":"PCS侧A相频率", "remark": "(1Hz)"}, + {"key": "0x0017", "datatype": "int16", "alert": 0, "name":"PCS侧B相频率", "remark": "(1Hz)"}, + {"key": "0x0018", "datatype": "int16", "alert": 0, "name":"PCS侧C相频率", "remark": "(1Hz)"}, + {"key": "0x0019", "datatype": "int16", "alert": 0, "name":"PCS侧功率因数A", "remark": "(1)"}, + {"key": "0x001A", "datatype": "int16", "alert": 0, "name":"PCS侧功率因数B", "remark": "(1)"}, + {"key": "0x001B", "datatype": "int16", "alert": 0, "name":"PCS侧功率因数C", "remark": "(1)"}, + {"key": "0x001C", "datatype": "int16", "alert": 0, "name":"PCS侧相电流A", "remark": "(1A)"}, + {"key": "0x001D", "datatype": "int16", "alert": 0, "name":"PCS侧相电流B", "remark": "(1A)"}, + {"key": "0x001E", "datatype": "int16", "alert": 0, "name":"PCS侧相电流C", "remark": "(1A)"}, + {"key": "0x001F", "datatype": "int16", "alert": 0, "name":"PCS侧有功功率A", "remark": "(1kW)"}, + {"key": "0x0020", "datatype": "int16", "alert": 0, "name":"PCS侧有功功率B", "remark": "(1kW)"}, + {"key": "0x0021", "datatype": "int16", "alert": 0, "name":"PCS侧有功功率C", "remark": "(1kW)"}, + {"key": "0x0022", "datatype": "int16", "alert": 0, "name":"PCS侧无功功率A", "remark": "(1kVar)"}, + {"key": "0x0023", "datatype": "int16", "alert": 0, "name":"PCS侧无功功率B", "remark": "(1kVar)"}, + {"key": "0x0024", "datatype": "int16", "alert": 0, "name":"PCS侧无功功率C", "remark": "(1kVar)"}, + {"key": "0x0025", "datatype": "int16", "alert": 0, "name":"PCS侧视在功率A", "remark": "(1kVar)"}, + {"key": "0x0026", "datatype": "int16", "alert": 0, "name":"PCS侧视在功率B", "remark": "(1kVar)"}, + {"key": "0x0027", "datatype": "int16", "alert": 0, "name":"PCS侧视在功率C", "remark": "(1kVar)"}, + {"key": "0x0028", "datatype": "int16", "alert": 0, "name":"PCS侧三相总有功功率", "remark": "(1kW)"}, + {"key": "0x0029", "datatype": "int16", "alert": 0, "name":"PCS侧三相总无功功率", "remark": "(1kVar)"}, + {"key": "0x002A", "datatype": "int16", "alert": 0, "name":"PCS侧三相总视在功率", "remark": "(1kVA)"}, + {"key": "0x002B", "datatype": "int16", "alert": 0, "name":"PCS侧三相总功率因数", "remark": "(1)"}, + {"key": "0x002C", "datatype": "int16", "alert": 0, "name":"PCU模块温度", "remark": "(1℃)"}, + {"key": "0x002D", "datatype": "int16", "alert": 0, "name":"外部温度NTC1", "remark": "(1℃)"}, + {"key": "0x002E", "datatype": "int16", "alert": 0, "name":"外部温度NTC2", "remark": "(1℃)"}, + {"key": "0x002F", "datatype": "int16", "alert": 0, "name":"外部温度NTC3", "remark": "(1℃)"}, + {"key": "0x0030", "datatype": "int16", "alert": 0, "name":"台区负载侧A相电流", "remark": "(1A)"}, + {"key": "0x0031", "datatype": "int16", "alert": 0, "name":"台区负载侧B相电流", "remark": "(1A)"}, + {"key": "0x0032", "datatype": "int16", "alert": 0, "name":"台区负载侧C相电流", "remark": "(1A)"}, + {"key": "0x0033", "datatype": "int16", "alert": 0, "name":"台区负载侧A相有功功率", "remark": "(1kW)"}, + {"key": "0x0034", "datatype": "int16", "alert": 0, "name":"台区负载侧B相有功功率", "remark": "(1kW)"}, + {"key": "0x0035", "datatype": "int16", "alert": 0, "name":"台区负载侧C相有功功率", "remark": "(1kW)"}, + {"key": "0x0036", "datatype": "int16", "alert": 0, "name":"台区负载侧总有功功率", "remark": "(1kW)"}, + {"key": "0x0037", "datatype": "int16", "alert": 0, "name":"台区负载侧A相无功功率", "remark": "(1kVar)"}, + {"key": "0x0038", "datatype": "int16", "alert": 0, "name":"台区负载侧B相无功功率", "remark": "(1kVar)"}, + {"key": "0x0039", "datatype": "int16", "alert": 0, "name":"台区负载侧C相无功功率", "remark": "(1kVar)"}, + {"key": "0x003A", "datatype": "int16", "alert": 0, "name":"台区负载侧总无功功率", "remark": "(1kVar)"}, + {"key": "0x003B", "datatype": "int16", "alert": 0, "name":"台区负载侧A相视在功率", "remark": "(1kVA)"}, + {"key": "0x003C", "datatype": "int16", "alert": 0, "name":"台区负载侧B相视在功率", "remark": "(1kVA)"}, + {"key": "0x003D", "datatype": "int16", "alert": 0, "name":"台区负载侧C相视在功率", "remark": "(1kVA)"}, + {"key": "0x003E", "datatype": "int16", "alert": 0, "name":"台区负载侧总视在功率", "remark": "(1kVA)"}, + {"key": "0x003F", "datatype": "int16", "alert": 0, "name":"台区负载侧A相功率因数", "remark": "(1)"}, + {"key": "0x0040", "datatype": "int16", "alert": 0, "name":"台区负载侧B相功率因数", "remark": "(1)"}, + {"key": "0x0041", "datatype": "int16", "alert": 0, "name":"台区负载侧C相功率因数", "remark": "(1)"}, + {"key": "0x0042", "datatype": "int16", "alert": 0, "name":"台区负载侧总功率因数", "remark": "(1)"}, + {"key": "0x0043", "datatype": "int16", "alert": 0, "name":"负载侧线电压AB", "remark": "(1V)"}, + {"key": "0x0044", "datatype": "int16", "alert": 0, "name":"负载侧线电压BC", "remark": "(1V)"}, + {"key": "0x0045", "datatype": "int16", "alert": 0, "name":"负载侧线电压CA", "remark": "(1V)"}, + {"key": "0x0046", "datatype": "int16", "alert": 0, "name":"负载侧相电压AN", "remark": "(1V)"}, + {"key": "0x0047", "datatype": "int16", "alert": 0, "name":"负载侧相电压BN", "remark": "(1V)"}, + {"key": "0x0048", "datatype": "int16", "alert": 0, "name":"负载侧相电压CN", "remark": "(1V)"}, + {"key": "0x0049", "datatype": "int16", "alert": 0, "name":"负载侧A功率因素", "remark": "(1)"}, + {"key": "0x004A", "datatype": "int16", "alert": 0, "name":"负载侧B功率因素", "remark": "(1)"}, + {"key": "0x004B", "datatype": "int16", "alert": 0, "name":"负载侧C功率因素", "remark": "(1)"}, + {"key": "0x004C", "datatype": "int16", "alert": 0, "name":"负载侧A视在功率", "remark": "(1kVA)"}, + {"key": "0x004D", "datatype": "int16", "alert": 0, "name":"负载侧B视在功率", "remark": "(1kVA)"}, + {"key": "0x004E", "datatype": "int16", "alert": 0, "name":"负载侧C视在功率", "remark": "(1kVA)"} ] }, "PCU_YX":{ "addr":[ - {"key": "0x1001", "datatype": "uint16", "remark": "所属通道号1~4"}, - {"key": "0x1002", "datatype": "uint16", "remark": "故障状态1故障,0正常"}, - {"key": "0x1003", "datatype": "uint16", "remark": "告警状态1告警,0正常"}, - {"key": "0x1004", "datatype": "uint16", "remark": "设备在线1在线,0无效"}, - {"key": "0x1005", "datatype": "uint16", "remark": "本地远程1本地,0远程"}, - {"key": "0x1006", "datatype": "uint16", "remark": "启停状态1开机,0关机"}, - {"key": "0x1007", "datatype": "uint16", "remark": "电网状态1离网,0并网"}, - {"key": "0x1008", "datatype": "uint16", "remark": "模块状态1开机,0待机"}, - {"key": "0x1009", "datatype": "uint16", "remark": "EPO急停1故障,0正常"}, - {"key": "0x100A", "datatype": "uint16", "remark": "防雷器异常1告警,0正常"}, - {"key": "0x100B", "datatype": "uint16", "remark": "负载电压反序1故障,0正常"}, - {"key": "0x100C", "datatype": "uint16", "remark": "市电电压反序1故障,0正常"}, - {"key": "0x100D", "datatype": "uint16", "remark": "输出相反序1故障,0正常"}, - {"key": "0x100E", "datatype": "uint16", "remark": "过载告警1告警,0正常"}, - {"key": "0x100F", "datatype": "uint16", "remark": "过载超时1故障,0正常"}, - {"key": "0x1010", "datatype": "uint16", "remark": "交流过流保护1故障,0正常"}, - {"key": "0x1011", "datatype": "uint16", "remark": "逆变电压异常1故障,0正常"}, - {"key": "0x1012", "datatype": "uint16", "remark": "内部串口异常1故障,0正常"}, - {"key": "0x1013", "datatype": "uint16", "remark": "485通信故障1故障,0正常"}, - {"key": "0x1014", "datatype": "uint16", "remark": "CAN通信故障1故障,0正常"}, - {"key": "0x1015", "datatype": "uint16", "remark": "E2PROM故障1故障,0正常"}, - {"key": "0x1016", "datatype": "uint16", "remark": "电网过压1故障,0正常"}, - {"key": "0x1017", "datatype": "uint16", "remark": "电网欠压1故障,0正常"}, - {"key": "0x1018", "datatype": "uint16", "remark": "电网过频1故障,0正常"}, - {"key": "0x1019", "datatype": "uint16", "remark": "电网欠频1故障,0正常"}, - {"key": "0x101A", "datatype": "uint16", "remark": "电网快检综合异常1故障,0正常"}, - {"key": "0x101B", "datatype": "uint16", "remark": "电网幅值快检异常1故障,0正常"}, - {"key": "0x101C", "datatype": "uint16", "remark": "电网拖尾异常1故障,0正常"}, - {"key": "0x101D", "datatype": "uint16", "remark": "消防输入信号NO1闭合,0断开"}, - {"key": "0x101E", "datatype": "uint16", "remark": "急停按钮信号NC1急停,0正常"}, - {"key": "0x101F", "datatype": "uint16", "remark": "避雷器NC1故障,0正常"}, - {"key": "0x1020", "datatype": "uint16", "remark": "避雷器断路器NC1故障,0正常"}, - {"key": "0x1021", "datatype": "uint16", "remark": "PCS总断路器NC1闭合,0断开"}, - {"key": "0x1022", "datatype": "uint16", "remark": "电操状态NO1闭合,0断开"}, - {"key": "0x1023", "datatype": "uint16", "remark": "远程关机NO1开机,0无效"}, - {"key": "0x1024", "datatype": "uint16", "remark": "远程开机NO1开机,0无效"}, - {"key": "0x1025", "datatype": "uint16", "remark": "BA故障信号NO1故障,0正常"}, - {"key": "0x1026", "datatype": "uint16", "remark": "PCS_01状态1在线,0掉线"}, - {"key": "0x1027", "datatype": "uint16", "remark": "PCS_02状态1在线,0掉线"}, - {"key": "0x1028", "datatype": "uint16", "remark": "PCS_03状态1在线,0掉线"}, - {"key": "0x1029", "datatype": "uint16", "remark": "PCS_04状态1在线,0掉线"}, - {"key": "0x102A", "datatype": "uint16", "remark": "PCS_05状态1在线,0掉线"}, - {"key": "0x102B", "datatype": "uint16", "remark": "PCS_06状态1在线,0掉线"}, - {"key": "0x102C", "datatype": "uint16", "remark": "PCS_07状态1在线,0掉线"}, - {"key": "0x102D", "datatype": "uint16", "remark": "PCS_09状态1在线,0掉线"}, - {"key": "0x102E", "datatype": "uint16", "remark": "PCS_10状态1在线,0掉线"}, - {"key": "0x102F", "datatype": "uint16", "remark": "PCS_01下发设置1故障,0正常"}, - {"key": "0x1030", "datatype": "uint16", "remark": "PCS_02下发设置1故障,0正常"}, - {"key": "0x1031", "datatype": "uint16", "remark": "PCS_03下发设置1故障,0正常"}, - {"key": "0x1032", "datatype": "uint16", "remark": "PCS_04下发设置1故障,0正常"}, - {"key": "0x1033", "datatype": "uint16", "remark": "PCS_05下发设置1故障,0正常"}, - {"key": "0x1034", "datatype": "uint16", "remark": "PCS_06下发设置1故障,0正常"}, - {"key": "0x1035", "datatype": "uint16", "remark": "PCS_07下发设置1故障,0正常"}, - {"key": "0x1036", "datatype": "uint16", "remark": "PCS_08下发设置1故障,0正常"}, - {"key": "0x1037", "datatype": "uint16", "remark": "PCS_09下发设置1故障,0正常"}, - {"key": "0x1038", "datatype": "uint16", "remark": "PCS_10下发设置1:故障,0正常"}, - {"key": "0x1039", "datatype": "uint16", "remark": "内部DSP通信故障1:故障,0正常"}, - {"key": "0x103A", "datatype": "uint16", "remark": "BMS CAN通信故障1:故障,0正常"} + {"key": "0x1001", "datatype": "uint16", "alert": 0, "name":"所属通道号", "remark": "1~4"}, + {"key": "0x1002", "datatype": "uint16", "alert": 0, "name":"故障状态", "remark": "1故障,0正常"}, + {"key": "0x1003", "datatype": "uint16", "alert": 0, "name":"告警状态", "remark": "1告警,0正常"}, + {"key": "0x1004", "datatype": "uint16", "alert": 0, "name":"设备在线", "remark": "1在线,0无效"}, + {"key": "0x1005", "datatype": "uint16", "alert": 0, "name":"本地远程", "remark": "1本地,0远程"}, + {"key": "0x1006", "datatype": "uint16", "alert": 0, "name":"启停状态", "remark": "1开机,0关机"}, + {"key": "0x1007", "datatype": "uint16", "alert": 0, "name":"电网状态", "remark": "1离网,0并网"}, + {"key": "0x1008", "datatype": "uint16", "alert": 0, "name":"模块状态", "remark": "1开机,0待机"}, + {"key": "0x1009", "datatype": "uint16", "alert": 1, "name":"EPO急停", "remark": "1故障,0正常"}, + {"key": "0x100A", "datatype": "uint16", "alert": 1, "name":"防雷器异常", "remark": "1告警,0正常"}, + {"key": "0x100B", "datatype": "uint16", "alert": 1, "name":"负载电压反序", "remark": "1故障,0正常"}, + {"key": "0x100C", "datatype": "uint16", "alert": 1, "name":"市电电压反序", "remark": "1故障,0正常"}, + {"key": "0x100D", "datatype": "uint16", "alert": 1, "name":"输出相反序", "remark": "1故障,0正常"}, + {"key": "0x100E", "datatype": "uint16", "alert": 1, "name":"过载告警", "remark": "1告警,0正常"}, + {"key": "0x100F", "datatype": "uint16", "alert": 1, "name":"过载超时", "remark": "1故障,0正常"}, + {"key": "0x1010", "datatype": "uint16", "alert": 1, "name":"交流过流保护", "remark": "1故障,0正常"}, + {"key": "0x1011", "datatype": "uint16", "alert": 1, "name":"逆变电压异常", "remark": "1故障,0正常"}, + {"key": "0x1012", "datatype": "uint16", "alert": 1, "name":"内部串口异常", "remark": "1故障,0正常"}, + {"key": "0x1013", "datatype": "uint16", "alert": 1, "name":"485通信故障", "remark": "1故障,0正常"}, + {"key": "0x1014", "datatype": "uint16", "alert": 1, "name":"CAN通信故障", "remark": "1故障,0正常"}, + {"key": "0x1015", "datatype": "uint16", "alert": 1, "name":"E2PROM故障", "remark": "1故障,0正常"}, + {"key": "0x1016", "datatype": "uint16", "alert": 1, "name":"电网过压", "remark": "1故障,0正常"}, + {"key": "0x1017", "datatype": "uint16", "alert": 1, "name":"电网欠压", "remark": "1故障,0正常"}, + {"key": "0x1018", "datatype": "uint16", "alert": 1, "name":"电网过频", "remark": "1故障,0正常"}, + {"key": "0x1019", "datatype": "uint16", "alert": 1, "name":"电网欠频", "remark": "1故障,0正常"}, + {"key": "0x101A", "datatype": "uint16", "alert": 1, "name":"电网快检综合异常", "remark": "1故障,0正常"}, + {"key": "0x101B", "datatype": "uint16", "alert": 1, "name":"电网幅值快检异常", "remark": "1故障,0正常"}, + {"key": "0x101C", "datatype": "uint16", "alert": 1, "name":"电网拖尾异常", "remark": "1故障,0正常"}, + {"key": "0x101D", "datatype": "uint16", "alert": 0, "name":"消防输入信号NO", "remark": "1闭合,0断开"}, + {"key": "0x101E", "datatype": "uint16", "alert": 1, "name":"急停按钮信号NC", "remark": "1急停,0正常"}, + {"key": "0x101F", "datatype": "uint16", "alert": 1, "name":"避雷器NC", "remark": "1故障,0正常"}, + {"key": "0x1020", "datatype": "uint16", "alert": 1, "name":"避雷器断路器NC", "remark": "1故障,0正常"}, + {"key": "0x1021", "datatype": "uint16", "alert": 0, "name":"PCS总断路器NC", "remark": "1闭合,0断开"}, + {"key": "0x1022", "datatype": "uint16", "alert": 0, "name":"电操状态NO", "remark": "1闭合,0断开"}, + {"key": "0x1023", "datatype": "uint16", "alert": 0, "name":"远程关机NO", "remark": "1开机,0无效"}, + {"key": "0x1024", "datatype": "uint16", "alert": 0, "name":"远程开机NO", "remark": "1开机,0无效"}, + {"key": "0x1025", "datatype": "uint16", "alert": 0, "name":"BA故障信号NO", "remark": "1故障,0正常"}, + {"key": "0x1026", "datatype": "uint16", "alert": 0, "name":"PCS_01状态", "remark": "1在线,0掉线"}, + {"key": "0x1027", "datatype": "uint16", "alert": 0, "name":"PCS_02状态", "remark": "1在线,0掉线"}, + {"key": "0x1028", "datatype": "uint16", "alert": 0, "name":"PCS_03状态", "remark": "1在线,0掉线"}, + {"key": "0x1029", "datatype": "uint16", "alert": 0, "name":"PCS_04状态", "remark": "1在线,0掉线"}, + {"key": "0x102A", "datatype": "uint16", "alert": 0, "name":"PCS_05状态", "remark": "1在线,0掉线"}, + {"key": "0x102B", "datatype": "uint16", "alert": 0, "name":"PCS_06状态", "remark": "1在线,0掉线"}, + {"key": "0x102C", "datatype": "uint16", "alert": 0, "name":"PCS_07状态", "remark": "1在线,0掉线"}, + {"key": "0x102D", "datatype": "uint16", "alert": 0, "name":"PCS_09状态", "remark": "1在线,0掉线"}, + {"key": "0x102E", "datatype": "uint16", "alert": 0, "name":"PCS_10状态", "remark": "1在线,0掉线"}, + {"key": "0x102F", "datatype": "uint16", "alert": 1, "name":"PCS_01下发设置", "remark": "1故障,0正常"}, + {"key": "0x1030", "datatype": "uint16", "alert": 1, "name":"PCS_02下发设置", "remark": "1故障,0正常"}, + {"key": "0x1031", "datatype": "uint16", "alert": 1, "name":"PCS_03下发设置", "remark": "1故障,0正常"}, + {"key": "0x1032", "datatype": "uint16", "alert": 1, "name":"PCS_04下发设置", "remark": "1故障,0正常"}, + {"key": "0x1033", "datatype": "uint16", "alert": 1, "name":"PCS_05下发设置", "remark": "1故障,0正常"}, + {"key": "0x1034", "datatype": "uint16", "alert": 1, "name":"PCS_06下发设置", "remark": "1故障,0正常"}, + {"key": "0x1035", "datatype": "uint16", "alert": 1, "name":"PCS_07下发设置", "remark": "1故障,0正常"}, + {"key": "0x1036", "datatype": "uint16", "alert": 1, "name":"PCS_08下发设置", "remark": "1故障,0正常"}, + {"key": "0x1037", "datatype": "uint16", "alert": 1, "name":"PCS_09下发设置", "remark": "1故障,0正常"}, + {"key": "0x1038", "datatype": "uint16", "alert": 1, "name":"PCS_10下发设置", "remark": "1:故障,0正常"}, + {"key": "0x1039", "datatype": "uint16", "alert": 1, "name":"内部DSP通信故障", "remark": "1:故障,0正常"}, + {"key": "0x103A", "datatype": "uint16", "alert": 1, "name":"BMS CAN通信故障", "remark": "1:故障,0正常"}, + {"key": "0x103B", "datatype": "uint16", "alert": 1, "name":"下发设置失败", "remark": "1:故障,0正常"} ] }, "PCS_YC":{ "addr":[ - {"key": "0x0001", "datatype": "uint16", "remark": "所属主控号1~4"}, - {"key": "0x0002", "datatype": "uint16", "remark": "所属PCS号1~40"}, - {"key": "0x0003", "datatype": "uint32", "remark": "总充电量(1kWh)"}, - {"key": "0x0005", "datatype": "uint32", "remark": "总放电量(1kWh)"}, - {"key": "0x0007", "datatype": "int16", "remark": "散热器温度(1℃)"}, - {"key": "0x0008", "datatype": "int16", "remark": "内部温度(1℃)"}, - {"key": "0x0009", "datatype": "int16", "remark": "最大允许充电功率(0.1kW)"}, - {"key": "0x000A", "datatype": "int16", "remark": "最大允许放电功率(0.1kW)"}, - {"key": "0x000B", "datatype": "int16", "remark": "有功功率期望(1kWh)"}, - {"key": "0x000C", "datatype": "int16", "remark": "无功功率期望(1kVar)"}, - {"key": "0x000D", "datatype": "int16", "remark": "AB线电压(1V)"}, - {"key": "0x000E", "datatype": "int16", "remark": "BC线电压(1V)"}, - {"key": "0x000F", "datatype": "int16", "remark": "CA线电压(1V)"}, - {"key": "0x0010", "datatype": "int16", "remark": "A相电压(1V)"}, - {"key": "0x0011", "datatype": "int16", "remark": "B相电压(1V)"}, - {"key": "0x0012", "datatype": "int16", "remark": "C相电压(1V)"}, - {"key": "0x0013", "datatype": "int16", "remark": "A相频率(1Hz)"}, - {"key": "0x0014", "datatype": "int16", "remark": "B相频率(1Hz)"}, - {"key": "0x0015", "datatype": "int16", "remark": "C相频率(1Hz)"}, - {"key": "0x0016", "datatype": "int16", "remark": "A相功率因数(1)"}, - {"key": "0x0017", "datatype": "int16", "remark": "B相功率因数(1)"}, - {"key": "0x0018", "datatype": "int16", "remark": "C相功率因数(1)"}, - {"key": "0x0019", "datatype": "int16", "remark": "A相电流(1A)"}, - {"key": "0x001A", "datatype": "int16", "remark": "B相电流(1A)"}, - {"key": "0x001B", "datatype": "int16", "remark": "C相电流(1A)"}, - {"key": "0x001C", "datatype": "int16", "remark": "A相有功功率(1kW)"}, - {"key": "0x001D", "datatype": "int16", "remark": "B相有功功率(1kW)"}, - {"key": "0x001E", "datatype": "int16", "remark": "C相有功功率(1kW)"}, - {"key": "0x001F", "datatype": "int16", "remark": "A相无功功率(1kVar)"}, - {"key": "0x0020", "datatype": "int16", "remark": "B相无功功率(1kVar)"}, - {"key": "0x0021", "datatype": "int16", "remark": "C相无功功率(1kVar)"}, - {"key": "0x0022", "datatype": "int16", "remark": "A相视在功率(1kVA)"}, - {"key": "0x0023", "datatype": "int16", "remark": "B相视在功率(1kVA)"}, - {"key": "0x0024", "datatype": "int16", "remark": "C相视在功率(1kVA)"}, - {"key": "0x0025", "datatype": "int16", "remark": "三相总有功功率(1kW)"}, - {"key": "0x0026", "datatype": "int16", "remark": "三相总无功功率(1kVar)"}, - {"key": "0x0027", "datatype": "int16", "remark": "三相总视在功率(1kVA)"}, - {"key": "0x0028", "datatype": "int16", "remark": "三相总功率因数(1)"}, - {"key": "0x0029", "datatype": "int16", "remark": "直流功率(1kW)"}, - {"key": "0x002A", "datatype": "int16", "remark": "直流电压(1V)"}, - {"key": "0x002B", "datatype": "int16", "remark": "直流电流(1A)"}, - {"key": "0x002C", "datatype": "int16", "remark": "充电功率(1kW)"}, - {"key": "0x002D", "datatype": "int16", "remark": "放电功率(1kW)"}, - {"key": "0x002E", "datatype": "int16", "remark": "PF值(1)"}, - {"key": "0x002F", "datatype": "int16", "remark": "UV线/U相电网计量线电压(1V)"}, - {"key": "0x0030", "datatype": "int16", "remark": "VW线/V相电网计量线电压(1V)"}, - {"key": "0x0031", "datatype": "int16", "remark": "WU线/W相电网计量线电压(1V)"}, - {"key": "0x0032", "datatype": "int16", "remark": "U相电网计量电流(1A)"}, - {"key": "0x0033", "datatype": "int16", "remark": "V相电网计量电流(1A)"}, - {"key": "0x0034", "datatype": "int16", "remark": "W相电网计量电流(1A)"}, - {"key": "0x0035", "datatype": "int16", "remark": "正母线电压(1V)"}, - {"key": "0x0036", "datatype": "int16", "remark": "可用功率(1kVA)"}, - {"key": "0x0037", "datatype": "int16", "remark": "负母线电压(1V)"}, - {"key": "0x0038", "datatype": "int16", "remark": "A相IGBT温度(1℃)"}, - {"key": "0x0039", "datatype": "int16", "remark": "B相IGBT温度(1℃)"}, - {"key": "0x003A", "datatype": "int16", "remark": "C相IGBT温度(1℃)"}, - {"key": "0x003B", "datatype": "int16", "remark": "逆变侧AB线电压(1V)"}, - {"key": "0x003C", "datatype": "int16", "remark": "逆变侧BC线电压(1V)"}, - {"key": "0x003D", "datatype": "int16", "remark": "逆变侧CA线电压(1V)"}, - {"key": "0x003E", "datatype": "int16", "remark": "逆变侧A相电压(1V)"}, - {"key": "0x003F", "datatype": "int16", "remark": "逆变侧B相电压(1V)"}, - {"key": "0x0040", "datatype": "int16", "remark": "逆变侧C相电压(1V)"}, - {"key": "0x0041", "datatype": "int16", "remark": "逆变侧A相电流(1A)"}, - {"key": "0x0042", "datatype": "int16", "remark": "逆变侧B相电流(1A)"}, - {"key": "0x0043", "datatype": "int16", "remark": "逆变侧C相电流(1A)"}, - {"key": "0x0044", "datatype": "int16", "remark": "逆变侧A相电流直流分量(1A)"}, - {"key": "0x0045", "datatype": "int16", "remark": "逆变侧B相电流直流分量(1A)"}, - {"key": "0x0046", "datatype": "int16", "remark": "逆变侧C相电流直流分量(1A)"}, - {"key": "0x0047", "datatype": "int16", "remark": "离网频率(1Hz)"}, - {"key": "0x0048", "datatype": "int16", "remark": "A相负载量(1)"}, - {"key": "0x0049", "datatype": "int16", "remark": "B相负载量(1)"}, - {"key": "0x004A", "datatype": "int16", "remark": "C相负载量(1)"}, - {"key": "0x004B", "datatype": "int16", "remark": "总负载量(1)"}, - {"key": "0x004C", "datatype": "int16", "remark": "逆变侧AB线电压直流分量(1A)"}, - {"key": "0x004D", "datatype": "int16", "remark": "逆变侧BC线电压直流分量(1A)"}, - {"key": "0x004E", "datatype": "int16", "remark": "逆变侧CA线电压直流分量(1A)"}, - {"key": "0x004F", "datatype": "int16", "remark": "在线数量"} + {"key": "0x0001", "datatype": "uint16", "alert": 0, "name":"所属主控号", "remark": "1~4"}, + {"key": "0x0002", "datatype": "uint16", "alert": 0, "name":"所属PCS号", "remark": "1~40"}, + {"key": "0x0003", "datatype": "uint32", "alert": 0, "name":"总充电量", "remark": "(1kWh)"}, + {"key": "0x0005", "datatype": "uint32", "alert": 0, "name":"总放电量", "remark": "(1kWh)"}, + {"key": "0x0007", "datatype": "int16", "alert": 0, "name":"散热器温度", "remark": "(1℃)"}, + {"key": "0x0008", "datatype": "int16", "alert": 0, "name":"内部温度", "remark": "(1℃)"}, + {"key": "0x0009", "datatype": "int16", "alert": 0, "name":"最大允许充电功率", "remark": "(0.1kW)"}, + {"key": "0x000A", "datatype": "int16", "alert": 0, "name":"最大允许放电功率", "remark": "(0.1kW)"}, + {"key": "0x000B", "datatype": "int16", "alert": 0, "name":"有功功率期望", "remark": "(1kWh)"}, + {"key": "0x000C", "datatype": "int16", "alert": 0, "name":"无功功率期望", "remark": "(1kVar)"}, + {"key": "0x000D", "datatype": "int16", "alert": 0, "name":"AB线电压", "remark": "(1V)"}, + {"key": "0x000E", "datatype": "int16", "alert": 0, "name":"BC线电压", "remark": "(1V)"}, + {"key": "0x000F", "datatype": "int16", "alert": 0, "name":"CA线电压", "remark": "(1V)"}, + {"key": "0x0010", "datatype": "int16", "alert": 0, "name":"A相电压", "remark": "(1V)"}, + {"key": "0x0011", "datatype": "int16", "alert": 0, "name":"B相电压", "remark": "(1V)"}, + {"key": "0x0012", "datatype": "int16", "alert": 0, "name":"C相电压", "remark": "(1V)"}, + {"key": "0x0013", "datatype": "int16", "alert": 0, "name":"A相频率", "remark": "(1Hz)"}, + {"key": "0x0014", "datatype": "int16", "alert": 0, "name":"B相频率", "remark": "(1Hz)"}, + {"key": "0x0015", "datatype": "int16", "alert": 0, "name":"C相频率", "remark": "(1Hz)"}, + {"key": "0x0016", "datatype": "int16", "alert": 0, "name":"A相功率因数", "remark": "(1)"}, + {"key": "0x0017", "datatype": "int16", "alert": 0, "name":"B相功率因数", "remark": "(1)"}, + {"key": "0x0018", "datatype": "int16", "alert": 0, "name":"C相功率因数", "remark": "(1)"}, + {"key": "0x0019", "datatype": "int16", "alert": 0, "name":"A相电流", "remark": "(1A)"}, + {"key": "0x001A", "datatype": "int16", "alert": 0, "name":"B相电流", "remark": "(1A)"}, + {"key": "0x001B", "datatype": "int16", "alert": 0, "name":"C相电流", "remark": "(1A)"}, + {"key": "0x001C", "datatype": "int16", "alert": 0, "name":"A相有功功率", "remark": "(1kW)"}, + {"key": "0x001D", "datatype": "int16", "alert": 0, "name":"B相有功功率", "remark": "(1kW)"}, + {"key": "0x001E", "datatype": "int16", "alert": 0, "name":"C相有功功率", "remark": "(1kW)"}, + {"key": "0x001F", "datatype": "int16", "alert": 0, "name":"A相无功功率", "remark": "(1kVar)"}, + {"key": "0x0020", "datatype": "int16", "alert": 0, "name":"B相无功功率", "remark": "(1kVar)"}, + {"key": "0x0021", "datatype": "int16", "alert": 0, "name":"C相无功功率", "remark": "(1kVar)"}, + {"key": "0x0022", "datatype": "int16", "alert": 0, "name":"A相视在功率", "remark": "(1kVA)"}, + {"key": "0x0023", "datatype": "int16", "alert": 0, "name":"B相视在功率", "remark": "(1kVA)"}, + {"key": "0x0024", "datatype": "int16", "alert": 0, "name":"C相视在功率", "remark": "(1kVA)"}, + {"key": "0x0025", "datatype": "int16", "alert": 0, "name":"三相总有功功率", "remark": "(1kW)"}, + {"key": "0x0026", "datatype": "int16", "alert": 0, "name":"三相总无功功率", "remark": "(1kVar)"}, + {"key": "0x0027", "datatype": "int16", "alert": 0, "name":"三相总视在功率", "remark": "(1kVA)"}, + {"key": "0x0028", "datatype": "int16", "alert": 0, "name":"三相总功率因数", "remark": "(1)"}, + {"key": "0x0029", "datatype": "int16", "alert": 0, "name":"直流功率", "remark": "(1kW)"}, + {"key": "0x002A", "datatype": "int16", "alert": 0, "name":"直流电压", "remark": "(1V)"}, + {"key": "0x002B", "datatype": "int16", "alert": 0, "name":"直流电流", "remark": "(1A)"}, + {"key": "0x002C", "datatype": "int16", "alert": 0, "name":"充电功率", "remark": "(1kW)"}, + {"key": "0x002D", "datatype": "int16", "alert": 0, "name":"放电功率", "remark": "(1kW)"}, + {"key": "0x002E", "datatype": "int16", "alert": 0, "name":"PF值", "remark": "(1)"}, + {"key": "0x002F", "datatype": "int16", "alert": 0, "name":"UV线/U相电网计量线电压", "remark": "(1V)"}, + {"key": "0x0030", "datatype": "int16", "alert": 0, "name":"VW线/V相电网计量线电压", "remark": "(1V)"}, + {"key": "0x0031", "datatype": "int16", "alert": 0, "name":"WU线/W相电网计量线电压", "remark": "(1V)"}, + {"key": "0x0032", "datatype": "int16", "alert": 0, "name":"U相电网计量电流", "remark": "(1A)"}, + {"key": "0x0033", "datatype": "int16", "alert": 0, "name":"V相电网计量电流", "remark": "(1A)"}, + {"key": "0x0034", "datatype": "int16", "alert": 0, "name":"W相电网计量电流", "remark": "(1A)"}, + {"key": "0x0035", "datatype": "int16", "alert": 0, "name":"正母线电压", "remark": "(1V)"}, + {"key": "0x0036", "datatype": "int16", "alert": 0, "name":"可用功率", "remark": "(1kVA)"}, + {"key": "0x0037", "datatype": "int16", "alert": 0, "name":"负母线电压", "remark": "(1V)"}, + {"key": "0x0038", "datatype": "int16", "alert": 0, "name":"A相IGBT温度", "remark": "(1℃)"}, + {"key": "0x0039", "datatype": "int16", "alert": 0, "name":"B相IGBT温度", "remark": "(1℃)"}, + {"key": "0x003A", "datatype": "int16", "alert": 0, "name":"C相IGBT温度", "remark": "(1℃)"}, + {"key": "0x003B", "datatype": "int16", "alert": 0, "name":"逆变侧AB线电压", "remark": "(1V)"}, + {"key": "0x003C", "datatype": "int16", "alert": 0, "name":"逆变侧BC线电压", "remark": "(1V)"}, + {"key": "0x003D", "datatype": "int16", "alert": 0, "name":"逆变侧CA线电压", "remark": "(1V)"}, + {"key": "0x003E", "datatype": "int16", "alert": 0, "name":"逆变侧A相电压", "remark": "(1V)"}, + {"key": "0x003F", "datatype": "int16", "alert": 0, "name":"逆变侧B相电压", "remark": "(1V)"}, + {"key": "0x0040", "datatype": "int16", "alert": 0, "name":"逆变侧C相电压", "remark": "(1V)"}, + {"key": "0x0041", "datatype": "int16", "alert": 0, "name":"逆变侧A相电流", "remark": "(1A)"}, + {"key": "0x0042", "datatype": "int16", "alert": 0, "name":"逆变侧B相电流", "remark": "(1A)"}, + {"key": "0x0043", "datatype": "int16", "alert": 0, "name":"逆变侧C相电流", "remark": "(1A)"}, + {"key": "0x0044", "datatype": "int16", "alert": 0, "name":"逆变侧A相电流直流分量", "remark": "(1A)"}, + {"key": "0x0045", "datatype": "int16", "alert": 0, "name":"逆变侧B相电流直流分量", "remark": "(1A)"}, + {"key": "0x0046", "datatype": "int16", "alert": 0, "name":"逆变侧C相电流直流分量", "remark": "(1A)"}, + {"key": "0x0047", "datatype": "int16", "alert": 0, "name":"离网频率", "remark": "(1Hz)"}, + {"key": "0x0048", "datatype": "int16", "alert": 0, "name":"A相负载量", "remark": "(1)"}, + {"key": "0x0049", "datatype": "int16", "alert": 0, "name":"B相负载量", "remark": "(1)"}, + {"key": "0x004A", "datatype": "int16", "alert": 0, "name":"C相负载量", "remark": "(1)"}, + {"key": "0x004B", "datatype": "int16", "alert": 0, "name":"总负载量", "remark": "(1)"}, + {"key": "0x004C", "datatype": "int16", "alert": 0, "name":"逆变侧AB线电压直流分量", "remark": "(1A)"}, + {"key": "0x004D", "datatype": "int16", "alert": 0, "name":"逆变侧BC线电压直流分量", "remark": "(1A)"}, + {"key": "0x004E", "datatype": "int16", "alert": 0, "name":"逆变侧CA线电压直流分量", "remark": "(1A)"}, + {"key": "0x004F", "datatype": "int16", "alert": 0, "name":"在线数量", "remark": ""}, + {"key": "0x0050", "datatype": "int16", "alert": 0, "name":"逆变数量", "remark": ""} ] }, "PCS_YX":{ "addr":[ - {"key": "0x1001", "datatype": "uint16", "remark": "所属主控号1~4"}, - {"key": "0x1002", "datatype": "uint16", "remark": "所属PCS号1~40"}, - {"key": "0x1003", "datatype": "uint16", "remark": "故障状态1故障,0正常"}, - {"key": "0x1004", "datatype": "uint16", "remark": "告警状态1告警,0正常"}, - {"key": "0x1005", "datatype": "uint16", "remark": "设备在线1在线,0无效"}, - {"key": "0x1006", "datatype": "uint16", "remark": "禁止充电1禁止,0无效"}, - {"key": "0x1007", "datatype": "uint16", "remark": "禁止放电1禁止,0无效"}, - {"key": "0x1008", "datatype": "uint16", "remark": "运行状态1开机,0关机"}, - {"key": "0x1009", "datatype": "uint16", "remark": "充放状态0:待机,1:充电,2:放电,3:搁置"}, - {"key": "0x100A", "datatype": "uint16", "remark": "电网状态1离网,0并网"}, - {"key": "0x100B", "datatype": "uint16", "remark": "逆变供电0禁止,1使能"}, - {"key": "0x100C", "datatype": "uint16", "remark": "缓启动完成0禁止,1使能"}, - {"key": "0x100D", "datatype": "uint16", "remark": "主机标志0禁止,1使能"}, - {"key": "0x100E", "datatype": "uint16", "remark": "并离网状态0:并网, 1:离网"}, - {"key": "0x100F", "datatype": "uint16", "remark": "同步请求标志0:无效;1:动作"}, - {"key": "0x1010", "datatype": "uint16", "remark": "绝缘故障1:故障,0正常"}, - {"key": "0x1011", "datatype": "uint16", "remark": "漏电保护1:故障,0正常"}, - {"key": "0x1012", "datatype": "uint16", "remark": "直流过压1:故障,0正常"}, - {"key": "0x1013", "datatype": "uint16", "remark": "市电幅值异常1:故障,0正常"}, - {"key": "0x1014", "datatype": "uint16", "remark": "市电相序异常1:故障,0正常"}, - {"key": "0x1015", "datatype": "uint16", "remark": "温度开关异常1:故障,0正常"}, - {"key": "0x1016", "datatype": "uint16", "remark": "市电频率异常1:故障,0正常"}, - {"key": "0x1017", "datatype": "uint16", "remark": "IGBT过温1:故障,0正常"}, - {"key": "0x1018", "datatype": "uint16", "remark": "交流接地故障1:故障,0正常"}, - {"key": "0x1019", "datatype": "uint16", "remark": "逆变过流异常1:故障,0正常"}, - {"key": "0x101A", "datatype": "uint16", "remark": "直流缓起故障1:故障,0正常"}, - {"key": "0x101B", "datatype": "uint16", "remark": "直流主继电器故障1:故障,0正常"}, - {"key": "0x101C", "datatype": "uint16", "remark": "风机异常1:故障,0正常"}, - {"key": "0x101D", "datatype": "uint16", "remark": "主接触器异常1:故障,0正常"}, - {"key": "0x101E", "datatype": "uint16", "remark": "均浮充切换超时1:故障,0正常"}, - {"key": "0x101F", "datatype": "uint16", "remark": "硬件故障1:故障,0正常"}, - {"key": "0x1020", "datatype": "uint16", "remark": "机内过温1:故障,0正常"}, - {"key": "0x1021", "datatype": "uint16", "remark": "软启动故障1:故障,0正常"}, - {"key": "0x1022", "datatype": "uint16", "remark": "触摸屏通讯故障1:故障,0正常"}, - {"key": "0x1023", "datatype": "uint16", "remark": "防雷器故障1:故障,0正常"}, - {"key": "0x1024", "datatype": "uint16", "remark": "急停故障1:故障,0正常"}, - {"key": "0x1025", "datatype": "uint16", "remark": "BMS系统故障1:故障,0正常"}, - {"key": "0x1026", "datatype": "uint16", "remark": "BMS通讯故障1:故障,0正常"}, - {"key": "0x1027", "datatype": "uint16", "remark": "BMS干接点通讯故障1:故障,0正常"}, - {"key": "0x1028", "datatype": "uint16", "remark": "远程通讯故障1:故障,0正常"}, - {"key": "0x1029", "datatype": "uint16", "remark": "门禁告警1:故障,0正常"}, - {"key": "0x102A", "datatype": "uint16", "remark": "锁相异常1:故障,0正常"}, - {"key": "0x102B", "datatype": "uint16", "remark": "IGBT过温告警1:故障,0正常"}, - {"key": "0x102C", "datatype": "uint16", "remark": "硬件过流保护1:故障,0正常"}, - {"key": "0x102D", "datatype": "uint16", "remark": "驱动故障1:故障,0正常"}, - {"key": "0x102E", "datatype": "uint16", "remark": "ID冲突1:故障,0正常"}, - {"key": "0x102F", "datatype": "uint16", "remark": "电池过压1:故障,0正常"}, - {"key": "0x1030", "datatype": "uint16", "remark": "电池欠压1:故障,0正常"}, - {"key": "0x1031", "datatype": "uint16", "remark": "直流过流保护1:故障,0正常"}, - {"key": "0x1032", "datatype": "uint16", "remark": "输出电压异常1:故障,0正常"}, - {"key": "0x1033", "datatype": "uint16", "remark": "离网输出电压不符合1:故障,0正常"}, - {"key": "0x1034", "datatype": "uint16", "remark": "输出过载保护1:故障,0正常"}, - {"key": "0x1035", "datatype": "uint16", "remark": "输出短路保护1:故障,0正常"}, - {"key": "0x1036", "datatype": "uint16", "remark": "并机通信异常1:故障,0正常"}, - {"key": "0x1037", "datatype": "uint16", "remark": "电池保险异常1:故障,0正常"}, - {"key": "0x1038", "datatype": "uint16", "remark": "电池重载低压1:故障,0正常"}, - {"key": "0x1039", "datatype": "uint16", "remark": "电池低压告警1:故障,0正常"}, - {"key": "0x103A", "datatype": "uint16", "remark": "一拖二压差过大1:故障,0正常"}, - {"key": "0x103B", "datatype": "uint16", "remark": "电池反接故障1:故障,0正常"}, - {"key": "0x103C", "datatype": "uint16", "remark": "电池电压异常1:故障,0正常"}, - {"key": "0x103D", "datatype": "uint16", "remark": "过载告警1:故障,0正常"}, - {"key": "0x103E", "datatype": "uint16", "remark": "外部接触器异常1:故障,0正常"}, - {"key": "0x103F", "datatype": "uint16", "remark": "IGBT温度传感器异常1:故障,0正常"}, - {"key": "0x1040", "datatype": "uint16", "remark": "整机温度传感器异常1:故障,0正常"}, - {"key": "0x1041", "datatype": "uint16", "remark": "市电CT异常1:故障,0正常"}, - {"key": "0x1042", "datatype": "uint16", "remark": "逆变电流三相不平衡1:故障,0正常"}, - {"key": "0x1043", "datatype": "uint16", "remark": "逆变电流直流分量异常1:故障,0正常"}, - {"key": "0x1044", "datatype": "uint16", "remark": "母线不平衡1:故障,0正常"}, - {"key": "0x1045", "datatype": "uint16", "remark": "逆变电压直流分量异常1:故障,0正常"}, - {"key": "0x1046", "datatype": "uint16", "remark": "主接触器控制异常1:故障,0正常"}, - {"key": "0x1047", "datatype": "uint16", "remark": "逆变电压控制异常1:故障,0正常"}, - {"key": "0x1048", "datatype": "uint16", "remark": "直流霍尔异常1:故障,0正常"}, - {"key": "0x1049", "datatype": "uint16", "remark": "电池单体过压1:故障,0正常"}, - {"key": "0x104A", "datatype": "uint16", "remark": "电池单体欠压1:故障,0正常"}, - {"key": "0x104B", "datatype": "uint16", "remark": "电网过压1:故障,0正常"}, - {"key": "0x104C", "datatype": "uint16", "remark": "电网欠压1:故障,0正常"}, - {"key": "0x104D", "datatype": "uint16", "remark": "电网过频1:故障,0正常"}, - {"key": "0x104E", "datatype": "uint16", "remark": "电网欠频1:故障,0正常"}, - {"key": "0x104F", "datatype": "uint16", "remark": "市电不平衡1:故障,0正常"}, - {"key": "0x1050", "datatype": "uint16", "remark": "参数设置不匹配1:故障,0正常"}, - {"key": "0x1051", "datatype": "uint16", "remark": "SPI通信异常1:故障,0正常"}, - {"key": "0x1052", "datatype": "uint16", "remark": "SCI通信异常1:故障,0正常"}, - {"key": "0x1053", "datatype": "uint16", "remark": "IIC通信异常1:故障,0正常"}, - {"key": "0x1054", "datatype": "uint16", "remark": "Xintf通信异常1:故障,0正常"}, - {"key": "0x1055", "datatype": "uint16", "remark": "零偏校准异常1:故障,0正常"}, - {"key": "0x1056", "datatype": "uint16", "remark": "烟雾告警1:故障,0正常"}, - {"key": "0x1057", "datatype": "uint16", "remark": "无电池组故障1异常,0正常"}, - {"key": "0x1058", "datatype": "uint16", "remark": "环温降频1异常,0正常"}, - {"key": "0x1059", "datatype": "uint16", "remark": "交流过载1异常,0正常"}, - {"key": "0x105A", "datatype": "uint16", "remark": "采样异常1异常,0正常"}, - {"key": "0x105B", "datatype": "uint16", "remark": "24V辅源故障1异常,0正常"}, - {"key": "0x105C", "datatype": "uint16", "remark": "直流欠压异常1异常,0正常"}, - {"key": "0x105D", "datatype": "uint16", "remark": "散热器过温1异常,0正常"}, - {"key": "0x105E", "datatype": "uint16", "remark": "CAN配置故障1异常,0正常"}, - {"key": "0x105F", "datatype": "uint16", "remark": "3.3V辅源故障1异常,0正常"}, - {"key": "0x1060", "datatype": "uint16", "remark": "环境过温1异常,0正常"}, - {"key": "0x1061", "datatype": "uint16", "remark": "A相IGBT逆变过流1异常,0正常"}, - {"key": "0x1062", "datatype": "uint16", "remark": "B相IGBT逆变过流1异常,0正常"} + {"key": "0x1001", "datatype": "uint16", "alert": 0, "name":"所属主控号", "remark": "1~4"}, + {"key": "0x1002", "datatype": "uint16", "alert": 0, "name":"所属PCS号", "remark": "1~40"}, + {"key": "0x1003", "datatype": "uint16", "alert": 0, "name":"故障状态", "remark": "1故障,0正常"}, + {"key": "0x1004", "datatype": "uint16", "alert": 0, "name":"告警状态", "remark": "1告警,0正常"}, + {"key": "0x1005", "datatype": "uint16", "alert": 0, "name":"设备在线", "remark": "1在线,0无效"}, + {"key": "0x1006", "datatype": "uint16", "alert": 0, "name":"禁止充电", "remark": "1禁止,0无效"}, + {"key": "0x1007", "datatype": "uint16", "alert": 0, "name":"禁止放电", "remark": "1禁止,0无效"}, + {"key": "0x1008", "datatype": "uint16", "alert": 0, "name":"运行状态", "remark": "1开机,0关机"}, + {"key": "0x1009", "datatype": "uint16", "alert": 0, "name":"充放状态", "remark": "0:待机,1:充电,2:放电,3:搁置"}, + {"key": "0x100A", "datatype": "uint16", "alert": 0, "name":"电网状态", "remark": "1离网,0并网"}, + {"key": "0x100B", "datatype": "uint16", "alert": 0, "name":"逆变供电", "remark": "0禁止,1使能"}, + {"key": "0x100C", "datatype": "uint16", "alert": 0, "name":"缓启动完成", "remark": "0禁止,1使能"}, + {"key": "0x100D", "datatype": "uint16", "alert": 0, "name":"主机标志", "remark": "0禁止,1使能"}, + {"key": "0x100E", "datatype": "uint16", "alert": 0, "name":"并离网状态", "remark": "0:并网, 1:离网"}, + {"key": "0x100F", "datatype": "uint16", "alert": 0, "name":"同步请求标志", "remark": "0:无效;1:动作"}, + {"key": "0x1010", "datatype": "uint16", "alert": 1, "name":"绝缘故障", "remark": "1:故障,0正常"}, + {"key": "0x1011", "datatype": "uint16", "alert": 1, "name":"漏电保护", "remark": "1:故障,0正常"}, + {"key": "0x1012", "datatype": "uint16", "alert": 1, "name":"直流过压", "remark": "1:故障,0正常"}, + {"key": "0x1013", "datatype": "uint16", "alert": 1, "name":"市电幅值异常", "remark": "1:故障,0正常"}, + {"key": "0x1014", "datatype": "uint16", "alert": 1, "name":"市电相序异常", "remark": "1:故障,0正常"}, + {"key": "0x1015", "datatype": "uint16", "alert": 1, "name":"温度开关异常", "remark": "1:故障,0正常"}, + {"key": "0x1016", "datatype": "uint16", "alert": 1, "name":"市电频率异常", "remark": "1:故障,0正常"}, + {"key": "0x1017", "datatype": "uint16", "alert": 1, "name":"IGBT过温", "remark": "1:故障,0正常"}, + {"key": "0x1018", "datatype": "uint16", "alert": 1, "name":"交流接地故障", "remark": "1:故障,0正常"}, + {"key": "0x1019", "datatype": "uint16", "alert": 1, "name":"逆变过流异常", "remark": "1:故障,0正常"}, + {"key": "0x101A", "datatype": "uint16", "alert": 1, "name":"直流缓起故障", "remark": "1:故障,0正常"}, + {"key": "0x101B", "datatype": "uint16", "alert": 1, "name":"直流主继电器故障", "remark": "1:故障,0正常"}, + {"key": "0x101C", "datatype": "uint16", "alert": 1, "name":"风机异常", "remark": "1:故障,0正常"}, + {"key": "0x101D", "datatype": "uint16", "alert": 1, "name":"主接触器异常", "remark": "1:故障,0正常"}, + {"key": "0x101E", "datatype": "uint16", "alert": 1, "name":"均浮充切换超时", "remark": "1:故障,0正常"}, + {"key": "0x101F", "datatype": "uint16", "alert": 1, "name":"硬件故障", "remark": "1:故障,0正常"}, + {"key": "0x1020", "datatype": "uint16", "alert": 1, "name":"机内过温", "remark": "1:故障,0正常"}, + {"key": "0x1021", "datatype": "uint16", "alert": 1, "name":"软启动故障", "remark": "1:故障,0正常"}, + {"key": "0x1022", "datatype": "uint16", "alert": 1, "name":"触摸屏通讯故障", "remark": "1:故障,0正常"}, + {"key": "0x1023", "datatype": "uint16", "alert": 1, "name":"防雷器故障", "remark": "1:故障,0正常"}, + {"key": "0x1024", "datatype": "uint16", "alert": 1, "name":"急停故障", "remark": "1:故障,0正常"}, + {"key": "0x1025", "datatype": "uint16", "alert": 1, "name":"BMS系统故障", "remark": "1:故障,0正常"}, + {"key": "0x1026", "datatype": "uint16", "alert": 1, "name":"BMS通讯故障", "remark": "1:故障,0正常"}, + {"key": "0x1027", "datatype": "uint16", "alert": 1, "name":"BMS干接点通讯故障", "remark": "1:故障,0正常"}, + {"key": "0x1028", "datatype": "uint16", "alert": 1, "name":"远程通讯故障", "remark": "1:故障,0正常"}, + {"key": "0x1029", "datatype": "uint16", "alert": 1, "name":"门禁告警", "remark": "1:故障,0正常"}, + {"key": "0x102A", "datatype": "uint16", "alert": 1, "name":"锁相异常", "remark": "1:故障,0正常"}, + {"key": "0x102B", "datatype": "uint16", "alert": 1, "name":"IGBT过温告警", "remark": "1:故障,0正常"}, + {"key": "0x102C", "datatype": "uint16", "alert": 1, "name":"硬件过流保护", "remark": "1:故障,0正常"}, + {"key": "0x102D", "datatype": "uint16", "alert": 1, "name":"驱动故障", "remark": "1:故障,0正常"}, + {"key": "0x102E", "datatype": "uint16", "alert": 1, "name":"ID冲突", "remark": "1:故障,0正常"}, + {"key": "0x102F", "datatype": "uint16", "alert": 1, "name":"电池过压", "remark": "1:故障,0正常"}, + {"key": "0x1030", "datatype": "uint16", "alert": 1, "name":"电池欠压", "remark": "1:故障,0正常"}, + {"key": "0x1031", "datatype": "uint16", "alert": 1, "name":"直流过流保护", "remark": "1:故障,0正常"}, + {"key": "0x1032", "datatype": "uint16", "alert": 1, "name":"输出电压异常", "remark": "1:故障,0正常"}, + {"key": "0x1033", "datatype": "uint16", "alert": 1, "name":"离网输出电压不符合", "remark": "1:故障,0正常"}, + {"key": "0x1034", "datatype": "uint16", "alert": 1, "name":"输出过载保护", "remark": "1:故障,0正常"}, + {"key": "0x1035", "datatype": "uint16", "alert": 1, "name":"输出短路保护", "remark": "1:故障,0正常"}, + {"key": "0x1036", "datatype": "uint16", "alert": 1, "name":"并机通信异常", "remark": "1:故障,0正常"}, + {"key": "0x1037", "datatype": "uint16", "alert": 1, "name":"电池保险异常", "remark": "1:故障,0正常"}, + {"key": "0x1038", "datatype": "uint16", "alert": 1, "name":"电池重载低压", "remark": "1:故障,0正常"}, + {"key": "0x1039", "datatype": "uint16", "alert": 1, "name":"电池低压告警", "remark": "1:故障,0正常"}, + {"key": "0x103A", "datatype": "uint16", "alert": 1, "name":"一拖二压差过大", "remark": "1:故障,0正常"}, + {"key": "0x103B", "datatype": "uint16", "alert": 1, "name":"电池反接故障", "remark": "1:故障,0正常"}, + {"key": "0x103C", "datatype": "uint16", "alert": 1, "name":"电池电压异常", "remark": "1:故障,0正常"}, + {"key": "0x103D", "datatype": "uint16", "alert": 1, "name":"过载告警", "remark": "1:故障,0正常"}, + {"key": "0x103E", "datatype": "uint16", "alert": 1, "name":"外部接触器异常", "remark": "1:故障,0正常"}, + {"key": "0x103F", "datatype": "uint16", "alert": 1, "name":"IGBT温度传感器异常", "remark": "1:故障,0正常"}, + {"key": "0x1040", "datatype": "uint16", "alert": 1, "name":"整机温度传感器异常", "remark": "1:故障,0正常"}, + {"key": "0x1041", "datatype": "uint16", "alert": 1, "name":"市电CT异常", "remark": "1:故障,0正常"}, + {"key": "0x1042", "datatype": "uint16", "alert": 1, "name":"逆变电流三相不平衡", "remark": "1:故障,0正常"}, + {"key": "0x1043", "datatype": "uint16", "alert": 1, "name":"逆变电流直流分量异常", "remark": "1:故障,0正常"}, + {"key": "0x1044", "datatype": "uint16", "alert": 1, "name":"母线不平衡", "remark": "1:故障,0正常"}, + {"key": "0x1045", "datatype": "uint16", "alert": 1, "name":"逆变电压直流分量异常", "remark": "1:故障,0正常"}, + {"key": "0x1046", "datatype": "uint16", "alert": 1, "name":"主接触器控制异常", "remark": "1:故障,0正常"}, + {"key": "0x1047", "datatype": "uint16", "alert": 1, "name":"逆变电压控制异常", "remark": "1:故障,0正常"}, + {"key": "0x1048", "datatype": "uint16", "alert": 1, "name":"直流霍尔异常", "remark": "1:故障,0正常"}, + {"key": "0x1049", "datatype": "uint16", "alert": 1, "name":"电池单体过压", "remark": "1:故障,0正常"}, + {"key": "0x104A", "datatype": "uint16", "alert": 1, "name":"电池单体欠压", "remark": "1:故障,0正常"}, + {"key": "0x104B", "datatype": "uint16", "alert": 1, "name":"电网过压", "remark": "1:故障,0正常"}, + {"key": "0x104C", "datatype": "uint16", "alert": 1, "name":"电网欠压", "remark": "1:故障,0正常"}, + {"key": "0x104D", "datatype": "uint16", "alert": 1, "name":"电网过频", "remark": "1:故障,0正常"}, + {"key": "0x104E", "datatype": "uint16", "alert": 1, "name":"电网欠频", "remark": "1:故障,0正常"}, + {"key": "0x104F", "datatype": "uint16", "alert": 1, "name":"市电不平衡", "remark": "1:故障,0正常"}, + {"key": "0x1050", "datatype": "uint16", "alert": 1, "name":"参数设置不匹配", "remark": "1:故障,0正常"}, + {"key": "0x1051", "datatype": "uint16", "alert": 1, "name":"SPI通信异常", "remark": "1:故障,0正常"}, + {"key": "0x1052", "datatype": "uint16", "alert": 1, "name":"SCI通信异常", "remark": "1:故障,0正常"}, + {"key": "0x1053", "datatype": "uint16", "alert": 1, "name":"IIC通信异常", "remark": "1:故障,0正常"}, + {"key": "0x1054", "datatype": "uint16", "alert": 1, "name":"Xintf通信异常", "remark": "1:故障,0正常"}, + {"key": "0x1055", "datatype": "uint16", "alert": 1, "name":"零偏校准异常", "remark": "1:故障,0正常"}, + {"key": "0x1056", "datatype": "uint16", "alert": 1, "name":"烟雾告警", "remark": "1:故障,0正常"}, + {"key": "0x1057", "datatype": "uint16", "alert": 1, "name":"无电池组故障", "remark": "1异常,0正常"}, + {"key": "0x1058", "datatype": "uint16", "alert": 1, "name":"环温降频", "remark": "1异常,0正常"}, + {"key": "0x1059", "datatype": "uint16", "alert": 1, "name":"交流过载", "remark": "1异常,0正常"}, + {"key": "0x105A", "datatype": "uint16", "alert": 1, "name":"采样异常", "remark": "1异常,0正常"}, + {"key": "0x105B", "datatype": "uint16", "alert": 1, "name":"24V辅源故障", "remark": "1异常,0正常"}, + {"key": "0x105C", "datatype": "uint16", "alert": 1, "name":"直流欠压异常", "remark": "1异常,0正常"}, + {"key": "0x105D", "datatype": "uint16", "alert": 1, "name":"散热器过温", "remark": "1异常,0正常"}, + {"key": "0x105E", "datatype": "uint16", "alert": 1, "name":"CAN配置故障", "remark": "1异常,0正常"}, + {"key": "0x105F", "datatype": "uint16", "alert": 1, "name":"3.3V辅源故障", "remark": "1异常,0正常"}, + {"key": "0x1060", "datatype": "uint16", "alert": 1, "name":"环境过温", "remark": "1异常,0正常"}, + {"key": "0x1061", "datatype": "uint16", "alert": 1, "name":"A相IGBT逆变过流", "remark": "1异常,0正常"}, + {"key": "0x1062", "datatype": "uint16", "alert": 1, "name":"B相IGBT逆变过流", "remark": "1异常,0正常"}, + {"key": "0x1063", "datatype": "uint16", "alert": 1, "name":"C相IGBT逆变过流", "remark": "1异常,0正常"} ] }, "BMS_YC":{ "addr":[ - {"key": "0x0001", "datatype": "uint16", "remark": "SOC(0.1)"}, - {"key": "0x0002", "datatype": "uint16", "remark": "SOH(0.1)"}, - {"key": "0x0003", "datatype": "uint32", "remark": "电压(0.1V)"}, - {"key": "0x0005", "datatype": "int32", "remark": "电流(0.1A)"}, - {"key": "0x0007", "datatype": "uint32", "remark": "可充电量(1kWh)"}, - {"key": "0x0009", "datatype": "uint32", "remark": "可放电量(1kWh)"}, - {"key": "0x000B", "datatype": "uint32", "remark": "单次可充电量(1kWh)"}, - {"key": "0x000D", "datatype": "uint32", "remark": "单次可放电量(1kWh)"}, - {"key": "0x000F", "datatype": "int32", "remark": "堆功率(1kW)"}, - {"key": "0x0011", "datatype": "uint32", "remark": "充电量累加(1kWh)"}, - {"key": "0x0013", "datatype": "uint32", "remark": "放电量累加(1kWh)"}, - {"key": "0x0015", "datatype": "uint16", "remark": "簇最大SOC(0.1)"}, - {"key": "0x0016", "datatype": "uint16", "remark": "簇最小SOC(0.1)"}, - {"key": "0x0017", "datatype": "uint16", "remark": "簇最大SOC号"}, - {"key": "0x0018", "datatype": "uint16", "remark": "簇最小SOC号"}, - {"key": "0x0019", "datatype": "uint16", "remark": "簇SOC差值(0.1)"}, - {"key": "0x001A", "datatype": "uint16", "remark": "簇最大电压(0.1V)"}, - {"key": "0x001B", "datatype": "uint16", "remark": "簇最小电压(0.1V)"}, - {"key": "0x001C", "datatype": "uint16", "remark": "簇最大电压号"}, - {"key": "0x001D", "datatype": "uint16", "remark": "簇最小电压号"}, - {"key": "0x001E", "datatype": "uint16", "remark": "簇电压差值(0.1V)"}, - {"key": "0x001F", "datatype": "uint16", "remark": "单体最大电压簇号"}, - {"key": "0x0020", "datatype": "uint16", "remark": "单体最大电压节号"}, - {"key": "0x0021", "datatype": "uint16", "remark": "单体最大电压(mV)"}, - {"key": "0x0022", "datatype": "uint16", "remark": "单体最小电压簇号"}, - {"key": "0x0023", "datatype": "uint16", "remark": "单体最小电压节号"}, - {"key": "0x0024", "datatype": "uint16", "remark": "单体最小电压(mV)"}, - {"key": "0x0025", "datatype": "uint16", "remark": "单体平均电压(mV)"}, - {"key": "0x0026", "datatype": "uint16", "remark": "单体电压差(mV)"}, - {"key": "0x0027", "datatype": "uint16", "remark": "单体最大温度簇号"}, - {"key": "0x0028", "datatype": "uint16", "remark": "单体最大温度节号"}, - {"key": "0x0029", "datatype": "int16", "remark": "单体最大温度(0.1℃)"}, - {"key": "0x002A", "datatype": "uint16", "remark": "单体最小温度簇号"}, - {"key": "0x002B", "datatype": "uint16", "remark": "单体最小温度节号"}, - {"key": "0x002C", "datatype": "int16", "remark": "单体最小温度(0.1℃)"}, - {"key": "0x002D", "datatype": "int16", "remark": "单体平均温度(0.1℃)"}, - {"key": "0x002E", "datatype": "int16", "remark": "单体温度差(0.1℃)"}, - {"key": "0x002F", "datatype": "uint16", "remark": "最大内阻簇号"}, - {"key": "0x0030", "datatype": "uint16", "remark": "最大内阻节号"}, - {"key": "0x0031", "datatype": "uint16", "remark": "最大内阻(mΩ)"}, - {"key": "0x0032", "datatype": "uint16", "remark": "最小内阻簇号"}, - {"key": "0x0033", "datatype": "uint16", "remark": "最小内阻节号"}, - {"key": "0x0034", "datatype": "uint16", "remark": "最小内阻(mΩ)"}, - {"key": "0x0035", "datatype": "uint16", "remark": "单体平均内阻(mΩ)"}, - {"key": "0x0036", "datatype": "uint16", "remark": "单体内阻差(mΩ)"}, - {"key": "0x0037", "datatype": "uint16", "remark": "单体最大SOH簇号"}, - {"key": "0x0038", "datatype": "uint16", "remark": "单体最大SOH节号"}, - {"key": "0x0039", "datatype": "uint16", "remark": "单体最大SOH(0.001)"}, - {"key": "0x003A", "datatype": "uint16", "remark": "单体最小SOH簇号"}, - {"key": "0x003B", "datatype": "uint16", "remark": "单体最小SOH节号"}, - {"key": "0x003C", "datatype": "uint16", "remark": "单体最小SOH(0.001)"}, - {"key": "0x003D", "datatype": "uint16", "remark": "单体最大SOc簇号"}, - {"key": "0x003E", "datatype": "uint16", "remark": "单体最大SOc节号"}, - {"key": "0x0040", "datatype": "uint16", "remark": "单体最大Soc(0.001)"}, - {"key": "0x0041", "datatype": "uint16", "remark": "单体最小SOc簇号"}, - {"key": "0x0042", "datatype": "uint16", "remark": "单体最小SOc节号"}, - {"key": "0x0043", "datatype": "uint16", "remark": "单体最小SOc(0.001)"}, - {"key": "0x0043", "datatype": "uint32", "remark": "系统剩余最大可充电功率(1KW)"}, - {"key": "0x0045", "datatype": "uint32", "remark": "系统剩余最大可放电功率(1KW)"}, - {"key": "0x0047", "datatype": "uint16", "remark": "可充电状态"}, - {"key": "0x0048", "datatype": "uint16", "remark": "可放电状态"}, - {"key": "0x0049", "datatype": "uint16", "remark": "运行状态"} + {"key": "0x0001", "datatype": "uint16", "alert": 0, "name":"SOC", "remark": "(0.1)"}, + {"key": "0x0002", "datatype": "uint16", "alert": 0, "name":"SOH", "remark": "(0.1)"}, + {"key": "0x0003", "datatype": "uint32", "alert": 0, "name":"电压", "remark": "(0.1V)"}, + {"key": "0x0005", "datatype": "int32", "alert": 0, "name":"电流", "remark": "(0.1A)"}, + {"key": "0x0007", "datatype": "uint32", "alert": 0, "name":"可充电量", "remark": "(1kWh)"}, + {"key": "0x0009", "datatype": "uint32", "alert": 0, "name":"可放电量", "remark": "(1kWh)"}, + {"key": "0x000B", "datatype": "uint32", "alert": 0, "name":"单次可充电量", "remark": "(1kWh)"}, + {"key": "0x000D", "datatype": "uint32", "alert": 0, "name":"单次可放电量", "remark": "(1kWh)"}, + {"key": "0x000F", "datatype": "int32", "alert": 0, "name":"堆功率", "remark": "(1kW)"}, + {"key": "0x0011", "datatype": "uint32", "alert": 0, "name":"充电量累加", "remark": "(1kWh)"}, + {"key": "0x0013", "datatype": "uint32", "alert": 0, "name":"放电量累加", "remark": "(1kWh)"}, + {"key": "0x0015", "datatype": "uint16", "alert": 0, "name":"簇最大SOC", "remark": "(0.1)"}, + {"key": "0x0016", "datatype": "uint16", "alert": 0, "name":"簇最小SOC", "remark": "(0.1)"}, + {"key": "0x0017", "datatype": "uint16", "alert": 0, "name":"簇最大SOC号", "remark": ""}, + {"key": "0x0018", "datatype": "uint16", "alert": 0, "name":"簇最小SOC号", "remark": ""}, + {"key": "0x0019", "datatype": "uint16", "alert": 0, "name":"簇SOC差值", "remark": "(0.1)"}, + {"key": "0x001A", "datatype": "uint16", "alert": 0, "name":"簇最大电压", "remark": "(0.1V)"}, + {"key": "0x001B", "datatype": "uint16", "alert": 0, "name":"簇最小电压", "remark": "(0.1V)"}, + {"key": "0x001C", "datatype": "uint16", "alert": 0, "name":"簇最大电压号", "remark": ""}, + {"key": "0x001D", "datatype": "uint16", "alert": 0, "name":"簇最小电压号", "remark": ""}, + {"key": "0x001E", "datatype": "uint16", "alert": 0, "name":"簇电压差值", "remark": "(0.1V)"}, + {"key": "0x001F", "datatype": "uint16", "alert": 0, "name":"单体最大电压簇号", "remark": ""}, + {"key": "0x0020", "datatype": "uint16", "alert": 0, "name":"单体最大电压节号", "remark": ""}, + {"key": "0x0021", "datatype": "uint16", "alert": 0, "name":"单体最大电压", "remark": "(mV)"}, + {"key": "0x0022", "datatype": "uint16", "alert": 0, "name":"单体最小电压簇号", "remark": ""}, + {"key": "0x0023", "datatype": "uint16", "alert": 0, "name":"单体最小电压节号", "remark": ""}, + {"key": "0x0024", "datatype": "uint16", "alert": 0, "name":"单体最小电压", "remark": "(mV)"}, + {"key": "0x0025", "datatype": "uint16", "alert": 0, "name":"单体平均电压", "remark": "(mV)"}, + {"key": "0x0026", "datatype": "uint16", "alert": 0, "name":"单体电压差", "remark": "(mV)"}, + {"key": "0x0027", "datatype": "uint16", "alert": 0, "name":"单体最大温度簇号", "remark": ""}, + {"key": "0x0028", "datatype": "uint16", "alert": 0, "name":"单体最大温度节号", "remark": ""}, + {"key": "0x0029", "datatype": "int16", "alert": 0, "name":"单体最大温度", "remark": "(0.1℃)"}, + {"key": "0x002A", "datatype": "uint16", "alert": 0, "name":"单体最小温度簇号", "remark": ""}, + {"key": "0x002B", "datatype": "uint16", "alert": 0, "name":"单体最小温度节号", "remark": ""}, + {"key": "0x002C", "datatype": "int16", "alert": 0, "name":"单体最小温度", "remark": "(0.1℃)"}, + {"key": "0x002D", "datatype": "int16", "alert": 0, "name":"单体平均温度", "remark": "(0.1℃)"}, + {"key": "0x002E", "datatype": "int16", "alert": 0, "name":"单体温度差", "remark": "(0.1℃)"}, + {"key": "0x002F", "datatype": "uint16", "alert": 0, "name":"最大内阻簇号", "remark": ""}, + {"key": "0x0030", "datatype": "uint16", "alert": 0, "name":"最大内阻节号", "remark": ""}, + {"key": "0x0031", "datatype": "uint16", "alert": 0, "name":"最大内阻", "remark": "(mΩ)"}, + {"key": "0x0032", "datatype": "uint16", "alert": 0, "name":"最小内阻簇号", "remark": ""}, + {"key": "0x0033", "datatype": "uint16", "alert": 0, "name":"最小内阻节号", "remark": ""}, + {"key": "0x0034", "datatype": "uint16", "alert": 0, "name":"最小内阻", "remark": "(mΩ)"}, + {"key": "0x0035", "datatype": "uint16", "alert": 0, "name":"单体平均内阻", "remark": "(mΩ)"}, + {"key": "0x0036", "datatype": "uint16", "alert": 0, "name":"单体内阻差", "remark": "(mΩ)"}, + {"key": "0x0037", "datatype": "uint16", "alert": 0, "name":"单体最大SOH簇号", "remark": ""}, + {"key": "0x0038", "datatype": "uint16", "alert": 0, "name":"单体最大SOH节号", "remark": ""}, + {"key": "0x0039", "datatype": "uint16", "alert": 0, "name":"单体最大SOH", "remark": "(0.001)"}, + {"key": "0x003A", "datatype": "uint16", "alert": 0, "name":"单体最小SOH簇号", "remark": ""}, + {"key": "0x003B", "datatype": "uint16", "alert": 0, "name":"单体最小SOH节号", "remark": ""}, + {"key": "0x003C", "datatype": "uint16", "alert": 0, "name":"单体最小SOH", "remark": "(0.001)"}, + {"key": "0x003D", "datatype": "uint16", "alert": 0, "name":"单体最大SOc簇号", "remark": ""}, + {"key": "0x003E", "datatype": "uint16", "alert": 0, "name":"单体最大SOc节号", "remark": ""}, + {"key": "0x0040", "datatype": "uint16", "alert": 0, "name":"单体最大Soc", "remark": "(0.001)"}, + {"key": "0x0041", "datatype": "uint16", "alert": 0, "name":"单体最小SOc簇号", "remark": ""}, + {"key": "0x0042", "datatype": "uint16", "alert": 0, "name":"单体最小SOc节号", "remark": ""}, + {"key": "0x0043", "datatype": "uint16", "alert": 0, "name":"单体最小SOc", "remark": "(0.001)"}, + {"key": "0x0043", "datatype": "uint32", "alert": 0, "name":"系统剩余最大可充电功率", "remark": "(1KW)"}, + {"key": "0x0045", "datatype": "uint32", "alert": 0, "name":"系统剩余最大可放电功率", "remark": "(1KW)"}, + {"key": "0x0047", "datatype": "uint16", "alert": 0, "name":"可充电状态", "remark": ""}, + {"key": "0x0048", "datatype": "uint16", "alert": 0, "name":"可放电状态", "remark": ""}, + {"key": "0x0049", "datatype": "uint16", "alert": 0, "name":"运行状态", "remark": ""}, + {"key": "0x004A", "datatype": "uint16", "alert": 0, "name":"充放电状态", "remark": ""} ] }, "BCU_YC":{ "addr":[ - {"key": "0x0001", "datatype": "uint16", "remark": "所属通道号1~4"}, - {"key": "0x0002", "datatype": "uint16", "remark": "所属BCU号1~40"}, - {"key": "0x0003", "datatype": "uint32", "remark": "簇电压(0.1V)"}, - {"key": "0x0005", "datatype": "int32", "remark": "簇电流(0.1A)"}, - {"key": "0x0007", "datatype": "int32", "remark": "簇温度(0.1℃)"}, - {"key": "0x0009", "datatype": "uint32", "remark": "簇电阻(1mΩ)"}, - {"key": "0x000B", "datatype": "uint16", "remark": "簇SOC(0.1)"}, - {"key": "0x000C", "datatype": "uint16", "remark": "簇SOH(0.1)"}, - {"key": "0x000D", "datatype": "uint32", "remark": "簇正绝缘电阻(1kΩ)"}, - {"key": "0x000F", "datatype": "uint32", "remark": "簇负绝缘电阻(1kΩ)"}, - {"key": "0x0011", "datatype": "int32", "remark": "簇允许最大充电电流(0.1A)"}, - {"key": "0x0013", "datatype": "int32", "remark": "簇允许最大放电电流(0.1A)"}, - {"key": "0x0015", "datatype": "uint32", "remark": "簇允许最大充电功率(1kW)"}, - {"key": "0x0017", "datatype": "uint32", "remark": "簇允许最大放电功率(1kW)"}, - {"key": "0x0019", "datatype": "uint32", "remark": "簇可充容量(0.1Ah)"}, - {"key": "0x001B", "datatype": "uint32", "remark": "簇可放容量(0.1Ah)"}, - {"key": "0x001D", "datatype": "uint32", "remark": "簇单次累计充容量(0.1Ah)"}, - {"key": "0x001F", "datatype": "uint32", "remark": "簇单次累计放容量(0.1Ah)"}, - {"key": "0x0021", "datatype": "uint32", "remark": "簇总累计充容量(0.1Ah)"}, - {"key": "0x0023", "datatype": "uint32", "remark": "簇总累计放容量(0.1Ah)"}, - {"key": "0x0025", "datatype": "uint32", "remark": "簇可充电量(1kWh)"}, - {"key": "0x0027", "datatype": "uint32", "remark": "簇可放电量(1kWh)"}, - {"key": "0x0029", "datatype": "uint32", "remark": "簇单次充电量(1kWh)"}, - {"key": "0x002B", "datatype": "uint32", "remark": "簇单次放电量(1kWh)"}, - {"key": "0x002D", "datatype": "uint32", "remark": "簇累计充电量(1kWh)"}, - {"key": "0x002F", "datatype": "uint32", "remark": "簇累计放电量(1kWh)"}, - {"key": "0x0031", "datatype": "uint32", "remark": "pack累计簇总压(0.1V)"}, - {"key": "0x0033", "datatype": "uint32", "remark": "簇与pack压差(0.1V)"}, - {"key": "0x0035", "datatype": "uint32", "remark": "簇与PCS压差(0.1V)"}, - {"key": "0x0037", "datatype": "uint16", "remark": "簇中BMU个数"}, - {"key": "0x0038", "datatype": "uint16", "remark": "簇中BMU中单体个数"}, - {"key": "0x0039", "datatype": "uint16", "remark": "簇中BMU中温度个数"}, - {"key": "0x003A", "datatype": "uint16", "remark": "簇中单体个数"}, - {"key": "0x003B", "datatype": "uint16", "remark": "簇中温度个数"}, - {"key": "0x003C", "datatype": "uint16", "remark": "单体最高SOC节号"}, - {"key": "0x003D", "datatype": "uint16", "remark": "单体最高SOC(0.1)"}, - {"key": "0x003E", "datatype": "uint16", "remark": "单体最低SOC节号"}, - {"key": "0x003F", "datatype": "uint16", "remark": "单体最低SOC(0.1)"}, - {"key": "0x0040", "datatype": "uint16", "remark": "单体最高SOH节号"}, - {"key": "0x0041", "datatype": "uint16", "remark": "单体最高SOH(0.1)"}, - {"key": "0x0042", "datatype": "uint16", "remark": "单体最低SOH节号"}, - {"key": "0x0043", "datatype": "uint16", "remark": "单体最低SOH(0.1)"}, - {"key": "0x0044", "datatype": "uint16", "remark": "单体最高电压节号"}, - {"key": "0x0045", "datatype": "uint16", "remark": "单体最高电压(mV)"}, - {"key": "0x0046", "datatype": "uint16", "remark": "单体最低电压节号"}, - {"key": "0x0047", "datatype": "uint16", "remark": "单体最低电压(mV)"}, - {"key": "0x0048", "datatype": "uint16", "remark": "单体电压差(mV)"}, - {"key": "0x0049", "datatype": "uint16", "remark": "单体平均电压(mV)"}, - {"key": "0x004A", "datatype": "uint16", "remark": "单体最高温度节号"}, - {"key": "0x004B", "datatype": "int16", "remark": "单体最高温度(0.1℃)"}, - {"key": "0x004C", "datatype": "uint16", "remark": "单体最低温度节号"}, - {"key": "0x004D", "datatype": "int16", "remark": "单体最低温度(0.1℃)"}, - {"key": "0x004E", "datatype": "int16", "remark": "单体温度差(0.1℃)"}, - {"key": "0x004F", "datatype": "int16", "remark": "单体平均温度(0.1℃)"}, - {"key": "0x0050", "datatype": "uint16", "remark": "单体最高内阻节号"}, - {"key": "0x0051", "datatype": "uint16", "remark": "单体最高内阻(mΩ)"}, - {"key": "0x0052", "datatype": "uint16", "remark": "单体最低内阻节号"}, - {"key": "0x0053", "datatype": "uint16", "remark": "单体最低内阻(mΩ)"}, - {"key": "0x0054", "datatype": "uint16", "remark": "单体内阻差(mΩ)"}, - {"key": "0x0055", "datatype": "uint16", "remark": "单体平均内阻(mΩ)"} + {"key": "0x0001", "datatype": "uint16", "alert": 0, "name":"所属通道号", "remark": "1~4"}, + {"key": "0x0002", "datatype": "uint16", "alert": 0, "name":"所属BCU号", "remark": "1~40"}, + {"key": "0x0003", "datatype": "uint32", "alert": 0, "name":"簇电压", "remark": "(0.1V)"}, + {"key": "0x0005", "datatype": "int32", "alert": 0, "name":"簇电流", "remark": "(0.1A)"}, + {"key": "0x0007", "datatype": "int32", "alert": 0, "name":"簇温度", "remark": "(0.1℃)"}, + {"key": "0x0009", "datatype": "uint32", "alert": 0, "name":"簇电阻", "remark": "(1mΩ)"}, + {"key": "0x000B", "datatype": "uint16", "alert": 0, "name":"簇SOC", "remark": "(0.1)"}, + {"key": "0x000C", "datatype": "uint16", "alert": 0, "name":"簇SOH", "remark": "(0.1)"}, + {"key": "0x000D", "datatype": "uint32", "alert": 0, "name":"簇正绝缘电阻", "remark": "(1kΩ)"}, + {"key": "0x000F", "datatype": "uint32", "alert": 0, "name":"簇负绝缘电阻", "remark": "(1kΩ)"}, + {"key": "0x0011", "datatype": "int32", "alert": 0, "name":"簇允许最大充电电流", "remark": "(0.1A)"}, + {"key": "0x0013", "datatype": "int32", "alert": 0, "name":"簇允许最大放电电流", "remark": "(0.1A)"}, + {"key": "0x0015", "datatype": "uint32", "alert": 0, "name":"簇允许最大充电功率", "remark": "(1kW)"}, + {"key": "0x0017", "datatype": "uint32", "alert": 0, "name":"簇允许最大放电功率", "remark": "(1kW)"}, + {"key": "0x0019", "datatype": "uint32", "alert": 0, "name":"簇可充容量", "remark": "(0.1Ah)"}, + {"key": "0x001B", "datatype": "uint32", "alert": 0, "name":"簇可放容量", "remark": "(0.1Ah)"}, + {"key": "0x001D", "datatype": "uint32", "alert": 0, "name":"簇单次累计充容量", "remark": "(0.1Ah)"}, + {"key": "0x001F", "datatype": "uint32", "alert": 0, "name":"簇单次累计放容量", "remark": "(0.1Ah)"}, + {"key": "0x0021", "datatype": "uint32", "alert": 0, "name":"簇总累计充容量", "remark": "(0.1Ah)"}, + {"key": "0x0023", "datatype": "uint32", "alert": 0, "name":"簇总累计放容量", "remark": "(0.1Ah)"}, + {"key": "0x0025", "datatype": "uint32", "alert": 0, "name":"簇可充电量", "remark": "(1kWh)"}, + {"key": "0x0027", "datatype": "uint32", "alert": 0, "name":"簇可放电量", "remark": "(1kWh)"}, + {"key": "0x0029", "datatype": "uint32", "alert": 0, "name":"簇单次充电量", "remark": "(1kWh)"}, + {"key": "0x002B", "datatype": "uint32", "alert": 0, "name":"簇单次放电量", "remark": "(1kWh)"}, + {"key": "0x002D", "datatype": "uint32", "alert": 0, "name":"簇累计充电量", "remark": "(1kWh)"}, + {"key": "0x002F", "datatype": "uint32", "alert": 0, "name":"簇累计放电量", "remark": "(1kWh)"}, + {"key": "0x0031", "datatype": "uint32", "alert": 0, "name":"pack累计簇总压", "remark": "(0.1V)"}, + {"key": "0x0033", "datatype": "uint32", "alert": 0, "name":"簇与pack压差", "remark": "(0.1V)"}, + {"key": "0x0035", "datatype": "uint32", "alert": 0, "name":"簇与PCS压差", "remark": "(0.1V)"}, + {"key": "0x0037", "datatype": "uint16", "alert": 0, "name":"簇中BMU个数", "remark": ""}, + {"key": "0x0038", "datatype": "uint16", "alert": 0, "name":"簇中BMU中单体个数", "remark": ""}, + {"key": "0x0039", "datatype": "uint16", "alert": 0, "name":"簇中BMU中温度个数", "remark": ""}, + {"key": "0x003A", "datatype": "uint16", "alert": 0, "name":"簇中单体个数", "remark": ""}, + {"key": "0x003B", "datatype": "uint16", "alert": 0, "name":"簇中温度个数", "remark": ""}, + {"key": "0x003C", "datatype": "uint16", "alert": 0, "name":"单体最高SOC节号", "remark": ""}, + {"key": "0x003D", "datatype": "uint16", "alert": 0, "name":"单体最高SOC", "remark": "(0.1)"}, + {"key": "0x003E", "datatype": "uint16", "alert": 0, "name":"单体最低SOC节号", "remark": ""}, + {"key": "0x003F", "datatype": "uint16", "alert": 0, "name":"单体最低SOC", "remark": "(0.1)"}, + {"key": "0x0040", "datatype": "uint16", "alert": 0, "name":"单体最高SOH节号", "remark": ""}, + {"key": "0x0041", "datatype": "uint16", "alert": 0, "name":"单体最高SOH", "remark": "(0.1)"}, + {"key": "0x0042", "datatype": "uint16", "alert": 0, "name":"单体最低SOH节号", "remark": ""}, + {"key": "0x0043", "datatype": "uint16", "alert": 0, "name":"单体最低SOH", "remark": "(0.1)"}, + {"key": "0x0044", "datatype": "uint16", "alert": 0, "name":"单体最高电压节号", "remark": ""}, + {"key": "0x0045", "datatype": "uint16", "alert": 0, "name":"单体最高电压", "remark": "(mV)"}, + {"key": "0x0046", "datatype": "uint16", "alert": 0, "name":"单体最低电压节号", "remark": ""}, + {"key": "0x0047", "datatype": "uint16", "alert": 0, "name":"单体最低电压", "remark": "(mV)"}, + {"key": "0x0048", "datatype": "uint16", "alert": 0, "name":"单体电压差", "remark": "(mV)"}, + {"key": "0x0049", "datatype": "uint16", "alert": 0, "name":"单体平均电压", "remark": "(mV)"}, + {"key": "0x004A", "datatype": "uint16", "alert": 0, "name":"单体最高温度节号", "remark": ""}, + {"key": "0x004B", "datatype": "int16", "alert": 0, "name":"单体最高温度", "remark": "(0.1℃)"}, + {"key": "0x004C", "datatype": "uint16", "alert": 0, "name":"单体最低温度节号", "remark": ""}, + {"key": "0x004D", "datatype": "int16", "alert": 0, "name":"单体最低温度", "remark": "(0.1℃)"}, + {"key": "0x004E", "datatype": "int16", "alert": 0, "name":"单体温度差", "remark": "(0.1℃)"}, + {"key": "0x004F", "datatype": "int16", "alert": 0, "name":"单体平均温度", "remark": "(0.1℃)"}, + {"key": "0x0050", "datatype": "uint16", "alert": 0, "name":"单体最高内阻节号", "remark": ""}, + {"key": "0x0051", "datatype": "uint16", "alert": 0, "name":"单体最高内阻", "remark": "(mΩ)"}, + {"key": "0x0052", "datatype": "uint16", "alert": 0, "name":"单体最低内阻节号", "remark": ""}, + {"key": "0x0053", "datatype": "uint16", "alert": 0, "name":"单体最低内阻", "remark": "(mΩ)"}, + {"key": "0x0054", "datatype": "uint16", "alert": 0, "name":"单体内阻差", "remark": "(mΩ)"}, + {"key": "0x0055", "datatype": "uint16", "alert": 0, "name":"单体平均内阻", "remark": "(mΩ)"} ] }, "BCU_YX":{ "addr":[ - {"key": "0xA001", "datatype": "uint16", "remark": "所属通道号1~4"}, - {"key": "0xA002", "datatype": "uint16", "remark": "所属BCU号1~40"}, - {"key": "0xA003", "datatype": "uint16", "remark": "蓄电池充放电状态0x11开路0x22待机0x33充电0x44放电"}, - {"key": "0xA004", "datatype": "uint16", "remark": "电池组运行状态0x11跳机 0x22待机 0x33放空 0x44充满 0x55预警 0x66正常"}, - {"key": "0xA005", "datatype": "uint16", "remark": "簇DO1状态1:断开 2:闭合"}, - {"key": "0xA006", "datatype": "uint16", "remark": "簇DO2状态1:断开 2:闭合"}, - {"key": "0xA007", "datatype": "uint16", "remark": "继电器总正0:断开 1:闭合 2:粘连"}, - {"key": "0xA008", "datatype": "uint16", "remark": "继电器总负0:断开 1:闭合 2:粘连"}, - {"key": "0xA009", "datatype": "uint16", "remark": "继电器预充0:断开 1:闭合 2:粘连"}, - {"key": "0xA00A", "datatype": "uint16", "remark": "继电器bmu供电0:断开 1:闭合 2:粘连"}, - {"key": "0xA00B", "datatype": "uint16", "remark": "整簇总电压过高告警0:正常 1:告警"}, - {"key": "0xA00C", "datatype": "uint16", "remark": "整簇总电压过低告警0:正常 1:告警"}, - {"key": "0xA00D", "datatype": "uint16", "remark": "整簇中单体电压过高告警0:正常 1:告警"}, - {"key": "0xA00E", "datatype": "uint16", "remark": "整簇中单体电压过低告警0:正常 1:告警"}, - {"key": "0xA00F", "datatype": "uint16", "remark": "整簇中单体电压偏差过大告警0:正常 1:告警"}, - {"key": "0xA010", "datatype": "uint16", "remark": "整簇中单体温度偏差过大告警0:正常 1:告警"}, - {"key": "0xA011", "datatype": "uint16", "remark": "整簇中单体温度过高告警0:正常 1:告警"}, - {"key": "0xA012", "datatype": "uint16", "remark": "整簇中单体温度过低告警0:正常 1:告警"}, - {"key": "0xA013", "datatype": "uint16", "remark": "整簇总充电电流过高告警0:正常 1:告警"}, - {"key": "0xA014", "datatype": "uint16", "remark": "整簇总放电电流过高告警0:正常 1:告警"}, - {"key": "0xA015", "datatype": "uint16", "remark": "整簇总SOC过高告警0:正常 1:告警"}, - {"key": "0xA016", "datatype": "uint16", "remark": "整簇总SOC过低告警0:正常 1:告警"}, - {"key": "0xA017", "datatype": "uint16", "remark": "高压盒主正接触器粘连告警0:正常 1:告警"}, - {"key": "0xA018", "datatype": "uint16", "remark": "高压盒主正接触器不能吸合告警0:正常 1:告警"}, - {"key": "0xA019", "datatype": "uint16", "remark": "高压盒主负接触器粘连告警0:正常 1:告警"}, - {"key": "0xA01A", "datatype": "uint16", "remark": "高压盒主负接触器不能吸合告警0:正常 1:告警"}, - {"key": "0xA01B", "datatype": "uint16", "remark": "高压盒预充接触器粘连告警0:正常 1:告警"}, - {"key": "0xA01C", "datatype": "uint16", "remark": "高压盒预充接触器不能吸合告警0:正常 1:告警"}, - {"key": "0xA01D", "datatype": "uint16", "remark": "预充失败告警0:正常 1:告警"}, - {"key": "0xA01E", "datatype": "uint16", "remark": "BCU电压检测模块出现问题告警0:正常 1:告警"}, - {"key": "0xA01F", "datatype": "uint16", "remark": "BCU温度检测模块出现问题告警0:正常 1:告警"}, - {"key": "0xA020", "datatype": "uint16", "remark": "BCU电流检测模块出现问题告警0:正常 1:告警"}, - {"key": "0xA021", "datatype": "uint16", "remark": "BCU绝缘检测模块出现问题告警0:正常 1:告警"}, - {"key": "0xA022", "datatype": "uint16", "remark": "高压盒内总压检测模块出现问题告警0:正常 1:告警"}, - {"key": "0xA023", "datatype": "uint16", "remark": "高压盒外总压检测模块出现问题告警0:正常 1:告警"}, - {"key": "0xA024", "datatype": "uint16", "remark": "PCS-CAN通信故障告警0:正常 1:告警"}, - {"key": "0xA025", "datatype": "uint16", "remark": "高压盒供电电压过高告警0:正常 1:告警"}, - {"key": "0xA026", "datatype": "uint16", "remark": "绝缘正极故障告警0:正常 1:告警"}, - {"key": "0xA027", "datatype": "uint16", "remark": "绝缘负极故障告警0:正常 1:告警"}, - {"key": "0xA028", "datatype": "uint16", "remark": "绝缘中间侧故障告警0:正常 1:告警"}, - {"key": "0xA029", "datatype": "uint16", "remark": "绝缘故障告警0:正常 1:告警"}, - {"key": "0xA02A", "datatype": "uint16", "remark": "BMU中电压采样线开路告警0:正常 1:告警"}, - {"key": "0xA02B", "datatype": "uint16", "remark": "BMU中NTC采样线短开路告警0:正常 1:告警"}, - {"key": "0xA02C", "datatype": "uint16", "remark": "BMU中采样芯片故障告警0:正常 1:告警"}, - {"key": "0xA02D", "datatype": "uint16", "remark": "BMU中电池温度升高过快告警0:正常 1:告警"}, - {"key": "0xA02E", "datatype": "uint16", "remark": "BMU中电池内部短路告警0:正常 1:告警"}, - {"key": "0xA02F", "datatype": "uint16", "remark": "BMU充电均衡模块出现故障告警0:正常 1:告警"}, - {"key": "0xA030", "datatype": "uint16", "remark": "BMU放电均衡模块出现故障告警0:正常 1:告警"}, - {"key": "0xA031", "datatype": "uint16", "remark": "BMU通信故障告警0:正常 1:告警"}, - {"key": "0xA032", "datatype": "uint16", "remark": "单体内阻过大告警0:正常 1:告警"}, - {"key": "0xA033", "datatype": "uint16", "remark": "单体内阻过小告警0:正常 1:告警"}, - {"key": "0xA034", "datatype": "uint16", "remark": "单体内阻阻差过大告警0:正常 1:告警"}, - {"key": "0xA035", "datatype": "uint16", "remark": "簇内阻过大告警0:正常 1:告警"}, - {"key": "0xA036", "datatype": "uint16", "remark": "簇内阻过小告警0:正常 1:告警"}, - {"key": "0xA037", "datatype": "uint16", "remark": "SOC初始化无效告警0:正常 1:告警"}, - {"key": "0xA038", "datatype": "uint16", "remark": "充电时soc降低故障告警0:正常 1:告警"}, - {"key": "0xA039", "datatype": "uint16", "remark": "放电时soc升高告警0:正常 1:告警"}, - {"key": "0xA03A", "datatype": "uint16", "remark": "静止时SOC跳变告警0:正常 1:告警"}, - {"key": "0xA03B", "datatype": "uint16", "remark": "整簇总电压过高保护0:正常 1:保护"}, - {"key": "0xA03C", "datatype": "uint16", "remark": "整簇总电压过低保护0:正常 1:保护"}, - {"key": "0xA03D", "datatype": "uint16", "remark": "整簇中单体电压过高保护0:正常 1:保护"}, - {"key": "0xA03E", "datatype": "uint16", "remark": "整簇中单体电压过低保护0:正常 1:保护"}, - {"key": "0xA03F", "datatype": "uint16", "remark": "整簇中单体电压偏差过大保护0:正常 1:保护"}, - {"key": "0xA040", "datatype": "uint16", "remark": "整簇中单体温度偏差过大保护0:正常 1:保护"}, - {"key": "0xA041", "datatype": "uint16", "remark": "整簇中单体温度过高保护0:正常 1:保护"}, - {"key": "0xA042", "datatype": "uint16", "remark": "整簇中单体温度过低保护0:正常 1:保护"}, - {"key": "0xA043", "datatype": "uint16", "remark": "整簇总充电电流过高保护0:正常 1:保护"}, - {"key": "0xA044", "datatype": "uint16", "remark": "整簇总放电电流过高保护0:正常 1:保护"}, - {"key": "0xA045", "datatype": "uint16", "remark": "整簇总SOC过高保护0:正常 1:保护"}, - {"key": "0xA046", "datatype": "uint16", "remark": "整簇总SOC过低保护0:正常 1:保护"}, - {"key": "0xA047", "datatype": "uint16", "remark": "高压盒主正接触器粘连保护0:正常 1:保护"}, - {"key": "0xA048", "datatype": "uint16", "remark": "高压盒主正接触器不能吸合保护0:正常 1:保护"}, - {"key": "0xA049", "datatype": "uint16", "remark": "高压盒主负接触器粘连保护0:正常 1:保护"}, - {"key": "0xA04A", "datatype": "uint16", "remark": "高压盒主负接触器不能吸合保护0:正常 1:保护"}, - {"key": "0xA04B", "datatype": "uint16", "remark": "高压盒预充接触器粘连保护0:正常 1:保护"}, - {"key": "0xA04C", "datatype": "uint16", "remark": "高压盒预充接触器不能吸合保护0:正常 1:保护"}, - {"key": "0xA04D", "datatype": "uint16", "remark": "预充失败保护0:正常 1:保护"}, - {"key": "0xA04E", "datatype": "uint16", "remark": "BCU电压检测模块出现问题保护0:正常 1:保护"}, - {"key": "0xA04F", "datatype": "uint16", "remark": "BCU温度检测模块出现问题保护0:正常 1:保护"}, - {"key": "0xA050", "datatype": "uint16", "remark": "BCU电流检测模块出现问题保护0:正常 1:保护"}, - {"key": "0xA051", "datatype": "uint16", "remark": "BCU绝缘检测模块出现问题保护0:正常 1:保护"}, - {"key": "0xA052", "datatype": "uint16", "remark": "高压盒内总压检测模块出现问题保护0:正常 1:保护"}, - {"key": "0xA053", "datatype": "uint16", "remark": "高压盒外总压检测模块出现问题保护0:正常 1:保护"}, - {"key": "0xA054", "datatype": "uint16", "remark": "PCS-CAN通信故障保护0:正常 1:保护"}, - {"key": "0xA055", "datatype": "uint16", "remark": "高压盒供电电压过高保护0:正常 1:保护"}, - {"key": "0xA056", "datatype": "uint16", "remark": "绝缘正极故障保护0:正常 1:保护"}, - {"key": "0xA057", "datatype": "uint16", "remark": "绝缘负极故障保护0:正常 1:保护"}, - {"key": "0xA058", "datatype": "uint16", "remark": "绝缘中间侧故障保护0:正常 1:保护"}, - {"key": "0xA059", "datatype": "uint16", "remark": "绝缘故障保护0:正常 1:保护"}, - {"key": "0xA05A", "datatype": "uint16", "remark": "BMU中电压采样线开路保护0:正常 1:保护"}, - {"key": "0xA05B", "datatype": "uint16", "remark": "BMU中NTC采样线短开路保护0:正常 1:保护"}, - {"key": "0xA05C", "datatype": "uint16", "remark": "BMU中采样芯片故障保护0:正常 1:保护"}, - {"key": "0xA05D", "datatype": "uint16", "remark": "BMU中电池温度升高过快保护0:正常 1:保护"}, - {"key": "0xA05E", "datatype": "uint16", "remark": "BMU中电池内部短路保护0:正常 1:保护"}, - {"key": "0xA05F", "datatype": "uint16", "remark": "BMU充电均衡模块出现故障保护0:正常 1:保护"}, - {"key": "0xA060", "datatype": "uint16", "remark": "BMU放电均衡模块出现故障保护0:正常 1:保护"}, - {"key": "0xA061", "datatype": "uint16", "remark": "BMU通信故障保护0:正常 1:保护"}, - {"key": "0xA062", "datatype": "uint16", "remark": "单体内阻过大保护0:正常 1:保护"}, - {"key": "0xA063", "datatype": "uint16", "remark": "单体内阻过小保护0:正常 1:保护"}, - {"key": "0xA064", "datatype": "uint16", "remark": "单体内阻阻差过大保护0:正常 1:保护"}, - {"key": "0xA065", "datatype": "uint16", "remark": "簇内阻过大保护0:正常 1:保护"}, - {"key": "0xA066", "datatype": "uint16", "remark": "簇内阻过小保护0:正常 1:保护"}, - {"key": "0xA067", "datatype": "uint16", "remark": "SOC初始化无效保护0:正常 1:保护"}, - {"key": "0xA068", "datatype": "uint16", "remark": "充电时soc降低故障保护0:正常 1:保护"}, - {"key": "0xA069", "datatype": "uint16", "remark": "放电时soc升高保护0:正常 1:保护"}, - {"key": "0xA06A", "datatype": "uint16", "remark": "静止时SOC跳变保护0:正常 1:保护"} + {"key": "0xA001", "datatype": "uint16", "alert": 0, "name":"所属通道号", "remark": "1~4"}, + {"key": "0xA002", "datatype": "uint16", "alert": 0, "name":"所属BCU号", "remark": "1~40"}, + {"key": "0xA003", "datatype": "uint16", "alert": 0, "name":"蓄电池充放电状态", "remark": "0x11开路0x22待机0x33充电0x44放电"}, + {"key": "0xA004", "datatype": "uint16", "alert": 0, "name":"电池组运行状态", "remark": "0x11跳机 0x22待机 0x33放空 0x44充满 0x55预警 0x66正常"}, + {"key": "0xA005", "datatype": "uint16", "alert": 0, "name":"簇DO1状态", "remark": "1:断开 2:闭合"}, + {"key": "0xA006", "datatype": "uint16", "alert": 0, "name":"簇DO2状态", "remark": "1:断开 2:闭合"}, + {"key": "0xA007", "datatype": "uint16", "alert": 0, "name":"继电器总正", "remark": "0:断开 1:闭合 2:粘连"}, + {"key": "0xA008", "datatype": "uint16", "alert": 0, "name":"继电器总负", "remark": "0:断开 1:闭合 2:粘连"}, + {"key": "0xA009", "datatype": "uint16", "alert": 0, "name":"继电器预充", "remark": "0:断开 1:闭合 2:粘连"}, + {"key": "0xA00A", "datatype": "uint16", "alert": 0, "name":"继电器bmu供电", "remark": "0:断开 1:闭合 2:粘连"}, + {"key": "0xA00B", "datatype": "uint16", "alert": 1, "name":"整簇总电压过高告警", "remark": "0:正常 1:告警"}, + {"key": "0xA00C", "datatype": "uint16", "alert": 1, "name":"整簇总电压过低告警", "remark": "0:正常 1:告警"}, + {"key": "0xA00D", "datatype": "uint16", "alert": 1, "name":"整簇中单体电压过高告警", "remark": "0:正常 1:告警"}, + {"key": "0xA00E", "datatype": "uint16", "alert": 1, "name":"整簇中单体电压过低告警", "remark": "0:正常 1:告警"}, + {"key": "0xA00F", "datatype": "uint16", "alert": 1, "name":"整簇中单体电压偏差过大告警", "remark": "0:正常 1:告警"}, + {"key": "0xA010", "datatype": "uint16", "alert": 1, "name":"整簇中单体温度偏差过大告警", "remark": "0:正常 1:告警"}, + {"key": "0xA011", "datatype": "uint16", "alert": 1, "name":"整簇中单体温度过高告警", "remark": "0:正常 1:告警"}, + {"key": "0xA012", "datatype": "uint16", "alert": 1, "name":"整簇中单体温度过低告警", "remark": "0:正常 1:告警"}, + {"key": "0xA013", "datatype": "uint16", "alert": 1, "name":"整簇总充电电流过高告警", "remark": "0:正常 1:告警"}, + {"key": "0xA014", "datatype": "uint16", "alert": 1, "name":"整簇总放电电流过高告警", "remark": "0:正常 1:告警"}, + {"key": "0xA015", "datatype": "uint16", "alert": 1, "name":"整簇总SOC过高告警", "remark": "0:正常 1:告警"}, + {"key": "0xA016", "datatype": "uint16", "alert": 1, "name":"整簇总SOC过低告警", "remark": "0:正常 1:告警"}, + {"key": "0xA017", "datatype": "uint16", "alert": 1, "name":"高压盒主正接触器粘连告警", "remark": "0:正常 1:告警"}, + {"key": "0xA018", "datatype": "uint16", "alert": 1, "name":"高压盒主正接触器不能吸合告警", "remark": "0:正常 1:告警"}, + {"key": "0xA019", "datatype": "uint16", "alert": 1, "name":"高压盒主负接触器粘连告警", "remark": "0:正常 1:告警"}, + {"key": "0xA01A", "datatype": "uint16", "alert": 1, "name":"高压盒主负接触器不能吸合告警", "remark": "0:正常 1:告警"}, + {"key": "0xA01B", "datatype": "uint16", "alert": 1, "name":"高压盒预充接触器粘连告警", "remark": "0:正常 1:告警"}, + {"key": "0xA01C", "datatype": "uint16", "alert": 1, "name":"高压盒预充接触器不能吸合告警", "remark": "0:正常 1:告警"}, + {"key": "0xA01D", "datatype": "uint16", "alert": 1, "name":"预充失败告警", "remark": "0:正常 1:告警"}, + {"key": "0xA01E", "datatype": "uint16", "alert": 1, "name":"BCU电压检测模块出现问题告警", "remark": "0:正常 1:告警"}, + {"key": "0xA01F", "datatype": "uint16", "alert": 1, "name":"BCU温度检测模块出现问题告警", "remark": "0:正常 1:告警"}, + {"key": "0xA020", "datatype": "uint16", "alert": 1, "name":"BCU电流检测模块出现问题告警", "remark": "0:正常 1:告警"}, + {"key": "0xA021", "datatype": "uint16", "alert": 1, "name":"BCU绝缘检测模块出现问题告警", "remark": "0:正常 1:告警"}, + {"key": "0xA022", "datatype": "uint16", "alert": 1, "name":"高压盒内总压检测模块出现问题告警", "remark": "0:正常 1:告警"}, + {"key": "0xA023", "datatype": "uint16", "alert": 1, "name":"高压盒外总压检测模块出现问题告警", "remark": "0:正常 1:告警"}, + {"key": "0xA024", "datatype": "uint16", "alert": 1, "name":"PCS-CAN通信故障告警", "remark": "0:正常 1:告警"}, + {"key": "0xA025", "datatype": "uint16", "alert": 1, "name":"高压盒供电电压过高告警", "remark": "0:正常 1:告警"}, + {"key": "0xA026", "datatype": "uint16", "alert": 1, "name":"绝缘正极故障告警", "remark": "0:正常 1:告警"}, + {"key": "0xA027", "datatype": "uint16", "alert": 1, "name":"绝缘负极故障告警", "remark": "0:正常 1:告警"}, + {"key": "0xA028", "datatype": "uint16", "alert": 1, "name":"绝缘中间侧故障告警", "remark": "0:正常 1:告警"}, + {"key": "0xA029", "datatype": "uint16", "alert": 1, "name":"绝缘故障告警", "remark": "0:正常 1:告警"}, + {"key": "0xA02A", "datatype": "uint16", "alert": 1, "name":"BMU中电压采样线开路告警", "remark": "0:正常 1:告警"}, + {"key": "0xA02B", "datatype": "uint16", "alert": 1, "name":"BMU中NTC采样线短开路告警", "remark": "0:正常 1:告警"}, + {"key": "0xA02C", "datatype": "uint16", "alert": 1, "name":"BMU中采样芯片故障告警", "remark": "0:正常 1:告警"}, + {"key": "0xA02D", "datatype": "uint16", "alert": 1, "name":"BMU中电池温度升高过快告警", "remark": "0:正常 1:告警"}, + {"key": "0xA02E", "datatype": "uint16", "alert": 1, "name":"BMU中电池内部短路告警", "remark": "0:正常 1:告警"}, + {"key": "0xA02F", "datatype": "uint16", "alert": 1, "name":"BMU充电均衡模块出现故障告警", "remark": "0:正常 1:告警"}, + {"key": "0xA030", "datatype": "uint16", "alert": 1, "name":"BMU放电均衡模块出现故障告警", "remark": "0:正常 1:告警"}, + {"key": "0xA031", "datatype": "uint16", "alert": 1, "name":"BMU通信故障告警", "remark": "0:正常 1:告警"}, + {"key": "0xA032", "datatype": "uint16", "alert": 1, "name":"单体内阻过大告警", "remark": "0:正常 1:告警"}, + {"key": "0xA033", "datatype": "uint16", "alert": 1, "name":"单体内阻过小告警", "remark": "0:正常 1:告警"}, + {"key": "0xA034", "datatype": "uint16", "alert": 1, "name":"单体内阻阻差过大告警", "remark": "0:正常 1:告警"}, + {"key": "0xA035", "datatype": "uint16", "alert": 1, "name":"簇内阻过大告警", "remark": "0:正常 1:告警"}, + {"key": "0xA036", "datatype": "uint16", "alert": 1, "name":"簇内阻过小告警", "remark": "0:正常 1:告警"}, + {"key": "0xA037", "datatype": "uint16", "alert": 1, "name":"SOC初始化无效告警", "remark": "0:正常 1:告警"}, + {"key": "0xA038", "datatype": "uint16", "alert": 1, "name":"充电时soc降低故障告警", "remark": "0:正常 1:告警"}, + {"key": "0xA039", "datatype": "uint16", "alert": 1, "name":"放电时soc升高告警", "remark": "0:正常 1:告警"}, + {"key": "0xA03A", "datatype": "uint16", "alert": 1, "name":"静止时SOC跳变告警", "remark": "0:正常 1:告警"}, + {"key": "0xA03B", "datatype": "uint16", "alert": 0, "name":"整簇总电压过高保护", "remark": "0:正常 1:保护"}, + {"key": "0xA03C", "datatype": "uint16", "alert": 0, "name":"整簇总电压过低保护", "remark": "0:正常 1:保护"}, + {"key": "0xA03D", "datatype": "uint16", "alert": 0, "name":"整簇中单体电压过高保护", "remark": "0:正常 1:保护"}, + {"key": "0xA03E", "datatype": "uint16", "alert": 0, "name":"整簇中单体电压过低保护", "remark": "0:正常 1:保护"}, + {"key": "0xA03F", "datatype": "uint16", "alert": 0, "name":"整簇中单体电压偏差过大保护", "remark": "0:正常 1:保护"}, + {"key": "0xA040", "datatype": "uint16", "alert": 0, "name":"整簇中单体温度偏差过大保护", "remark": "0:正常 1:保护"}, + {"key": "0xA041", "datatype": "uint16", "alert": 0, "name":"整簇中单体温度过高保护", "remark": "0:正常 1:保护"}, + {"key": "0xA042", "datatype": "uint16", "alert": 0, "name":"整簇中单体温度过低保护", "remark": "0:正常 1:保护"}, + {"key": "0xA043", "datatype": "uint16", "alert": 0, "name":"整簇总充电电流过高保护", "remark": "0:正常 1:保护"}, + {"key": "0xA044", "datatype": "uint16", "alert": 0, "name":"整簇总放电电流过高保护", "remark": "0:正常 1:保护"}, + {"key": "0xA045", "datatype": "uint16", "alert": 0, "name":"整簇总SOC过高保护", "remark": "0:正常 1:保护"}, + {"key": "0xA046", "datatype": "uint16", "alert": 0, "name":"整簇总SOC过低保护", "remark": "0:正常 1:保护"}, + {"key": "0xA047", "datatype": "uint16", "alert": 0, "name":"高压盒主正接触器粘连保护", "remark": "0:正常 1:保护"}, + {"key": "0xA048", "datatype": "uint16", "alert": 0, "name":"高压盒主正接触器不能吸合保护", "remark": "0:正常 1:保护"}, + {"key": "0xA049", "datatype": "uint16", "alert": 0, "name":"高压盒主负接触器粘连保护", "remark": "0:正常 1:保护"}, + {"key": "0xA04A", "datatype": "uint16", "alert": 0, "name":"高压盒主负接触器不能吸合保护", "remark": "0:正常 1:保护"}, + {"key": "0xA04B", "datatype": "uint16", "alert": 0, "name":"高压盒预充接触器粘连保护", "remark": "0:正常 1:保护"}, + {"key": "0xA04C", "datatype": "uint16", "alert": 0, "name":"高压盒预充接触器不能吸合保护", "remark": "0:正常 1:保护"}, + {"key": "0xA04D", "datatype": "uint16", "alert": 0, "name":"预充失败保护", "remark": "0:正常 1:保护"}, + {"key": "0xA04E", "datatype": "uint16", "alert": 0, "name":"BCU电压检测模块出现问题保护", "remark": "0:正常 1:保护"}, + {"key": "0xA04F", "datatype": "uint16", "alert": 0, "name":"BCU温度检测模块出现问题保护", "remark": "0:正常 1:保护"}, + {"key": "0xA050", "datatype": "uint16", "alert": 0, "name":"BCU电流检测模块出现问题保护", "remark": "0:正常 1:保护"}, + {"key": "0xA051", "datatype": "uint16", "alert": 0, "name":"BCU绝缘检测模块出现问题保护", "remark": "0:正常 1:保护"}, + {"key": "0xA052", "datatype": "uint16", "alert": 0, "name":"高压盒内总压检测模块出现问题保护", "remark": "0:正常 1:保护"}, + {"key": "0xA053", "datatype": "uint16", "alert": 0, "name":"高压盒外总压检测模块出现问题保护", "remark": "0:正常 1:保护"}, + {"key": "0xA054", "datatype": "uint16", "alert": 0, "name":"PCS-CAN通信故障保护", "remark": "0:正常 1:保护"}, + {"key": "0xA055", "datatype": "uint16", "alert": 0, "name":"高压盒供电电压过高保护", "remark": "0:正常 1:保护"}, + {"key": "0xA056", "datatype": "uint16", "alert": 0, "name":"绝缘正极故障保护", "remark": "0:正常 1:保护"}, + {"key": "0xA057", "datatype": "uint16", "alert": 0, "name":"绝缘负极故障保护", "remark": "0:正常 1:保护"}, + {"key": "0xA058", "datatype": "uint16", "alert": 0, "name":"绝缘中间侧故障保护", "remark": "0:正常 1:保护"}, + {"key": "0xA059", "datatype": "uint16", "alert": 0, "name":"绝缘故障保护", "remark": "0:正常 1:保护"}, + {"key": "0xA05A", "datatype": "uint16", "alert": 0, "name":"BMU中电压采样线开路保护", "remark": "0:正常 1:保护"}, + {"key": "0xA05B", "datatype": "uint16", "alert": 0, "name":"BMU中NTC采样线短开路保护", "remark": "0:正常 1:保护"}, + {"key": "0xA05C", "datatype": "uint16", "alert": 0, "name":"BMU中采样芯片故障保护", "remark": "0:正常 1:保护"}, + {"key": "0xA05D", "datatype": "uint16", "alert": 0, "name":"BMU中电池温度升高过快保护", "remark": "0:正常 1:保护"}, + {"key": "0xA05E", "datatype": "uint16", "alert": 0, "name":"BMU中电池内部短路保护", "remark": "0:正常 1:保护"}, + {"key": "0xA05F", "datatype": "uint16", "alert": 0, "name":"BMU充电均衡模块出现故障保护", "remark": "0:正常 1:保护"}, + {"key": "0xA060", "datatype": "uint16", "alert": 0, "name":"BMU放电均衡模块出现故障保护", "remark": "0:正常 1:保护"}, + {"key": "0xA061", "datatype": "uint16", "alert": 0, "name":"BMU通信故障保护", "remark": "0:正常 1:保护"}, + {"key": "0xA062", "datatype": "uint16", "alert": 0, "name":"单体内阻过大保护", "remark": "0:正常 1:保护"}, + {"key": "0xA063", "datatype": "uint16", "alert": 0, "name":"单体内阻过小保护", "remark": "0:正常 1:保护"}, + {"key": "0xA064", "datatype": "uint16", "alert": 0, "name":"单体内阻阻差过大保护", "remark": "0:正常 1:保护"}, + {"key": "0xA065", "datatype": "uint16", "alert": 0, "name":"簇内阻过大保护", "remark": "0:正常 1:保护"}, + {"key": "0xA066", "datatype": "uint16", "alert": 0, "name":"簇内阻过小保护", "remark": "0:正常 1:保护"}, + {"key": "0xA067", "datatype": "uint16", "alert": 0, "name":"SOC初始化无效保护", "remark": "0:正常 1:保护"}, + {"key": "0xA068", "datatype": "uint16", "alert": 0, "name":"充电时soc降低故障保护", "remark": "0:正常 1:保护"}, + {"key": "0xA069", "datatype": "uint16", "alert": 0, "name":"放电时soc升高保护", "remark": "0:正常 1:保护"}, + {"key": "0xA06A", "datatype": "uint16", "alert": 0, "name":"静止时SOC跳变保护", "remark": "0:正常 1:保护"} ] }, "MEM_YC":{ "addr":[ - {"key": "0x0001", "datatype": "uint16", "remark": "所属通道号1"}, - {"key": "0x0008", "datatype": "uint16", "remark": "电表类型0:储能站总表1:逆变前侧电表2:逆变后侧电表3:配电柜电表4:并网口电表"}, - {"key": "0x0009", "datatype": "uint16", "remark": "电流变比"}, - {"key": "0x000A", "datatype": "uint16", "remark": "电压变比"}, - {"key": "0x000B", "datatype": "uint32", "remark": "A相电压(1V)"}, - {"key": "0x000D", "datatype": "uint32", "remark": "B相电压(1V)"}, - {"key": "0x000F", "datatype": "uint32", "remark": "C相电压(1V)"}, - {"key": "0x0011", "datatype": "int32", "remark": "A相电流(1A)"}, - {"key": "0x0013", "datatype": "int32", "remark": "B相电流(1A)"}, - {"key": "0x0015", "datatype": "int32", "remark": "C相电流(1A)"}, - {"key": "0x0017", "datatype": "uint32", "remark": "AB相电压(1V)"}, - {"key": "0x0019", "datatype": "uint32", "remark": "BC相电压(1V)"}, - {"key": "0x001B", "datatype": "uint32", "remark": "CA相电压(1V)"}, - {"key": "0x001D", "datatype": "int32", "remark": "A相有功(1kW)"}, - {"key": "0x001F", "datatype": "int32", "remark": "B相有功(1kW)"}, - {"key": "0x0021", "datatype": "int32", "remark": "C相有功(1kW)"}, - {"key": "0x0023", "datatype": "int32", "remark": "三相总有功(1kW)"}, - {"key": "0x0025", "datatype": "int32", "remark": "正向总有功总需量(1kW)"}, - {"key": "0x0027", "datatype": "uint32", "remark": "尖段电价(1RMB)"}, - {"key": "0x0029", "datatype": "uint32", "remark": "峰段电价(1RMB)"}, - {"key": "0x002B", "datatype": "uint32", "remark": "平段电价(1RMB)"}, - {"key": "0x002D", "datatype": "uint32", "remark": "谷段电价(1RMB)"}, - {"key": "0x002F", "datatype": "uint32", "remark": "日充电电量(1kWh)"}, - {"key": "0x0031", "datatype": "uint32", "remark": "日放电电量(1kWh)"}, - {"key": "0x0033", "datatype": "uint32", "remark": "日充电费用(1RMB)"}, - {"key": "0x0035", "datatype": "uint32", "remark": "日放电费用(1RMB)"}, - {"key": "0x0037", "datatype": "int32", "remark": "日收益(1RMB)"}, - {"key": "0x0039", "datatype": "uint32", "remark": "日正向尖有功电能(1kWh)"}, - {"key": "0x003B", "datatype": "uint32", "remark": "日正向峰有功电能(1kWh)"}, - {"key": "0x003D", "datatype": "uint32", "remark": "日正向平有功电能(1kWh)"}, - {"key": "0x003F", "datatype": "uint32", "remark": "日正向谷有功电能(1kWh)"}, - {"key": "0x0041", "datatype": "uint32", "remark": "日正向总有功电能(1kWh)"}, - {"key": "0x0043", "datatype": "uint32", "remark": "日反向尖有功电能(1kWh)"}, - {"key": "0x0045", "datatype": "uint32", "remark": "日反向峰有功电能(1kWh)"}, - {"key": "0x0047", "datatype": "uint32", "remark": "日反向平有功电能(1kWh)"}, - {"key": "0x0049", "datatype": "uint32", "remark": "日反向谷有功电能(1kWh)"}, - {"key": "0x004B", "datatype": "uint32", "remark": "日反向总有功电能(1kWh)"}, - {"key": "0x004D", "datatype": "uint32", "remark": "总充电电量(1kWh)"}, - {"key": "0x004F", "datatype": "uint32", "remark": "总放电电量(1kWh)"}, - {"key": "0x0051", "datatype": "uint32", "remark": "总充电费用(1RMB)"}, - {"key": "0x0053", "datatype": "uint32", "remark": "总放电费用(1RMB)"}, - {"key": "0x0055", "datatype": "int32", "remark": "总收益(1RMB)"}, - {"key": "0x0057", "datatype": "uint32", "remark": "总正向尖有功电能(1kWh)"}, - {"key": "0x0059", "datatype": "uint32", "remark": "总正向峰有功电能(1kWh)"}, - {"key": "0x005B", "datatype": "uint32", "remark": "总正向平有功电能(1kWh)"}, - {"key": "0x005D", "datatype": "uint32", "remark": "总正向谷有功电能(1kWh)"}, - {"key": "0x005F", "datatype": "uint32", "remark": "总正向总有功电能(1kWh)"}, - {"key": "0x0061", "datatype": "uint32", "remark": "总反向尖有功电能(1kWh)"}, - {"key": "0x0063", "datatype": "uint32", "remark": "总反向峰有功电能(1kWh)"}, - {"key": "0x0065", "datatype": "uint32", "remark": "总反向平有功电能(1kWh)"}, - {"key": "0x0067", "datatype": "uint32", "remark": "总反向谷有功电能(1kWh)"}, - {"key": "0x0069", "datatype": "uint32", "remark": "总反向总有功电能(1kWh)"} + {"key": "0x0001", "datatype": "uint16", "alert": 0, "name":"所属通道号", "remark": "1"}, + {"key": "0x0008", "datatype": "uint16", "alert": 0, "name":"电表类型", "remark": "0:储能站总表1:逆变前侧电表2:逆变后侧电表3:配电柜电表4:并网口电表"}, + {"key": "0x0009", "datatype": "uint16", "alert": 0, "name":"电流变比", "remark": ""}, + {"key": "0x000A", "datatype": "uint16", "alert": 0, "name":"电压变比", "remark": ""}, + {"key": "0x000B", "datatype": "uint32", "alert": 0, "name":"A相电压", "remark": "(1V)"}, + {"key": "0x000D", "datatype": "uint32", "alert": 0, "name":"B相电压", "remark": "(1V)"}, + {"key": "0x000F", "datatype": "uint32", "alert": 0, "name":"C相电压", "remark": "(1V)"}, + {"key": "0x0011", "datatype": "int32", "alert": 0, "name":"A相电流", "remark": "(1A)"}, + {"key": "0x0013", "datatype": "int32", "alert": 0, "name":"B相电流", "remark": "(1A)"}, + {"key": "0x0015", "datatype": "int32", "alert": 0, "name":"C相电流", "remark": "(1A)"}, + {"key": "0x0017", "datatype": "uint32", "alert": 0, "name":"AB相电压", "remark": "(1V)"}, + {"key": "0x0019", "datatype": "uint32", "alert": 0, "name":"BC相电压", "remark": "(1V)"}, + {"key": "0x001B", "datatype": "uint32", "alert": 0, "name":"CA相电压", "remark": "(1V)"}, + {"key": "0x001D", "datatype": "int32", "alert": 0, "name":"A相有功", "remark": "(1kW)"}, + {"key": "0x001F", "datatype": "int32", "alert": 0, "name":"B相有功", "remark": "(1kW)"}, + {"key": "0x0021", "datatype": "int32", "alert": 0, "name":"C相有功", "remark": "(1kW)"}, + {"key": "0x0023", "datatype": "int32", "alert": 0, "name":"三相总有功", "remark": "(1kW)"}, + {"key": "0x0025", "datatype": "int32", "alert": 0, "name":"正向总有功总需量", "remark": "(1kW)"}, + {"key": "0x0027", "datatype": "uint32", "alert": 0, "name":"尖段电价", "remark": "(1RMB)"}, + {"key": "0x0029", "datatype": "uint32", "alert": 0, "name":"峰段电价", "remark": "(1RMB)"}, + {"key": "0x002B", "datatype": "uint32", "alert": 0, "name":"平段电价", "remark": "(1RMB)"}, + {"key": "0x002D", "datatype": "uint32", "alert": 0, "name":"谷段电价", "remark": "(1RMB)"}, + {"key": "0x002F", "datatype": "uint32", "alert": 0, "name":"日充电电量", "remark": "(1kWh)"}, + {"key": "0x0031", "datatype": "uint32", "alert": 0, "name":"日放电电量", "remark": "(1kWh)"}, + {"key": "0x0033", "datatype": "uint32", "alert": 0, "name":"日充电费用", "remark": "(1RMB)"}, + {"key": "0x0035", "datatype": "uint32", "alert": 0, "name":"日放电费用", "remark": "(1RMB)"}, + {"key": "0x0037", "datatype": "int32", "alert": 0, "name":"日收益", "remark": "(1RMB)"}, + {"key": "0x0039", "datatype": "uint32", "alert": 0, "name":"日正向尖有功电能", "remark": "(1kWh)"}, + {"key": "0x003B", "datatype": "uint32", "alert": 0, "name":"日正向峰有功电能", "remark": "(1kWh)"}, + {"key": "0x003D", "datatype": "uint32", "alert": 0, "name":"日正向平有功电能", "remark": "(1kWh)"}, + {"key": "0x003F", "datatype": "uint32", "alert": 0, "name":"日正向谷有功电能", "remark": "(1kWh)"}, + {"key": "0x0041", "datatype": "uint32", "alert": 0, "name":"日正向总有功电能", "remark": "(1kWh)"}, + {"key": "0x0043", "datatype": "uint32", "alert": 0, "name":"日反向尖有功电能", "remark": "(1kWh)"}, + {"key": "0x0045", "datatype": "uint32", "alert": 0, "name":"日反向峰有功电能", "remark": "(1kWh)"}, + {"key": "0x0047", "datatype": "uint32", "alert": 0, "name":"日反向平有功电能", "remark": "(1kWh)"}, + {"key": "0x0049", "datatype": "uint32", "alert": 0, "name":"日反向谷有功电能", "remark": "(1kWh)"}, + {"key": "0x004B", "datatype": "uint32", "alert": 0, "name":"日反向总有功电能", "remark": "(1kWh)"}, + {"key": "0x004D", "datatype": "uint32", "alert": 0, "name":"总充电电量", "remark": "(1kWh)"}, + {"key": "0x004F", "datatype": "uint32", "alert": 0, "name":"总放电电量", "remark": "(1kWh)"}, + {"key": "0x0051", "datatype": "uint32", "alert": 0, "name":"总充电费用", "remark": "(1RMB)"}, + {"key": "0x0053", "datatype": "uint32", "alert": 0, "name":"总放电费用", "remark": "(1RMB)"}, + {"key": "0x0055", "datatype": "int32", "alert": 0, "name":"总收益", "remark": "(1RMB)"}, + {"key": "0x0057", "datatype": "uint32", "alert": 0, "name":"总正向尖有功电能", "remark": "(1kWh)"}, + {"key": "0x0059", "datatype": "uint32", "alert": 0, "name":"总正向峰有功电能", "remark": "(1kWh)"}, + {"key": "0x005B", "datatype": "uint32", "alert": 0, "name":"总正向平有功电能", "remark": "(1kWh)"}, + {"key": "0x005D", "datatype": "uint32", "alert": 0, "name":"总正向谷有功电能", "remark": "(1kWh)"}, + {"key": "0x005F", "datatype": "uint32", "alert": 0, "name":"总正向总有功电能", "remark": "(1kWh)"}, + {"key": "0x0061", "datatype": "uint32", "alert": 0, "name":"总反向尖有功电能", "remark": "(1kWh)"}, + {"key": "0x0063", "datatype": "uint32", "alert": 0, "name":"总反向峰有功电能", "remark": "(1kWh)"}, + {"key": "0x0065", "datatype": "uint32", "alert": 0, "name":"总反向平有功电能", "remark": "(1kWh)"}, + {"key": "0x0067", "datatype": "uint32", "alert": 0, "name":"总反向谷有功电能", "remark": "(1kWh)"}, + {"key": "0x0069", "datatype": "uint32", "alert": 0, "name":"总反向总有功电能", "remark": "(1kWh)"} ] }, "TH_YC":{ "addr":[ - {"key": "0x0001", "datatype": "uint16", "remark": "所属通道号1"}, - {"key": "0x0002", "datatype": "uint16", "remark": "所属温湿度号1~10"}, - {"key": "0x0003", "datatype": "int16", "remark": "温度(0.1℃)"}, - {"key": "0x0004", "datatype": "int16", "remark": "湿度(0.1℃)"} - + {"key": "0x0001", "datatype": "uint16", "alert": 0, "name":"所属通道号", "remark": "1"}, + {"key": "0x0002", "datatype": "uint16", "alert": 0, "name":"所属温湿度号", "remark": "1~10"}, + {"key": "0x0003", "datatype": "int16", "alert": 0, "name":"温度", "remark": "(0.1℃)"}, + {"key": "0x0004", "datatype": "int16", "alert": 0, "name":"湿度", "remark": "(0.1℃)"} ] }, "Fire40_YX":{ "addr":[ - {"key": "0x0001", "datatype": "uint16", "remark": "所属通道号1~10"}, - {"key": "0x0002", "datatype": "uint16", "remark": "主控数量1"}, - {"key": "0x0003", "datatype": "uint16", "remark": "主控ID1"}, - {"key": "0x0004", "datatype": "uint16", "remark": "主控状态0:正常 1:预警 2:火警"}, - {"key": "0x0005", "datatype": "uint32", "remark": "主控硬件版本"}, - {"key": "0x0007", "datatype": "uint32", "remark": "主控软件版本"}, - {"key": "0x0009", "datatype": "uint16", "remark": "主电状态0:使用市电 1:使用备电"}, - {"key": "0x000A", "datatype": "uint32", "remark": "备电电流(0.1A)"}, - {"key": "0x000C", "datatype": "uint32", "remark": "备电电压(0.1V)"}, - {"key": "0x000E", "datatype": "uint32", "remark": "可用容量(0.01Ah)"}, - {"key": "0x0010", "datatype": "uint32", "remark": "可充放容量(0.01Ah)"}, - {"key": "0x0012", "datatype": "uint16", "remark": "警铃是否使用"}, - {"key": "0x0013", "datatype": "uint16", "remark": "警铃状态0:无效 1:掉线 2:正常 3:启动"}, - {"key": "0x0014", "datatype": "uint16", "remark": "瓶头阀是否使用"}, - {"key": "0x0015", "datatype": "uint16", "remark": "瓶头阀状态0:无效 1:掉线 2:正常 3:启动"}, - {"key": "0x0016", "datatype": "uint16", "remark": "手报是否使用"}, - {"key": "0x0017", "datatype": "uint16", "remark": "手报状态0:无效 1:掉线 2:正常 3:启动"}, - {"key": "0x0018", "datatype": "uint16", "remark": "簇控制器数量"}, - {"key": "0x0019", "datatype": "uint16", "remark": "复合探测器总数量"}, - {"key": "0x001A", "datatype": "uint16", "remark": "烟雾探测器总数量"}, - {"key": "0x001B", "datatype": "uint16", "remark": "压力探测器总数量"}, - {"key": "0x001C", "datatype": "uint16", "remark": "吸气式探测器总数量"}, - {"key": "0x001D", "datatype": "uint16", "remark": "PACK探测器总数量"}, - {"key": "0x001E", "datatype": "uint16", "remark": "电池总数量"} + {"key": "0x0001", "datatype": "uint16", "alert": 0, "name":"所属通道号", "remark": "1~10"}, + {"key": "0x0002", "datatype": "uint16", "alert": 0, "name":"主控数量", "remark": "1"}, + {"key": "0x0003", "datatype": "uint16", "alert": 0, "name":"主控ID", "remark": "1"}, + {"key": "0x0004", "datatype": "uint16", "alert": 0, "name":"主控状态", "remark": "0:正常 1:预警 2:火警"}, + {"key": "0x0005", "datatype": "uint16[2]", "alert": 0, "name":"主控硬件版本", "remark": "主控硬件版本"}, + {"key": "0x0007", "datatype": "uint16[2]", "alert": 0, "name":"主控软件版本", "remark": "主控软件版本"}, + {"key": "0x0009", "datatype": "uint16", "alert": 0, "name":"主电状态", "remark": "0:使用市电 1:使用备电"}, + {"key": "0x000A", "datatype": "uint32", "alert": 0, "name":"备电电流", "remark": "(0.1A)"}, + {"key": "0x000C", "datatype": "uint32", "alert": 0, "name":"备电电压", "remark": "(0.1V)"}, + {"key": "0x000E", "datatype": "uint32", "alert": 0, "name":"可用容量", "remark": "(0.01Ah)"}, + {"key": "0x0010", "datatype": "uint32", "alert": 0, "name":"可充放容量", "remark": "(0.01Ah)"}, + {"key": "0x0012", "datatype": "uint16", "alert": 0, "name":"警铃是否使用", "remark": ""}, + {"key": "0x0013", "datatype": "uint16", "alert": 0, "name":"警铃状态", "remark": "0:无效 1:掉线 2:正常 3:启动"}, + {"key": "0x0014", "datatype": "uint16", "alert": 0, "name":"瓶头阀是否使用", "remark": ""}, + {"key": "0x0015", "datatype": "uint16", "alert": 0, "name":"瓶头阀状态", "remark": "0:无效 1:掉线 2:正常 3:启动"}, + {"key": "0x0016", "datatype": "uint16", "alert": 0, "name":"手报是否使用", "remark": ""}, + {"key": "0x0017", "datatype": "uint16", "alert": 0, "name":"手报状态", "remark": "0:无效 1:掉线 2:正常 3:启动"}, + {"key": "0x0018", "datatype": "uint16", "alert": 0, "name":"簇控制器数量", "remark": ""}, + {"key": "0x0019", "datatype": "uint16", "alert": 0, "name":"复合探测器总数量", "remark": ""}, + {"key": "0x001A", "datatype": "uint16", "alert": 0, "name":"烟雾探测器总数量", "remark": ""}, + {"key": "0x001B", "datatype": "uint16", "alert": 0, "name":"压力探测器总数量", "remark": ""}, + {"key": "0x001C", "datatype": "uint16", "alert": 0, "name":"吸气式探测器总数量", "remark": ""}, + {"key": "0x001D", "datatype": "uint16", "alert": 0, "name":"PACK探测器总数量", "remark": ""}, + {"key": "0x001E", "datatype": "uint16", "alert": 0, "name":"电池总数量", "remark": ""} ] }, "Cooling_YC":{ "addr":[ - {"key": "0x0001", "datatype": "uint16", "remark": "所属通道号1"}, - {"key": "0x0002", "datatype": "uint16", "remark": "所属冷机号1~10"}, - {"key": "0x0003", "datatype": "int16", "remark": "制冷点(0.1℃)"}, - {"key": "0x0004", "datatype": "int16", "remark": "制冷偏差(0.1℃)"}, - {"key": "0x0005", "datatype": "int16", "remark": "高温告警值(0.1℃)"}, - {"key": "0x0006", "datatype": "int16", "remark": "低温告警值(0.1℃)"}, - {"key": "0x0007", "datatype": "int16", "remark": "制热点(0.1℃)"}, - {"key": "0x0008", "datatype": "int16", "remark": "制热偏差(0.1℃)"}, - {"key": "0x0009", "datatype": "int16", "remark": "电芯温度(0.1℃)"}, - {"key": "0x000A", "datatype": "int16", "remark": "环境湿度(0.1℃)"}, - {"key": "0x000B", "datatype": "int16", "remark": "吸气温度(0.1℃)"}, - {"key": "0x000C", "datatype": "int16", "remark": "排气温度(0.1℃)"}, - {"key": "0x000D", "datatype": "int16", "remark": "进水温度/供液温度(0.1℃)"}, - {"key": "0x000E", "datatype": "int16", "remark": "出水温度/回液温度(0.1℃)"}, - {"key": "0x000F", "datatype": "int16", "remark": "进水压力/供液压力(0.1)"}, - {"key": "0x0010", "datatype": "int16", "remark": "出水压力/回液压力(0.1)"}, - {"key": "0x0011", "datatype": "int16", "remark": "高压压力(0.1)"}, - {"key": "0x0012", "datatype": "int16", "remark": "低压压力(0.1)"}, - {"key": "0x0013", "datatype": "int16", "remark": "循环水泵转速"}, - {"key": "0x0014", "datatype": "int16", "remark": "压缩机频率"}, - {"key": "0x0015", "datatype": "int16", "remark": "室外风机转速"} + {"key": "0x0001", "datatype": "uint16", "alert": 0, "name":"所属通道号", "remark": "1"}, + {"key": "0x0002", "datatype": "uint16", "alert": 0, "name":"所属冷机号", "remark": "1~10"}, + {"key": "0x0003", "datatype": "int16", "alert": 0, "name":"制冷点", "remark": "(0.1℃)"}, + {"key": "0x0004", "datatype": "int16", "alert": 0, "name":"制冷偏差", "remark": "(0.1℃)"}, + {"key": "0x0005", "datatype": "int16", "alert": 0, "name":"高温告警值", "remark": "(0.1℃)"}, + {"key": "0x0006", "datatype": "int16", "alert": 0, "name":"低温告警值", "remark": "(0.1℃)"}, + {"key": "0x0007", "datatype": "int16", "alert": 0, "name":"制热点", "remark": "(0.1℃)"}, + {"key": "0x0008", "datatype": "int16", "alert": 0, "name":"制热偏差", "remark": "(0.1℃)"}, + {"key": "0x0009", "datatype": "int16", "alert": 0, "name":"电芯温度", "remark": "(0.1℃)"}, + {"key": "0x000A", "datatype": "int16", "alert": 0, "name":"环境湿度", "remark": "(0.1℃)"}, + {"key": "0x000B", "datatype": "int16", "alert": 0, "name":"吸气温度", "remark": "(0.1℃)"}, + {"key": "0x000C", "datatype": "int16", "alert": 0, "name":"排气温度", "remark": "(0.1℃)"}, + {"key": "0x000D", "datatype": "int16", "alert": 0, "name":"进水温度/供液温度", "remark": "(0.1℃)"}, + {"key": "0x000E", "datatype": "int16", "alert": 0, "name":"出水温度/回液温度", "remark": "(0.1℃)"}, + {"key": "0x000F", "datatype": "int16", "alert": 0, "name":"进水压力/供液压力", "remark": "(0.1)"}, + {"key": "0x0010", "datatype": "int16", "alert": 0, "name":"出水压力/回液压力", "remark": "(0.1)"}, + {"key": "0x0011", "datatype": "int16", "alert": 0, "name":"高压压力", "remark": "(0.1)"}, + {"key": "0x0012", "datatype": "int16", "alert": 0, "name":"低压压力", "remark": "(0.1)"}, + {"key": "0x0013", "datatype": "int16", "alert": 0, "name":"循环水泵转速", "remark": ""}, + {"key": "0x0014", "datatype": "int16", "alert": 0, "name":"压缩机频率", "remark": ""}, + {"key": "0x0015", "datatype": "int16", "alert": 0, "name":"室外风机转速", "remark": ""} ] }, "Cooling_YX":{ "addr":[ - {"key": "0x1001", "datatype": "uint16", "remark": "所属通道号1"}, - {"key": "0x1002", "datatype": "uint16", "remark": "所属冷机号1~10"}, - {"key": "0x1003", "datatype": "uint16", "remark": "开关0:关机,1:开机"}, - {"key": "0x1004", "datatype": "uint16", "remark": "采样模式(0-出水温度 1-电芯温度)"}, - {"key": "0x1005", "datatype": "uint16", "remark": "制冷状态0:关闭,1:启动"}, - {"key": "0x1006", "datatype": "uint16", "remark": "制热状态0:关闭,1:启动"}, - {"key": "0x1007", "datatype": "uint16", "remark": "高温告警0:正常,1:告警"}, - {"key": "0x1008", "datatype": "uint16", "remark": "低温告警0:正常,1:告警"}, - {"key": "0x1009", "datatype": "uint16", "remark": "高压告警0:正常,1:告警"}, - {"key": "0x100A", "datatype": "uint16", "remark": "低压告警0:正常,1:告警"}, - {"key": "0x100B", "datatype": "uint16", "remark": "进水温度传感器0:正常,1:告警"}, - {"key": "0x100C", "datatype": "uint16", "remark": "出水温度传感器0:正常,1:告警"}, - {"key": "0x100D", "datatype": "uint16", "remark": "进水压力传感器0:正常,1:告警"}, - {"key": "0x100E", "datatype": "uint16", "remark": "出水压力传感器0:正常,1:告警"} + {"key": "0x1001", "datatype": "uint16", "alert": 0, "name":"所属通道号", "remark": "1"}, + {"key": "0x1002", "datatype": "uint16", "alert": 0, "name":"所属冷机号", "remark": "1~10"}, + {"key": "0x1003", "datatype": "uint16", "alert": 0, "name":"开关", "remark": "0:关机,1:开机"}, + {"key": "0x1004", "datatype": "uint16", "alert": 0, "name":"采样模式", "remark": "(0-出水温度 1-电芯温度)"}, + {"key": "0x1005", "datatype": "uint16", "alert": 0, "name":"制冷状态", "remark": "0:关闭,1:启动"}, + {"key": "0x1006", "datatype": "uint16", "alert": 0, "name":"制热状态", "remark": "0:关闭,1:启动"}, + {"key": "0x1007", "datatype": "uint16", "alert": 0, "name":"高温告警", "remark": "0:正常,1:告警"}, + {"key": "0x1008", "datatype": "uint16", "alert": 0, "name":"低温告警", "remark": "0:正常,1:告警"}, + {"key": "0x1009", "datatype": "uint16", "alert": 0, "name":"高压告警", "remark": "0:正常,1:告警"}, + {"key": "0x100A", "datatype": "uint16", "alert": 0, "name":"低压告警", "remark": "0:正常,1:告警"}, + {"key": "0x100B", "datatype": "uint16", "alert": 0, "name":"进水温度传感器", "remark": "0:正常,1:告警"}, + {"key": "0x100C", "datatype": "uint16", "alert": 0, "name":"出水温度传感器", "remark": "0:正常,1:告警"}, + {"key": "0x100D", "datatype": "uint16", "alert": 0, "name":"进水压力传感器", "remark": "0:正常,1:告警"}, + {"key": "0x100E", "datatype": "uint16", "alert": 0, "name":"出水压力传感器", "remark": "0:正常,1:告警"} ] }, "Gateway_YC":{ "addr":[ - {"key": "40001", "datatype": "uint16", "remark": "模式"}, - {"key": "40002", "datatype": "uint16", "remark": "峰谷时间段"}, - {"key": "40021", "datatype": "uint16", "remark": "自定时间段"}, - {"key": "40038", "datatype": "uint16", "remark": "其他参数"} + {"key": "40001", "datatype": "uint16", "alert": 0, "name":"模式", "remark": ""}, + {"key": "40002", "datatype": "uint16", "alert": 0, "name":"峰谷时间段", "remark": ""}, + {"key": "40021", "datatype": "uint16", "alert": 0, "name":"自定时间段", "remark": ""}, + {"key": "40038", "datatype": "uint16", "alert": 0, "name":"其他参数", "remark": ""} + ] + }, + "Gateway_YX":{ + "addr":[ + {"key": "cdz", "datatype": "uint16", "alert": 0, "name":"充电桩通讯状态", "remark": "1:在线,0:离线"}, + {"key": "emu", "datatype": "uint16", "alert": 0, "name":"储能通讯状态", "remark": "1:在线,0:离线"} + ] + }, + "Charger_YC":{ + "addr":[ + {"key": "11", "datatype": "uint16", "alert": 0, "name":"枪1:状态", "remark": ""}, + {"key": "12", "datatype": "uint16", "alert": 0, "name":"枪1:需求电压", "remark": ""}, + {"key": "13", "datatype": "uint16", "alert": 0, "name":"枪1:需求电流", "remark": ""}, + {"key": "14", "datatype": "uint16", "alert": 0, "name":"枪1:需求功率", "remark": ""}, + {"key": "15", "datatype": "uint16", "alert": 0, "name":"枪1:输出电压", "remark": ""}, + {"key": "16", "datatype": "uint16", "alert": 0, "name":"枪1:输出电流", "remark": ""}, + {"key": "17", "datatype": "uint16", "alert": 0, "name":"枪1:输出功率", "remark": ""}, + {"key": "18", "datatype": "uint16", "alert": 0, "name":"枪1:功率限值", "remark": ""}, + {"key": "21", "datatype": "uint16", "alert": 0, "name":"枪2:状态", "remark": ""}, + {"key": "22", "datatype": "uint16", "alert": 0, "name":"枪2:需求电压", "remark": ""}, + {"key": "23", "datatype": "uint16", "alert": 0, "name":"枪2:需求电流", "remark": ""}, + {"key": "24", "datatype": "uint16", "alert": 0, "name":"枪2:需求功率", "remark": ""}, + {"key": "25", "datatype": "uint16", "alert": 0, "name":"枪2:输出电压", "remark": ""}, + {"key": "26", "datatype": "uint16", "alert": 0, "name":"枪2:输出电流", "remark": ""}, + {"key": "27", "datatype": "uint16", "alert": 0, "name":"枪2:输出功率", "remark": ""}, + {"key": "28", "datatype": "uint16", "alert": 0, "name":"枪2:功率限值", "remark": ""} ] } } \ No newline at end of file diff --git a/bin/Release/assets/config/regaddrsShow.json b/bin/Release/assets/config/regaddrsShow.json index 5cf7f6b..868671d 100644 --- a/bin/Release/assets/config/regaddrsShow.json +++ b/bin/Release/assets/config/regaddrsShow.json @@ -7,69 +7,100 @@ ["B相电压", "0x1080", "0.0", " V", "1"], ["B相电流", "0x1086", "0.0", " A"], ["C相电压", "0x1082", "0.0", " V", "1"], - ["C相电流", "0x1088", "0.0", " A"] + ["C相电流", "0x1088", "0.0", " A"], + ["总有功功率", "0x1096", "0.0", " kW"] + ], "addrCurve": ["0x107E", "0x1084", "0x1096"] }, "PCS":{ "deviceType":102, "addrYC":[ + ["充放状态", "0x1009", "--", ""], + ["电网状态", "0x100A", "--", ""], + ["总充电量", "0x0003", "0.0", " kWh"], + ["总放电量", "0x0005", "0.0", " kWh"], ["A相电压", "0x0010", "0.0", " V", "1"], ["A相电流", "0x0019", "0.0", " A"], ["B相电压", "0x0011", "0.0", " V", "1"], ["B相电流", "0x001A", "0.0", " A"], ["C相电压", "0x0011", "0.0", " V", "1"], - ["C相电流", "0x001B", "0.0", " A"] + ["C相电流", "0x001B", "0.0", " A"], + ["总有功功率", "0x0025", "0.0", " kW"] ], "addrCurve": ["0x0010", "0x0019", "0x0025"] }, "PCU":{ "deviceType":103, "addrYC":[ + ["电网状态", "0x1007", "--", ""], + ["模块状态", "0x1008", "--", ""], + ["日充电量", "0x0006", "0.0", " kWh"], + ["日放电量", "0x0008", "0.0", " kWh"], + ["总充电量", "0x000A", "0.0", " kWh"], + ["总放电量", "0x000C", "0.0", " kWh"], ["A相电压", "0x0013", "0.0", " V", "1"], ["A相电流", "0x001C", "0.0", " A"], ["B相电压", "0x0014", "0.0", " V", "1"], ["B相电流", "0x001D", "0.0", " A"], ["C相电压", "0x0015", "0.0", " V", "1"], - ["C相电流", "0x001E", "0.0", " A"] + ["C相电流", "0x001E", "0.0", " A"], + ["总有功功率", "0x0028", "0.0", " kW"] ], "addrCurve": ["0x0013", "0x001C", "0x0028"] }, "BMS":{ "deviceType":104, "addrYC":[ + ["充放状态", "0x004A", "--", ""], + ["堆功率", "0x000F", "0.0", " kW"], ["SOC", "0x0001", "0", " %", "0.1"], ["SOH", "0x0002", "0", " %", "0.1"], ["电压", "0x0003", "0.0", " V", "0.1"], ["电流", "0x0005", "0.0", " A", "0.1"], - ["单体最大电压", "0x0021", "0.0", " V", "0.1"], + ["单体最电压", "0x0021", "0.0", " V", "0.1"], ["单体最小电压", "0x0024", "0.0", " V", "0.1"], ["单体最大温度", "0x0029", "0.0", " ℃", "0.1"], - ["单体最小温度", "0x002C", "0.0", " ℃", "0.1"] + ["单体最小温度", "0x002C", "0.0", " ℃", "0.1"] ], "addrCurve": ["0x0003", "0x0005", ""] }, "BCU":{ "deviceType":105, "addrYC":[ + ["充放状态", "0xA003", "--", ""], + ["运行状态", "0xA004", "--", ""], + ["簇可充容量", "0x0019", "0.0", " Ah", "0.1"], + ["簇可放容量", "0x001B", "0.0", " Ah", "0.1"], + ["簇SOC", "0x000B", "0", " %", "0.1"], + ["簇SOH", "0x000C", "0", " %", "0.1"], ["簇电压", "0x0003", "0.0", " V", "0.1"], ["簇电流", "0x0005", "0", " A", "0.1"], ["簇温度", "0x0007", "0.0", " ℃", "0.1"], - ["簇电阻", "0x0009", "0.0", " Ω"], - ["簇SOC", "0x000B", "0", " %", "0.1"], - ["簇SOH", "0x000C", "0", " %", "0.1"] + ["簇电阻", "0x0009", "0.0", " Ω"] ], "addrCurve": ["0x0003", "0x0005", ""] }, "MEM":{ "deviceType":3, "addrYC":[ + ["日充电电量", "0x002F", "0", " kWh"], + ["日放电电量", "0x0031", "0", " kWh"], + ["总充电电量", "0x004D", "0", " kWh"], + ["总放电电量", "0x004F", "0", " kWh"], + ["日充电费用", "0x0033", "0", " 元"], + ["日放电费用", "0x0035", "0", " 元"], + ["总充电费用", "0x0051", "0", " 元"], + ["总放电费用", "0x0053", "0", " 元"], + ["日收益", "0x0037", "0", " 元"], + ["总收益", "0x0055", "0", " 元"], ["A相电压", "0x000B", "0.0", " V"], ["A相电流", "0x000D", "0.0", " A"], ["B相电压", "0x000F", "0.0", " V"], ["B相电流", "0x0011", "0.0", " A"], ["C相电压", "0x0013", "0.0", " V"], - ["C相电流", "0x0015", "0.0", " A"] + ["C相电流", "0x0015", "0.0", " A"], + ["总有功总需量", "0x0025", "0.0", " kW"] ], "addrCurve": ["0x000B","0x0011","0x0023"] }, @@ -96,14 +127,15 @@ "Charger": { "deviceType":106, "addrYC":[ - ["需求电压", "31071", "0.0", " V"], - ["需求电流", "31073", "0.0", " A"], - ["需求功率", "31075", "0.0", " kW"], - ["功率限值", "31077", "0.0", " kW"], - ["输出电压", "31079", "0.0", " V"], - ["输出电流", "31081", "0.0", " A"], - ["输出功率", "31083", "0.0", " kW"] + ["工作状态", "11", "空闲", ""], + ["需求电压", "12", "0.0", " V", "0.1"], + ["需求电流", "13", "0.0", " A", "0.01"], + ["需求功率", "14", "0.0", " kW", "0.1"], + ["输出电压", "15", "0.0", " V", "0.1"], + ["输出电流", "16", "0.0", " A", "0.01"], + ["输出功率", "17", "0.0", " kW", "0.1"], + ["功率限值", "18", "0.0", " kW", "0.1"] ], - "addrCurve": ["31079", "31081", "31083"] + "addrCurve": ["15", "16", "17"] } } \ No newline at end of file diff --git a/src/app/Application.cpp b/src/app/Application.cpp index 3d44d33..e430be7 100644 --- a/src/app/Application.cpp +++ b/src/app/Application.cpp @@ -16,6 +16,11 @@ void Application::init() { // 初始化系统配置,读取配置文件 Config::init("assets/config/app.json"); + if (Config::option.debug) + { + spdlog::set_level(spdlog::level::debug); // 设置全局日志等级为 debug + spdlog::debug("[app] spdlog debug enable."); + } // MQTT 数据结构 REGAddr::load("assets/config/regaddrs.json"); @@ -77,8 +82,8 @@ void Application::runThreadMain() if (!this->isInit) { continue; } } - static TimeTick ttMqtt(1); // 检查 场站的 MQTT 连接 - if (ttMqtt.elapse(20)) + static TimeTick ttMqtt; // 检查 场站的 MQTT 连接 + if (ttMqtt.elapse(30)) { auto& optionMqtt = Config::option.mqtt; if (!optionMqtt.host.empty()) @@ -86,22 +91,21 @@ void Application::runThreadMain() for (auto& item : appdata.mapStation) { auto& station = item.second; - if (station && station->isOpen) + if (station) { - // 该函数检查连接状态,若已经连接,则无操作;若未连接,则进行连接操作 - item.second->initMqtt(); - // 召测 - item.second->polling(); + if (station->isOpen) + { + // 该函数检查连接状态,若已经连接,则无操作;若未连接,则进行连接操作 + item.second->initMqtt(); + // 召测 + item.second->polling(); + } + // 检查设备的在线状态 + station->checkDevice(); } } } } - - static TimeTick ttData(1); // 检查数据 - if (ttData.elapse(20)) - { - //appdata.initFromDB(); - } } } @@ -110,20 +114,14 @@ void Application::runThreadStat() int nCachePos = 0; while (!isQuit) { - int64_t tTime = Utils::time(); - int64_t tDate = Utils::date(); - int64_t delta = tTime-tDate; - int n = delta / 600; - int offset = delta % 600; - bool flagStore = (delta >=0 && delta < 86400 && offset <= 10 && n != nCachePos); - if (flagStore) + static TimeTick ttStat(1); + if(ttStat.elapse(10)) { - nCachePos = n; - std::string dt = Utils::dateStr(tDate); - // // 设备历史数据(电压、电流、功率),存储到 history_day + // 设备历史数据(电压、电流、功率),存储到 history_day + // 统计数据,存储到 stat_day for (auto item: appdata.mapStation) { - item.second->writeRuntimeData(dt, nCachePos); + item.second->writeStatistic(); } } else @@ -131,12 +129,6 @@ void Application::runThreadStat() //spdlog::info("保存历史数据倒计时: {}", 600 - offset); } - // 统计计算,存储到 stat_station - for (auto& station : appdata.mapStation) - { - - } - std::this_thread::sleep_for(std::chrono::seconds(1)); } } \ No newline at end of file diff --git a/src/app/Config.cpp b/src/app/Config.cpp index e4129f6..b18e153 100644 --- a/src/app/Config.cpp +++ b/src/app/Config.cpp @@ -5,6 +5,7 @@ #include "common/JsonN.h" #include "common/Spdlogger.h" #include "AppData.h" +#include "protocol/MqttEntity.h" AppOption Config::option; @@ -19,49 +20,106 @@ bool Config::init(std::string filename) } spdlog::info("[config] load config file success, filename={}", filename); + JSON::read(jsonroot, "debug", option.debug); + JSON::read(jsonroot, "weburl", option.webSrvUrl); + JSON::read(jsonroot, "launchdate", option.lunchDate); + + if (jsonroot.contains("database")) { - njson json = jsonroot.at("database"); + njson& json = jsonroot.at("database"); JSON::read(json, "host", option.database.host); JSON::read(json, "port", option.database.port); JSON::read(json, "user", option.database.user); JSON::read(json, "passwd", option.database.passwd); JSON::read(json, "dbname", option.database.dbname); - spdlog::info("[config] parse database success. host={}", option.database.host); } else { - spdlog::info("[config] parse database failed: not found."); + spdlog::error("[config] parse database failed: not found."); } if (jsonroot.contains("http")) { - njson json = jsonroot.at("http"); - std:string token; - JSON::read(json, "token", token); - option.http.useToken = !token.empty(); + njson& json = jsonroot.at("http"); + JSON::read(json, "token", option.http.useToken); JSON::read(json, "port", option.http.port); + JSON::read(json, "encryption", option.http.encryption); + JSON::read(json, "encryptKey", option.http.encryptKey); } else { - spdlog::info("[config] parse http failed: not found."); + spdlog::error("[config] parse http failed: not found."); } if (jsonroot.contains("mqtt")) { - njson json = jsonroot.at("mqtt"); + njson& json = jsonroot.at("mqtt"); JSON::read(json, "host", option.mqtt.host); JSON::read(json, "username", option.mqtt.username); JSON::read(json, "password", option.mqtt.password); } else { - spdlog::info("[config] parse mqtt failed: not found."); + spdlog::error("[config] parse mqtt failed: not found."); } - JSON::read(jsonroot, "weburl", option.webSrvUrl); - JSON::read(jsonroot, "launchdate", option.lunchDate); + if (jsonroot.contains("view")) + { + njson& json = jsonroot["view"]; + JSON::read(json, "latitude", option.view.latitude); + JSON::read(json, "longitude", option.view.longitude); + JSON::read(json, "altitude", option.view.altitude); + } + else + { + spdlog::error("[config] parse view failed: not found."); + } + if (jsonroot.contains("video")) + { + njson& json = jsonroot["video"]; + for (auto& item: json.items()) + { + auto& key = item.key(); + auto& jsonItem = item.value(); + auto& itemVideo = option.mapVideo[key]; + JSON::read(jsonItem, "host", itemVideo.host); + JSON::read(jsonItem, "port", itemVideo.port); + JSON::read(jsonItem, "user", itemVideo.user); + JSON::read(jsonItem, "passwd", itemVideo.passwd); + } + } + else + { + spdlog::error("[config] parse video failed: not found."); + } + + if (jsonroot.contains("topic")) + { + njson& json = jsonroot["topic"]; + for (auto& item: json.items()) + { + auto& key = item.key(); + auto& jsonItem = item.value(); + auto& info = MqttClient::s_mapTopicInfo[key]; + info.name = key; + JSON::read(jsonItem, "deviceType", info.deviceType); + JSON::read(jsonItem, "polling", info.polling); + JSON::read(jsonItem, "enabled", info.enabled); + } + } return true; +} + + +AppOption::VideoInfo* Config::getVideoInfo(std::string name) +{ + auto iter = option.mapVideo.find(name); + if (iter!=option.mapVideo.end()) + { + return &(iter->second); + } + return nullptr; } \ No newline at end of file diff --git a/src/app/Config.h b/src/app/Config.h index f800504..ad6bd91 100644 --- a/src/app/Config.h +++ b/src/app/Config.h @@ -1,23 +1,27 @@ #pragma once +#include #include -struct DatabaseOption -{ - std::string host; - int port; - std::string user; - std::string passwd; - std::string dbname; -}; - struct AppOption { - DatabaseOption database; + int debug {0}; + std::string webSrvUrl; + std::string lunchDate; struct { - bool useToken {true}; + std::string host; + int port; + std::string user; + std::string passwd; + std::string dbname; + } database; + + struct { + int useToken {1}; int port {0}; + int encryption {1}; + std::string encryptKey; } http; struct { @@ -26,8 +30,20 @@ struct AppOption std::string password; } mqtt; - std::string webSrvUrl; - std::string lunchDate; + struct { + float latitude {0}; + float longitude {0}; + float altitude {0}; + } view; + + struct VideoInfo { + std::string host; + int port; + std::string user; + std::string passwd; + }; + + std::map mapVideo; }; @@ -36,6 +52,7 @@ class Config public: static bool init(std::string filename); + static AppOption::VideoInfo* getVideoInfo(std::string name); static AppOption option; }; \ No newline at end of file diff --git a/src/app/DataStruct.cpp b/src/app/DataStruct.cpp index c17f742..bccf39b 100644 --- a/src/app/DataStruct.cpp +++ b/src/app/DataStruct.cpp @@ -34,16 +34,14 @@ void REGAddr::load(std::string filename) for (auto& item : jsonaddrs) { std::string addr = item["key"]; - mapItem[addr] = RegAddrUnit(addr, item["datatype"], item["remark"]); + std::string datatype = JSON::read(item, "datatype"); + std::string remark = JSON::read(item, "remark"); + std::string name = JSON::read(item, "name"); + int alert = JSON::read(item, "alert"); + mapItem[addr] = RegAddrUnit(addr, datatype, alert, name, remark); } } } - - //for (auto& item: s_mapReg["EMS_YC"]) - //{ - // auto& unit = item.second; - // spdlog::info("[{}]={}, {}", unit.key, unit.datatype, unit.remark); - //} } std::map* REGAddr::getRegMap(std::string name) diff --git a/src/app/DataStruct.h b/src/app/DataStruct.h index 989a398..013f6d4 100644 --- a/src/app/DataStruct.h +++ b/src/app/DataStruct.h @@ -2,21 +2,57 @@ #include #include +enum class EAlertType +{ + SYS = 1, // 系统告警 + USER = 2, // 用户告警 + DEVICE = 3, // 设备告警 +}; + +enum class EDeviceType +{ + //1 变压器 0 + //2 配电柜 0 + //3 电表 1 + //4 门禁 0 + //5 空调 0 + //6 照明 0 + //7 消防 0 + //8 光照监测设备 0 + //9 风速监测设备 0 + //10 温湿度监测设备 0 + //11 烟感监测设备 0 + //12 水浸传感器 0 + //13 视频监控 4 + //14 冷机 0 + //15 网关 0 + //100 储能预制舱 1 + EMS = 101,//101 EMS 1 + PCS = 102, //102 PCS 1 + PCU = 103, //103 PCU 1 + BMS = 104, //104 BMS 1 + BCU = 105, //105 BCU 1 + //106 充电桩 2 + //107 充电枪 2 + //108 集中器 2 + //109 光伏板 3 + //110 风力发电机 3 +}; + struct RegAddrUnit { std::string key; std::string datatype; - int bytes {0}; + std::string name; std::string remark; int ratio {1}; + int alert {0}; RegAddrUnit() {} - RegAddrUnit(std::string key, std::string datatype, std::string remark) - : key(key), datatype(datatype), remark(remark) + RegAddrUnit(std::string key, std::string datatype, int alert, std::string name, std::string remark) + : key(key), datatype(datatype), alert(alert), name(name), remark(remark) { - if (datatype == "uint16" || datatype == "int16") { bytes = 1; } - else if (datatype == "uint32" || datatype == "int32") { bytes = 2; } } }; diff --git a/src/app/Device.cpp b/src/app/Device.cpp index 5fcce92..de62fbf 100644 --- a/src/app/Device.cpp +++ b/src/app/Device.cpp @@ -4,7 +4,7 @@ #include "common/Utils.h" #include "protocol/CommEntity.h" #include "common/JsonN.h" - +#include "app/DataStruct.h" #include std::map> Device::s_mapDeviceAddrParam; @@ -76,6 +76,13 @@ void Device::loadParamAddr(std::string filename) } } + +static const int BCU_UNIT_SIZE = 256; +Device::Device() +{ + vecBCUUnit = std::vector>(BCU_UNIT_SIZE, std::vector(5, 0.0f)); +} + void Device::setFields(Fields& fields) { fields.get("station_id", this->stationId); @@ -256,6 +263,9 @@ void Device::storeDB(int npos) void Device::setParam(std::string k, int v) { + this->ts = Utils::time(); + online = 1; + float ratio = 1.0; auto iter = mapMyParams.find(k); if (iter != mapMyParams.end()) @@ -264,40 +274,62 @@ void Device::setParam(std::string k, int v) //spdlog::info("[device] set param: {} {}={}, ratio={}", iter->second->name, k, v, ratio); } + if (type == 106) // 充电桩2号枪,特殊数据格式 + { + if (k=="22") { ratio = 0.1; } + else if (k=="23") { ratio = 0.01; } + else if (k== "24") { ratio = 0.1; } + else if (k== "25") { ratio = 0.1; } + else if (k== "26") { ratio = 0.01; } + else if (k== "27") { ratio = 0.1; } + else if (k== "28") { ratio = 0.1; } + } + int precision = (ratio != 1.0f) ? 1 : 0; - mapParams[k] = Utils::toStr(v*ratio, precision); + std::string valStr = Utils::toStr(v*ratio, precision); + if (type == 106) // 充电桩状态,特殊数据格式 + { + if (k=="11" || k == "21") { + valStr = (valStr == "1" ? "充电" : "空闲"); + } + } + mapParams[k] = valStr; if (type == 3 ) // 电表 - { - if (k == "") this->err = v; + { + running = 1; } else if (type == 101) // EMS { + running = 1; } else if (type == 102) // PCS { - if (k == "0x1003") err = v; // 故障状态 R uint16 1故障,0正常 0 0x1003 - if (k == "0x1005") online = v; // 设备在线 R uint16 1在线,0无效 1 0x1005 - if (k == "0x1009") running = (v==1 || v==2); //充放状态 R uint16 0:待机, 1:充电, 2:放电, 3:搁置 0 0x1009 + if (k == "0x1003") err = v; // 故障状态 R uint16 1故障,0正常 0 0x1003 + else if (k == "0x1005") online = v; // 设备在线 R uint16 1在线,0无效 1 0x1005 + else if (k == "0x1009") running = (v==1 || v==2); //充放状态 R uint16 0:待机, 1:充电, 2:放电, 3:搁置 0 0x1009 } else if (type == 103) // PCU { - if (k == "0x1002") err = v; //故障状态 R uint16 1故障,0正常 0 0x1002 - if (k == "0x1004") online = v; //设备在线 R uint16 1在线,0无效 1 0x1004 - if (k == "0x1006") running = v; //启停状态 R uint16 1开机,0关机 1 0x1006 + if (k == "0x1002") err = v; //故障状态 R uint16 1故障,0正常 0 0x1002 + else if (k == "0x1004") online = v; //设备在线 R uint16 1在线,0无效 1 0x1004 + else if (k == "0x1006") running = v; //启停状态 R uint16 1开机,0关机 1 0x1006 } else if (type == 104) // BMS { - if (k == "0x004A") { err = (v==1); online = 1; } //运行状态 R uint16 0 运行状态 0-正常 1-告警 2-保护 0x004A - if (k == "0x004B") running = (v==1 || v==2); //充放电状态 R uint16 0 0-待机 1-充电 2-放电 0x004B + if (k == "0x004A") { err = (v==1); } //运行状态 R uint16 0 运行状态 0-正常 1-告警 2-保护 0x004A + else if (k == "0x004B") running = (v==1 || v==2); //充放电状态 R uint16 0 0-待机 1-充电 2-放电 0x004B } - else if (type == 105) // BCU + else if (type == int(EDeviceType::BCU)) // BCU { - if (k == "0xA003") running = (v==0x33 || v==0x44); //蓄电池充放电状态 R uint16 "0x11开路,0x22待机,0x33充电,0x44放电" 34 0xA003 - if (k == "0xA004") err = (v==0x55); online=1; //电池组运行状态 R uint16 "0x11跳机,0x22待机,0x33放空,0x44充满,0x55预警,0x66正常" 102 0xA004 + if (k == "0xA003") { running = (v==0x33 || v==0x44); } //蓄电池充放电状态 R uint16 "0x11开路,0x22待机,0x33充电,0x44放电" 34 0xA003 + else if (k == "0xA004") { err = (v==0x55); } //电池组运行状态 R uint16 "0x11跳机,0x22待机,0x33放空,0x44充满,0x55预警,0x66正常" 102 0xA004 } else if (type == 106) // 充电桩 { + if (k == "21") { + running = (mapParams["11"] == "充电" || mapParams["21"] == "充电"); // 充电状态: 0:空闲,1:充电 + } } else if (type == 109) // 光伏板 { @@ -329,13 +361,69 @@ void Device::getRuntimeParams(std::vector>& // 106 充电桩 // 109 光伏板 auto& vecAddr = s_mapDeviceAddrParam[this->type]; - for (auto& itemAddr: vecAddr) + for (auto& item: vecAddr) { - std::string v; - v = getParam(itemAddr.addr, itemAddr.defaultVal) + itemAddr.unit; + std::string v = getParam(item.addr, item.defaultVal); + if (type == int(EDeviceType::BCU) ) + { + if (item.addr == "0xA003") //"0x11开路,0x22待机,0x33充电,0x44放电" + { + if (v == "17") v = "开路"; + else if (v == "34") v = "待机"; + else if (v == "51") v = "充电"; + else if (v == "68") v = "放电"; + } + else if (item.addr == "0xA004") //"0x11跳机 ,0x22待机,0x33放空,0x44充满,0x55预警,0x66正常" + { + if (v == "17") v = "跳机"; + else if (v == "34") v = "待机"; + else if (v == "51") v = "放空"; + else if (v == "68") v = "充满"; + else if (v == "85") v = "预警"; + else if (v == "102") v = "正常"; + } + } + else if (type == int(EDeviceType::BMS)) + { + if (item.addr == "0x004A") // 0-待机 1-充电 2-放电 + { + if (v == "0") v = "待机"; + else if (v == "1") v = "充电"; + else if (v == "2") v = "放电"; + } + } + else if (type == int(EDeviceType::PCU)) + { + if (item.addr == "0x1007") // 电网状态 R uint16 1离网,0并网 0x1007 + { + if (v == "0") v = "并网"; + else if (v == "1") v = "离网"; + } + if (item.addr == "0x1008") // 模块状态 R uint16 1开机,0待机 0x1008 + { + if (v == "0") v = "开机"; + else if (v == "1") v = "待机"; + } + } + else if (type == int(EDeviceType::PCS)) + { + if (item.addr == "0x1009") //充放状态 R uint16 0:待机, 1:充电, 2:放电, 3:搁置 0x1009 + { + if (v == "0") v = "待机"; + else if (v == "1") v = "充电"; + else if (v == "2") v = "放电"; + else if (v == "3") v = "搁置"; + } + else if (item.addr == "0x100A") //电网状态 R uint16 1离网,0并网 0x100A + { + if (v == "0") v = "并网"; + else if (v == "1") v = "离网"; + } + } + //if (this->online) { } //else { v = "--"; } - params.push_back({itemAddr.name, v}); + params.push_back({item.name, v + item.unit}); } } @@ -343,12 +431,39 @@ void Device::getRuntimeParams1(std::vector>& { if (type == 106) { - params.push_back({"需求电压", getParam("31072", "0.0") + " V"}); - params.push_back({"需求电流", getParam("31074", "0.0") + " A"}); - params.push_back({"需求功率", getParam("31076", "0.0") + " kW"}); - params.push_back({"功率限值", getParam("31078", "0.0") + " kW"}); - params.push_back({"输出电压", getParam("31080", "0.0") + " V"}); - params.push_back({"输出电流", getParam("31082", "0.0") + " A"}); - params.push_back({"输出功率", getParam("31084", "0.0") + " kW"}); + params.push_back({"工作状态", getParam("21", "空闲")}); + params.push_back({"需求电压", getParam("22", "0.0") + " V"}); + params.push_back({"需求电流", getParam("23", "0.0") + " A"}); + params.push_back({"需求功率", getParam("24", "0.0") + " kW"}); + params.push_back({"输出电压", getParam("25", "0.0") + " V"}); + params.push_back({"输出电流", getParam("26", "0.0") + " A"}); + params.push_back({"输出功率", getParam("27", "0.0") + " kW"}); + params.push_back({"功率限值", getParam("28", "0.0") + " kW"}); + } +} + +void Device::setBCUUnit(std::string k, int pos, int v, int count) +{ + //单体SOC R uint16[1000] 0.1 0x0056~0x043D + //单体SOH R uint16[1000] 0.1 0x043E~0x0825 + //单体电压 R uint16[1000] mV 0x0826~0x0C0D + //单体温度 R int16[1000] 0.01℃ 0x0C0E~0x0FF5 + //单体内阻 R uint16[1000] mΩ 0x0FF6~0x13DD + if (pos < BCU_UNIT_SIZE) + { + auto& bcuUnit = vecBCUUnit[pos]; + if (pos == 0) + { + bcuCount = count; + for (int i = count; i create(Fields& fields); static void loadParamAddr(std::string filename); + Device(); + void setFields(Fields& fields); int startComm(); @@ -55,6 +58,8 @@ public: void getRuntimeParams(std::vector>& params); void getRuntimeParams1(std::vector>& params); + void setBCUUnit(std::string k, int pos, int v, int count); + public: static std::map> s_mapDeviceAddrParam; static std::map> s_mapDeviceAddrCurve; @@ -73,6 +78,8 @@ public: int online = 0; int running = 0; + int64_t ts {0}; + //std::map mapAttrs; Fields attrs; @@ -87,5 +94,7 @@ public: std::map mapMyParams; + std::vector> vecBCUUnit; + int bcuCount {0}; }; diff --git a/src/app/Policy.cpp b/src/app/Policy.cpp index 3b1ee87..5a88460 100644 --- a/src/app/Policy.cpp +++ b/src/app/Policy.cpp @@ -99,13 +99,13 @@ void SysPolicy::parseJsonPeriods(njson& jsonroot) { auto& jsonP = item["charge_time"]; vecPeriods1[i].push_back({jsonP[0], "谷"}); // 第一/二次充电开始 - vecPeriods1[i].push_back({jsonP[1], "平"}); // 第一/二次充电结束 + vecPeriods1[i].push_back({jsonP[1], ""}); // 第一/二次充电结束 } if (item.contains("discharge_time") && item["discharge_time"].size() >= 2) { auto& jsonP = item["discharge_time"]; vecPeriods1[i].push_back({jsonP[0], "尖"}); // 第一/二次放电开始 - vecPeriods1[i].push_back({jsonP[1], "峰"}); // 第一/二次放电结束 + vecPeriods1[i].push_back({jsonP[1], ""}); // 第一/二次放电结束 } } } @@ -123,9 +123,8 @@ static void PeriodsTimeStrToInt(std::string str, int& h, int& m) void SysPolicy::getGatewayJsonPeriods(njson& json) { - if (type == 1 || type == 5) + if (type == 1) { - // std::vector>> for (auto& itemMonth: vecPeriods1) { njson jsonArrayMonth = njson::array(); @@ -143,4 +142,22 @@ void SysPolicy::getGatewayJsonPeriods(njson& json) json.push_back(jsonArrayMonth); } } + else if (type == 5) + { + if (vecPeriods1.size()>0) + { + for (auto& item: vecPeriods1[0]) + { + int h = 0; int m = 0; + PeriodsTimeStrToInt(item.first, h, m); + int p = 1; + if (item.second == "谷") p = 1; + else if (item.second == "平") p = 2; + else if (item.second == "峰") p = 3; + else if (item.second == "尖") p = 4; + else p = 0; + json.push_back({h, m, p}); + } + } + } } \ No newline at end of file diff --git a/src/app/Station.cpp b/src/app/Station.cpp index b5eb7c2..61ac872 100644 --- a/src/app/Station.cpp +++ b/src/app/Station.cpp @@ -8,24 +8,12 @@ #include "protocol/MqttEntity.h" #include "common/JsonN.h" #include "app/Config.h" +#include "common/Snowflake.h" +#include "app/DataStruct.h" Station::Station() : stationId(0) { mqttCli = std::make_shared(); - - // 测试,设置默认值 - for (int i = 1; i<=5; i++) { - auto& unit = mapCoolingUnit[i]; - unit.powerOn = 1; - unit.mode = i%2; - } - - for (int i = 1; i<=5; i++) { - auto& unit = mapAircUnit[i]; - unit.powerOn = 1; - unit.temp = Utils::random(20, 40); - unit.hum = Utils::random(20, 80); - } } void Station::setFields(Fields& fields) @@ -33,12 +21,12 @@ void Station::setFields(Fields& fields) this->stationId = fields.get(DMStation::STATION_ID); this->name = fields.value(DMStation::NAME); this->capacity = fields.get(DMStation::CAPACITY); - this->workModeId = fields.get(DMStation::WORK_MODE); + this->workMode = fields.get(DMStation::WORK_MODE); this->code = fields.value(DMStation::CODE); this->status = fields.get(DMStation::STATUS); this->operationDate = fields.value(DMStation::OPERATION_DATE); this->isOpen = fields.get(DMStation::STATUS); - + this->launchDate = fields.value("operation_date"); this->policy.setFields(fields); } @@ -134,7 +122,7 @@ void Station::getDeviceByCategory(int category, std::vectorworkModeId = modeId; + this->workMode = modeId; std::string sql = SQL(SQL::TYPE::update).table(DMStation::TABLENAME) .update(DMStation::WORK_MODE, std::to_string(modeId)) .where(DMStation::STATION_ID + "=" + std::to_string(stationId)).str(); @@ -157,71 +145,6 @@ void Station::setPolicy(int policyId) } } -static std::string MapValueToJson(int npos, std::map& mapV) -{ - njson jsonarray = njson::array(); - for (int i = 0; i<=npos; i++) - { - jsonarray.push_back(mapV[i]); - } - return jsonarray.dump(); -} - -void Station::writeRuntimeData(std::string dt, int npos) -{ - auto dao = DaoEntity::create("history_day"); - for (auto iter = mapDevice.begin(); iter!=mapDevice.end(); ++iter) - { - auto device = iter->second; - if (device->cache(npos)) - { - Fields fields; - fields.set("dt", dt); - fields.set("station_id", this->stationId); - fields.set("device_id", device->deviceId); - fields.set("datatype", 1); - fields.set("value", MapValueToJson(npos, device->mapCacheVoltage)); - DAO::insertRuntimeData(dao, fields); - - fields.set("datatype", 2); - fields.set("value", MapValueToJson(npos, device->mapCacheCurrent)); - DAO::insertRuntimeData(dao, fields); - - fields.set("datatype", 3); - fields.set("value", MapValueToJson(npos, device->mapCachePower)); - DAO::insertRuntimeData(dao, fields); - - spdlog::info("[device] write runtime date to database, deviceId={}", device->deviceId); - } - } -} - -void Station::writeStatistic(std::string dt) -{ - Fields fields; - fields.set("storage_elect_in", statData.totalElectIn); - fields.set("storage_elect_out", statData.totalElectOut); - //fields.set("storage_num_in", statData.totalElectIn); - //fields.set("storage_num_out", 0); - //fields.set("storage_num_err", 0); - //fields.set("storage_t_in", 0); - //fields.set("storage_t_out", 0); - //fields.set("storage_usage", 0); - //fields.set("solar_elect_gen", 0); - //fields.set("solar_elect_grid", 0); - //fields.set("solar_num_err", 0); - //fields.set("solar_t", 0); - //fields.set("solar_usage", 0); - //fields.set("charge_elect", 0); - //fields.set("charge_num", 0); - //fields.set("charge_num_err", 0); - //fields.set("charge_t", 0); - //fields.set("charge_usage", 0); - fields.set("income_elect", statData.totalIncome); - //fields.set("income_charge", 0); - //fields.set("usage_rate", 0); -} - void Station::initMqtt() { if (status!=0 && mqttCli) @@ -249,7 +172,7 @@ void Station::setGarewayWorkMode() njson json; json["ts"] = Utils::time(); json["no"] = 1; // 设备编号 - json["40001"] = this->workModeId; + json["40001"] = this->workMode; if (policy.type == 1) { @@ -267,31 +190,75 @@ void Station::setGarewayWorkMode() mqttCli->publish("Gateway_YT", text); } - -void Station::setRuntimeData(string addr, int val) +void Station::checkDevice() { - if (addr == "0x110E") { statData.dayElectIn = val; } //日充电电量 R uint32 1kWh 0 0x110E - else if (addr == "0x1110") { statData.dayElectOut = val; } //日放电电量 R uint32 1kWh 0 0x1110 - else if (addr == "0x1112") { statData.dayIncomeIn = val; } //日充电费用 R uint32 1RMB 0 0x1112 - else if (addr == "0x1114") { statData.dayIncomeOut = val; } //日放电费用 R uint32 1RMB 0 0x1114 - else if (addr == "0x1116") { statData.dayIncome = val; } //日收益 R int32 1RMB 0 0x1116 - else if (addr == "0x112C") { statData.totalElectIn = val; } //总充电电量 R uint32 1kWh 6659(0x112D) 0x112C - else if (addr == "0x112E") { statData.totalElectOut = val; } //总放电电量 R uint32 1kWh 4925(0x112F) 0x112E - else if (addr == "0x1130") { statData.totalIncomeIn = val; } //总充电费用 R uint32 1RMB 6605(0x1131) 0x1130 - else if (addr == "0x1132") { statData.totalIncomeOut = val; } //总放电费用 R uint32 1RMB 4949(0x1133) 0x1132 - else if (addr == "0x1134") { statData.totalIncome = val; } //总收益 R int32 1RMB -1 0x1134 + for (auto& item: mapDevice) + { + auto& device = item.second; + if (device) + { + if (Utils::time() - device->ts > 60*6) + { + device->online = 0; + } + } + } } -void Station::setTHData(int deviceNo, string addr, int val) +void Station::readAlert(std::shared_ptr device, int v, std::string text) +{ + Fields fields; + fields.set("log_id", Snowflake::instance().getIdStr()); + if (device) { fields.set("device_id", device->deviceId); } + fields.set("type", int(EAlertType::DEVICE)); + fields.set("context", text + ":故障(" + std::to_string(v) + ")"); + fields.set("status", 1); + auto dao = DaoEntity::create("log_alert"); + dao->insertFields(fields); +} + +void Station::readRuntimeData(int deviceNo, string addr, int val) +{ + if (deviceNo == 1) + { + if (addr == "0x000B") { this->voltage = val; } // A相电压 R uint32 1V 0x000B + if (addr == "0x0011") { this->current = val; } // A相电流 R int32 1A 0x0011 + if (addr == "0x0011") { this->power = val; } // 三相总有功 R int32 1kW 0x0023 + } + else if (deviceNo == 2) + { + statData.ts = Utils::time(); + if (addr == "0x002F") { statData.dayElectIn = val; } //日充电电量 R uint32 1kWh 0x002F + else if (addr == "0x0031") { statData.dayElectOut = val; } //日放电电量 R uint32 1kWh 0x0031 + else if (addr == "0x0033") { statData.dayFeeIn = val; } //日充电费用 R uint32 1RMB 0x0033 + else if (addr == "0x0035") { statData.dayFeeOut = val; } //日放电费用 R uint32 1RMB 0x0035 + else if (addr == "0x0037") { statData.dayIncome = val; } //日收益 R int32 1RMB 0x0037 + else if (addr == "0x004D") { statData.totalElectIn = val; } //总充电电量 R uint32 1kWh 0x004D + else if (addr == "0x004F") { statData.totalElectOut = val; } //总放电电量 R uint32 1kWh 0x004F + else if (addr == "0x0051") { statData.totalFeeIn = val; } //总充电费用 R uint32 1RMB 0x0051 + else if (addr == "0x0053") { statData.totalFeeOut = val; } //总放电费用 R uint32 1RMB 0x0053 + else if (addr == "0x0055") { statData.totalIncome = val; } //总收益 R int32 1RMB 0x0055 + } +} + +void Station::readTHData(int deviceNo, string addr, int val) { auto& unit = mapTempHumUnit[deviceNo]; if (addr == "0x0001") { ; } //所属通道号 R uint16 1 0x0001 else if (addr == "0x0002") { ; } //所属温湿度号 R uint16 1~10 0x0002 - else if (addr == "0x0003") { unit.temp = float(val) * 0.1; } //温度 R int16 0.1℃ 0x0003 - else if (addr == "0x0004") { unit.hum = float(val) * 0.1; } //湿度 R int16 0.1℃ 0x0004 + else if (addr == "0x0003") //温度 R int16 0.1℃ 0x0003 + { + unit.temp = float(val) * 0.1; + if (deviceNo == 1) temperature = unit.temp; + } + else if (addr == "0x0004") //湿度 R int16 0.1℃ 0x0004 + { + unit.hum = float(val) * 0.1; + if (deviceNo == 1) humidity = unit.hum; + } } -void Station::setFire40Data(int deviceNo, string addr, int val) +void Station::readFire40Data(int deviceNo, string addr, int val) { auto& unit = mapFire40Unit[deviceNo]; @@ -322,14 +289,14 @@ void Station::setFire40Data(int deviceNo, string addr, int val) } -void Station::setCoolingData(int deviceNo, string addr, int val) +void Station::readCoolingData(int deviceNo, string addr, int val) { auto& unit = mapCoolingUnit[deviceNo]; if (addr == "0x1001") { ; } //所属通道号 R uint16 1 0x1001 else if (addr == "0x1002") { ; }// 所属冷机号 R uint16 1~10 0x1002 - else if (addr == "0x1003") { unit.powerOn = val; }// 开关 R uint16 0:关机,1:开机 0x1003 - else if (addr == "0x1004") { ; }// 采样模式 R uint16 0-出水温度 1-电芯温度 0x1004 + else if (addr == "0x1003") { coolingStatus = unit.powerOn = val; }// 开关 R uint16 0:关机,1:开机 0x1003 + else if (addr == "0x1004") { unit.mode = val; }// 采样模式 R uint16 0-出水温度 1-电芯温度 0x1004 else if (addr == "0x1005") { unit.cooling = val; }// 制冷状态 R uint16 0:关闭, 1:启动 0x1005 else if (addr == "0x1006") { unit.heating = val; }// 制热状态 R uint16 0:关闭, 1:启动 0x1006 else if (addr == "0x1007") { unit.highTemp = val; }// 高温告警 R uint16 0:正常,1:告警 0x1007 @@ -340,4 +307,135 @@ void Station::setCoolingData(int deviceNo, string addr, int val) else if (addr == "0x100C") { ; }// 出水温度传感器 R uint16 0:正常,1:告警 0x100C else if (addr == "0x100D") { ; }// 进水压力传感器 R uint16 0:正常,1:告警 0x100D else if (addr == "0x100E") { ; }// 出水压力传感器 R uint16 0:正常,1:告警 0x100E -} \ No newline at end of file +} + +void Station::readGatewayMode(int mode) +{ + if (mode != this->workMode) + { + //this->setGarewayWorkMode(); + } +} + +void Station::readGatewayStatus(int cdzStatus, int emuStatus) +{ + //充电桩 1:在线,0:离线 + if (cdzStatus >= 0) + { + if (cdzStatus != this->cdzStatus) + { + std::string text = "场站[" + name + "(" + std::to_string(stationId) + ")]充电桩状态变化:" + (cdzStatus>0 ? "在线" : "离线"); + if (this->cdzStatus < 0) { text = "系统启动," + text; } + DAO::insertSystemLogDevice(stationId, 0, text, cdzStatus); + this->cdzStatus = cdzStatus; + } + } + //储能 1:在线,0:离线 + if (emuStatus >= 0) + { + if (emuStatus != this->emuStatus) + { + std::string text = "场站[" + name + "(" + std::to_string(stationId) + ")]储能EMU状态变化:" + (emuStatus>0 ? "在线" : "离线"); + if (this->emuStatus < 0) { text = "系统启动," + text; } + DAO::insertSystemLogDevice(stationId, 0, text, emuStatus); + this->emuStatus = emuStatus; + } + } +} + +static std::string MapValueToJson(int npos, std::map& mapV) +{ + njson jsonarray = njson::array(); + for (int i = 0; i<=npos; i++) + { + jsonarray.push_back(mapV[i]); + } + return jsonarray.dump(); +} + +void Station::writeStatistic() +{ + auto dao = DaoEntity::create("history_day"); + + std::string dt = Utils::dateStr(); + int64_t tTime = Utils::time(); + int64_t tDate = Utils::date(); + int npos = (tTime-tDate) / 600; + + for (auto iter = mapDevice.begin(); iter!=mapDevice.end(); ++iter) + { + auto device = iter->second; + if (device->cache(npos)) + { + Fields fields; + fields.set("dt", dt); + fields.set("station_id", this->stationId); + fields.set("device_id", device->deviceId); + fields.set("datatype", 1); + fields.set("value", MapValueToJson(npos, device->mapCacheVoltage)); + DAO::insertRuntimeData(dao, fields); + + fields.set("datatype", 2); + fields.set("value", MapValueToJson(npos, device->mapCacheCurrent)); + DAO::insertRuntimeData(dao, fields); + + fields.set("datatype", 3); + fields.set("value", MapValueToJson(npos, device->mapCachePower)); + DAO::insertRuntimeData(dao, fields); + //spdlog::info("[device] write runtime date to database, deviceId={}", device->deviceId); + } + } + + if (statData.ts != 0) + { + Fields fields; + fields.set("dt", Utils::dateStr(statData.ts)); + fields.set("station_id", this->stationId); + fields.set("category", 1); + fields.set("device_id", 0); + fields.set("elect_in", statData.dayElectIn); + fields.set("elect_out", statData.dayElectOut); + fields.set("fee_in", statData.dayFeeIn); + fields.set("fee_out", statData.dayFeeOut); + fields.set("income", statData.dayIncome); + //fields.set("num_in", ""); + //fields.set("num_out", ""); + //fields.set("num_err", ""); + //fields.set("t_in", ""); + //fields.set("t_out", ""); + //fields.set("usage_rate", ""); + fields.set("elect_in_total", statData.totalElectIn); + fields.set("elect_out_total", statData.totalElectOut); + fields.set("fee_in_total", statData.totalFeeIn); + fields.set("fee_out_total", statData.totalFeeOut); + fields.set("income_total", statData.totalIncome); + + dao->setTableName("stat_storage"); + std::vector vecKeys = { + "elect_in", "elect_out", "num_in", "num_out", "num_err", "t_in", "t_out", "usage_rate", "fee_in", "fee_out", + "elect_in_total", "elect_out_total", "fee_in_total", "fee_out_total", "income_total" + }; + dao->duplicateUpdate(fields, vecKeys); + + { + Fields fields; + fields.set("dt", Utils::dateStr(statData.ts)); + fields.set("station_id", this->stationId); + fields.set("device_id", 0); + fields.set("storage_elect_in", statData.dayElectIn); + fields.set("storage_elect_out", statData.dayElectOut); + fields.set("income_elect", statData.dayIncome); + DAO::insertStatStation(dao, fields); + } + { + Fields fields; + fields.set("station_id", this->stationId); + fields.set("elect_in", statData.dayElectIn); + fields.set("elect_out", statData.dayElectOut); + fields.set("income", statData.dayIncome); + dao->setTableName("stat_total"); + dao->duplicateUpdate(fields, {"elect_in", "elect_out", "income"}); + } + + } +} diff --git a/src/app/Station.h b/src/app/Station.h index e14a641..7109251 100644 --- a/src/app/Station.h +++ b/src/app/Station.h @@ -109,17 +109,20 @@ public: void setWorkMode(int modeId); void setPolicy(int policyId); - void writeRuntimeData(std::string dt, int npos); - void writeStatistic(std::string dt); - void initMqtt(); void polling(); void setGarewayWorkMode(); + void checkDevice(); - void setRuntimeData(string addr, int val); - void setTHData(int deviceNo, string addr, int val); - void setFire40Data(int deviceNo, string addr, int val); - void setCoolingData(int deviceNo, string addr, int val); + void readAlert(std::shared_ptr device, int v, std::string text); + void readRuntimeData(int deviceNo, string addr, int val); + void readTHData(int deviceNo, string addr, int val); + void readFire40Data(int deviceNo, string addr, int val); + void readCoolingData(int deviceNo, string addr, int val); + void readGatewayMode(int mode); + void readGatewayStatus(int cdzStatus, int emuStatus); + + void writeStatistic(); public: int stationId {}; @@ -129,14 +132,13 @@ public: int status {0}; std::string operationDate; SysPolicy policy; + std::string launchDate {}; bool isConnected {false}; - int workModeId {}; // 运行模式 + int workMode {}; // 运行模式 int runPolicyId {}; // 运行策略 - - /////////////////////////////////////////////////////////////////////////////////////////////// /// === 系统统计 === // 累计发电量,单位:kWh @@ -185,6 +187,12 @@ public: double temperature {}; // 湿度 double humidity {}; + int aircStatus {0}; + int coolingStatus {0}; + double voltage {0}; + double current {0}; + double power {0}; + double powerFactor {0}; /////////////////////////////////////////////////////////////////////////////////////////////// /// === 设备信息 === @@ -207,25 +215,25 @@ public: struct { - int64_t ts; + int64_t ts {0}; - double totalElectIn; //总充电电量 R uint32 1kWh 6659(0x112D) 0x112C - double totalElectOut; //总放电电量 R uint32 1kWh 4925(0x112F) 0x112E - double totalIncomeIn; //总充电费用 R uint32 1RMB 6605(0x1131) 0x1130 - double totalIncomeOut; //总放电费用 R uint32 1RMB 4949(0x1133) 0x1132 - double totalIncome; //总收益 R int32 1RMB -1 0x1134 + float totalElectIn {0.0}; //总充电电量 R uint32 1kWh 6659(0x112D) 0x112C + float totalElectOut {0.0}; //总放电电量 R uint32 1kWh 4925(0x112F) 0x112E + float totalFeeIn {0.0}; //总充电费用 R uint32 1RMB 6605(0x1131) 0x1130 + float totalFeeOut {0.0}; //总放电费用 R uint32 1RMB 4949(0x1133) 0x1132 + float totalIncome {0.0}; //总收益 R int32 1RMB -1 0x1134 //储能充放电时段hh R uint16 时 336 0x01 0x121C //储能充放电时段mm R uint16 分 0 0x01 0x121D //储能充放电时段ss R uint16 秒 0 0x01 0x121E - double totalDurationIn; - double totalDurationOut; + float totalDurationIn {0.0}; + float totalDurationOut {0.0}; - double dayElectIn; // 日充电电量 R uint32 1kWh 0 0x110E - double dayElectOut; // 日放电电量 R uint32 1kWh 0 0x1110 - double dayIncomeIn; // 日充电费用 R uint32 1RMB 0 0x1112 - double dayIncomeOut; // 日放电费用 R uint32 1RMB 0 0x1114 - double dayIncome; // 日收益 R int32 1RMB 0 0x1116 + float dayElectIn {0.0}; // 日充电电量 R uint32 1kWh 0 0x110E + float dayElectOut {0.0}; // 日放电电量 R uint32 1kWh 0 0x1110 + float dayFeeIn {0.0}; // 日充电费用 R uint32 1RMB 0 0x1112 + float dayFeeOut {0.0}; // 日放电费用 R uint32 1RMB 0 0x1114 + float dayIncome {0.0}; // 日收益 R int32 1RMB 0 0x1116 } statData; @@ -233,4 +241,7 @@ public: struct { } runtimeData; + + int cdzStatus {-1}; + int emuStatus {-1}; }; \ No newline at end of file diff --git a/src/common/Spdlogger.cpp b/src/common/Spdlogger.cpp index a9b45bd..61c674b 100644 --- a/src/common/Spdlogger.cpp +++ b/src/common/Spdlogger.cpp @@ -21,7 +21,7 @@ void Spdlogger::init(spdlog::level::level_enum log_level, std::string filename) // 创建控制台接收器 auto consoleSink = std::make_shared(); - consoleSink->set_level(spdlog::level::info); // 设置控制台日志等级 + //consoleSink->set_level(log_level); // 设置控制台日志等级 //consoleSink->set_pattern("[%T] [%^%l%$] %v"); // 设置日志格式 // 创建文件接收器 @@ -31,7 +31,7 @@ void Spdlogger::init(spdlog::level::level_enum log_level, std::string filename) // 每日文件sink(可选,每天生成新文件) auto dailySink = std::make_shared("logs/ess.log", 0, 0); - dailySink->set_level(spdlog::level::debug); + //dailySink->set_level(log_level); //dailySink->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] %v"); // 创建一个多重接收器的 logger @@ -40,8 +40,8 @@ void Spdlogger::init(spdlog::level::level_enum log_level, std::string filename) // 设置全局 logger spdlog::set_default_logger(logger); - spdlog::set_level(spdlog::level::debug); // 设置全局日志等级为 debug - spdlog::flush_on(spdlog::level::info); // 开启日志刷新 + spdlog::set_level(log_level); // 设置全局日志等级为 debug + spdlog::flush_on(log_level); // 开启日志刷新 } void Spdlogger::drop() diff --git a/src/database/Dao.cpp b/src/database/Dao.cpp index d41476b..4b27ba0 100644 --- a/src/database/Dao.cpp +++ b/src/database/Dao.cpp @@ -524,13 +524,14 @@ Errcode DAO::insertSystemLogUser(std::string token, std::string content, int sta fields.set("user_account", user.account); return DAO::insertSystemLog(fields); } -Errcode DAO::insertSystemLogDevice(std::string deviceId, std::string content, int status) +Errcode DAO::insertSystemLogDevice(int stationId, int deviceId, std::string content, int status) { Fields fields; + fields.set("station_id", stationId); + fields.set("device_id", deviceId); fields.set("type", 3); fields.set("content", content); fields.set("status", status); - fields.set("device_id", deviceId); return DAO::insertSystemLog(fields); } @@ -576,7 +577,6 @@ Errcode DAO::queryStatStationGroup(std::shared_ptr dao, string statio if (!sqlCondition.empty()) { sqlCondition = " WHERE " + sqlCondition; } std::string sql = R"(SELECT dt, - SUM(ss.storage_elect_in) storage_elect_in, SUM(storage_elect_in) storage_elect_in, SUM(storage_elect_out) storage_elect_out, SUM(storage_num_in) storage_num_in, @@ -592,7 +592,7 @@ Errcode DAO::queryStatStationGroup(std::shared_ptr dao, string statio AVG(charge_usage) charge_usage, SUM(income_elect) income_elect, SUM(income_charge) income_charge - FROM stat_station ss)" + sqlCondition + "GROUP by dt;"; + FROM stat_day)" + sqlCondition + " GROUP by dt;"; return DAO::exec(dao, sql, result); } @@ -621,7 +621,7 @@ Errcode DAO::queryStatStationList(PageInfo& pageInfo, Fields& params, vector dao, vector& Errcode DAO::insertStatStation(std::shared_ptr dao, Fields& fields) { // 根据主键(dt、station_id、category),写入或更新数据 - if (!dao) { dao = DaoEntity::create("stat_station"); } + if (!dao) { dao = DaoEntity::create("stat_day"); } + else { dao->setTableName("stat_day"); } std::vector vecKeys = { "storage_elect_in", "storage_elect_out", diff --git a/src/database/Dao.h b/src/database/Dao.h index 795c533..9e397c3 100644 --- a/src/database/Dao.h +++ b/src/database/Dao.h @@ -103,7 +103,7 @@ public: static Errcode insertSystemLogSys(std::string content, int status); static Errcode insertSystemLogUser(std::string token, std::string content, int status); - static Errcode insertSystemLogDevice(std::string deviceId, std::string content, int status); + static Errcode insertSystemLogDevice(int stationId, int deviceId, std::string content, int status); static Errcode queryAlertLogList(PageInfo& pageInfo, vector& result); static Errcode insertAlertLog(Fields& params); diff --git a/src/database/DaoEntity.cpp b/src/database/DaoEntity.cpp index 6771809..5d1f36d 100644 --- a/src/database/DaoEntity.cpp +++ b/src/database/DaoEntity.cpp @@ -44,13 +44,13 @@ std::shared_ptr DaoEntity::create(string tb_name) return std::make_shared(tb_name); } -bool DaoEntity::execOnce(string sql) +int DaoEntity::execOnce(string sql) { auto db = make_shared(DaoEntity::option); return db->exec(sql); } -bool DaoEntity::execOnce(string sql, vector& result) +int DaoEntity::execOnce(string sql, vector& result) { auto db = make_shared(DaoEntity::option); return db->exec(sql, result); @@ -129,21 +129,18 @@ int DaoEntity::duplicateUpdate(Fields& fields, const vector& keys) string val; for (auto& item : fields.map()) { - if (!key.empty()) - { - key += ","; val += ","; - } + if (!key.empty()) { key += ","; val += ","; } key += (item.first); val += ("'" + item.second + "'"); } string str; for (auto& k : keys) { - if (!str.empty()) + if (fields.contains(k)) { - str += ","; + if (!str.empty()) { str += ","; } + str += (k + "='" + fields.value(k) + "'"); } - str += (k + "='" + fields.value(k) + "'"); } string sql = "INSERT INTO " + tableName + "(" + key + ") VALUES (" + val + ") ON duplicate KEY UPDATE " + str; return this->db->exec(sql); diff --git a/src/database/DaoEntity.h b/src/database/DaoEntity.h index ec41271..3cc9ba1 100644 --- a/src/database/DaoEntity.h +++ b/src/database/DaoEntity.h @@ -18,14 +18,14 @@ public: * 执行sql语句 * @param: sql 要执行的完整 sql 语句 */ - static bool execOnce(string sql); + static int execOnce(string sql); /** * 执行sql语句,返回结果数据集 * @param: sql 要执行的完整 sql 语句 * @param: result 返回的结果数据集 */ - static bool execOnce(string sql, vector& result); + static int execOnce(string sql, vector& result); /** * 设置数据库表名称 diff --git a/src/database/DataModelDef.h b/src/database/DataModelDef.h index eec5e04..a4c4881 100644 --- a/src/database/DataModelDef.h +++ b/src/database/DataModelDef.h @@ -169,7 +169,7 @@ namespace DMLogAlert namespace DMStatStation { - const string TABLENAME = "stat_station"; + const string TABLENAME = "stat_day"; const string DT = "dt"; const string STATION_ID = "station_id"; const string STORAGE_ELECT_IN = "storage_elect_in"; diff --git a/src/main.cpp b/src/main.cpp index 980dfd8..98ce03c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -124,14 +124,15 @@ int main(int argc, char** argv) // 设置控制台输入为 UTF-8 编码(如果需要输入中文) SetConsoleCP(CP_UTF8); // 初始化日志 - Spdlogger::init(spdlog::level::debug, ""); + Spdlogger::init(spdlog::level::info, ""); spdlog::info("[main] start ... ======================================================================"); - qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--ignore-gpu-blacklist --enable-gpu-rasterization --enable-native-gpu-memory-buffers --num-raster-threads=4"); // 运行后台服务 Application::instance().init(); + + while (1) { std::this_thread::sleep_for(std::chrono::milliseconds(100)); }; // 启动 PV 服务主线程 diff --git a/src/protocol/HttpEntity.cpp b/src/protocol/HttpEntity.cpp index 7a2ba32..bdb5289 100644 --- a/src/protocol/HttpEntity.cpp +++ b/src/protocol/HttpEntity.cpp @@ -128,6 +128,8 @@ public: static std::map g_mapHttpHandlerGet = { + {"/queryBaseinfo", HandlerOptions(&HttpEntity::logqueryBaseinfoin, {})}, + {"/login", HandlerOptions(&HttpEntity::login, {DMUser::ACCOUNT, DMUser::PASSWD})}, {"/queryUserList", HandlerOptions(&HttpEntity::queryUserList, {})}, {"/deleteUser", HandlerOptions(&HttpEntity::deleteUser, { DMUser::USER_ID})}, @@ -155,8 +157,8 @@ static std::map g_mapHttpHandlerGet = {"/queryPolicyList", HandlerOptions(&HttpEntity::queryPolicyList, {})}, - {"/deletePolicy", HandlerOptions(&HttpEntity::deletePolicy, { DMPolicy::POLICY_ID})}, + {"/queryPolicyByType", HandlerOptions(&HttpEntity::queryPolicyByType, {"type"})}, {"/querySystemLogList", HandlerOptions(&HttpEntity::querySystemLogList, {})}, @@ -280,6 +282,7 @@ void HttpEntity::runHandler(std::string name, const HandlerOptions& handler, con jsonresp["errmsg"] = ErrcodeStr(errcode) + (errmsg.empty() ? "" : (":"+errmsg)); resp.set_content(jsonresp.dump(), "text/plain; charset=utf-8"); resp.status = 200; + spdlog::info("[http] request: {}, response: {}.", name, int(errcode)); } void HttpEntity::registGet(std::string name, void (HttpEntity::* func)(const httplib::Request& req, httplib::Response& resp)) @@ -287,6 +290,18 @@ void HttpEntity::registGet(std::string name, void (HttpEntity::* func)(const htt this->httpsvr.Get(name, std::bind(func, this, std::placeholders::_1, std::placeholders::_2)); } +Errcode HttpEntity::logqueryBaseinfoin(const httplib::Request& req, njson& json, std::string& errmsg) +{ + json["data"] = { + {"encryption", Config::option.http.encryption}, + {"encryptKey", Config::option.http.encryptKey}, + {"latitude", Config::option.view.latitude}, + {"longitude", Config::option.view.longitude}, + {"altitude", Config::option.view.altitude} + }; + return Errcode::OK; +} + Errcode HttpEntity::login(const httplib::Request& req, njson& json, std::string& errmsg) { std::string userId; @@ -602,12 +617,13 @@ Errcode HttpEntity::insertStation(const httplib::Request& req, njson& json, std: Errcode HttpEntity::updateStation(const httplib::Request& req, njson& json, std::string& errmsg) { Fields params; - GetRequestParam(req, {"station_id", "name", "address", "lon", "lat", "tel", "capacity", "status", "work_mode", "policy_id"}, params); + GetRequestParam(req, {"station_id", "name", "address", "lon", "lat", "tel", "capacity", "status", "work_mode", "policy_id", "operation_date"}, params); std::string stationId = params.value("station_id"); params.check("capacity", "", "0.0"); params.check("lon", "", "0.0"); params.check("lat", "", "0.0"); params.check("status", "", "1"); + params.check("policy_id", "", "NULL"); Errcode err = DAO::updateStationById(params); if (err == Errcode::OK) { @@ -621,16 +637,11 @@ Errcode HttpEntity::updateStation(const httplib::Request& req, njson& json, std: } else { - if (result.size() > 0) + auto station = Application::data().getStation(Utils::toInt(stationId)); + if (result.size() > 0 && station) { - auto station = Application::data().getStation(Utils::toInt(stationId)); - if (station) - { - station->setFields(result[0]); - station->setGarewayWorkMode(); - } + station->setFields(result[0]); } - } } return err; @@ -681,6 +692,15 @@ Errcode HttpEntity::queryStationOverview(const httplib::Request& req, njson& jso njson jsonCharge = njson::parse(R"({"category":2, "count":0, "power":0.0})"); njson jsonSolar = njson::parse(R"({"category":3, "count":0, "power":0.0})"); njson jsonSecurity = njson::parse(R"({"category":4, "count":0, "power":0.0})"); + auto videoInfo = Config::getVideoInfo(stationId); + if (videoInfo) + { + jsonSecurity["host"] = videoInfo->host; + jsonSecurity["port"] = videoInfo->port; + jsonSecurity["user"] = videoInfo->user; + jsonSecurity["passwd"] = videoInfo->passwd; + } + for (auto& fields : result) { int category = fields.get("category"); @@ -743,17 +763,21 @@ Errcode HttpEntity::queryStationInfo(const httplib::Request& req, njson& json, s } Errcode HttpEntity::queryStationData(const httplib::Request& req, njson& json, std::string& errmsg) { - // 温度, 电压、电流、功率、功率因数、 + std::string stationId = req.get_param_value("station_id"); + auto station = Application::data().getStation(Utils::toInt(stationId)); njson jsondata; - jsondata["voltage"] = Utils::toStr(200.32); - jsondata["current"] = Utils::toStr(20.56); - jsondata["power"] = Utils::toStr(200.32); - jsondata["powerFactor"] = Utils::toStr(1); - jsondata["envTemp"] = Utils::toStr(200.32); - jsondata["envhum"] = Utils::toStr(200.32); - jsondata["aircStatus"] = Utils::toStr(1); - jsondata["coolingStatus"] = Utils::toStr(0); - + if (station) + { + // 温度, 电压、电流、功率、功率因数、 + jsondata["voltage"] = Utils::toStr(station->voltage, 0); + jsondata["current"] = Utils::toStr(station->current, 0); + jsondata["power"] = Utils::toStr(station->power, 0); + jsondata["powerFactor"] = Utils::toStr(station->powerFactor, 0); + jsondata["envTemp"] = Utils::toStr(station->temperature, 0); + jsondata["envhum"] = Utils::toStr(station->humidity, 0); + jsondata["aircStatus"] = station->aircStatus; + jsondata["coolingStatus"] = station->coolingStatus; + } json["data"] = jsondata; return Errcode::OK; } @@ -899,10 +923,28 @@ Errcode HttpEntity::queryDevicCharts(const httplib::Request& req, njson& json, s Errcode HttpEntity::queryDeviceBCUDetail(const httplib::Request& req, njson& json, std::string& errmsg) { + Fields params; + GetRequestParam(req, {"station_id", "device_id"}, params); + if (!params.contains("station_id")) { errmsg = "缺少参数[station_id]"; return Errcode::ERR_PARAM; } + if (!params.contains("device_id")) { errmsg = "缺少参数[device_id]"; return Errcode::ERR_PARAM; } + + int stationId = params.get("station_id"); + int deviceId = params.get("device_id"); + auto device = Application::data().getDevice(stationId, deviceId); + njson jsondata = njson::array(); - for (int i = 0; i<=100; ++i) + if (device) { - jsondata.push_back({{"SOC", "1"}, {"SOH", "1"}, {"V", "1"}, {"T", "1"}, {"R_i", "1"}}); + for (int i = 0; i<=device->bcuCount && ivecBCUUnit.size(); ++i) + { + auto& row = device->vecBCUUnit[i]; + std::string soc = Utils::toStr(row[0], 1); + std::string soh = Utils::toStr(row[1], 1); + std::string u = Utils::toStr(row[2], 0); + std::string t = Utils::toStr(row[3], 2); + std::string r_i = Utils::toStr(row[4], 0); + jsondata.push_back({{"SOC", soc}, {"SOH", soh}, {"V", u}, {"T", t}, {"R_i", r_i}}); + } } json["data"] = jsondata; return Errcode::OK; @@ -937,6 +979,14 @@ Errcode HttpEntity::deletePolicy(const httplib::Request& req, njson& json, std:: GetRequestParam(req, {"policy_id"}, params); return DAO::deletePolicyById(params.value("policy_id")); }; +Errcode HttpEntity::queryPolicyByType(const httplib::Request& req, njson& json, std::string& errmsg) +{ + std::string type = req.get_param_value("type"); + std::string sql = "SELECT policy_id, `type`, name from policy WHERE `type`='" + type + "';"; + std::vector result; + int ret = DaoEntity::execOnce(sql, result); + return Errcode(ret); +} Errcode HttpEntity::querySystemLogList(const httplib::Request& req, njson& json, std::string& errmsg) { @@ -1048,7 +1098,7 @@ Errcode HttpEntity::queryStatStationGroup(const httplib::Request& req, njson& js auto dao = DaoEntity::create(""); std::string sql = R"(SELECT s.station_id, s.name station_name, ss.income_elect, ss.income_charge, ss.storage_usage FROM station s LEFT JOIN - (SELECT station_id, SUM(income_elect ) income_elect , SUM(income_charge) income_charge, avg(storage_usage) storage_usage FROM stat_station GROUP BY station_id) AS ss + (SELECT station_id, SUM(income_elect ) income_elect , SUM(income_charge) income_charge, avg(storage_usage) storage_usage FROM stat_day GROUP BY station_id) AS ss ON ss.station_id = s.station_id)"; std::vector vecStations; auto err = dao->exec(sql, vecStations); @@ -1106,9 +1156,9 @@ static std::string VerifyStatSqlCondition(Fields& params) return sqlCondition; } -static std::string GetRequestStatParams(const httplib::Request& req) +static std::string GetRequestStatParams(const httplib::Request& req, Fields& params) { - Fields params; + GetRequestParam(req, {"station_id", "category", "start_date", "end_date"}, params); VerifyRequstParamsStatDate(params); return VerifyStatSqlCondition(params); @@ -1116,8 +1166,9 @@ static std::string GetRequestStatParams(const httplib::Request& req) Errcode HttpEntity::queryStatTotal(const httplib::Request& req, njson& json, std::string& errmsg) { - std::string sqlCondition = GetRequestStatParams(req); - std::string sql = R"(SELECT SUM(ss.storage_elect_in) storage_elect_in, + Fields params; + std::string sqlCondition = GetRequestStatParams(req, params); + std::string sql = R"(SELECT SUM(storage_elect_in) storage_elect_in, SUM(storage_elect_out) storage_elect_out, SUM(storage_num_in) storage_num_in, @@ -1133,14 +1184,24 @@ Errcode HttpEntity::queryStatTotal(const httplib::Request& req, njson& json, std AVG(charge_usage) charge_usage, SUM(income_elect) income_elect, SUM(income_charge) income_charge - FROM stat_station ss)" + sqlCondition + ";"; + FROM stat_day ss)" + sqlCondition + ";"; + + std::string stationId = params.value("station_id"); + + njson jsondata; + + auto station = Application::data().getStation(Utils::toInt(stationId)); + if (station) + { + jsondata["launch_date"] = station->launchDate; + } std::vector result; DaoEntity::execOnce(sql, result); if (result.size() > 0) { auto& fields = result[0]; - njson jsondata; + // jsondata["launch_date"] = "2025-09-01"; //场站上线日期 // jsondata["station_id"] = station_id; jsondata["storage_elect_in"] = fields.value("storage_elect_in"); //储能充电电量(kWh),精度:0.001 @@ -1170,16 +1231,63 @@ Errcode HttpEntity::queryStatDayList(const httplib::Request& req, njson& json, s std::string category = params.value("category"); std::string startDate = params.value("start_date"); std::string endDate = params.value("end_date"); + if (endDate.empty()) + { + int64_t t = Utils::time(); + endDate = Utils::dateStr(t); + startDate = Utils::dateStr(t - 86400*7); + } std::vector result; auto err = DAO::queryStatStationGroup(NULL, stationId, category, startDate, endDate, result); - json["data"] = FieldsToJsonArray(result); + + if (!startDate.empty() && !endDate.empty()) + { + int64_t t0 = Utils::time(startDate + " 00:00:00"); + int64_t t1 = Utils::time(endDate + " 00:00:00"); + int i = 0; + + njson jsondata = njson::array(); + for (int64_t t = t0; t<=t1; t += 86400) + { + njson jsonrow; + std::string dt = Utils::dateStr(t); + Fields* fields = NULL; + if (ivalue("storage_elect_in") : "0"; + jsonrow["storage_elect_out"] = fields ? fields->value("storage_elect_out") : "0"; + jsonrow["storage_num_in"] = fields ? fields->value("storage_num_in") : "0"; + jsonrow["storage_num_out"] = fields ? fields->value("storage_num_out") : "0"; + jsonrow["storage_num_err"] = fields ? fields->value("storage_num_err") : "0"; + jsonrow["solar_elect_gen"] = fields ? fields->value("solar_elect_gen") : "0"; + jsonrow["solar_elect_grid"] = fields ? fields->value("solar_elect_grid") : "0"; + jsonrow["solar_num_err"] = fields ? fields->value("solar_num_err") : "0"; + jsonrow["storage_usage"] = fields ? fields->value("storage_usage") : "0"; + jsonrow["charge_elect"] = fields ? fields->value("charge_elect") : "0"; + jsonrow["charge_num"] = fields ? fields->value("charge_num") : "0"; + jsonrow["charge_num_err"] = fields ? fields->value("charge_num_err") : "0"; + jsonrow["charge_usage"] = fields ? fields->value("charge_usage") : "0"; + jsonrow["income_elect"] = fields ? fields->value("income_elect") : "0"; + jsonrow["income_charge"] = fields ? fields->value("income_charge") : "0"; + jsondata.push_back(jsonrow); + } + json["data"] = jsondata; + } + else + { + json["data"] = FieldsToJsonArray(result); + } return err; } //Errcode HttpEntity::queryStatDayList(const httplib::Request& req, njson& json, std::string& errmsg) //{ // std::string sqlCondition = GetRequestStatParams(req); -// std::string sql = R"(SELECT ss.*, d.name device_name, ddt.name device_type FROM stat_station ss +// std::string sql = R"(SELECT ss.*, d.name device_name, ddt.name device_type FROM stat_day ss // LEFT JOIN device d ON d.device_id = ss.device_id // LEFT JOIN def_device_type ddt ON ddt.device_type_id = d.`type`)" + sqlCondition + ";"; // @@ -1200,7 +1308,8 @@ Errcode HttpEntity::queryStatDetailList(const httplib::Request& req, njson& json std::vector result; auto err = DAO::queryStatStationList(pageinfo, params, result); - json["data"] = FieldsToJsonArray(result); + //json["data"] = FieldsToJsonArray(result); + HttpHelper::setPagination(pageinfo, result, json); return err; } @@ -1286,40 +1395,38 @@ Errcode HttpEntity::queryEnvironment(const httplib::Request& req, njson& json, s auto& unit = iter->second; njson node; node["pos"] = "#" + std::to_string(iter->first); - node["temp"] = unit.temp; - node["hum"] = unit.hum; + node["temp"] = Utils::toStr(unit.temp); + node["hum"] = Utils::toStr(unit.hum); nodearray.push_back(node); } jsondata["temp_hum"] = nodearray; } { //空调 auto& mapAircUnit = station->mapAircUnit; - AircUnit unitTmp; - AircUnit* unit = (mapAircUnit.size() > 0) ? &(mapAircUnit[0]) : &unitTmp; njson nodearray = njson::array(); - if (unit) + for (auto& item: mapAircUnit) { - nodearray.push_back({{"pos", "开关"}, {"status", unit->powerOn == 0 ? "关机" : "开机"}}); - nodearray.push_back({{"pos", "启动制冷指令"}, {"status", unit->cooling == 0 ? "启动" : "关闭"}}); - nodearray.push_back({{"pos", "启动送风指令"}, {"status", unit->airSupply == 0 ? "关闭" : "启动"}}); - nodearray.push_back({{"pos", "启动待机指令"}, {"status", unit->standby == 0 ? "关闭" : "启动"}}); - nodearray.push_back({{"pos", "启动加热指令"}, {"status", unit->heating == 0 ? "关闭" : "启动"}}); - nodearray.push_back({{"pos", "传感器故障"}, {"status", unit->sensorAlarm == 0 ? "正常" : "告警"}}); - nodearray.push_back({{"pos", "高低电压告警"}, {"status", unit->voltageAlarm == 0 ? "正常" : "告警"}}); - nodearray.push_back({{"pos", "高低温告警"}, {"status", unit->tempAlarm == 0 ? "正常" : "告警"}}); - nodearray.push_back({{"pos", "高低压告警"}, {"status", unit->pressureAlarm == 0 ? "正常" : "告警"}}); - nodearray.push_back({{"pos", "压缩机告警"}, {"status", unit->compressorAlarm == 0 ? "正常" : "告警"}}); - nodearray.push_back({{"pos", "当前温度"}, {"status", std::to_string(unit->temp) + "℃"}}); - nodearray.push_back({{"pos", "当前湿度"}, {"status", std::to_string(unit->hum) + "%"}}); + auto& unit = item.second; + nodearray.push_back({{"pos", "开关"}, {"status", unit.powerOn == 0 ? "关机" : "开机"}}); + nodearray.push_back({{"pos", "启动制冷指令"}, {"status", unit.cooling == 0 ? "启动" : "关闭"}}); + nodearray.push_back({{"pos", "启动送风指令"}, {"status", unit.airSupply == 0 ? "关闭" : "启动"}}); + nodearray.push_back({{"pos", "启动待机指令"}, {"status", unit.standby == 0 ? "关闭" : "启动"}}); + nodearray.push_back({{"pos", "启动加热指令"}, {"status", unit.heating == 0 ? "关闭" : "启动"}}); + nodearray.push_back({{"pos", "传感器故障"}, {"status", unit.sensorAlarm == 0 ? "正常" : "告警"}}); + nodearray.push_back({{"pos", "高低电压告警"}, {"status", unit.voltageAlarm == 0 ? "正常" : "告警"}}); + nodearray.push_back({{"pos", "高低温告警"}, {"status", unit.tempAlarm == 0 ? "正常" : "告警"}}); + nodearray.push_back({{"pos", "高低压告警"}, {"status", unit.pressureAlarm == 0 ? "正常" : "告警"}}); + nodearray.push_back({{"pos", "压缩机告警"}, {"status", unit.compressorAlarm == 0 ? "正常" : "告警"}}); + nodearray.push_back({{"pos", "当前温度"}, {"status", std::to_string(unit.temp) + "℃"}}); + nodearray.push_back({{"pos", "当前湿度"}, {"status", std::to_string(unit.hum) + "%"}}); + break; } jsondata["airc"] = nodearray; } { // 消防 static std::map mapFireStatusDef = { {0, "正常"}, {1,"预警"}, {2,"火警"} }; - std::map mapStatusDef = {{0, "无效"}, {1, "掉线"}, {2, "正常"}, {3, "启动"}}; - auto& mapFire40Unit = station->mapFire40Unit; njson nodearray = njson::array(); for (auto iter = mapFire40Unit.begin(); iter!=mapFire40Unit.end(); ++iter) @@ -1338,20 +1445,19 @@ Errcode HttpEntity::queryEnvironment(const httplib::Request& req, njson& json, s } { // 冷机 auto& mapCoolingUnit = station->mapCoolingUnit; - CoolingUnit unitTmp; - CoolingUnit* unit = (mapCoolingUnit.size() > 0) ? &(mapCoolingUnit[0]) : &unitTmp; njson nodearray = njson::array(); - if (unit) + for (auto& item: mapCoolingUnit) { + auto& unit = item.second; njson node; - nodearray.push_back({{"pos", "开关"}, {"status", unit->powerOn == 0 ? "关机" : "开机"}}); - nodearray.push_back({{"pos", "采样模式"}, {"status", unit->mode == 0 ? "出水温度" : "电芯温度"}}); - nodearray.push_back({{"pos", "制冷状态"}, {"status", unit->cooling == 0 ? "关闭" : "启动"}}); - nodearray.push_back({{"pos", "制热状态"}, {"status", unit->heating == 0 ? "关闭" : "启动"}}); - nodearray.push_back({{"pos", "高温告警"}, {"status", unit->highTemp == 0 ? "正常" : "告警"}}); - nodearray.push_back({{"pos", "低温告警"}, {"status", unit->lowTemp == 0 ? "正常" : "告警"}}); - nodearray.push_back({{"pos", "高压告警"}, {"status", unit->highPressure == 0 ? "正常" : "告警"}}); - nodearray.push_back({{"pos", "低压告警"}, {"status", unit->lowPressure == 0 ? "正常" : "告警"}}); + nodearray.push_back({{"pos", "开关"}, {"status", unit.powerOn == 0 ? "关机" : "开机"}}); + nodearray.push_back({{"pos", "采样模式"}, {"status", unit.mode == 0 ? "出水温度" : "电芯温度"}}); + nodearray.push_back({{"pos", "制冷状态"}, {"status", unit.cooling == 0 ? "关闭" : "启动"}}); + nodearray.push_back({{"pos", "制热状态"}, {"status", unit.heating == 0 ? "关闭" : "启动"}}); + nodearray.push_back({{"pos", "高温告警"}, {"status", unit.highTemp == 0 ? "正常" : "告警"}}); + nodearray.push_back({{"pos", "低温告警"}, {"status", unit.lowTemp == 0 ? "正常" : "告警"}}); + nodearray.push_back({{"pos", "高压告警"}, {"status", unit.highPressure == 0 ? "正常" : "告警"}}); + nodearray.push_back({{"pos", "低压告警"}, {"status", unit.lowPressure == 0 ? "正常" : "告警"}}); } jsondata["cooling"] = nodearray; } diff --git a/src/protocol/HttpEntity.h b/src/protocol/HttpEntity.h index edd8418..8db3626 100644 --- a/src/protocol/HttpEntity.h +++ b/src/protocol/HttpEntity.h @@ -29,6 +29,7 @@ public: //void onGet(const httplib::Request& req, httplib::Response& resp); + Errcode logqueryBaseinfoin(const httplib::Request& req, njson& json, std::string& errmsg); Errcode login(const httplib::Request& req, njson& json, std::string& errmsg); Errcode queryUserList(const httplib::Request& req, njson& json, std::string& errmsg); @@ -70,6 +71,7 @@ public: Errcode insertPolicy(const httplib::Request& req, njson& json, std::string& errmsg); Errcode updatePolicy(const httplib::Request& req, njson& json, std::string& errmsg); Errcode deletePolicy(const httplib::Request& req, njson& json, std::string& errmsg); + Errcode queryPolicyByType(const httplib::Request& req, njson& json, std::string& errmsg); Errcode querySystemLogList(const httplib::Request& req, njson& json, std::string& errmsg); //Errcode insertSystemLog(const httplib::Request& req, httplib::Response& resp, NJsonNode& json); diff --git a/src/protocol/MqttEntity.cpp b/src/protocol/MqttEntity.cpp index b12b9e1..b5ecbc1 100644 --- a/src/protocol/MqttEntity.cpp +++ b/src/protocol/MqttEntity.cpp @@ -9,6 +9,20 @@ #define TIMEOUT 10000L +bool MqttClient::load(std::string filename) +{ + njson jsonroot; + bool ret = JSON::load(filename, jsonroot); + if (!ret) + { + spdlog::error("[mqtt] load config file failed, filename={}", filename); + return false; + } + return true; +} + + +std::map MqttClient::s_mapTopicInfo; int MqttClient::init(string addr, string clientId, string username, string password) { @@ -24,26 +38,6 @@ int MqttClient::init(string addr, string clientId, string username, string passw this->addr = addr; this->clientId = clientId; - //this->mapTopicInfo["EMS_YX"] = TopicInfo("EMS_YX", 101); - this->mapTopicInfo["EMS_YC"] = TopicInfo("EMS_YC", 101); - //this->mapTopicInfo["EMS_YT"] = TopicInfo("EMS_YT", 101); - //this->mapTopicInfo["PCS_YX"] = TopicInfo("PCS_YX", 102, 1); - //this->mapTopicInfo["PCS_YC"] = TopicInfo("PCS_YC", 102, 1); - //this->mapTopicInfo["PCU_YX"] = TopicInfo("PCU_YX", 103); - //this->mapTopicInfo["PCU_YC"] = TopicInfo("PCU_YC", 103); - //this->mapTopicInfo["BMS_YX"] = TopicInfo("BMS_YX", 104); // BMS没有遥信 - //this->mapTopicInfo["BMS_YC"] = TopicInfo("BMS_YC", 104); - //this->mapTopicInfo["BCU_YX"] = TopicInfo("BCU_YX", 105, 1); - //this->mapTopicInfo["BCU_YC"] = TopicInfo("BCU_YC", 105, 1); - //this->mapTopicInfo["MEM_YC"] = TopicInfo("MEM_YC", 3, 1); - //this->mapTopicInfo["TH_YC"] = TopicInfo("TH_YC", 10, 1); - //this->mapTopicInfo["Fire40_YX"] = TopicInfo("Fire40_YX", 7, 1); - this->mapTopicInfo["Cooling_YC"] = TopicInfo("Cooling_YC", 14, 1); - this->mapTopicInfo["Cooling_YX"] = TopicInfo("Cooling_YX", 14, 1); - //this->mapTopicInfo["Gateway_YX"] = TopicInfo("Gateway_YX", 15, 1); - //this->mapTopicInfo["Gateway_YC"] = TopicInfo("Gateway_YC", 15, 1); - //this->mapTopicInfo["Charger_YC"] = TopicInfo("Charger_YC", 106, 1); - MQTTAsync_connectOptions option = MQTTAsync_connectOptions_initializer; MQTTAsync_message pubmsg = MQTTAsync_message_initializer; int rc {0}; @@ -135,18 +129,21 @@ void MqttClient::subscribe() MQTTAsync_responseOptions options = MQTTAsync_responseOptions_initializer; options.onSuccess = funcSuccess; options.onFailure = funcFailure; - for (auto& item: mapTopicInfo) + for (auto& item: MqttClient::s_mapTopicInfo) { - std::string topic = "up/json/" + clientId + "/" + item.first; - options.context = (void*)&item.first; - int rc = MQTTAsync_subscribe(client, topic.data(), qos, &options); - if (rc != MQTTASYNC_SUCCESS) + if (item.second.enabled) { - spdlog::error("[mqtt] subscribe [{},{}] failed, err={}", topic, qos, rc); - } - else - { - spdlog::info("[mqtt] subscribe [{},{}] ", topic, qos); + std::string topic = "up/json/" + clientId + "/" + item.first; + options.context = (void*)&item.first; + int rc = MQTTAsync_subscribe(client, topic.data(), qos, &options); + if (rc != MQTTASYNC_SUCCESS) + { + spdlog::error("[mqtt] subscribe [{},{}] failed, err={}", topic, qos, rc); + } + else + { + spdlog::info("[mqtt] subscribe [{},{}] ", topic, qos); + } } } } @@ -199,10 +196,10 @@ int MqttClient::polling() return 0; } - for (auto& item: mapTopicInfo) + for (auto& item: MqttClient::s_mapTopicInfo) { auto& topicInfo = item.second; - if (topicInfo.polling) + if (topicInfo.polling && topicInfo.enabled) { std::vector> vecDevice; station->getDeviceByType(topicInfo.deviceType, vecDevice); @@ -268,96 +265,6 @@ void MqttClient::onConnectFaiure(MQTTAsync_failureData* resp) this->destory(); } - -void MqttClient::ParseArrivedMessage(njson& json, string clientId, string command, std::shared_ptr station) -{ - std::string stationNo = clientId; - - auto mapRegPtr = REGAddr::getRegMap(command); - if (!mapRegPtr) - { - spdlog::error("[mqtt] get register add info error, clientId={}, stationId={}, command={}", clientId, stationNo, command); - return; - } - - auto iterTopic = mapTopicInfo.find(command); - if (iterTopic == mapTopicInfo.end()) - { - spdlog::error("[mqtt] get topic info error, clientId={}, stationId={}, command={}", clientId, stationNo, command); - return; - } - TopicInfo& topicInfo = iterTopic->second; - - int deviceNo = -1; - JSON::read(json, "no", deviceNo); - auto device = station->getDeviceByType(topicInfo.deviceType, Utils::toStr(deviceNo)); - if (!device) - { - return; - } - for (auto& item: json.items()) - { - std::string key = item.key(); - if (key != "ts" && key != "no") - { - auto data = json.at(key); - if (data.is_array()) - { - std::string addrText; - auto iter = mapRegPtr->find(key); - for (int i = 0; iend()) - { - - auto addr = iter->first; - int val = data[i]; - device->setParam(addr, val); - spdlog::info("[mqtt] read [{}]={},{}", addr, val, iter->second.remark); - - if (command == "EMS_YC" && addr == "0x110C") - { - int a = 30; - a = 100; - } - - if (command == "EMS_YC") - { - station->setRuntimeData(addr, val); - } - else if (command == "Fire40_YX") - { - station->setFire40Data(deviceNo, addr, val); - } - else if (command == "TH_YC") - { - station->setTHData(deviceNo, addr, val); - } - else if (command == "Cooling_YX" || command == "Cooling_YC") - { - station->setCoolingData(deviceNo, addr, val); - } - else if (command == "Gateway_YX") - { - //if (key == "CDZ") "CDZ": 1, //充电桩 1:在线,0:离线 - //else if (key == "EMU") //储能 1:在线,0:离线 - } - ++iter; - } - } - } - else if (data.is_number()) - { - device->setParam(key, data.get()); - } - else if (data.is_string()) - { - device->setParam(key, Utils::toInt(data.get())); - } - } - } -} - int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* msg) { std::string topicStr = topic; @@ -394,7 +301,7 @@ int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* m { std::string key = item.key(); auto& val = item.value(); - if (key == "40001") { spdlog::info("[mqtt] read register addr: [{}]={}, {}", key, val.dump(), "模式"); } + if (key == "40001") { station->readGatewayMode(val.get()); } else if (key == "40002") { spdlog::info("[mqtt] read register addr: [{}]={}, {}", key, val.dump(), "峰谷时间段"); } else if (key == "40021") { spdlog::info("[mqtt] read register addr: [{}]={}, {}", key, val.dump(), "自定时间段"); } else if (key == "40038") { spdlog::info("[mqtt] read register addr: [{}]={}, {}", key, val.dump(), "其他参数"); } @@ -402,17 +309,15 @@ int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* m } else if (command == "Gateway_YX") { - for (auto& item: json.items()) - { - std::string key = item.key(); - auto& val = item.value(); - if (key == "cdz") { spdlog::info("[mqtt] read register addr: [{}]={}, {}", key, val.dump(), "充电桩通讯状态"); } - else if (key == "emu") { spdlog::info("[mqtt] read register addr: [{}]={}, {}", key, val.dump(), "充电桩通讯状态"); } - } + int cdzStatus = -1; + int emuStatus = -1; + JSON::read(json, "cdz", cdzStatus); + JSON::read(json, "emu", cdzStatus); + station->readGatewayStatus(cdzStatus, emuStatus); } else { - ParseArrivedMessage(json, clientId, command, station); + ParseArrivedMessage(json, command, station); } // 必须释放消息内存! @@ -422,117 +327,135 @@ int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* m } -string MQTT::pack(std::string name) +void MqttClient::ParseArrivedMessage(njson& json, string command, std::shared_ptr station) { - njson json; - json["ts"] = Utils::time(); - json["no"] = 1; + std::string stationNo = clientId; - if (name == "EMS_YC") + auto iterTopic = MqttClient::s_mapTopicInfo.find(command); + if (iterTopic == MqttClient::s_mapTopicInfo.end()) { - //A相电压 R uint32 1V 0x107E - //B相电压 R uint32 1V 0x1080 - //C相电压 R uint32 1V 0x1082 - //A相电流 R int32 1A 0x1084 - //B相电流 R int32 1A 0x1086 - //C相电流 R int32 1A 0x1088 - - //储能系统SOC R uint16 0.1 0x107A - //储能系统SOH R uint16 0.1 0x107B - - json["addr"] = {"0x107A", "0x107B", "0x107E", "0x1080", "0x1082", "0x1084", "0x1086", "0x1088"}; + spdlog::error("[mqtt] get topic info error, clientId={}, stationId={}, command={}", clientId, stationNo, command); + return; } - else if (name == "PCS_YC") + TopicInfo& topicInfo = iterTopic->second; + + int deviceNo = -1; + JSON::read(json, "no", deviceNo); + auto device = station->getDeviceByType(topicInfo.deviceType, Utils::toStr(deviceNo)); + if (!device) { - //总充电量 R uint32 1kWh 0x0003 - //总放电量 R uint32 1kWh 0x0005 - - //A相电压 R int16 1V 0x0010 - //B相电压 R int16 1V 0x0011 - //C相电压 R int16 1V 0x0012 - - //A相电流 R int16 1A 0x0019 - //B相电流 R int16 1A 0x001A - //C相电流 R int16 1A 0x001B - - //三相总有功功率 R int16 1kW 0x0025 - //三相总无功功率 R int16 1kVar 0x0026 - //三相总视在功率 R int16 1kVA 0x0027 - //三相总功率因数 R int16 1 0x0028 - - //充电功率 R int16 1kW 0x002C - //放电功率 R int16 1kW 0x002D - json["addr"] = {"0x0003", "0x0005", "0x0010", "0x0011", "0x0012", "0x0019", "0x001A", "0x001B", "0x0025", "0x0026", "0x0027", "0x0028", "0x002C", "0x002D"}; + spdlog::error("[mqtt] get device info error, clientId={}, stationId={}, command={}", clientId, stationNo, command); + return; } - else if (name == "PCU_YC") + + auto mapRegPtr = REGAddr::getRegMap(command); + if (!mapRegPtr) { - //PCS侧线A相电压 R int16 1v 0x0013 - //PCS侧线B相电压 R int16 1v 0x0014 - //PCS侧线C相电压 R int16 1v 0x0015 - - //PCS侧功率因数A R int16 1 0x0019 - //PCS侧功率因数B R int16 1 0x001A - //PCS侧功率因数C R int16 1 0x001B - - //PCS侧相电流A R int16 1A 0x001C - //PCS侧相电流B R int16 1A 0x001D - //PCS侧相电流C R int16 1A 0x001E - - //PCS侧三相总有功功率 R int16 1kW 0x0028 - //PCS侧三相总无功功率 R int16 1kVar 0x0029 - //PCS侧三相总视在功率 R int16 1kVA 0x002A - //PCS侧三相总功率因数 R int16 1 0x002B - - json["addr"] = {"0x0013", "0x0014", "0x0015", "0x1080", "0x1082", "0x1084", "0x1086", "0x1088"}; + spdlog::error("[mqtt] get register add info error, clientId={}, stationId={}, command={}", clientId, stationNo, command); + return; } - else if (name == "BMS_YC") + for (auto& item: json.items()) { - //SOC R uint16 0.1 0x0001 - //SOH R uint16 0.1 0x0002 - //电压 R uint32 0.1V 0x0003 - //电流 R int32 0.1A 0x0005 - //可充电量 R uint32 1kWh 0x0007 - //可放电量 R uint32 1kWh 0x0009 - //可充电状态 R uint16 1:可充电;0:不可充电 0x0047 - //可放电状态 R uint16 1:可放电;0:不可放电 0x0048 - //运行状态 R uint16 运行状态 0-正常 1-告警 2-保护 0x0049 - //充放电状态 R uint16 0-待机 1-充电 2-放电 0x004A + std::string key = item.key(); + if (key == "ts" || key == "no") + { + continue; + } + + auto data = json[key]; + if (data.is_array()) + { + int dataSize = data.size(); + if (command == "Charger_YC") + { + if (key == "1") key = "11"; + else if (key == "2") key = "21"; + } + + std::string addrText; + auto iter = mapRegPtr->find(key); + for (int i = 0; isetBCUUnit(key, i, val, dataSize); + } + else + { + if (iter != mapRegPtr->end()) + { + auto addr = iter->first; + auto& regUnit = iter->second; + if (regUnit.alert && val>=0) + { + station->readAlert(device, val, "[" + command + "]" + regUnit.name + "(" + addr + ")"); + } + + device->setParam(addr, val); + spdlog::debug("[mqtt] read [{}]={}, {}{}", addr, val, regUnit.name, regUnit.remark); + + if (command == "MEM_YC") { station->readRuntimeData(deviceNo, addr, val); } + else if (command == "Fire40_YX") { station->readFire40Data(deviceNo, addr, val); } + else if (command == "TH_YC") { station->readTHData(deviceNo, addr, val); } + else if (command == "Cooling_YX" || command == "Cooling_YC") { station->readCoolingData(deviceNo, addr, val); } + else if (command == "Gateway_YX") + { + //if (key == "CDZ") "CDZ": 1, //充电桩 1:在线,0:离线 + //else if (key == "EMU") //储能 1:在线,0:离线 + } + ++iter; + } + } + } + } + else if (data.is_number()) + { + device->setParam(key, data.get()); + } + else if (data.is_string()) + { + device->setParam(key, Utils::toInt(data.get())); + } + } +} +std::vector KEY_CHARGER_1 = {"31071", "31073", "31075", "31077", "31079", "31081", "31083"}; +std::vector KEY_CHARGER_2 = {"31072", "31074", "31076", "31078", "31080", "31082", "31084"}; +void MqttClient::ParseMessageCharge(njson& json, string command, std::shared_ptr station, std::shared_ptr device) +{ + if (json.contains("1")) + { + auto& jsondata = json["1"]; + if (jsondata.is_array()) + { + for (int i = 0; i(); + device->setParam(addr, val); + spdlog::info("[mqtt] read: 枪1 [{}]={}", addr, val); + } + } + } + } + if (json.contains("2")) + { + auto& jsondata = json["2"]; + if (jsondata.is_array()) + { + for (int i = 0; i(); + device->setParam(addr, val); + spdlog::info("[mqtt] read: 枪2 [{}]={}", addr, val); + } + } + } } - else if (name == "BCU_YC") - { - //电表类型 R uint16 "0:储能站总表 1:逆变前侧电表 2:逆变后侧电表 3:配电柜电表 4:并网口电表" 0x0008 - //A相电压 R uint32 1V 0x000B - //B相电压 R uint32 1V 0x000D - //C相电压 R uint32 1V 0x000F - //A相电流 R int32 1A 0x0011 - //B相电流 R int32 1A 0x0013 - //C相电流 R int32 1A 0x0015 - - //尖段电价 R uint32 1RMB 0x0027 - //峰段电价 R uint32 1RMB 0x0029 - //平段电价 R uint32 1RMB 0x002B - //谷段电价 R uint32 1RMB 0x002D - //日充电电量 R uint32 1kWh 0x002F - //日放电电量 R uint32 1kWh 0x0031 - //日充电费用 R uint32 1RMB 0x0033 - //日放电费用 R uint32 1RMB 0x0035 - //日收益 R int32 1RMB 0x0037 - - //总充电电量 R uint32 1kWh 0x004D - //总放电电量 R uint32 1kWh 0x004F - //总充电费用 R uint32 1RMB 0x0051 - //总放电费用 R uint32 1RMB 0x0053 - //总收益 R int32 1RMB 0x0055 - } - else if (name == "TH_YC") - { - //所属通道号 R uint16 1 0x0001 - //所属温湿度号 R uint16 1~10 0x0002 - //温度 R int16 0.1℃ 0x0003 - //湿度 R int16 0.1℃ 0x0004 - - } - return json.dump(); } diff --git a/src/protocol/MqttEntity.h b/src/protocol/MqttEntity.h index 908d0a2..96d10c4 100644 --- a/src/protocol/MqttEntity.h +++ b/src/protocol/MqttEntity.h @@ -7,13 +7,14 @@ #include "common/JsonN.h" class Station; - +class Device; struct TopicInfo { std::string name; int deviceType {0}; int polling {0}; // 召测 + int enabled {1}; TopicInfo() {}; TopicInfo(std::string name, int deviceType, int polling=0) :name(name), deviceType(deviceType), polling(polling) @@ -25,6 +26,8 @@ using namespace std; class MqttClient { public: + static bool load(std::string filename); + int init(string addr, string clientId, string username, string password); void destory(); @@ -39,7 +42,8 @@ public: void onConnectFaiure(MQTTAsync_failureData* resp); int onMessageArrived(char* topic, int len, MQTTAsync_message* msg); - void ParseArrivedMessage(njson& json, string clientId, string command, std::shared_ptr station); + void ParseArrivedMessage(njson& json, string command, std::shared_ptr station); + void ParseMessageCharge(njson& json, string command, std::shared_ptr station, std::shared_ptr device); public: // MQTT clientId (使用station 的 code) @@ -51,7 +55,7 @@ public: bool isConnected {false}; bool isSubscribed {false}; - std::map mapTopicInfo; + static std::map s_mapTopicInfo; }; @@ -71,12 +75,3 @@ public: #define TOPIC_PCS_YC "up/json/预制舱01/PCS_YC" #define TOPIC_PCS_YC "up/json/预制舱01/PCS_YC" - -class MQTT -{ -public: - - -public: - static string pack(std::string name); -}; \ No newline at end of file

=?p6DhrO;+lEctNADjXI+Pjj8Pho|CS8at?aV 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:tQv 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 Mxr$h8GZ)j*4?jZ!ssI20 literal 269693 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