From 0975ea52d4f0b4a1bec15ac52af99bfb8672adcc Mon Sep 17 00:00:00 2001 From: lixiaoyuan Date: Thu, 9 Oct 2025 18:37:18 +0800 Subject: [PATCH] =?UTF-8?q?[WEB]1.=E4=BF=AE=E6=94=B9=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E5=9C=BA=E7=AB=99=E5=9B=BE=E6=A0=87=E6=98=BE=E7=A4=BA=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=E4=B8=8D=E6=AD=A3=E7=A1=AE=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?,2.=E4=BF=AE=E6=94=B9=E8=BF=90=E8=A1=8C=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=82=A8=E8=83=BD=E7=B3=BB=E7=BB=9F=E7=9A=84?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=A8=A1=E5=BC=8F=E5=92=8C=E9=A2=84=E5=88=B6?= =?UTF-8?q?=E8=88=B1=E5=8F=82=E6=95=B0=E5=9C=A8=E9=A1=B5=E9=9D=A2=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E6=97=B6=E6=95=B0=E6=8D=AE=E4=B8=8D=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/EMU对外通信点表最终修改1版_v9.xlsx | Bin 269058 -> 269201 bytes bin/Release/assets/config/pyregaddrs.py | 2 +- bin/Release/assets/config/regaddrs-new.json | 902 ++++++++++++++++++ .../assets/config/regaddrs-online.json | 902 ++++++++++++++++++ bin/Release/assets/config/regaddrs.json | 48 +- bin/Release/assets/config/regaddrsShow.json | 1 + src/app/DataStruct.h | 2 +- src/app/Station.cpp | 32 +- src/app/Station.h | 4 +- src/protocol/MqttEntity.cpp | 76 +- src/qt/MainApp.cpp | 55 +- src/qt/MainApp.h | 10 +- src/qt/MyQUI.cpp | 25 + src/qt/MyQUI.h | 9 +- src/qt/widgets/QWHome.cpp | 22 +- src/qt/widgets/QWHome.h | 3 +- src/qt/widgets/QWMonitor.cpp | 24 +- src/qt/widgets/QWStatistics.cpp | 91 ++ src/qt/widgets/QWStatistics.h | 19 + src/qt/widgets/QWSysmgr.cpp | 241 +++++ src/qt/widgets/QWSysmgr.h | 23 + web/src/components/Home/Map.vue | 6 +- web/src/components/Home/Modal/PrefabCabin.vue | 2 +- web/src/components/monitor/device.vue | 4 +- web/src/views/monitor.vue | 9 +- 25 files changed, 2377 insertions(+), 135 deletions(-) create mode 100644 bin/Release/assets/config/regaddrs-new.json create mode 100644 bin/Release/assets/config/regaddrs-online.json create mode 100644 src/qt/widgets/QWStatistics.cpp create mode 100644 src/qt/widgets/QWStatistics.h create mode 100644 src/qt/widgets/QWSysmgr.cpp create mode 100644 src/qt/widgets/QWSysmgr.h diff --git a/bin/Release/assets/config/EMU对外通信点表最终修改1版_v9.xlsx b/bin/Release/assets/config/EMU对外通信点表最终修改1版_v9.xlsx index 848f7b3710a1372481aeba1269d90306a658fb55..41a3c1e9e4910b14af31a98d9a26c5e6689eaa17 100644 GIT binary patch delta 26446 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 delta 26160 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: 放电功率(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正常"}, + {"key": "0x103C", "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": 1, "name":"高温告警", "remark": "0:正常,1:告警"}, + {"key": "0x1008", "datatype": "uint16", "alert": 1, "name":"低温告警", "remark": "0:正常,1:告警"}, + {"key": "0x1009", "datatype": "uint16", "alert": 1, "name":"高压告警", "remark": "0:正常,1:告警"}, + {"key": "0x100A", "datatype": "uint16", "alert": 1, "name":"低压告警", "remark": "0:正常,1:告警"}, + {"key": "0x100B", "datatype": "uint16", "alert": 1, "name":"进水温度传感器", "remark": "0:正常,1:告警"}, + {"key": "0x100C", "datatype": "uint16", "alert": 1, "name":"出水温度传感器", "remark": "0:正常,1:告警"}, + {"key": "0x100D", "datatype": "uint16", "alert": 1, "name":"进水压力传感器", "remark": "0:正常,1:告警"}, + {"key": "0x100E", "datatype": "uint16", "alert": 1, "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/regaddrs-online.json b/bin/Release/assets/config/regaddrs-online.json new file mode 100644 index 0000000..b6a9f1a --- /dev/null +++ b/bin/Release/assets/config/regaddrs-online.json @@ -0,0 +1,902 @@ +{ + "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正常"}, + {"key": "0x103D", "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/regaddrs.json b/bin/Release/assets/config/regaddrs.json index 375213f..513eb9e 100644 --- a/bin/Release/assets/config/regaddrs.json +++ b/bin/Release/assets/config/regaddrs.json @@ -278,29 +278,31 @@ {"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正常"} + {"key": "0x1025", "datatype": "uint16", "alert": 1, "name":"BA故障信号NO", "remark": "1故障,0正常"}, + {"key": "0x1026", "datatype": "uint16", "alert": 1, "name":"PCS_01状态", "remark": "1在线,0掉线"}, + {"key": "0x1027", "datatype": "uint16", "alert": 1, "name":"PCS_02状态", "remark": "1在线,0掉线"}, + {"key": "0x1028", "datatype": "uint16", "alert": 1, "name":"PCS_03状态", "remark": "1在线,0掉线"}, + {"key": "0x1029", "datatype": "uint16", "alert": 1, "name":"PCS_04状态", "remark": "1在线,0掉线"}, + {"key": "0x102A", "datatype": "uint16", "alert": 1, "name":"PCS_05状态", "remark": "1在线,0掉线"}, + {"key": "0x102B", "datatype": "uint16", "alert": 1, "name":"PCS_06状态", "remark": "1在线,0掉线"}, + {"key": "0x102C", "datatype": "uint16", "alert": 1, "name":"PCS_07状态", "remark": "1在线,0掉线"}, + {"key": "0x102D", "datatype": "uint16", "alert": 1, "name":"PCS_08状态", "remark": "1在线,0掉线"}, + {"key": "0x102E", "datatype": "uint16", "alert": 1, "name":"PCS_09状态", "remark": "1在线,0掉线"}, + {"key": "0x102F", "datatype": "uint16", "alert": 1, "name":"PCS_10状态", "remark": "1在线,0掉线"}, + {"key": "0x1030", "datatype": "uint16", "alert": 1, "name":"PCS_01下发设置", "remark": "1故障,0正常"}, + {"key": "0x1031", "datatype": "uint16", "alert": 1, "name":"PCS_02下发设置", "remark": "1故障,0正常"}, + {"key": "0x1032", "datatype": "uint16", "alert": 1, "name":"PCS_03下发设置", "remark": "1故障,0正常"}, + {"key": "0x1033", "datatype": "uint16", "alert": 1, "name":"PCS_04下发设置", "remark": "1故障,0正常"}, + {"key": "0x1034", "datatype": "uint16", "alert": 1, "name":"PCS_05下发设置", "remark": "1故障,0正常"}, + {"key": "0x1035", "datatype": "uint16", "alert": 1, "name":"PCS_06下发设置", "remark": "1故障,0正常"}, + {"key": "0x1036", "datatype": "uint16", "alert": 1, "name":"PCS_07下发设置", "remark": "1故障,0正常"}, + {"key": "0x1037", "datatype": "uint16", "alert": 1, "name":"PCS_08下发设置", "remark": "1故障,0正常"}, + {"key": "0x1038", "datatype": "uint16", "alert": 1, "name":"PCS_09下发设置", "remark": "1故障,0正常"}, + {"key": "0x1039", "datatype": "uint16", "alert": 1, "name":"PCS_10下发设置", "remark": "1:故障,0正常"}, + {"key": "0x103A", "datatype": "uint16", "alert": 1, "name":"内部DSP通信故障", "remark": "1:故障,0正常"}, + {"key": "0x103B", "datatype": "uint16", "alert": 1, "name":"BMS CAN通信故障", "remark": "1:故障,0正常"}, + {"key": "0x103C", "datatype": "uint16", "alert": 1, "name":"下发设置失败", "remark": "1:故障,0正常"}, + {"key": "0x103D", "datatype": "uint16", "alert": 0, "name":"手动/自动并离网状态", "remark": "1:自动,0手动"} ] }, "PCS_YC":{ diff --git a/bin/Release/assets/config/regaddrsShow.json b/bin/Release/assets/config/regaddrsShow.json index 25f5e39..d0872dd 100644 --- a/bin/Release/assets/config/regaddrsShow.json +++ b/bin/Release/assets/config/regaddrsShow.json @@ -57,6 +57,7 @@ "addrYC":[ ["电网状态", "0x1007", "--", ""], ["启停状态", "0x1006", "--", ""], + ["手动/自动状态", "0x103D", "--", ""], ["有功功率期望值","0x000E", "0.0", " KW"], ["无功功率期望值","0x000F", "0.0", " kVar"], ["A相电压", "0x0013", "0.0", " V", "1"], diff --git a/src/app/DataStruct.h b/src/app/DataStruct.h index daa02ab..f5a0777 100644 --- a/src/app/DataStruct.h +++ b/src/app/DataStruct.h @@ -26,7 +26,7 @@ enum class EDeviceType //12 水浸传感器 0 //13 视频监控 4 //14 冷机 0 - //15 网关 0 + GATEWAY = 15, // 网关 0 //100 储能预制舱 1 EMS = 101,//101 EMS 1 PCS = 102, //102 PCS 1 diff --git a/src/app/Station.cpp b/src/app/Station.cpp index 14f642e..7c8dc99 100644 --- a/src/app/Station.cpp +++ b/src/app/Station.cpp @@ -453,8 +453,14 @@ static void JSONReadArrayItem(njson& json, int i, int& v) } } -void Station::readGatewayMode(int mode, string p1, string p2, string p3) +void Station::readGatewayMode(int deviceNo, int mode, string p1, string p2, string p3) { + auto device = this->getDeviceByType(int(EDeviceType::GATEWAY), Utils::toStr(deviceNo)); + if (device) + { + device->online = true; + device->ts = Utils::time(); + } this->gatewayParam.mode = mode; this->gatewayParam.param1 = p1; this->gatewayParam.param2 = p2; @@ -464,7 +470,6 @@ void Station::readGatewayMode(int mode, string p1, string p2, string p3) //this->setGarewayWorkMode(); } - njson json; if (JSON::parse(gatewayParam.param3, json)) { @@ -481,8 +486,15 @@ void Station::readGatewayMode(int mode, string p1, string p2, string p3) } } -void Station::readGatewayStatus(int cdzStatus, int emuStatus) +void Station::readGatewayStatus(int deviceNo, int cdzStatus, int emuStatus) { + auto device = this->getDeviceByType(int(EDeviceType::GATEWAY), Utils::toStr(deviceNo)); + if (device) + { + device->online = true; + device->ts = Utils::time(); + } + //充电桩 1:在线,0:离线 if (cdzStatus >= 0) { @@ -567,6 +579,7 @@ void Station::writeStatistic() int64_t tDate = Utils::date(); int64_t tDelta = tTime - tDate; int npos = (tTime-tDate) / 600; + int tOffset = tDelta % 600; for (auto iter = mapDevice.begin(); iter!=mapDevice.end(); ++iter) { @@ -655,7 +668,14 @@ void Station::writeStatistic() } } + { + int pos = npos; + if (tOffset > 20) { pos += 1; } + mapCacheElectIn[pos] = statData.dayElectIn; + mapCacheElectOut[pos] = statData.dayElectOut; + mapCacheElectCharger[pos] = 0; + // 预测数据源记录 dao->setTableName("predict_day"); @@ -663,15 +683,15 @@ void Station::writeStatistic() fields.set("dt", dt); fields.set("station_id", stationId); fields.set("datatype", 1); // 1:储能充电,2:储能放电,3:充电桩充电,4:发电 - fields.set("value", MapValueToJson(npos, mapCacheElectIn)); + fields.set("value", MapValueToJson(pos, mapCacheElectIn)); dao->duplicateUpdate(fields, {"value"}); fields.set("datatype", 2); // 1:储能充电,2:储能放电,3:充电桩充电,4:发电 - fields.set("value", MapValueToJson(npos, mapCacheElectOut)); + fields.set("value", MapValueToJson(pos, mapCacheElectOut)); dao->duplicateUpdate(fields, {"value"}); fields.set("datatype", 3); // 1:储能充电,2:储能放电,3:充电桩充电,4:发电 - fields.set("value", MapValueToJson(npos, mapCacheElectCharger)); + fields.set("value", MapValueToJson(pos, mapCacheElectCharger)); dao->duplicateUpdate(fields, {"value"}); } } diff --git a/src/app/Station.h b/src/app/Station.h index 0b82854..3b38f83 100644 --- a/src/app/Station.h +++ b/src/app/Station.h @@ -122,8 +122,8 @@ public: void readTHData(int deviceNo, string addr, int val); void readFire40Data(int deviceNo, string addr, int val); void readCoolingData(int deviceNo, string addr, int val); - void readGatewayMode(int mode, string p1, string p2, string p3); - void readGatewayStatus(int cdzStatus, int emuStatus); + void readGatewayMode(int deviceNo, int mode, string p1, string p2, string p3); + void readGatewayStatus(int deviceNo, int cdzStatus, int emuStatus); void setCache(int datatype, std::vector& vd); void cache(); diff --git a/src/protocol/MqttEntity.cpp b/src/protocol/MqttEntity.cpp index ab55a5d..201ba35 100644 --- a/src/protocol/MqttEntity.cpp +++ b/src/protocol/MqttEntity.cpp @@ -272,7 +272,6 @@ int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* m int len = msg->payloadlen; std::string payload((const char*)msg->payload, len); - // <数据方向>/<数据格式>/<厂家ID>/<指合>/<设备标识,上行可选> std::string direction = GetSubStr("/", topicStr); std::string datatype = GetSubStr("/", topicStr); @@ -280,46 +279,53 @@ int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* m std::string command = GetSubStr("/", topicStr); std::string deviceCode = GetSubStr("/", topicStr); + + spdlog::info("[mqtt] <<< message arrived: topic=[{},{}], len={}, payload={}", topic, msg->qos, len, payload); njson json; bool ret = JSON::parse(payload, json); - if (!ret) + if (ret) + { + auto station = Application::data().getStationByCode(stationNo); + if (station) + { + int deviceNo = -1; + JSON::read(json, "no", deviceNo); + if (command == "Gateway_YC") + { + int mode = -1; + std::string param1; + std::string param2; + std::string param3 = json.dump(); + + JSON::read(json, "40001", mode); + if (json.contains("40002")) { param1 = json["40002"].dump(); } + if (json.contains("40021")) { param2 = json["40021"].dump(); } + if (json.contains("40038")) { param3 = json["40038"].dump(); } + station->readGatewayMode(deviceNo, mode, param1, param2, param3); + } + else if (command == "Gateway_YX") + { + int cdzStatus = -1; + int emuStatus = -1; + JSON::read(json, "cdz", cdzStatus); + JSON::read(json, "emu", emuStatus); + station->readGatewayStatus(deviceNo, cdzStatus, emuStatus); + } + else + { + ParseArrivedMessage(json, command, station); + } + } + else + { + spdlog::error("[mqtt] get station error, clientId={}, stationId={}", clientId, stationNo); + } + } + else { spdlog::error("[mqtt] json parse error."); - return 1; - } - auto station = Application::data().getStationByCode(stationNo); - if (!station) - { - spdlog::error("[mqtt] get station error, clientId={}, stationId={}", clientId, stationNo); - return 1; - } - - if (command == "Gateway_YC") - { - int mode = -1; - std::string param1; - std::string param2; - std::string param3 = json.dump(); - - JSON::read(json, "40001", mode); - if (json.contains("40002")) { param1 = json["40002"].dump(); } - if (json.contains("40021")) { param2 = json["40021"].dump(); } - if (json.contains("40038")) { param3 = json["40038"].dump(); } - station->readGatewayMode(mode, param1, param2, param3); - } - else if (command == "Gateway_YX") - { - int cdzStatus = -1; - int emuStatus = -1; - JSON::read(json, "cdz", cdzStatus); - JSON::read(json, "emu", emuStatus); - station->readGatewayStatus(cdzStatus, emuStatus); - } - else - { - ParseArrivedMessage(json, command, station); } // 必须释放消息内存! diff --git a/src/qt/MainApp.cpp b/src/qt/MainApp.cpp index 8f64e1d..7f59d68 100644 --- a/src/qt/MainApp.cpp +++ b/src/qt/MainApp.cpp @@ -31,6 +31,14 @@ MainApp::MainApp() //ui.weburl->setTitle("页面地址:"); //ui.weburl->setValue("http://www.baidu.com"); + ui.widgetMenu = std::make_shared(this); + ui.widgetMenu->setObjectName("menu"); + ui.widgetMenu->setStyleSheet("#menu { background-color:rgba(120,120,120,30); border-radius:5px; }"); + //ui.widgetMenu->show(); + ui.widgetWorkspace = std::make_shared(this); + ui.widgetWorkspace->setObjectName("workspace"); + ui.widgetWorkspace->setStyleSheet("#workspace { background-color:rgba(120,120,120,30); border-radius:5px; }"); + this->initMenu(); this->setMyLayout(); this->onActiveMenu("系统总览"); @@ -42,10 +50,6 @@ MainApp::MainApp() void MainApp::initMenu() { - ui.widgetMenu = std::make_shared(this); - ui.widgetMenu->setObjectName("menu"); - ui.widgetMenu->setStyleSheet("#menu { background-color:rgba(120,120,120,80); border-radius:5px; }"); - ui.widgetMenu->show(); ui.vecMenuItems.reserve(20); ui.layoutMenu = std::make_shared(ui.widgetMenu.get()); @@ -61,7 +65,7 @@ void MainApp::initMenu() // 设置列和行的伸缩因子 ui.layoutMenu->setRowStretch(0, 0); // 设置第0列的伸缩因子为0,不伸缩 - std::vector menuItems = {"系统总览", "运行监控"}; + std::vector menuItems = {"系统总览", "运行监控", "统计分析", "系统管理"}; for (auto& name: menuItems) { @@ -103,9 +107,9 @@ void MainApp::initMenu() void MainApp::setMyLayout() { - layout.main = std::make_shared(this); - auto Widget = this; + + layout.main = std::make_shared(this); layout.main->setObjectName(QString::fromUtf8("layout.main")); layout.main->setSpacing(6); @@ -115,9 +119,12 @@ void MainApp::setMyLayout() //layout->setVerticalSpacing(10); // 设置行间距为10像素 //layout->setContentsMargins(10, 10, 10, 10); // 设置内容边距为10像素 - + // 布局:左侧菜单widget ui.widgetMenu->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); layout.main->addWidget(ui.widgetMenu.get(), 0, 0, 1, 1); + // 布局:右侧工作区widget + ui.widgetWorkspace->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); + layout.main->addWidget(ui.widgetWorkspace.get(), 0, 1, 1, 1); // 设置列宽和行高 layout.main->setColumnMinimumWidth(0, 200); // 设置第0列的最小宽度为100像素 @@ -129,14 +136,26 @@ void MainApp::setMyLayout() //gridLayout->setRowStretch(0, 1); // 设置第0行的伸缩因子为1 } +std::shared_ptr MainApp::getWorkWidget(std::string name) +{ + auto iter = ui.mapWorkWidgets.find(name); + if (iter != ui.mapWorkWidgets.end()) + { + return iter->second; + } + std::shared_ptr widget {nullptr}; + if (name == "系统总览") { widget = make_shared(nullptr); } + else if(name == "运行监控") { widget = make_shared(nullptr); } + else if (name == "统计分析") { widget = make_shared(nullptr); } + //else if (name == "预测管理") { widget = make_shared(nullptr); } + if (widget) { ui.mapWorkWidgets[name] = widget; } + return widget; +} + void MainApp::onActiveMenu(std::string name) { - //ui.wigetHome->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); - //layout.main->addWidget(ui.wigetHome.get(), 0, 1, 1, 1); - std::shared_ptr widget {}; - if (name == "系统总览") { widget = (ui.wigetHome ? ui.wigetHome : (ui.wigetHome = make_shared(this))); } - else if (name == "运行监控") { widget = (ui.wigetMonitor ? ui.wigetMonitor : (ui.wigetMonitor = make_shared(this))); } - else { } + std::shared_ptr widget = getWorkWidget(name); if (widget == ui.curActiveWidget) { return; } if (ui.curActiveWidget) @@ -146,15 +165,21 @@ void MainApp::onActiveMenu(std::string name) if (widget) { + widget->setParent(ui.widgetWorkspace.get()); widget->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); widget->show(); - layout.main->addWidget(widget.get(), 0, 1, 1, 1); + //layout.main->replaceWidget(ui.curActiveWidget.get(), widget.get()); } ui.curActiveWidget = widget; } +void MainApp::setWorkspaceWidget(std::shared_ptr widget) +{ + +} + void MainApp::onTimer() { ui.labelDT->setText(Utils::timeStr().c_str()); diff --git a/src/qt/MainApp.h b/src/qt/MainApp.h index e843f84..a0e4a9d 100644 --- a/src/qt/MainApp.h +++ b/src/qt/MainApp.h @@ -15,6 +15,8 @@ using namespace std; #include "widgets/QWHome.h" #include "widgets/QWMonitor.h" +#include "widgets/QWStatistics.h" +#include "widgets/QWSysmgr.h" class MainApp : public QWidget { @@ -23,8 +25,9 @@ public: MainApp(); void initMenu(); void setMyLayout(); - + std::shared_ptr getWorkWidget(std::string name); void onActiveMenu(std::string name); + void setWorkspaceWidget(std::shared_ptr widget); private slots: void onTimer(); @@ -40,10 +43,9 @@ public: std::shared_ptr layoutMenu; std::shared_ptr curActiveMenuBtn; + std::shared_ptr widgetWorkspace; std::shared_ptr curActiveWidget = nullptr; - std::shared_ptr wigetHome; - std::shared_ptr wigetMonitor; - + std::map> mapWorkWidgets; } ui; struct { diff --git a/src/qt/MyQUI.cpp b/src/qt/MyQUI.cpp index 62a61fe..8767bc0 100644 --- a/src/qt/MyQUI.cpp +++ b/src/qt/MyQUI.cpp @@ -22,6 +22,12 @@ static const std::string QSS_BTN_MENU_ACTIVE = "QPushButton:pressed {border-width:3px 0 0 3px;border-style:inset;}" "QPushButton:disabled {color:rgb(150,150,150);}"; +static const std::string QSS_BTN_TAB = +"QPushButton {background:rgba(80,80,80,100);color:white;border-radius:3px;border:1px solid rgb(10,120,215);}" +"QPushButton:hover {background-color:rgba(80,80,80,200);}"; +//"QPushButton:pressed {border-width:3px 0 0 3px;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; }"; @@ -51,6 +57,10 @@ static const std::string QSS_TABLE = // 表格整体样式 " color: rgb(220,220,220);" // 选中文字颜色 "}"; +static const std::string QSS_BTN_COMBOX = +"QComboBox { background-color: transparent; border: 1px solid rgb(18, 251, 255)}" +"QListView::item { background-color: rgba(80,80,80,200); color: white; padding-left: 10px; }"; + MyWidget::MyWidget(QWidget* parent) : QWidget(parent) { // 可以在这里设置样式表,也可以在其他地方设置 @@ -82,6 +92,21 @@ MyPairLabelLine MyQUI::PairLine(QWidget* parent, int x, int y, string k, string return {key, value}; } +std::shared_ptr MyQUI::TableWidget(QWidget* parent, int x, int y, int w, int h) +{ + auto table = std::make_shared(parent); + table->setGeometry(x, y, w, h); + 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); + return table; +} + void MyQUI::setTableCell(std::shared_ptr table, int row, int col, std::string text, std::string style /*= ""*/) { if (row >= table->rowCount()) diff --git a/src/qt/MyQUI.h b/src/qt/MyQUI.h index feb498f..bf1ee0a 100644 --- a/src/qt/MyQUI.h +++ b/src/qt/MyQUI.h @@ -20,7 +20,8 @@ #include #include #include - +#include +#include #include #include @@ -34,9 +35,11 @@ extern const std::string QSS_BTN; extern const std::string QSS_BTN_ACTIVE; extern const std::string QSS_BTN_MENU; extern const std::string QSS_BTN_MENU_ACTIVE; +extern const std::string QSS_BTN_TAB; extern const std::string QSS_LINE; extern const std::string QSS_TABLE; +extern const std::string QSS_BTN_COMBOX; class LabelPair { @@ -82,7 +85,9 @@ public: static MyPairLabelLine PairLine(QWidget* parent, int x, int y, string k, string v, bool readonly=true); + static std::shared_ptr TableWidget(QWidget* parent, int x, int y, int w, int h); + static void setTableCell(std::shared_ptr table, int row, int col, std::string text, std::string style = ""); - + }; \ No newline at end of file diff --git a/src/qt/widgets/QWHome.cpp b/src/qt/widgets/QWHome.cpp index 7966484..7c0a745 100644 --- a/src/qt/widgets/QWHome.cpp +++ b/src/qt/widgets/QWHome.cpp @@ -45,28 +45,16 @@ QWHome::QWHome(QWidget* parent) : MyWidget(parent) this->addPair("db-h", pw, 20, 50, "主机地址: ", Config::option.database.host); this->addPair("db-u", pw, 20, 80, "用 户 名: ", Config::option.database.user); - - table = std::make_shared(this); - table->setGeometry(10, y += 130, 1190, 265); - 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状态" << "召测(秒)" + QStringList headerTextList; + headerTextList << "ID" << "站名" << "编号" << "状态" << "MQTT状态" << "召测(秒)" << "日充电\n电量" << "日放电\n电量" << "总充电\n电量" << "总放电\n电量" << "日充电\n费用" << "日放电\n费用" << "总充电\n费用" << "总放电\n费用" << "日收益" << "总收益" << "--"; + table = MyQUI::TableWidget(this, 10, y += 130, 1190, 265); // 设置为水平表头 - table->setColumnCount(headerText_Row.size()); - table->setHorizontalHeaderLabels(headerText_Row); + table->setColumnCount(headerTextList.size()); + table->setHorizontalHeaderLabels(headerTextList); table->setColumnWidth(0, 50); table->setColumnWidth(1, 120); table->setColumnWidth(2, 50); diff --git a/src/qt/widgets/QWHome.h b/src/qt/widgets/QWHome.h index 896bba5..dcc4ed7 100644 --- a/src/qt/widgets/QWHome.h +++ b/src/qt/widgets/QWHome.h @@ -2,8 +2,7 @@ #include "qt/MyQUI.h" #include -#include -#include + #include diff --git a/src/qt/widgets/QWMonitor.cpp b/src/qt/widgets/QWMonitor.cpp index adf587a..5a678f4 100644 --- a/src/qt/widgets/QWMonitor.cpp +++ b/src/qt/widgets/QWMonitor.cpp @@ -38,24 +38,13 @@ QWMonitor::QWMonitor(QWidget* parent) : MyWidget(parent) }); } - table = std::make_shared(this); - table->setGeometry(10, y += 50, 700, 800); - 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" << "类型ID" << "类型名称" << "设备名称" << "编号" << "状态" << "通讯\n状态" << "工作\n状态" << "故障\n状态"; + QStringList headerTextList; + headerTextList << "ID" << "类型ID" << "类型名称" << "设备名称" << "编号" << "状态" << "通讯\n状态" << "工作\n状态" << "故障\n状态"; + table = MyQUI::TableWidget(this, 10, y += 50, 700, 800); // 设置为水平表头 - table->setColumnCount(headerText_Row.size()); - table->setHorizontalHeaderLabels(headerText_Row); + table->setColumnCount(headerTextList.size()); + table->setHorizontalHeaderLabels(headerTextList); table->setColumnWidth(0, 50); table->setColumnWidth(1, 60); table->setColumnWidth(2, 120); @@ -163,7 +152,8 @@ void QWMonitor::onCurrentCellChanged(int row, int col, int oldRow, int oldCol) curDevice = station->getDevice(deviceId); if (curDevice) { - string info = curDevice->name; + string info = curDevice->name + " "; + info += (curDevice->ts > 0) ? Utils::timeStr(curDevice->ts) : "--"; labDeviceInfo->setText(info.c_str()); return; } diff --git a/src/qt/widgets/QWStatistics.cpp b/src/qt/widgets/QWStatistics.cpp new file mode 100644 index 0000000..d747190 --- /dev/null +++ b/src/qt/widgets/QWStatistics.cpp @@ -0,0 +1,91 @@ +#include "QWStatistics.h" + +#include "app/Application.h" +#include "app/AppData.h" +#include "app/Station.h" +#include "database/DAO.h" + +QWStatistics::QWStatistics(QWidget* parent) : MyWidget(parent) +{ + comboxStation = make_shared(this); + comboxStation->setGeometry(10, 10, 200, 28); + comboxStation->setStyleSheet(QSS_BTN_COMBOX.c_str()); + + QStringList listStation; + listStation << "所有"; + for (auto item: Application::data().mapStation) + { + listStation << item.second->name.c_str(); + } + comboxStation->addItems(listStation); + + + QStringList headerTextList; + headerTextList << "日期" << "日充电\n电量" << "日放电\n电量" + << "日充电\n电量(尖)" << "日充电\n电量(峰)" << "日充电\n电量(平)" << "日充电\n电量(谷)" + << "日放电\n电量(尖)" << "日放电\n电量(峰)" << "日放电\n电量(平)" << "日放电\n电量(谷)" + << "日充电\n费用" << "日放电\n费用" << "日收益" ; + //<< "总充电\n电量" << "总放电\n电量" + //<< "总充电\n电量(尖)" << "总充电\n电量(峰)" << "总充电\n电量(平)" << "总充电\n电量(谷)" + //<< "总放电\n电量(尖)" << "总放电\n电量(峰)" << "总放电\n电量(平)" << "总放电\n电量(谷)"; + + table = MyQUI::TableWidget(this, 10, 50, 1190, 800); + table->horizontalHeader()->setDefaultSectionSize(80); + // 设置为水平表头 + table->setColumnCount(headerTextList.size()); + table->setHorizontalHeaderLabels(headerTextList); + table->setColumnWidth(0, 120); + + btnRefresh = make_shared("刷新", this); + btnRefresh->setGeometry(220, 10, 60, 30); + //btnRefresh->setStyleSheet(); + + connect(comboxStation.get(), &QComboBox::currentIndexChanged, this, &QWStatistics::onCurrentIndexChanged); + connect(btnRefresh.get(), &QPushButton::clicked, this, &QWStatistics::onCurrentIndexChanged); +} + +QWStatistics::~QWStatistics() +{ +} + +void QWStatistics::onCurrentIndexChanged(int index) +{ + auto& appdata = Application::data(); + + string stationName = comboxStation->itemText(index).toStdString(); + if (stationName == "所有") + { + + } + else + { + auto station = appdata.getStationByName(stationName); + if (station) + { + string sql = "SELECT * FROM stat_total_day std WHERE station_id='" + std::to_string(station->stationId) + + "' ORDER BY dt DESC LIMIT 100;"; + vector result; + DAO::exec(NULL, sql, result); + table->clearContents(); + table->setRowCount(0); + for (int i = 0; i comboxStation; + shared_ptr table; + shared_ptr btnRefresh; +}; \ No newline at end of file diff --git a/src/qt/widgets/QWSysmgr.cpp b/src/qt/widgets/QWSysmgr.cpp new file mode 100644 index 0000000..6f631e4 --- /dev/null +++ b/src/qt/widgets/QWSysmgr.cpp @@ -0,0 +1,241 @@ +#include "QWSysmgr.h" +#include "common/Fields.h" + +QWSysmgr::QWSysmgr(QWidget* parent) : MyWidget(parent) +{ + std::vector vecItems = {"用户管理", "权限管理", "角色管理", "场站管理", "设备管理", "策略管理", "日志管理", "告警管理"}; + vecBtnFunc.reserve(vecItems.size()); + int x = 10, y = 10; + for (auto& itemName: vecItems) + { + auto btn = make_shared(itemName.c_str(), this); + btn->setGeometry(x, y, 120, 36); + btn->setStyleSheet(QSS_BTN.c_str()); + vecBtnFunc.push_back(btn); + x += 130; + connect(btn.get(), &QPushButton::clicked, this, [=]() + { + if (btn != curActiveBtn) + { + if (curActiveBtn) { curActiveBtn->setStyleSheet(QSS_BTN.c_str()); } + if (btn) { btn->setStyleSheet(QSS_BTN_ACTIVE.c_str()); } + curActiveBtn = btn; + this->initTable(itemName); + } + }); + } + + QStringList headerTextList; + //headerTextList << "ID" << "类型ID" << "类型名称" << "设备名称" << "编号" << "状态" << "通讯\n状态" << "工作\n状态" << "故障\n状态"; + + table = MyQUI::TableWidget(this, 10, y += 100, 1190, 740); + // 设置为水平表头 + table->setColumnCount(headerTextList.size()); + table->setHorizontalHeaderLabels(headerTextList); + table->horizontalHeader()->setDefaultSectionSize(80); + + if (vecBtnFunc.size() > 0) + { + curActiveBtn = vecBtnFunc[0]; + curActiveBtn->setStyleSheet(QSS_BTN_ACTIVE.c_str()); + this->initTable(curActiveBtn->text().toStdString()); + } +} + +QWSysmgr::~QWSysmgr() +{ +} + +class TableOper +{ +public: + TableOper() + { + widget = make_shared(); + //auto btn = make_shared(widget.get()); + //btn->setGeometry(10+mapBtn.size()*60, 10, 60, 30); + //mapBtn["查看"] = btn; + } + + shared_ptr widget; + map> mapBtn; +}; + +struct VH +{ + string key; + string title; + int width {0}; + VH(string k, string t, int w) : key(k), title(t), width(w) + { + } +}; + +vector vecHeaderUser = +{ + VH("user_id", "ID", 160), + VH("account", "用户名", 0), + VH("name", "姓名", 200), + VH("gender", "性别", 0), + VH("age", "年龄", 0), + VH("phone", "联系方式", 0), + VH("role_name", "角色", 200), + VH("", "操作", 0) +}; +vector vecHeaderPermission = +{ + VH("permission_id", "ID", 60), + VH("route", "路由", 160), + VH("name", "权限名称", 0), + VH("describe", "描述", 540), + VH("is_open", "是否启用", 0), + VH("", "操作", 0) +}; +vector vecHeaderRole = +{ + VH("role_id", "ID", 60), VH("name", "权限名称", 200), VH("describe", "描述", 600), VH("is_open", "是否启用", 0), VH("", "操作", 0) +}; +vector vecHeaderStation = +{ + VH("station_id", "ID", 60), VH("name", "场站名称", 160), VH("code", "编号", 60), VH("address", "地址", 280), VH("lon", "经度", 0), VH("lat", "维度", 0), VH("attr", "参数", 200), VH("", "操作", 0) +}; +vector vecHeaderDevice = +{ + VH("device_id", "ID", 60), + VH("station_name", "所属场站", 200), + VH("type_name", "设备类型", 200), + VH("name", "设备名称", 340), + VH("code", "编号", 60), + VH("is_open", "是否启用", 0), + VH("", "操作", 0) +}; +vector vecHeaderPolicy = +{ + VH("policy_id", "ID", 0), + VH("type_name", "策略类型", 160), + VH("name", "策略名称", 0), + VH("describe", "描述", 200), + VH("value", "参数", 400), + VH("", "操作", 0) +}; +vector vecHeaderLogSys = +{ + VH("", "ID", 0), VH("", "日志类型", 0), VH("", "内容", 0), VH("", "状态", 0), VH("", "操作", 0) +}; +vector vecHeaderLogAlert = +{ + VH("", "ID", 0), VH("", "告警类型", 0), VH("", "内容", 0), VH("", "状态", 0), VH("", "操作", 0) +}; +map> mapTableHeaderDef = +{ + {"用户管理", vecHeaderUser}, + {"权限管理", vecHeaderPermission}, + {"角色管理", vecHeaderRole}, + {"场站管理", vecHeaderStation}, + {"设备管理", vecHeaderDevice}, + {"策略管理", vecHeaderPolicy}, + {"日志管理", vecHeaderLogSys}, + {"告警管理", vecHeaderLogAlert}, +} ; + +#include "database/DAO.h" +void QueryDB(const string& name, std::vector& result) +{ + string sql; + if (name == "用户管理") + { + sql = "SELECT u.*, ur.role_id, r.name role_name FROM USER u LEFT JOIN user_role ur ON u.user_id=ur.user_id LEFT JOIN ROLE r ON r.role_id=ur.role_id;"; + + } + else if (name == "权限管理") + { + sql = "SELECT * FROM permission;"; + } + else if (name == "角色管理") + { + sql = "SELECT * FROM role;"; + } + else if (name == "场站管理") + { + sql = "SELECT * FROM station;"; + } + else if (name == "设备管理") + { + sql = "SELECT d.*, s.name station_name, ddt.name type_name FROM" + " device d LEFT JOIN station s ON d.station_id=s.station_id" + " LEFT JOIN def_device_type ddt ON ddt.device_type_id = d.`type`;"; + } + else if (name == "策略管理") + { + sql = "SELECT p.*, dpt.name type_name FROM policy p LEFT JOIN def_policy_type dpt ON dpt.policy_type_id=p.`type`;"; + } + else if (name == "日志管理") + { + } + else if (name == "告警管理") + { + } + DAO::exec(NULL, sql, result); +} + +vector& GetHeaderVec(const string& name) +{ + static vector vecTmp; + auto iter = mapTableHeaderDef.find(name); + return (iter != mapTableHeaderDef.end()) ? iter->second : vecTmp; +} + +void QWSysmgr::initTable(const string& name) +{ + auto& vecHeader = GetHeaderVec(name); + QStringList headerTextList; + for (auto& item: vecHeader) { headerTextList << item.title.c_str(); } + table->setColumnCount(headerTextList.size()); + table->setHorizontalHeaderLabels(headerTextList); + + for (int i = 0; isetColumnWidth(i, item.width > 0 ? item.width : 100); + } + this->initTableData(name); +} + +void QWSysmgr::initTableData(std::string name) +{ + table->clearContents(); + table->setRowCount(0); + + QueryDB(name, rowFields); + + auto& vecHeader = GetHeaderVec(name); + for (int row = 0; row= table->rowCount()) { table->insertRow(row); } + + QWidget* cellWidget = new QWidget(); + QPushButton* btn1 = new QPushButton("查看", cellWidget); + btn1->setGeometry(5, 3, 50, 24); + btn1->setStyleSheet(QSS_BTN_TAB.c_str()); + QPushButton* btn2 = new QPushButton("修改", cellWidget); + btn2->setGeometry(60, 3, 50, 24); + btn2->setStyleSheet(QSS_BTN_TAB.c_str()); + table->setCellWidget(row, col, cellWidget); + } + else + { + string val = fields.value(key); + if (key == "is_open") { val = (val == "1" ? "启用" : "未启用"); } + MyQUI::setTableCell(table, row, col, val); + } + ++col; + } + } +} \ No newline at end of file diff --git a/src/qt/widgets/QWSysmgr.h b/src/qt/widgets/QWSysmgr.h new file mode 100644 index 0000000..f6c85fd --- /dev/null +++ b/src/qt/widgets/QWSysmgr.h @@ -0,0 +1,23 @@ +#pragma once + +#include "qt/MyQUI.h" +#include "common/Fields.h" + +class QWSysmgr : public MyWidget +{ + Q_OBJECT +public: + QWSysmgr(QWidget* parent); + ~QWSysmgr(); + + void initTable(const string& name); + void initTableData(std::string name); + +public: + std::vector> vecBtnFunc; + shared_ptr curActiveBtn; + + shared_ptr table; + + std::vector rowFields; +}; \ No newline at end of file diff --git a/web/src/components/Home/Map.vue b/web/src/components/Home/Map.vue index 86a8523..0e279f1 100644 --- a/web/src/components/Home/Map.vue +++ b/web/src/components/Home/Map.vue @@ -97,9 +97,9 @@ export default { this.markers = res.data.map((item) => { return { ...item, - iconMap: !+item.status - ? require('../../assets/home/homeIcon1.png') - : require('../../assets/home/homeIcon.png') + iconMap: (item.status === 1) + ? require('../../assets/home/homeIcon.png') + : require('../../assets/home/homeIcon1.png') } }) } else { diff --git a/web/src/components/Home/Modal/PrefabCabin.vue b/web/src/components/Home/Modal/PrefabCabin.vue index a5ab4b7..d6fe221 100644 --- a/web/src/components/Home/Modal/PrefabCabin.vue +++ b/web/src/components/Home/Modal/PrefabCabin.vue @@ -127,7 +127,7 @@ export default { handler(newVal, oldVal) { if (newVal !== oldVal) { // 0正常 1故障 - this.curStatus=['正常','故障'][this.propsTotal.status] + this.curStatus=['故障','正常'][this.propsTotal.status] this.list.forEach((item) => { if(item.key=='work_mode'){ item.value = ['手动','峰谷套利','增网配容','应急供电','并网保电','自定时段'][this.propsTotal[item.key]] diff --git a/web/src/components/monitor/device.vue b/web/src/components/monitor/device.vue index 9bb48f7..5ca1e9e 100644 --- a/web/src/components/monitor/device.vue +++ b/web/src/components/monitor/device.vue @@ -7,9 +7,9 @@
- {{ item.device_id }} - {{ item.name }} {{ item.typename }} + {{ item.name }} + {{ item.device_id }}
diff --git a/web/src/views/monitor.vue b/web/src/views/monitor.vue index 70c36fa..f28bd98 100644 --- a/web/src/views/monitor.vue +++ b/web/src/views/monitor.vue @@ -433,10 +433,11 @@ 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 - } + // workmode 和 msg 数据通过 queryDevicByCategory 接口返回 + //this.systems[index].workmode = Element.workmode + // if (Element.category == 1) { + // this.message = Element.msg + // } }) this.workMode = res.data.work_mode } catch (error) {