diff --git a/bin/Release/assets/config-online/EMU对外通信点表最终修改1版_v9.xlsx b/bin/Release/assets/config-online/EMU对外通信点表最终修改1版_v9.xlsx new file mode 100644 index 0000000..75a46df Binary files /dev/null and b/bin/Release/assets/config-online/EMU对外通信点表最终修改1版_v9.xlsx differ diff --git a/bin/Release/assets/config-online/app.json b/bin/Release/assets/config-online/app.json new file mode 100644 index 0000000..c8b072b --- /dev/null +++ b/bin/Release/assets/config-online/app.json @@ -0,0 +1,36 @@ +{ + "debug":0, + "windowEnabled": 1, + "launchdate": "2025-09-01", + "weburl": "http://127.0.0.1:19601/", + "exportpath": "D:/Programs/openresty-1.27.1.1-win64/zdownload", + "database": {"host": "localhost", "port": 3306, "user": "root", "passwd": "jsyh@2025", "dbname": "ess"}, + "http": {"token":0, "port": 19800, "encryption":0, "encryptKey":""}, + "mqtt": {"host":"mqtt://118.195.161.113:8883","username":"admin","password":"jsyh@2025", "interval": 120}, + "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": 60} +} \ No newline at end of file diff --git a/bin/Release/assets/config-online/bak.monitoraddr.json b/bin/Release/assets/config-online/bak.monitoraddr.json new file mode 100644 index 0000000..7ec1c19 --- /dev/null +++ b/bin/Release/assets/config-online/bak.monitoraddr.json @@ -0,0 +1,109 @@ +{ + "EMS":{ + "deviceType":101, + "addr_YC":[ + ["A相电压", "0x107E", "0.0", " V", "1"], + ["A相电流", "0x1084", "0.0", " A"], + ["B相电压", "0x1080", "0.0", " V", "1"], + ["B相电流", "0x1086", "0.0", " A"], + ["C相电压", "0x1082", "0.0", " V", "1"], + ["C相电流", "0x1088", "0.0", " A"] + ], + "addr_YX": [ ] + }, + "PCS":{ + "deviceType":102, + "addr_YC":[ + ["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"] + ], + "addr_YX": [ ] + }, + "PCU":{ + "deviceType":103, + "addr_YC":[ + ["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"] + ], + "addr_YX": [ ] + }, + "BMS":{ + "deviceType":104, + "addr_YC":[ + ["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"], + ["单体最小电压", "0x0024", "0.0", " V", "0.1"], + ["单体最大温度", "0x0029", "0.0", " ℃", "0.1"], + ["单体最小温度", "0x002C", "0.0", " ℃", "0.1"] + ], + "addr_YX": [ ] + }, + "BCU":{ + "deviceType":105, + "addr_YC":[ + ["簇电压", "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"] + ], + "addr_YX": [ ] + }, + "MEM":{ + "deviceType":3, + "addr_YC":[ + ["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"] + ], + "addr_YX": [ ] + }, + "TH": { + "deviceType":10, + "addr_YC":[ + ["温度", "0x0003", "0.0", " ℃", "0.1"], + ["湿度", "0x0004", "0.0", " %", "0.1"] + ], + "addr_YX": [ ] + }, + "Cooling": { + "deviceType":14, + "addr_YC":[ + ["开关", "0x1003", "0", "", "1"], + ["采样模式", "0x1004", "0", "", "1"], + ["制冷状态", "0x1005", "0", "", "1"], + ["制热状态", "0x1006", "0", "", "1"], + ["高温告警", "0x1007", "0", "", "1"], + ["低温告警", "0x1008", "0", "", "1"], + ["高压告警", "0x1009", "0", "", "1"], + ["低压告警", "0x100A", "0", "", "1"] + ] + }, + "Charger": { + "deviceType":106, + "addr_YC":[ + ["需求电压", "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"] + ] + } +} \ No newline at end of file diff --git a/bin/Release/assets/config-online/pyregaddrs.py b/bin/Release/assets/config-online/pyregaddrs.py new file mode 100644 index 0000000..92fe6ca --- /dev/null +++ b/bin/Release/assets/config-online/pyregaddrs.py @@ -0,0 +1,61 @@ +from openpyxl import load_workbook + +def read_cell(sheet, row, col): + val = str(sheet.cell(row, col).value) + if val == "None": + val = "" + return val.strip() + +def read_sheet(wb, topic, sht_name): + sheet = wb[sht_name] + + text = "" + 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) + + 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", "alert": %d, "name":"%s", "remark": "%s"}' % (addr, datatype, is_alert, name, remark.replace("\n", "")) + + + if (len(text)>0): + text = "\n" + text + "\n\t\t" + text = '\t"%s":{\n\t\t"addr":[%s]\n\t}' % (topic, text) + return text + + +wb = load_workbook('EMU对外通信点表最终修改1版_v9.xlsx', data_only=True) + +text = "" +text = read_sheet(wb, "EMS_YT", "EMS遥调") +text += ',\n' + read_sheet(wb, "EMS_YX", "EMS遥信") +text += ',\n' + read_sheet(wb, "EMS_YC", "EMS遥测") +text += ',\n' + read_sheet(wb, "PCU_YC", "PCU遥测") +text += ',\n' + read_sheet(wb, "PCU_YX", "PCU遥信") +text += ',\n' + read_sheet(wb, "PCS_YC", "PCS遥测") +text += ',\n' + read_sheet(wb, "PCS_YX", "PCS遥信") +text += ',\n' + read_sheet(wb, "BMS_YC", "BMS电池堆遥测") +text += ',\n' + read_sheet(wb, "BCU_YC", "BCU电池簇遥测") +text += ',\n' + read_sheet(wb, "BCU_YX", "BCU电池簇遥信") +# text += ',\n' + read_sheet(wb, "AirC_YC", "空调遥测") +# text += ',\n' + read_sheet(wb, "AirC_YX", "空调遥信") +text += ',\n' + read_sheet(wb, "MEM_YC", "多功能电表遥测") +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}") \ No newline at end of file diff --git a/bin/Release/assets/config-online/regaddrs.bak.json b/bin/Release/assets/config-online/regaddrs.bak.json new file mode 100644 index 0000000..2f7ce5a --- /dev/null +++ b/bin/Release/assets/config-online/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-online/regaddrs.json b/bin/Release/assets/config-online/regaddrs.json new file mode 100644 index 0000000..375213f --- /dev/null +++ b/bin/Release/assets/config-online/regaddrs.json @@ -0,0 +1,901 @@ +{ + "EMS_YT":{ + "addr":[ + {"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", "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", "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", "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", "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", "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", "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", "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": "0x0044", "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", "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", "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", "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", "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", "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", "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", "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", "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-online/regaddrsShow.json b/bin/Release/assets/config-online/regaddrsShow.json new file mode 100644 index 0000000..586322e --- /dev/null +++ b/bin/Release/assets/config-online/regaddrsShow.json @@ -0,0 +1,157 @@ +{ + "EMS":{ + "deviceType":101, + "addrYC":[ + ["A相电压", "0x107E", "0.0", " V", "1"], + ["A相电流", "0x1084", "0.0", " A"], + ["B相电压", "0x1080", "0.0", " V", "1"], + ["B相电流", "0x1086", "0.0", " A"], + ["C相电压", "0x1082", "0.0", " V", "1"], + ["C相电流", "0x1088", "0.0", " A"], + ["总有功功率", "0x1096", "0.0", " kW"] + + ], + "addrCurve": ["0x107E", "0x1084", "0x1096"] + }, + "PCS":{ + "deviceType":102, + "addrYC":[ + ["充放状态", "0x1009", "--", ""], + ["电网状态", "0x100A", "--", ""], + ["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"], + ["总有功功率", "0x0025", "0.0", " kW"] + ], + "addrCurve": ["0x0010", "0x0019", "0x0025"] + }, + "PCU":{ + "deviceType":103, + "addrYC":[ + ["电网状态", "0x1007", "--", ""], + ["启停状态", "0x1006", "--", ""], + ["有功功率期望值","0x000E", "0.0", " KW"], + ["无功功率期望值","0x000F", "0.0", " kVar"], + ["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"], + ["总有功功率", "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"], + ["单体最小电压", "0x0024", "0.0", " V", "0.1"], + ["单体最大温度", "0x0029", "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", " Ω"] + ], + "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", " 元"], + ["日正向尖电能", "0x0039", "0", " kWh"], + ["日正向峰电能", "0x003B", "0", " kWh"], + ["日正向平电能", "0x003D", "0", " kWh"], + ["日正向谷电能", "0x003F", "0", " kWh"], + ["日正向总电能", "0x0041", "0", " kWh"], + ["日反向尖电能", "0x0043", "0", " kWh"], + ["日反向峰电能", "0x0045", "0", " kWh"], + ["日反向平电能", "0x0047", "0", " kWh"], + ["日反向谷电能", "0x0049", "0", " kWh"], + ["日反向总电能", "0x004B", "0", " kWh"], + ["总正向尖电能", "0x0057", "0", " kWh"], + ["总正向峰电能", "0x0059", "0", " kWh"], + ["总正向平电能", "0x005B", "0", " kWh"], + ["总正向谷电能", "0x005D", "0", " kWh"], + ["总正向总电能", "0x005F", "0", " kWh"], + ["总反向尖电能", "0x0061", "0", " kWh"], + ["总反向峰电能", "0x0063", "0", " kWh"], + ["总反向平电能", "0x0065", "0", " kWh"], + ["总反向谷电能", "0x0067", "0", " kWh"], + ["总反向总电能", "0x0069", "0", " kWh"], + ["A相电压", "0x000B", "0.0", " V"], + ["A相电流", "0x0011", "0.0", " A"], + ["B相电压", "0x000D", "0.0", " V"], + ["B相电流", "0x0013", "0.0", " A"], + ["C相电压", "0x000F", "0.0", " V"], + ["C相电流", "0x0015", "0.0", " A"], + ["总有功总需量", "0x0025", "0.0", " kW"] + ], + "addrCurve": ["0x000B","0x0011","0x0023"] + }, + "TH": { + "deviceType":10, + "addrYC":[ + ["温度", "0x0003", "0.0", " ℃", "0.1"], + ["湿度", "0x0004", "0.0", " %", "0.1"] + ] + }, + "Cooling": { + "deviceType":14, + "addrYC":[ + ["开关", "0x1003", "0", "", "1"], + ["采样模式", "0x1004", "0", "", "1"], + ["制冷状态", "0x1005", "0", "", "1"], + ["制热状态", "0x1006", "0", "", "1"], + ["高温告警", "0x1007", "0", "", "1"], + ["低温告警", "0x1008", "0", "", "1"], + ["高压告警", "0x1009", "0", "", "1"], + ["低压告警", "0x100A", "0", "", "1"] + ] + }, + "Charger": { + "deviceType":106, + "addrYC":[ + ["工作状态", "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": ["15", "16", "17"] + } +} \ No newline at end of file diff --git a/bin/Release/assets/config-online/registeraddrErr.json b/bin/Release/assets/config-online/registeraddrErr.json new file mode 100644 index 0000000..8a77108 --- /dev/null +++ b/bin/Release/assets/config-online/registeraddrErr.json @@ -0,0 +1,128 @@ +{ + "103":{ + "addr":[ + {"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": "0x101E", "datatype": "uint16", "remark": "急停按钮信号NC1急停,0正常"}, + {"key": "0x101F", "datatype": "uint16", "remark": "避雷器NC1故障,0正常"}, + {"key": "0x1020", "datatype": "uint16", "remark": "避雷器断路器NC1故障,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正常"} + ] + }, + "104":{ + "addr":[ + {"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正常"} + ] + } +} \ No newline at end of file diff --git a/bin/Release/assets/config-online/registeraddrs.bak.py b/bin/Release/assets/config-online/registeraddrs.bak.py new file mode 100644 index 0000000..53eebb2 --- /dev/null +++ b/bin/Release/assets/config-online/registeraddrs.bak.py @@ -0,0 +1,77 @@ +import re +import json + +def parse_datatype(text): + datatypes = ["int16", "uint16", "int32", "uint32", "int64", "uint64"] + for index, datatype in enumerate(datatypes): + left, separator, right = text.partition(datatype) + if len(separator) != 0: + return datatype, left + right + return "", text + + +def parse_from_file(filename): + data = "" + with open(filename, "r", encoding='utf-8') as f: # 打开文件 + linedata = "" + for line in f: # 行遍历 + line = line.strip() + #linedata = f.readline() # 读取文件的一行 + flag = bool(re.search(r'0x[0-9A-Fa-f]{4}', line)) + linedata += line.strip() + if flag: + # print(linedata) + # left, separator, right = linedata.partition("0x") + parts = re.split(r'(0x[0-9A-Fa-f]{4})', linedata) + linedata = "" + + key = parts[1] + datatype, remark = parse_datatype(parts[0].strip()) + remark = remark.replace("\t", " ").replace("\"", "") + + item = {} + item["key"] = key + item["datatype"] = datatype + item["remark"] = remark + + if len(data) > 0: + data += ",\n" + data += ("\t\t\t" + json.dumps(item, ensure_ascii=False)) + return data + + +addritems = {} +addritems["EMS_YT"] = ["EMS遥调.txt", 1] +addritems["BCU_YX"] = ["BCU电池簇遥信.txt", 1] +addritems["BCU_YC"] = ["BCU电池簇遥测.txt", 1] +addritems["BMS_YC"] = ["BMS电池堆遥测.txt", 1] +addritems["EMS_YX"] = ["EMS遥信.txt", 1] +addritems["EMS_YC"] = ["EMS遥测.txt", 1] +addritems["EMS_YT"] = ["EMS遥调.txt", 1] +addritems["PCS_YX"] = ["PCS遥信.txt", 1] +addritems["PCS_YC"] = ["PCS遥测.txt", 1] +addritems["PCU_YX"] = ["PCU遥信.txt", 1] +addritems["PCU_YC"] = ["PCU遥测.txt", 1] +addritems["MEM_YC"] = ["多功能电表遥测.txt", 1] +addritems["TH_YC"] = ["温湿度状态遥测.txt", 1] +addritems["Fire40_YX"] = ["消防4.0遥信.txt", 1] +addritems["Cooling_YX"] = ["冷机遥信.txt", 1] +addritems["Cooling_YC"] = ["冷机遥测.txt", 1] + + +with open('registeraddr.json', 'w', encoding='utf-8') as f: + f.write("{") + index = 0 + for key in addritems: + filename = addritems[key][0] + count = addritems[key][1] + print("parse: ", key, filename) + data = parse_from_file(filename) + if len(data) > 0: + data = "\n" + data + "\n\t" + if index != 0: + f.write(",") + f.write("\n\t\"" + key + "\": {\n\t\t\"count\":" + str(count) + ",\n\t\t\"addr\":[" + data + "\t]\n\t}") + index+=1 + f.write("\n}") + diff --git a/bin/Release/assets/config/EMU对外通信点表最终修改1版_v9.xlsx b/bin/Release/assets/config/EMU对外通信点表最终修改1版_v9.xlsx index 75a46df..848f7b3 100644 Binary files a/bin/Release/assets/config/EMU对外通信点表最终修改1版_v9.xlsx and b/bin/Release/assets/config/EMU对外通信点表最终修改1版_v9.xlsx differ diff --git a/bin/Release/assets/config/app.json b/bin/Release/assets/config/app.json index 5f6843e..8b270a7 100644 --- a/bin/Release/assets/config/app.json +++ b/bin/Release/assets/config/app.json @@ -6,7 +6,7 @@ "exportpath": "D:/Programs/openresty-1.27.1.1-win64/zdownload", "database": {"host": "localhost", "port": 3306, "user": "root", "passwd": "123456", "dbname": "ess"}, "http": {"token":0, "port": 19801, "encryption":0, "encryptKey":""}, - "mqtt": {"host":"mqtt://43.136.119.46:6203","username":"jsyhsec","password":"123456"}, + "mqtt": {"host":"mqtt://118.195.161.113:8883","username":"admin","password":"jsyh@2025", "interval": 0}, "topic": { "EMS_YX": {"deviceType":101, "polling":0, "enabled": 1}, "EMS_YC": {"deviceType":101, "polling":0, "enabled": 1}, @@ -32,5 +32,5 @@ "video": { "1":{"host":"", "port":9000, "user":"", "passwd":""} }, - "statistics": {"enabled": 1, "interval": 30} + "statistics": {"enabled": 1, "interval": 60} } \ No newline at end of file diff --git a/bin/Release/assets/config/regaddrs.json b/bin/Release/assets/config/regaddrs.json index 5247cdb..375213f 100644 --- a/bin/Release/assets/config/regaddrs.json +++ b/bin/Release/assets/config/regaddrs.json @@ -547,7 +547,7 @@ {"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": "0x0044", "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": ""}, diff --git a/bin/Release/assets/config/regaddrsShow.json b/bin/Release/assets/config/regaddrsShow.json index 868671d..586322e 100644 --- a/bin/Release/assets/config/regaddrsShow.json +++ b/bin/Release/assets/config/regaddrsShow.json @@ -18,8 +18,6 @@ "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"], @@ -34,11 +32,9 @@ "deviceType":103, "addrYC":[ ["电网状态", "0x1007", "--", ""], - ["模块状态", "0x1008", "--", ""], - ["日充电量", "0x0006", "0.0", " kWh"], - ["日放电量", "0x0008", "0.0", " kWh"], - ["总充电量", "0x000A", "0.0", " kWh"], - ["总放电量", "0x000C", "0.0", " kWh"], + ["启停状态", "0x1006", "--", ""], + ["有功功率期望值","0x000E", "0.0", " KW"], + ["无功功率期望值","0x000F", "0.0", " kVar"], ["A相电压", "0x0013", "0.0", " V", "1"], ["A相电流", "0x001C", "0.0", " A"], ["B相电压", "0x0014", "0.0", " V", "1"], @@ -94,11 +90,31 @@ ["总放电费用", "0x0053", "0", " 元"], ["日收益", "0x0037", "0", " 元"], ["总收益", "0x0055", "0", " 元"], + ["日正向尖电能", "0x0039", "0", " kWh"], + ["日正向峰电能", "0x003B", "0", " kWh"], + ["日正向平电能", "0x003D", "0", " kWh"], + ["日正向谷电能", "0x003F", "0", " kWh"], + ["日正向总电能", "0x0041", "0", " kWh"], + ["日反向尖电能", "0x0043", "0", " kWh"], + ["日反向峰电能", "0x0045", "0", " kWh"], + ["日反向平电能", "0x0047", "0", " kWh"], + ["日反向谷电能", "0x0049", "0", " kWh"], + ["日反向总电能", "0x004B", "0", " kWh"], + ["总正向尖电能", "0x0057", "0", " kWh"], + ["总正向峰电能", "0x0059", "0", " kWh"], + ["总正向平电能", "0x005B", "0", " kWh"], + ["总正向谷电能", "0x005D", "0", " kWh"], + ["总正向总电能", "0x005F", "0", " kWh"], + ["总反向尖电能", "0x0061", "0", " kWh"], + ["总反向峰电能", "0x0063", "0", " kWh"], + ["总反向平电能", "0x0065", "0", " kWh"], + ["总反向谷电能", "0x0067", "0", " kWh"], + ["总反向总电能", "0x0069", "0", " kWh"], ["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"], + ["A相电流", "0x0011", "0.0", " A"], + ["B相电压", "0x000D", "0.0", " V"], + ["B相电流", "0x0013", "0.0", " A"], + ["C相电压", "0x000F", "0.0", " V"], ["C相电流", "0x0015", "0.0", " A"], ["总有功总需量", "0x0025", "0.0", " kW"] ], diff --git a/bin/Release/yhicon.ico b/bin/Release/yhicon.ico deleted file mode 100644 index c7a07f1..0000000 Binary files a/bin/Release/yhicon.ico and /dev/null differ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7026dc2..e02cac7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -87,6 +87,7 @@ ADD_SOURCE_GROUP(protocol) #ADD_SOURCE_GROUP(pv) #ADD_SOURCE_GROUP(pv/pages) ADD_SOURCE_GROUP(qt) +ADD_SOURCE_GROUP(qt/widgets) set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin) add_executable(${PROJECT_NAME} ${SOURCE_FILE} "resource.rc") diff --git a/src/app/AppData.cpp b/src/app/AppData.cpp index 67a853e..29c3b92 100644 --- a/src/app/AppData.cpp +++ b/src/app/AppData.cpp @@ -69,9 +69,9 @@ bool AppData::initFromDB() std::string name = fields.value(DMDefWorkMode::NAME); this->mapping.policyType.push_back({std::to_string(policyTypeId), name}); this->mapPolicyType[policyTypeId] = name; - str += ("策略类型: {" + std::to_string(policyTypeId) + ":" + name + "},"); + //str += ("策略类型: {" + std::to_string(policyTypeId) + ":" + name + "},"); } - spdlog::info(str); + //spdlog::info(str); } { // 数据库读取设备类型定义 str = "", result.clear(); @@ -87,9 +87,9 @@ bool AppData::initFromDB() item->fieldsAttr.parseJson(item->attr); mapDeviceType[item->typeId] = item; mapping.deviceType.push_back({std::to_string(item->typeId), item->name}); - str += ("设备类型: {" + std::to_string(item->typeId) + ":" + item->name + "},"); + //str += ("设备类型: {" + std::to_string(item->typeId) + ":" + item->name + "},"); } - spdlog::info(str); + //spdlog::info(str); } { // 数据库读取角色定义 str = "", result.clear(); @@ -103,9 +103,9 @@ bool AppData::initFromDB() item->isOpen = fields.get(DMRole::IS_OPEN); mapRole[item->roleId] = item; mapping.role.push_back({std::to_string(item->roleId), item->name}); - str += ("角色: {" + std::to_string(item->roleId) + ":" + item->name + "},"); + //str += ("角色: {" + std::to_string(item->roleId) + ":" + item->name + "},"); } - spdlog::info(str); + //spdlog::info(str); } { // 数据库读取场站信息 str = "", result.clear(); @@ -118,9 +118,8 @@ bool AppData::initFromDB() station->setFields(fields); this->mapStation[station->stationId] = station; this->mapping.stationName.push_back({std::to_string(station->stationId), station->name}); - str += ("场站: {" + std::to_string(station->stationId) + ":" + station->name + "},"); + spdlog::info("场站: {}:{}, {}", station->stationId, station->name, station->status>0 ? "启用" : "未启用"); } - spdlog::info(str); } { // 数据库读取设备信息 str = "", result.clear(); @@ -158,32 +157,32 @@ bool AppData::initFromDB() } } { // 数据库读取电价分段信息 - result.clear(); - vecElectPeriods.resize(12); - DAO::exec(dao, "SELECT * FROM configure;", result); - - Fields info; - for (auto& fields: result) - { - auto k = fields.value("key"); - auto v = fields.value("val"); - info.set(k, v); - } + //result.clear(); + //vecElectPeriods.resize(12); + //DAO::exec(dao, "SELECT * FROM configure;", result); + // + //Fields info; + //for (auto& fields: result) + //{ + // auto k = fields.value("key"); + // auto v = fields.value("val"); + // info.set(k, v); + //} - for (int month = 1; month<=12; month++) - { - if (month-1 < vecElectPeriods.size()) - { - auto& vecItems = vecElectPeriods[month-1]; - std::string str = info.value("period_" + std::to_string(month)); - std::vector vec; - Utils::split(str, ",", vecItems); - } - } - electPriceSuperPeak = info.get("price_super_peak"); - electPricePeak = info.get("price_peak"); - electPriceShoulder = info.get("price_shoulder"); - electPriceOffPeak = info.get("price_off_peak"); + //for (int month = 1; month<=12; month++) + //{ + // if (month-1 < vecElectPeriods.size()) + // { + // auto& vecItems = vecElectPeriods[month-1]; + // std::string str = info.value("period_" + std::to_string(month)); + // std::vector vec; + // Utils::split(str, ",", vecItems); + // } + //} + //electPriceSuperPeak = info.get("price_super_peak"); + //electPricePeak = info.get("price_peak"); + //electPriceShoulder = info.get("price_shoulder"); + //electPriceOffPeak = info.get("price_off_peak"); } { // 数据库读取统计数据 vector result; @@ -196,19 +195,17 @@ bool AppData::initFromDB() auto station = this->getStation(stationId); if (station) { - station->storageIn = fields.get(DMStatStation::STORAGE_ELECT_IN); - station->storageOut = fields.get(DMStatStation::STORAGE_ELECT_OUT); + //station->storageIn = fields.get(DMStatStation::STORAGE_ELECT_IN); + //station->storageOut = fields.get(DMStatStation::STORAGE_ELECT_OUT); //station->storageNumIn = fields.getFloat(DMStatStation::STORAGE_NUM); //station->storageNumOut = fields.getFloat(DMStatStation::STORAGE_NUM); - station->storageNumErr = fields.get(DMStatStation::STORAGE_NUM_ERR); - - station->solarGen = fields.get(DMStatStation::SOLAR_ELECT_GEN); - station->solarGrid = fields.get(DMStatStation::SOLAR_ELECT_GRID); - station->solarNumErr = fields.get(DMStatStation::SOLAR_NUM_ERR); - - station->chargeElect = fields.get(DMStatStation::CHARGE_ELECT); - station->chargeNum = fields.get(DMStatStation::CHARGE_NUM); - station->chargeNumErr = fields.get(DMStatStation::CHARGE_NUM_ERR); + //station->storageNumErr = fields.get(DMStatStation::STORAGE_NUM_ERR); + //station->solarGen = fields.get(DMStatStation::SOLAR_ELECT_GEN); + //station->solarGrid = fields.get(DMStatStation::SOLAR_ELECT_GRID); + //station->solarNumErr = fields.get(DMStatStation::SOLAR_NUM_ERR); + //station->chargeElect = fields.get(DMStatStation::CHARGE_ELECT); + //station->chargeNum = fields.get(DMStatStation::CHARGE_NUM); + //station->chargeNumErr = fields.get(DMStatStation::CHARGE_NUM_ERR); } else { @@ -217,30 +214,38 @@ bool AppData::initFromDB() } } - { // 初始化场站设备的历史监测数据 - + { // 初始化场站设备的历史监测数据(当天) vector result; - DAO::queryRuntimeData(dao, Utils::dateStr(), result); + DAO::queryRuntimeDataHistory(dao, Utils::dateStr(), result); for (auto& item : result) { int stationId = item.get("station_id"); int deviceId = item.get("device_id"); + int datatype = item.get("datatype"); auto device = this->getDevice(stationId, deviceId); if (device) { - int datatype = item.get("datatype"); std::string value = item.value("value"); - - njson json; - if (JSON::parse(value, json)) - { - std::vector vecVal(json.size()); - for (int i=0; i(json[i]); - } - device->setCache(datatype, vecVal); - } + std::vector vd; + JSON::parseArray(value, vd); + device->setCache(datatype, vd); + } + } + } + { // 初始化预测数据源的历史数据(当天) + vector result; + DAO::queryPredictHistory(dao, Utils::dateStr(), result); + for (auto& item : result) + { + int stationId = item.get("station_id"); + int datatype = item.get("datatype"); + auto station = this->getStation(stationId); + if (station) + { + std::string value = item.value("value"); + std::vector vd; + JSON::parseArray(value, vd); + station->setCache(datatype, vd); } } } @@ -457,32 +462,32 @@ int AppData::getPolicyTypeId(std::string name) } -std::vector AppData::getElectPreiodVals(int month) -{ - if (month > 0 && month-1 < vecElectPeriods.size()) - { - return vecElectPeriods[month-1]; - } - return {}; -} - -std::string AppData::getElectPreiodVal(int month, int hour) -{ - if (month > 0 && month-1 < vecElectPeriods.size()) - { - auto& vec = vecElectPeriods[month-1]; - if (hour > 0 && hour-1 < vec.size()) - { - auto& val = vec[hour-1]; - if (val == "尖") return "尖峰"; - if (val == "峰") return "高峰"; - if (val == "平") return "平段"; - if (val == "谷") return "低谷"; - return val; - } - } - return ""; -} +//std::vector AppData::getElectPreiodVals(int month) +//{ +// if (month > 0 && month-1 < vecElectPeriods.size()) +// { +// return vecElectPeriods[month-1]; +// } +// return {}; +//} +// +//std::string AppData::getElectPreiodVal(int month, int hour) +//{ +// if (month > 0 && month-1 < vecElectPeriods.size()) +// { +// auto& vec = vecElectPeriods[month-1]; +// if (hour > 0 && hour-1 < vec.size()) +// { +// auto& val = vec[hour-1]; +// if (val == "尖") return "尖峰"; +// if (val == "峰") return "高峰"; +// if (val == "平") return "平段"; +// if (val == "谷") return "低谷"; +// return val; +// } +// } +// return ""; +//} void AppData::storeRuntimeDB() { diff --git a/src/app/AppData.h b/src/app/AppData.h index 07a24f2..36691d6 100644 --- a/src/app/AppData.h +++ b/src/app/AppData.h @@ -99,9 +99,8 @@ public: // 根据策略类型名称获取策略类型ID int getPolicyTypeId(std::string name); - std::vector getElectPreiodVals(int month); - - std::string getElectPreiodVal(int month, int hour); + //std::vector getElectPreiodVals(int month); + //std::string getElectPreiodVal(int month, int hour); void storeRuntimeDB(); @@ -134,10 +133,12 @@ public: VecPairSS stationName; } mapping; - double electPriceSuperPeak {}; - double electPricePeak {}; - double electPriceShoulder {}; - double electPriceOffPeak {}; + //double electPriceSuperPeak {}; + //double electPricePeak {}; + //double electPriceShoulder {}; + //double electPriceOffPeak {}; + // 电力峰谷分段 (12个月,每个月按小时分成24个时段) + //std::vector> vecElectPeriods; // 场站信息 std::unordered_map> mapStation; @@ -157,8 +158,7 @@ public: // 策略信息 std::unordered_map> mapPolicy; - // 电力峰谷分段 (12个月,每个月按小时分成24个时段) - std::vector> vecElectPeriods; + std::map mapDataDay; diff --git a/src/app/Application.cpp b/src/app/Application.cpp index 16acd66..a516b09 100644 --- a/src/app/Application.cpp +++ b/src/app/Application.cpp @@ -73,6 +73,8 @@ void Application::runThreadDevice() void Application::runThreadMain() { + std::this_thread::sleep_for(std::chrono::seconds(10)); // 延迟10秒执行 + while (!isQuit) { if (!this->isInit) // 初始化失败 @@ -85,27 +87,30 @@ void Application::runThreadMain() static TimeTick ttMqtt; // 检查 场站的 MQTT 连接 if (ttMqtt.elapse(30)) { - auto& optionMqtt = Config::option.mqtt; - if (!optionMqtt.host.empty()) + for (auto& item : appdata.mapStation) { - for (auto& item : appdata.mapStation) + auto& station = item.second; + // 检查MQTT的连接状态 + if (!Config::option.mqtt.host.empty()) { station->initMqtt(); } + // 检查设备的在线状态 + station->checkDevice(); + } + } + + static TimeTick ttMqttPolling; // 召测 + int mqttInterval = Config::option.mqtt.interval; + if (!Config::option.mqtt.host.empty() && mqttInterval > 0 && ttMqttPolling.elapse(10)) + { + for (auto& item : appdata.mapStation) + { + auto& station = item.second; + if (Utils::time() - station->getPollingTS() > mqttInterval) { - auto& station = item.second; - if (station) - { - if (station->isOpen) - { - // 该函数检查连接状态,若已经连接,则无操作;若未连接,则进行连接操作 - item.second->initMqtt(); - // 召测 - item.second->polling(); - } - // 检查设备的在线状态 - station->checkDevice(); - } + item.second->polling(); } } } + std::this_thread::sleep_for(std::chrono::seconds(1)); } } diff --git a/src/app/Config.cpp b/src/app/Config.cpp index 7ed4d4c..312a5ac 100644 --- a/src/app/Config.cpp +++ b/src/app/Config.cpp @@ -47,8 +47,7 @@ bool Config::init(std::string filename) 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); - } + JSON::read(json, "encryptKey", option.http.encryptKey); } else { spdlog::error("[config] parse http failed: not found."); @@ -60,6 +59,7 @@ bool Config::init(std::string filename) JSON::read(json, "host", option.mqtt.host); JSON::read(json, "username", option.mqtt.username); JSON::read(json, "password", option.mqtt.password); + JSON::read(json, "interval", option.mqtt.interval); } else { diff --git a/src/app/Config.h b/src/app/Config.h index a0d0442..88e8445 100644 --- a/src/app/Config.h +++ b/src/app/Config.h @@ -29,6 +29,7 @@ struct AppOption std::string host; std::string username; std::string password; + int interval {60}; } mqtt; struct { diff --git a/src/app/Device.cpp b/src/app/Device.cpp index 0428df5..cccb8a9 100644 --- a/src/app/Device.cpp +++ b/src/app/Device.cpp @@ -187,22 +187,9 @@ void Device::getCachePower(std::vector& vec) } } -int64_t GetCurrentTimePos(int step) +void Device::setCache(int datatype, std::vector& vd) { - auto tp = chrono::system_clock::now(); - int64_t tTime = chrono::time_point_cast(tp).time_since_epoch().count(); - std::time_t t = chrono::system_clock::to_time_t(tp); - std::tm* tmlocal = localtime(&t); - tmlocal->tm_hour = 0; - tmlocal->tm_min = 0; - tmlocal->tm_sec = 0; - int64_t tDate = chrono::time_point_cast(chrono::system_clock::from_time_t(mktime(tmlocal))).time_since_epoch().count(); - return (tTime - tDate) / step; -} - -void Device::setCache(int datatype, std::vector& vec) -{ - std::map* mapptr = NULL; + std::map* mapptr = NULL; if (datatype == 1) { mapptr = &mapCacheVoltage; } else if (datatype == 2) { mapptr = &mapCacheCurrent; } else if (datatype == 3) { mapptr = &mapCachePower; } @@ -211,12 +198,12 @@ void Device::setCache(int datatype, std::vector& vec) { const int step = 600; const int N = 86400/step; - - int n = GetCurrentTimePos(step); + int64_t tsSeconds = Utils::timeDaySeconds(); + int npos = tsSeconds / step; for (int i = 0; i>& if (v == "0") v = "并网"; else if (v == "1") v = "离网"; } - if (item.addr == "0x1008") // 模块状态 R uint16 1开机,0待机 0x1008 + if (item.addr == "0x1006") // 启停状态 R uint16 1开机,0关机 0x1008 { - if (v == "0") v = "开机"; - else if (v == "1") v = "待机"; + if (v == "1") v = "开机"; + else if (v == "0") v = "关机"; } } else if (type == int(EDeviceType::PCS)) @@ -463,7 +453,7 @@ void Device::setBCUUnit(std::string k, int pos, int v, int count) if (k == "0x0056") { bcuUnit[0] = float(v) * 0.1f; } else if (k == "0x043E") { bcuUnit[1] = float(v) * 0.1f; } else if (k == "0x0826") { bcuUnit[2] = float(v) * 0.001f; } - else if (k == "0x0C0E") { bcuUnit[3] = float(v); } // * 0.01f + else if (k == "0x0C0E") { bcuUnit[3] = float(v) * 0.01f; } // * 0.01f else if (k == "0x0FF6") { bcuUnit[4] = float(v); } } } diff --git a/src/app/Device.h b/src/app/Device.h index 492a711..82e5586 100644 --- a/src/app/Device.h +++ b/src/app/Device.h @@ -47,7 +47,7 @@ public: void getCachePower(std::vector& vec); // int datatype: 1: 电压,2:电流,3:功率 - void setCache(int datatype, std::vector& vec); + void setCache(int datatype, std::vector& vec); bool cache(int npos); void storeDB(int npos); @@ -87,9 +87,9 @@ public: std::shared_ptr commEntity; int64_t tsDataDate {}; - std::map mapCacheVoltage; - std::map mapCacheCurrent; - std::map mapCachePower; + std::map mapCacheVoltage; + std::map mapCacheCurrent; + std::map mapCachePower; std::map mapParams; std::map mapMyParams; diff --git a/src/app/Station.cpp b/src/app/Station.cpp index 038d18c..b739544 100644 --- a/src/app/Station.cpp +++ b/src/app/Station.cpp @@ -24,8 +24,8 @@ void Station::setFields(Fields& fields) 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); } @@ -156,12 +156,25 @@ void Station::initMqtt() void Station::polling() { - if (mqttCli) + if (status > 0 && mqttCli) { - mqttCli->polling(); + if (mqttCli->isConnected) + { + mqttCli->polling(); + } + //else + //{ + // // 该函数检查连接状态,若已经连接,则无操作;若未连接,则进行连接操作 + // this->initMqtt(); + //} } } +int64_t Station::getPollingTS() +{ + return (mqttCli != nullptr) ? mqttCli->tsPolling : 0; +} + void Station::setGarewayWorkMode() { if (!mqttCli) @@ -190,6 +203,19 @@ void Station::setGarewayWorkMode() mqttCli->publish("Gateway_YT", text); } + +string Station::getGatewayMode() +{ + // 0:手动,1:峰谷套利,2:增网配容,3:应急供电,4:并网保电,5:自定时段 + if (workModeGateway == 0) { return "手动"; } + else if (workModeGateway == 1) { return "峰谷套利"; } + else if (workModeGateway == 2) { return "增网配容"; } + else if (workModeGateway == 3) { return "应急供电"; } + else if (workModeGateway == 4) { return "并网保电"; } + else if (workModeGateway == 5) { return "自定时段"; } + else { return "--"; }; +} + void Station::checkDevice() { for (auto& item: mapDevice) @@ -318,6 +344,7 @@ void Station::readCoolingData(int deviceNo, string addr, int val) void Station::readGatewayMode(int mode) { + this->workModeGateway = mode; if (mode != this->workMode) { //this->setGarewayWorkMode(); @@ -350,20 +377,61 @@ void Station::readGatewayStatus(int cdzStatus, int emuStatus) } } -static std::string MapValueToJson(int npos, std::map& mapV) +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]); + jsonarray.push_back(int(mapV[i])); } return jsonarray.dump(); } +void Station::setCache(int datatype, std::vector& vd) +{ + std::map* mapptr = NULL; + if (datatype == 1) { mapptr = &mapCacheElectIn; } + else if (datatype == 2) { mapptr = &mapCacheElectOut; } + else if (datatype == 3) { mapptr = &mapCacheElectCharger; } + if (mapptr) + { + const int step = 600; + const int N = 86400/step; + int64_t tsSeconds = Utils::timeDaySeconds(); + int npos = tsSeconds / step; + for (int i = 0; i= (600-180) && npos + 1 < 144) + { + npos += 1; + save = true; + } + else if (offset <= 180 && posCache < npos) + { + save = true; + posCache = npos; + } + if (save) + { + mapCacheElectIn[npos] = Utils::random(100, 800); // dayElectIn + mapCacheElectOut[npos] = Utils::random(100, 800); // dayElectOut + mapCacheElectCharger[npos] = Utils::random(100, 800); // 暂无数据源 + } +} void Station::writeStatistic() { auto dao = DaoEntity::create("history_day"); - std::string dt = Utils::dateStr(); int64_t tTime = Utils::time(); int64_t tDate = Utils::date(); @@ -373,7 +441,7 @@ void Station::writeStatistic() for (auto iter = mapDevice.begin(); iter!=mapDevice.end(); ++iter) { auto device = iter->second; - if (device->cache(npos) && device->type == int(EDeviceType::BMS)) + if (device->cache(npos)) { Fields fields; fields.set("dt", dt); @@ -394,7 +462,7 @@ void Station::writeStatistic() } } - if (statData.ts != 0) + if (statData.ts > 0) { Fields fields; fields.set("dt", Utils::dateStr(statData.ts)); @@ -424,15 +492,14 @@ void Station::writeStatistic() }; dao->duplicateUpdate(fields, vecKeys); - { + { // stat_day 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); + DAO::insertStatDay(dao, fields); } { Fields fields; @@ -445,4 +512,25 @@ void Station::writeStatistic() } } + + { + // 预测数据源记录 + dao->setTableName("predict_day"); + + Fields fields; + fields.set("dt", dt); + fields.set("station_id", stationId); + fields.set("datatype", 1); // 1:储能充电,2:储能放电,3:充电桩充电,4:发电 + fields.set("value", MapValueToJson(npos, mapCacheElectIn)); + dao->duplicateUpdate(fields, {"value"}); + + fields.set("datatype", 2); // 1:储能充电,2:储能放电,3:充电桩充电,4:发电 + fields.set("value", MapValueToJson(npos, mapCacheElectOut)); + dao->duplicateUpdate(fields, {"value"}); + + fields.set("datatype", 3); // 1:储能充电,2:储能放电,3:充电桩充电,4:发电 + fields.set("value", MapValueToJson(npos, mapCacheElectCharger)); + dao->duplicateUpdate(fields, {"value"}); + } + } diff --git a/src/app/Station.h b/src/app/Station.h index c5b0e32..f12f207 100644 --- a/src/app/Station.h +++ b/src/app/Station.h @@ -111,9 +111,12 @@ public: void initMqtt(); void polling(); + int64_t getPollingTS(); void setGarewayWorkMode(); void checkDevice(); + string getGatewayMode(); + void readAlert(std::shared_ptr device, std::string addr, int v, std::string text); void readRuntimeData(int deviceNo, string addr, int val); void readTHData(int deviceNo, string addr, int val); @@ -122,6 +125,10 @@ public: void readGatewayMode(int mode); void readGatewayStatus(int cdzStatus, int emuStatus); + void setCache(int datatype, std::vector& vd); + void cache(); + int posCache {0}; + void writeStatistic(); int posDayStat {0}; @@ -129,7 +136,6 @@ public: int stationId {}; std::string name; std::string code; - bool isOpen {false}; int status {0}; std::string operationDate; SysPolicy policy; @@ -138,6 +144,7 @@ public: bool isConnected {false}; int workMode {}; // 运行模式 + int workModeGateway { -1 }; // 运行模式 int runPolicyId {}; // 运行策略 /////////////////////////////////////////////////////////////////////////////////////////////// @@ -158,23 +165,19 @@ public: /////////////////////////////////////////////////////////////////////////////////////////////// /// === 日统计 === - double storageIn {}; // 储能充电电量 - double storageOut {}; // 储能放电电量 - - int storageNumIn {}; // 储能充电次数 - int storageNumOut {}; // 储能放电次数 - int storageNumErr {}; // 储能故障次数 - - double solarGen {}; // 光伏发电电量 - double solarGrid {}; // 光伏入网电量 - int solarNumErr {}; // 光伏故障次数 - - double chargeElect {}; // 充电设备充电电量 - int chargeNum {}; // 充电设备充电次数 - int chargeNumErr {}; // 充电设备故障次数 - - double incomeElect {}; // 发电收益金额 - double incomeCharge {}; // 充电收益金额 + //double storageIn {}; // 储能充电电量 + //double storageOut {}; // 储能放电电量 + //int storageNumIn {}; // 储能充电次数 + //int storageNumOut {}; // 储能放电次数 + //int storageNumErr {}; // 储能故障次数 + //double solarGen {}; // 光伏发电电量 + //double solarGrid {}; // 光伏入网电量 + //int solarNumErr {}; // 光伏故障次数 + //double chargeElect {}; // 充电设备充电电量 + //int chargeNum {}; // 充电设备充电次数 + //int chargeNumErr {}; // 充电设备故障次数 + //double incomeElect {}; // 发电收益金额 + //double incomeCharge {}; // 充电收益金额 /////////////////////////////////////////////////////////////////////////////////////////////// /// === 环境 === @@ -200,7 +203,6 @@ public: std::unordered_map> mapDevice; std::map>> mapDeviceGroup; - // 温湿度信息 std::map mapTempHumUnit; // 消防4.0信息 @@ -236,6 +238,28 @@ public: float dayFeeOut {0.0}; // 日放电费用 R uint32 1RMB 0 0x1114 float dayIncome {0.0}; // 日收益 R int32 1RMB 0 0x1116 + //日正向尖有功电能 R uint32 1kWh 0x0039 + //日正向峰有功电能 R uint32 1kWh 0x003B + //日正向平有功电能 R uint32 1kWh 0x003D + //日正向谷有功电能 R uint32 1kWh 0x003F + //日正向总有功电能 R uint32 1kWh 0x0041 + //日反向尖有功电能 R uint32 1kWh 0x0043 + //日反向峰有功电能 R uint32 1kWh 0x0045 + //日反向平有功电能 R uint32 1kWh 0x0047 + //日反向谷有功电能 R uint32 1kWh 0x0049 + //日反向总有功电能 R uint32 1kWh 0x004B + + //总正向尖有功电能 R uint32 1kWh 0x0057 + //总正向峰有功电能 R uint32 1kWh 0x0059 + //总正向平有功电能 R uint32 1kWh 0x005B + //总正向谷有功电能 R uint32 1kWh 0x005D + //总正向总有功电能 R uint32 1kWh 0x005F + //总反向尖有功电能 R uint32 1kWh 0x0061 + //总反向峰有功电能 R uint32 1kWh 0x0063 + //总反向平有功电能 R uint32 1kWh 0x0065 + //总反向谷有功电能 R uint32 1kWh 0x0067 + //总反向总有功电能 R uint32 1kWh 0x0069 + } statData; /////////////////////////////////////////////////////////////////////////////////////////////// @@ -247,4 +271,14 @@ public: int emuStatus {-1}; std::map mapAlertCache; + + + /////////////////////////////////////////////////////////////////////////////////////////////// + /// 说明:从电表中读取对应数据:每间隔600秒(10分钟)缓存一个点位,存储到数据库,用于绘制一天的电曲线 + // 储能充电量缓存,key:位置索引(0->144),val:电量 + std::map mapCacheElectIn; + // 储能放电量缓存,key:位置索引(0->144),val:电量 + std::map mapCacheElectOut; + // 充电桩充电量缓存,key:位置索引(0->144),val:电量 + std::map mapCacheElectCharger; }; \ No newline at end of file diff --git a/src/common/JsonN.cpp b/src/common/JsonN.cpp index fc30ebc..481108e 100644 --- a/src/common/JsonN.cpp +++ b/src/common/JsonN.cpp @@ -64,15 +64,6 @@ std::string JSON::readStr(njson& json, std::string k) return v; } -void JSON::parse(std::string jsonstr, std::vector& vd) -{ - njson jsonroot; - if (JSON::parse(jsonstr, jsonroot)) - { - vd = jsonroot.get>(); - } -} - std::string JSON::toStr(njson& json) { std::string v; @@ -92,4 +83,6 @@ std::string JSON::toStr(njson& json) break; } return v; -} \ No newline at end of file +} + + diff --git a/src/common/JsonN.h b/src/common/JsonN.h index 96515c6..04ffaa5 100644 --- a/src/common/JsonN.h +++ b/src/common/JsonN.h @@ -90,10 +90,19 @@ public: } static std::string readStr(njson& json, std::string k); - - static void parse(std::string jsonstr, std::vector& vd); - + static std::string toStr(njson& json); + + template + static void parseArray(std::string jsonstr, std::vector& vd) + { + njson json; + if (JSON::parse(jsonstr, json)) + { + try { vd = json.get>(); } + catch (const nlohmann::detail::exception& e) { Spdlogger::info("JSON read error: err={}, json={}", e.what(), json.dump()); } + } + } }; diff --git a/src/common/Spdlogger.cpp b/src/common/Spdlogger.cpp index 61c674b..18a7632 100644 --- a/src/common/Spdlogger.cpp +++ b/src/common/Spdlogger.cpp @@ -1,7 +1,8 @@ #include "Spdlogger.h" #include "spdlog/sinks/stdout_color_sinks.h" -#include +#include "spdlog/sinks/daily_file_sink.h" + //std::shared_ptr Spdlogger::logger_ = spdlog::stdout_color_mt("sys"); //std::shared_ptr Spdlogger::logger = spdlog::daily_logger_mt("daily_logger", "ees.log", 0, 0); @@ -12,31 +13,36 @@ void Spdlogger::init(spdlog::level::level_enum log_level, std::string filename) //logger = spdlog::daily_logger_mt("daily_logger", filename, 0, 0); } - //logger_ = spdlog::stdout_color_mt("sys"); - //logger_ = spdlog::daily_logger_mt("daily_logger", "log/pvs.log", 0, 0); - // set log level : spdlog::level::debug - //logger->set_level(log_level); - //logger->flush_on(log_level); - + std::vector mySinks; + bool consoleEnabled = false; // 创建控制台接收器 - auto consoleSink = std::make_shared(); - //consoleSink->set_level(log_level); // 设置控制台日志等级 - //consoleSink->set_pattern("[%T] [%^%l%$] %v"); // 设置日志格式 + if (consoleEnabled) + { + auto consoleSink = std::make_shared(); + //consoleSink->set_level(log_level); // 设置控制台日志等级 + //consoleSink->set_pattern("[%T] [%^%l%$] %v"); // 设置日志格式 + mySinks.push_back(consoleSink); + } - // 创建文件接收器 - //auto fileSink = std::make_shared("logs/mcs.log", true); - //fileSink->set_level(spdlog::level::debug); // 设置文件日志等级 - //fileSink->set_pattern("[%T] [%l] %v"); // 设置日志格式 + bool fileEnabled = true; + if (fileEnabled) + { + // 创建文件接收器 + //auto fileSink = std::make_shared("logs/mcs.log", true); + //fileSink->set_level(spdlog::level::debug); // 设置文件日志等级 + //fileSink->set_pattern("[%T] [%l] %v"); // 设置日志格式 - // 每日文件sink(可选,每天生成新文件) - auto dailySink = std::make_shared("logs/ess.log", 0, 0); - //dailySink->set_level(log_level); - //dailySink->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] %v"); + // 每日文件sink(可选,每天生成新文件) + auto dailySink = std::make_shared("logs/ess.log", 0, 0); + //dailySink->set_level(log_level); + //dailySink->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] %v"); + + mySinks.push_back(dailySink); + } // 创建一个多重接收器的 logger - std::vector sinks {consoleSink, dailySink}; - auto logger = std::make_shared("", sinks.begin(), sinks.end()); + auto logger = std::make_shared("", mySinks.begin(), mySinks.end()); // 设置全局 logger spdlog::set_default_logger(logger); diff --git a/src/common/Spdlogger.h b/src/common/Spdlogger.h index 345ac75..5924d2e 100644 --- a/src/common/Spdlogger.h +++ b/src/common/Spdlogger.h @@ -3,6 +3,7 @@ #include "spdlog/spdlog.h" #include // 彩色控制台日志 #include // 文件日志 +#include "spdlog/sinks/qt_sinks.h" #include class Spdlogger diff --git a/src/common/Utils.cpp b/src/common/Utils.cpp index 9acb97a..86a89f1 100644 --- a/src/common/Utils.cpp +++ b/src/common/Utils.cpp @@ -400,6 +400,24 @@ string Utils::timeStrMS(std::string fmt /*= "%Y-%m-%dT%H:%M:%S"*/) // return true; //} +int64_t Utils::timeDaySeconds() +{ + // 获取当前时间 + auto tpNow = chrono::system_clock::now(); + // 转换为time_t以便使用C库函数 + std::time_t tsNow = std::chrono::system_clock::to_time_t(tpNow); + std::tm* tmLocal = std::localtime(&tsNow); + + // 设置为今日0点 + tmLocal->tm_hour = 0; + tmLocal->tm_min = 0; + tmLocal->tm_sec = 0; + + // 转换回时间戳 + std::time_t tsDay = std::mktime(tmLocal); + return tsNow - tsDay; +} + void Utils::sleep_ms(int ms) { // 计算时间间隔: diff --git a/src/common/Utils.h b/src/common/Utils.h index cc806b6..450cd3b 100644 --- a/src/common/Utils.h +++ b/src/common/Utils.h @@ -60,6 +60,8 @@ public: //static string time_to_string(int64_t dt, std::string fmt="%Y-%m-%d %H:%M:%S"); //static bool time_string_to_tm(string dt, std::tm& t); + static int64_t timeDaySeconds(); + std::string duration_str(int64_t t) { auto h = t / 3600; diff --git a/src/database/Dao.cpp b/src/database/Dao.cpp index 4b27ba0..af11f45 100644 --- a/src/database/Dao.cpp +++ b/src/database/Dao.cpp @@ -4,6 +4,7 @@ #include "common/JsonN.h" #include "app/Application.h" #include "app/AppData.h" +#include "common/Crypto.h" std::string DAO::sqlPageLimit(int index, int size) { @@ -169,8 +170,6 @@ Errcode DAO::login(std::shared_ptr dao, std::string account, std::str if (!dao) { dao = std::make_shared(""); } if (!dao->isConnected()) { - - //DAO1::writeSystemLog(dao, 2, "", account, "用户登录失败:" + err); return Errcode::ERR_DB_CONN; } std::string t = Utils::timeStr(); @@ -181,12 +180,10 @@ Errcode DAO::login(std::shared_ptr dao, std::string account, std::str int ret = dao->exec(sql, result); if (ret != 0) { - //DAO1::writeSystemLog(dao, 2, "", account, "用户登录失败:" + err); return Errcode(ret); } if (result.size() <=0) { - //DAO1::writeSystemLog(dao, 2, "", account, "用户登录失败:" + err); return Errcode::ERR_LOGIN_USER_NOTEXIST; } fields = result[0]; @@ -194,9 +191,9 @@ Errcode DAO::login(std::shared_ptr dao, std::string account, std::str int loginCount = fields.get("login_count"); // 判断密码 - if (passwd != fields.remove("passwd")) + + if (passwd != Crypto::sm3(fields.remove("passwd"))) { - //DAO1::writeSystemLog(dao, 2, userId, account, "用户登录失败:" + err); return Errcode::ERR_LOGIN_PASSWD; } @@ -443,8 +440,8 @@ Errcode DAO::queryDeviceList(std::shared_ptr dao, vector& res // 分页查询设备信息列表 Errcode DAO::queryDeviceList(PageInfo& pageInfo, vector& result) { - std::string sqlFrom = "FROM " + DMDevice::TABLENAME; - return QueryPagination("*", sqlFrom, pageInfo, result); + std::string sqlFrom = "FROM device d LEFT JOIN station s ON d.station_id =s.station_id"; + return QueryPagination("d.*, s.name station_name", sqlFrom, pageInfo, result); } // 查询设备类型定义 @@ -571,8 +568,8 @@ Errcode DAO::queryStatStationGroup(std::shared_ptr dao, string statio } if (!category.empty() && category != "0") { - if (!sqlCondition.empty()) sqlCondition += " AND "; - sqlCondition += "category='" + category + "'";; + //if (!sqlCondition.empty()) sqlCondition += " AND "; + //sqlCondition += "category='" + category + "'";; } if (!sqlCondition.empty()) { sqlCondition = " WHERE " + sqlCondition; } @@ -615,8 +612,8 @@ Errcode DAO::queryStatStationList(PageInfo& pageInfo, Fields& params, vector dao, vector& return DAO::exec(dao, sql, result); } -Errcode DAO::insertStatStation(std::shared_ptr dao, Fields& fields) +Errcode DAO::insertStatDay(std::shared_ptr dao, Fields& fields) { // 根据主键(dt、station_id、category),写入或更新数据 if (!dao) { dao = DaoEntity::create("stat_day"); } @@ -689,10 +686,18 @@ Errcode DAO::queryRuntimeData(std::shared_ptr dao, std::string dt, in return Errcode(ret); } -Errcode DAO::queryRuntimeData(std::shared_ptr dao, std::string dt, vector& result) +Errcode DAO::queryRuntimeDataHistory(std::shared_ptr dao, std::string dt, vector& result) { - if (!dao) { dao = DaoEntity::create("history_day"); } + if (!dao) { dao = DaoEntity::create(""); } std::string sql = "SELECT * FROM history_day WHERE dt='" + dt + "';"; int ret = dao->exec(sql, result); return Errcode(ret); +} + +Errcode DAO::queryPredictHistory(std::shared_ptr dao, std::string dt, vector& result) +{ + if (!dao) { dao = DaoEntity::create(""); } + std::string sql = "SELECT * FROM predict_day WHERE dt='" + dt + "';"; + int ret = dao->exec(sql, result); + return Errcode(ret); } \ No newline at end of file diff --git a/src/database/Dao.h b/src/database/Dao.h index 9e397c3..bd8abd5 100644 --- a/src/database/Dao.h +++ b/src/database/Dao.h @@ -122,12 +122,14 @@ public: static Errcode queryPolicyTypeDef(std::shared_ptr dao, vector& result); - static Errcode insertStatStation(std::shared_ptr dao, Fields& fields); + static Errcode insertStatDay(std::shared_ptr dao, Fields& fields); /////////////////////////////////////////////////////////////////////////////////////////////// // === 设备历史监测数据管理 === static Errcode insertRuntimeData(std::shared_ptr dao, Fields& fields); static Errcode queryRuntimeData(std::shared_ptr dao, std::string dt, int stationId, int deviceId, vector& result); - static Errcode queryRuntimeData(std::shared_ptr dao, std::string dt, vector& result); + static Errcode queryRuntimeDataHistory(std::shared_ptr dao, std::string dt, vector& result); + + static Errcode queryPredictHistory(std::shared_ptr dao, std::string dt, vector& result); }; \ No newline at end of file diff --git a/src/database/MysqlClient.cpp b/src/database/MysqlClient.cpp index 415c203..f22b201 100644 --- a/src/database/MysqlClient.cpp +++ b/src/database/MysqlClient.cpp @@ -101,6 +101,7 @@ int MysqlClient::exec(std::string sql) int MysqlClient::exec(std::string sql, vector& result) { + if (!mysql_) { return 1; } result.clear(); int err = MysqlQuery(mysql_, sql); if (err != 0) diff --git a/src/icon.ico b/src/icon.ico new file mode 100644 index 0000000..a10b03e Binary files /dev/null and b/src/icon.ico differ diff --git a/src/main.cpp b/src/main.cpp index ecfd920..bcfa9a7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -171,9 +171,13 @@ int main(int argc, char** argv) // 设置控制台输入为 UTF-8 编码(如果需要输入中文) SetConsoleCP(CP_UTF8); + // 启动数据库服务 + system("net start mysql"); + //OpensslSM2_test(); //SM2_test(); + // 初始化日志 Spdlogger::init(spdlog::level::info, ""); spdlog::info("[main] start ... ======================================================================"); @@ -181,7 +185,7 @@ int main(int argc, char** argv) // 运行后台服务 Application::instance().init(); - + std::cout << "ess server is running ... " << std::endl; if (Config::option.windowEnabled) { @@ -194,6 +198,7 @@ int main(int argc, char** argv) } else { + while (1) { std::this_thread::sleep_for(std::chrono::milliseconds(100)); diff --git a/src/protocol/HttpEntity.cpp b/src/protocol/HttpEntity.cpp index 429ebf4..9b754d0 100644 --- a/src/protocol/HttpEntity.cpp +++ b/src/protocol/HttpEntity.cpp @@ -369,7 +369,7 @@ Errcode HttpEntity::login(const httplib::Request& req, njson& json, std::string& json["permission"] = nodePermission; } - DAO::insertSystemLogUser(token, "用户登录:" + ErrcodeStr(err), (err==Errcode::OK) ? 1: 0); + DAO::insertSystemLogUser(token, "用户[" + account + "]登录:" + ErrcodeStr(err), (err==Errcode::OK) ? 1: 0); return err; } @@ -636,6 +636,7 @@ Errcode HttpEntity::updateStation(const httplib::Request& req, njson& json, std: params.check("lat", "", "0.0"); params.check("status", "", "1"); params.check("policy_id", "", "NULL"); + params.check("operation_date", "", "NULL"); Errcode err = DAO::updateStationById(params); if (err == Errcode::OK) { @@ -656,6 +657,16 @@ Errcode HttpEntity::updateStation(const httplib::Request& req, njson& json, std: } } } + if (params.contains("station_id") && params.contains("work_mode")) + { + int stationId = params.get("station_id"); + int workmode = params.get("work_mode"); + auto station = Application::data().getStation(stationId); + if (station) + { + station->setGarewayWorkMode(); + } + } return err; }; @@ -701,6 +712,9 @@ Errcode HttpEntity::queryStationOverview(const httplib::Request& req, njson& jso return Errcode(ret); } njson jsonStorage = njson::parse(R"({"category":1, "gateway":0, "count":0, "power":0.0})"); + auto station = Application::data().getStation(Utils::toInt(stationId)); + jsonStorage["workmode"] = station ? station->getGatewayMode() : "--"; + 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})"); @@ -861,7 +875,7 @@ Errcode HttpEntity::queryDevicByCategory(const httplib::Request& req, njson& jso njson jsondata = njson::array(); auto station = Application::data().getStation(stationId); - if (station && station->status == 1) + if (station) { std::vector> vecDevice; station->getDeviceByCategory(category, vecDevice); @@ -1158,8 +1172,8 @@ static std::string VerifyStatSqlCondition(Fields& params) } if (!category.empty() && category != "0") { - if (!sqlCondition.empty()) sqlCondition += " AND "; - sqlCondition += "ss.category='" + category + "'";; + //if (!sqlCondition.empty()) sqlCondition += " AND "; + //sqlCondition += "ss.category='" + category + "'";; } if (!sqlCondition.empty()) { sqlCondition = " WHERE " + sqlCondition; } return sqlCondition; @@ -1251,6 +1265,13 @@ Errcode HttpEntity::queryStatDayList(const httplib::Request& req, njson& json, s if (!startDate.empty() && !endDate.empty()) { + std::map mapTemp; + for (auto& item: result) + { + auto& dt = item.value("dt"); + mapTemp[dt] = &item; + } + int64_t t0 = Utils::time(startDate + " 00:00:00"); int64_t t1 = Utils::time(endDate + " 00:00:00"); int i = 0; @@ -1261,11 +1282,9 @@ Errcode HttpEntity::queryStatDayList(const httplib::Request& req, njson& json, s njson jsonrow; std::string dt = Utils::dateStr(t); Fields* fields = NULL; - if (isecond; } + jsonrow["dt"] = dt.substr(5); jsonrow["storage_elect_in"] = fields ? fields->value("storage_elect_in") : "0"; jsonrow["storage_elect_out"] = fields ? fields->value("storage_elect_out") : "0"; @@ -1399,8 +1418,8 @@ Errcode HttpEntity::exportStatReport(const httplib::Request& req, njson& json, s std::string endDate = params.value("end_date"); std::string sql = "SELECT s.name station_name, sd.* FROM stat_day sd LEFT JOIN station s ON sd.station_id=s.station_id"; - " WHERE station_id = '" + stationId + "' AND category = '" + category + "'" - " AND dt BETWEEN '" + startDate + "' AND '" + endDate + "2025-09-19' AND sd.category = '1'"; + sql += " WHERE sd.station_id = '" + stationId + "' AND category = '" + category + "'"; + sql += " AND dt BETWEEN '" + startDate + "' AND '" + endDate + "2025-09-19' AND sd.category = '1'"; std::string filename; std::vector result; diff --git a/src/protocol/MqttEntity.cpp b/src/protocol/MqttEntity.cpp index 86cb99e..dd8d078 100644 --- a/src/protocol/MqttEntity.cpp +++ b/src/protocol/MqttEntity.cpp @@ -25,8 +25,7 @@ bool MqttClient::load(std::string filename) std::map MqttClient::s_mapTopicInfo; int MqttClient::init(string addr, string clientId, string username, string password) -{ - if (addr.empty()) +{ if (addr.empty()) { return MQTTASYNC_FAILURE; } @@ -43,7 +42,7 @@ int MqttClient::init(string addr, string clientId, string username, string passw int rc {0}; // "tcp://localhost:1883" - std::string str = "ESS-" + std::to_string(Utils::random(1000, 9999)) + "-" +clientId; + std::string str = "ESS-" + clientId + "-" + std::to_string(Utils::time()); rc = MQTTAsync_create(&client, addr.c_str(), str.c_str(), MQTTCLIENT_PERSISTENCE_NONE, NULL); if (rc != MQTTASYNC_SUCCESS) { @@ -218,6 +217,7 @@ int MqttClient::polling() } } } + tsPolling = Utils::time(); return 0; } @@ -256,6 +256,7 @@ void MqttClient::onConnectSuccess( MQTTAsync_successData* resp) spdlog::info("[mqtt] connect to {} success, clientId={}.", addr, clientId); this->isConnected = true; this->subscribe(); + this->polling(); } void MqttClient::onConnectFaiure(MQTTAsync_failureData* resp) @@ -301,10 +302,13 @@ int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* m { std::string key = item.key(); auto& val = item.value(); - 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(), "其他参数"); } + 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(), "其他参数"); } } } else if (command == "Gateway_YX") @@ -312,7 +316,7 @@ int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* m int cdzStatus = -1; int emuStatus = -1; JSON::read(json, "cdz", cdzStatus); - JSON::read(json, "emu", cdzStatus); + JSON::read(json, "emu", emuStatus); station->readGatewayStatus(cdzStatus, emuStatus); } else @@ -388,13 +392,17 @@ void MqttClient::ParseArrivedMessage(njson& json, string command, std::shared_pt { auto addr = iter->first; auto& regUnit = iter->second; + spdlog::debug("[mqtt] read [{}]={}, {}{}", addr, val, regUnit.name, regUnit.remark); + if (command == "BCU_YC" || command == "BCU_YX") + { + //spdlog::info("[mqtt] read [{}]={}, {}{}", addr, val, regUnit.name, regUnit.remark); + } + if (regUnit.alert && val > 0) { station->readAlert(device, addr, 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); } diff --git a/src/protocol/MqttEntity.h b/src/protocol/MqttEntity.h index 96d10c4..af0d5a8 100644 --- a/src/protocol/MqttEntity.h +++ b/src/protocol/MqttEntity.h @@ -54,7 +54,7 @@ public: int qos {0}; bool isConnected {false}; bool isSubscribed {false}; - + int64_t tsPolling {0}; static std::map s_mapTopicInfo; }; diff --git a/src/qt/MainApp.cpp b/src/qt/MainApp.cpp index 03483ed..b74d608 100644 --- a/src/qt/MainApp.cpp +++ b/src/qt/MainApp.cpp @@ -1,28 +1,16 @@ #include "MainApp.h" +#include "common/Spdlogger.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -static const std::string QSS_BTN_MENU = -"QPushButton{background:rgba(50,128,218,200);color:white;border-radius:5px;border:2px solid rgb(10,120,215);font:bold 18px;}" -"QPushButton:hover{background-color:rgb(32,164,128);}" -"QPushButton:pressed{border-width:3px 0 0 3px;background-color:rgb(1,32,54);border-style:inset;}" -"QPushButton:disabled{color:rgb(150,150,150);}"; +#include "app/Config.h" +#include "common/Utils.h" +#include "MyQUI.h" +#include "app/Application.h" +#include "app/AppData.h" +#include "app/Station.h" +#include "protocol/MqttEntity.h" -static const std::string QSS_LINE = -"QLineEdit { background-color: rgb(14, 49, 66); color: #ffffff; border: 1px solid rgb(18, 251, 255); border-radius: 5px; font: normal 13px; }"; -static const std::string QSS_GROUP = -"QGroupBox { border: 1px solid gray; margin-top: 8px; border-radius: 5px;}" -"QGroupBox::title { subcontrol-origin: margin; subcontrol-position: top left; left:10px; margin-left: 0px; padding:0 1px; }"; MainApp::MainApp() { @@ -45,8 +33,14 @@ MainApp::MainApp() //ui.weburl->setValue("http://www.baidu.com"); this->setMyLayout(); + + timer = std::make_shared(this); + connect(timer.get(), &QTimer::timeout, this, &MainApp::onTimer); + timer->start(1000); // 每隔1000毫秒更新一次 } + + class MyMenu : public QWidget { public: @@ -61,7 +55,7 @@ public: layout.setContentsMargins(2, 2, 2, 2); this->addMenuItem("系统总览"); - this->addMenuItem("运行监控"); + //this->addMenuItem("运行监控"); } void addMenuItem(std::string name) @@ -88,59 +82,8 @@ public: QGridLayout layout; }; -void PairLine(QWidget* parent, int x, int y, string k, string v) -{ - auto key = new QLabel(parent); - key->setText(k.c_str()); - key->setGeometry(x, y, 80, 26); - auto value = new QLineEdit(parent); - value->setText(v.c_str()); - value->setGeometry(x+80, y, 180, 26); - value->setStyleSheet(QSS_LINE.c_str()); -} -class MyWorkspace : public QWidget -{ -public: - MyWorkspace(QWidget* parent) : QWidget(parent) - { - this->setObjectName("workspace"); - this->setStyleSheet("#workspace { background-color:rgba(100,100,100,50); }"); - - int x=10, y=10; - { - QGroupBox* groupBox = new QGroupBox("HTTP", this); - groupBox->setGeometry(x, y, 300, 120); - groupBox->setStyleSheet(QSS_GROUP.c_str()); - - PairLine(groupBox, 20, 20, "服务类型: ", "服务端"); - PairLine(groupBox, 20, 50, "服务地址: ", "92.168.0.13:17900"); - PairLine(groupBox, 20, 80, "服务状态: ", "---"); - } - { - x += 320; - QGroupBox* groupBox = new QGroupBox("MQTT", this); - groupBox->setGeometry(x, y, 300, 120); - groupBox->setStyleSheet(QSS_GROUP.c_str()); - - PairLine(groupBox, 20, 20, "服务类型: ", "客户端"); - PairLine(groupBox, 20, 50, "服务地址: ", "92.168.0.13:17800"); - PairLine(groupBox, 20, 80, "服务状态: ", "---"); - } - { - x += 320; - QGroupBox* groupBox = new QGroupBox("数据库", this); - groupBox->setGeometry(x, y, 300, 120); - groupBox->setStyleSheet(QSS_GROUP.c_str()); - - PairLine(groupBox, 20, 20, "数据库名: ", "ees"); - PairLine(groupBox, 20, 50, "主机地址: ", "92.168.0.13:17800"); - PairLine(groupBox, 20, 80, "用 户 名: ", "root"); - } - } - -}; void MainApp::setMyLayout() { @@ -162,9 +105,9 @@ void MainApp::setMyLayout() menu->setSizePolicy(sizePolicy); layout.main->addWidget(menu, 0, 0, 1, 1); - MyWorkspace* workspace = new MyWorkspace(this); - workspace->setSizePolicy(sizePolicy); - layout.main->addWidget(workspace, 0, 1, 1, 1); + ui.wigetHome = std::make_shared(this); + ui.wigetHome->setSizePolicy(sizePolicy); + layout.main->addWidget(ui.wigetHome.get(), 0, 1, 1, 1); // 设置列宽和行高 layout.main->setColumnMinimumWidth(0, 200); // 设置第0列的最小宽度为100像素 @@ -175,4 +118,11 @@ void MainApp::setMyLayout() layout.main->setColumnStretch(1, 2); // 设置第1列的伸缩因子为2,使其更宽 //gridLayout->setRowStretch(0, 1); // 设置第0行的伸缩因子为1 +} + + + +void MainApp::onTimer() +{ + ui.wigetHome->onTimer(); } \ No newline at end of file diff --git a/src/qt/MainApp.h b/src/qt/MainApp.h index b157694..a8ce9ba 100644 --- a/src/qt/MainApp.h +++ b/src/qt/MainApp.h @@ -1,38 +1,20 @@ #include #include #include -#include + +#include + #include using namespace std; -class LabelPair -{ -public: - LabelPair(QWidget* parent, int x, int y, int w, int h) - { - title.setParent(parent); - value.setParent(&title); +#include +#include +#include +#include +#include - title.setGeometry(x, y, w, h); - value.setGeometry(80, 0, w-80, h); +#include "widgets/QWHome.h" - title.show(); - value.show(); - } - - void setTitle(std::string text) - { - title.setText(text.c_str()); - } - - void setValue(std::string text) - { - value.setText(text.c_str()); - } - - QLabel title; - QLabel value; -}; class MainApp : public QWidget { @@ -42,12 +24,19 @@ public: void setMyLayout(); + +private slots: + void onTimer(); + +public: struct { std::shared_ptr weburl {}; + std::shared_ptr wigetHome; } ui; struct { std::shared_ptr main; } layout; + std::shared_ptr timer; }; \ No newline at end of file diff --git a/src/qt/MyQUI.cpp b/src/qt/MyQUI.cpp new file mode 100644 index 0000000..db5eade --- /dev/null +++ b/src/qt/MyQUI.cpp @@ -0,0 +1,35 @@ +#include "MyQUI.h" + +static const std::string QSS_GROUP = +"QGroupBox { border: 1px solid gray; margin-top: 8px; border-radius: 5px;}" +"QGroupBox::title { subcontrol-origin: margin; subcontrol-position: top left; left:10px; margin-left: 0px; padding:0 1px; }"; + + +static const std::string QSS_BTN_MENU = +"QPushButton {background:rgba(50,128,218,200);color:white;border-radius:5px;border:2px solid rgb(10,120,215);font:bold 18px;}" +"QPushButton:hover {background-color:rgb(32,164,128);}" +"QPushButton:pressed {border-width:3px 0 0 3px;background-color:rgb(1,32,54);border-style:inset;}" +"QPushButton:disabled {color:rgb(150,150,150);}"; + +static const std::string QSS_LINE = +"QLineEdit { background-color: rgb(14, 49, 66); color: #ffffff; border: 1px solid gray; border-radius: 5px; font: bold 13px; }"; + +std::shared_ptr MyQUI::GroupBox(QWidget* parent, int x, int y, int w, int h, std::string title) +{ + auto groupBox = std::make_shared(title.c_str(), parent); + groupBox->setGeometry(x, y, w, h); + groupBox->setStyleSheet(QSS_GROUP.c_str()); + return groupBox; +} + +void MyQUI::PairLine(QWidget* parent, int x, int y, string k, string v) +{ + auto key = new QLabel(parent); + key->setText(k.c_str()); + key->setGeometry(x, y, 80, 26); + auto value = new QLineEdit(parent); + value->setText(v.c_str()); + value->setGeometry(x+80, y, 260, 26); + value->setStyleSheet(QSS_LINE.c_str()); + value->setReadOnly(true); +} \ No newline at end of file diff --git a/src/qt/MyQUI.h b/src/qt/MyQUI.h new file mode 100644 index 0000000..70ad6d0 --- /dev/null +++ b/src/qt/MyQUI.h @@ -0,0 +1,76 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include +using namespace std; + +extern const std::string QSS_GROUP; +extern const std::string QSS_BTN_MENU; +extern const std::string QSS_LINE; + +class LabelPair +{ +public: + LabelPair(QWidget* parent, int x, int y, int w, int h) + { + title.setParent(parent); + value.setParent(&title); + title.setGeometry(x, y, w, h); + value.setGeometry(80, 0, w-80, h); + title.show(); + value.show(); + } + + void setTitle(std::string text) + { + title.setText(text.c_str()); + } + + void setValue(std::string text) + { + value.setText(text.c_str()); + } + + QLabel title; + QLabel value; +}; + +class MyWidget : public QWidget +{ + Q_OBJECT +public: + MyWidget(QWidget* parent) : QWidget(parent) {} + + virtual void onTimer() {}; +}; + + +class MyQUI +{ +public: + static std::shared_ptr GroupBox(QWidget* parent, int x, int y, int w, int h, std::string title); + + static void PairLine(QWidget* parent, int x, int y, string k, string v); + +}; \ No newline at end of file diff --git a/src/qt/widgets/QWHome.cpp b/src/qt/widgets/QWHome.cpp new file mode 100644 index 0000000..37d7e81 --- /dev/null +++ b/src/qt/widgets/QWHome.cpp @@ -0,0 +1,161 @@ +#include "QWHome.h" +#include "common/Spdlogger.h" +#include "app/Config.h" +#include "common/Utils.h" +#include "app/Application.h" +#include "app/AppData.h" +#include "app/Station.h" +#include "protocol/MqttEntity.h" + +QWHome::QWHome(QWidget* parent) : MyWidget(parent) +{ + this->setObjectName("workspace"); + this->setStyleSheet("#workspace { background-color:rgba(100,100,100,50); }"); + + int x = 10, y = 10; + { + this->groupSys = MyQUI::GroupBox(this, x, y, 1190, 120, "系统"); + auto pw = groupSys.get(); + } + { + x = 10, y += 130; + this->groupHttp = MyQUI::GroupBox(this, x, y, 390, 120, "HTTP"); + auto pw = groupHttp.get(); + MyQUI::PairLine(pw, 20, 20, "服务类型: ", "服务端"); + MyQUI::PairLine(pw, 20, 50, "服务端口: ", Utils::toStr(Config::option.http.port)); + MyQUI::PairLine(pw, 20, 80, "服务状态: ", "运行"); + } + { + x += 400; + this->groupMqtt = MyQUI::GroupBox(this, x, y, 390, 120, "MQTT"); + auto pw = groupMqtt.get(); + MyQUI::PairLine(pw, 20, 20, "服务类型: ", "客户端"); + MyQUI::PairLine(pw, 20, 50, "服务地址: ", Config::option.mqtt.host); + MyQUI::PairLine(pw, 20, 80, "服务状态: ", "---"); + } + { + x += 400; + this->groupDB = MyQUI::GroupBox(this, x, y, 390, 120, "数据库"); + auto pw = groupDB.get(); + MyQUI::PairLine(pw, 20, 20, "数据库名: ", Config::option.database.dbname); + MyQUI::PairLine(pw, 20, 50, "主机地址: ", Config::option.database.host); + MyQUI::PairLine(pw, 20, 80, "用 户 名: ", Config::option.database.user); + + + const std::string QSS_TABLE = // 表格整体样式 + "QTableWidget {" + " background-color: transparent;" // 背景色 + " gridline-color: #C0C0C0;" // 网格线颜色 + " border: 1px solid gray;" // 边框 + " color: white;" // 文字颜色 + "}" + // 表头样式 + "QHeaderView::section {" + " background-color: #404040;" // 表头背景 + " padding: 4px;" // 内边距 + " border: 1px solid #505050;" // 边框 + " min-height: 25px;" // 最小高度 + "}" + // 单元格样式 + "QTableWidget::item {" + " padding-left: 5px;" + " border-bottom: 1px solid gray;" // 底部边框 + "}" + // 选中状态 + "QTableWidget::item:selected {" + " background-color: #B8D6FF;" // 选中背景色 + " color: black;" // 选中文字颜色 + "}"; + + table = std::make_shared(this); + table->setGeometry(10, y += 130, 1190, 300); + table->setStyleSheet(QSS_TABLE.c_str()); + table->horizontalHeader()->setStretchLastSection(true); // 最后一列占满 + table->verticalHeader()->setVisible(false); // 不显示垂直表头 + table->setEditTriggers(QAbstractItemView::NoEditTriggers); // 单元格不可编辑 + table->setSelectionMode(QAbstractItemView::SingleSelection); // 设置为单选模式 + table->setSelectionBehavior(QAbstractItemView::SelectRows); // 设置为整行选中 + table->horizontalHeader()->setFixedHeight(50); + table->horizontalHeader()->setDefaultSectionSize(60); + + QTableWidgetItem* headerItem; + QStringList headerText_Row, headerText_Col; + headerText_Row << "ID" << "站名" << "编号" << "状态" << "MQTT状态" << "召测(秒)" + << "日充电\n电量" << "日放电\n电量" << "总充电\n电量" << "总放电\n电量" + << "日充电\n费用" << "日放电\n费用" << "总充电\n费用" << "总放电\n费用" + << "日收益" << "总收益" << "--"; + + // 设置为水平表头 + table->setColumnCount(headerText_Row.size()); + table->setHorizontalHeaderLabels(headerText_Row); + table->setColumnWidth(0, 50); + table->setColumnWidth(1, 120); + table->setColumnWidth(2, 50); + table->setColumnWidth(4, 80); + + } + + textLog = std::make_shared(this); + textLog->setGeometry(10, y += 310, 1190, 280); + textLog->setStyleSheet("background-color: transparent; border: 1px solid gray; font-weight: 400;"); + textLog->setReadOnly(true); + + { + // 第二个参数是方法函数名称,即调用 QTextEdit的appeng函数; + auto qtSink = std::make_shared(textLog.get(), "append"); + spdlog::default_logger()->sinks().push_back(qtSink); + } +} + +void QWHome::setTableCell(int row, int col, std::string text, std::string style /*= ""*/) +{ + auto item = table->item(row, col); + if (!item) + { + item = new QTableWidgetItem(); + table->setItem(row, col, item); + } + item->setText(text.c_str()); + if (style == "OK") { item->setForeground(QBrush(Qt::green)); } + else if (style == "ERR") { item->setForeground(QBrush(Qt::red)); } +} + +void QWHome::onTimer() +{ + auto& appdata = Application().data(); + int rowNo = 0; + int tsNow = Utils::time(); + for (auto& item : appdata.mapStation) + { + auto& station = item.second; + if (rowNo >= table->rowCount()) + { + table->insertRow(rowNo); + } + bool isOpen = station->status > 0; + bool isConnected = station->mqttCli->isConnected; + + setTableCell(rowNo, 0, std::to_string(station->stationId)); + setTableCell(rowNo, 1, station->name); + setTableCell(rowNo, 2, station->code); + setTableCell(rowNo, 3, isOpen ? "启用" : "未启用", isOpen ? "OK" : "ERR"); + setTableCell(rowNo, 4, isConnected ? "连接成功" : "未连接", isConnected ? "OK" : "ERR"); + + int tsPolling = station->getPollingTS(); + setTableCell(rowNo, 5, tsPolling > 0 ? std::to_string(tsNow - tsPolling) + "/" + std::to_string(Config::option.mqtt.interval) : "--"); + + setTableCell(rowNo, 6, Utils::toStr(station->statData.dayElectIn, 0)); + setTableCell(rowNo, 7, Utils::toStr(station->statData.dayElectOut, 0)); + setTableCell(rowNo, 8, Utils::toStr(station->statData.totalElectIn, 0)); + setTableCell(rowNo, 9, Utils::toStr(station->statData.totalElectOut, 0)); + setTableCell(rowNo, 10, Utils::toStr(station->statData.dayFeeIn, 0)); + setTableCell(rowNo, 11, Utils::toStr(station->statData.dayFeeOut, 0)); + setTableCell(rowNo, 12, Utils::toStr(station->statData.totalFeeIn, 0)); + setTableCell(rowNo, 13, Utils::toStr(station->statData.totalFeeOut, 0)); + setTableCell(rowNo, 14, Utils::toStr(station->statData.dayIncome, 0)); + setTableCell(rowNo, 15, Utils::toStr(station->statData.totalIncome, 0)); + setTableCell(rowNo, 16, station->statData.ts > 0 ? Utils::timeStr(station->statData.ts) : "--"); + + rowNo++; + } +} \ No newline at end of file diff --git a/src/qt/widgets/QWHome.h b/src/qt/widgets/QWHome.h new file mode 100644 index 0000000..7781b2e --- /dev/null +++ b/src/qt/widgets/QWHome.h @@ -0,0 +1,28 @@ +#pragma once + +#include "qt/MyQUI.h" +#include +#include +#include + + +class QWHome : public MyWidget +{ + Q_OBJECT +public: + QWHome(QWidget* parent); + + + // 创建自定义sink + //std::shared_ptr qtSink; + + std::shared_ptr groupSys; + std::shared_ptr groupHttp; + std::shared_ptr groupMqtt; + std::shared_ptr groupDB; + std::shared_ptr table {}; + std::shared_ptr textLog; + + void onTimer() override; + void setTableCell(int row, int col, std::string text, std::string style = ""); +}; \ No newline at end of file diff --git a/src/qt/widgets/QWMonitor.cpp b/src/qt/widgets/QWMonitor.cpp new file mode 100644 index 0000000..e69de29 diff --git a/src/qt/widgets/QWMonitor.h b/src/qt/widgets/QWMonitor.h new file mode 100644 index 0000000..e69de29 diff --git a/src/resource.rc b/src/resource.rc index 4e1b7c8..8f18745 100644 Binary files a/src/resource.rc and b/src/resource.rc differ diff --git a/src/yhicon.ico b/src/yhicon.ico deleted file mode 100644 index c7a07f1..0000000 Binary files a/src/yhicon.ico and /dev/null differ diff --git a/web/src/views/monitor.vue b/web/src/views/monitor.vue index 072a4ae..48467da 100644 --- a/web/src/views/monitor.vue +++ b/web/src/views/monitor.vue @@ -82,7 +82,7 @@ export default { { name: '储能系统', titles: [ - { v: '边缘网关编号', key: 'num' }, + { v: '运行模式', key: 'workmode' }, { v: '总有功功率(台区)', key: 'power', sufix: 'kW' } ], power: 60, @@ -126,10 +126,10 @@ export default { workMode: '', workModes: [ // 0:手动,1:峰谷套利,2:增网配容,3:应急供电,4:并网保电,5:自定时段 - // { - // value: 0, - // label: '手动' - // }, + { + value: 0, + label: '手动' + }, { value: 1, label: '峰谷套利' @@ -203,6 +203,8 @@ export default { res.data.device_group.forEach((Element, index) => { this.systems[index].num = Element.count this.systems[index].power = Element.power + + this.systems[index].workmode = Element.workmode if(Element.category==1){ this.message=Element.msg }