diff --git a/bin/Release/ESS.exe b/bin/Release/ESS.exe index cfe7f54..5290498 100644 Binary files a/bin/Release/ESS.exe and b/bin/Release/ESS.exe differ diff --git a/bin/Release/Qt5Charts.dll b/bin/Release/Qt5Charts.dll deleted file mode 100644 index e74eb6b..0000000 Binary files a/bin/Release/Qt5Charts.dll and /dev/null differ diff --git a/bin/Release/Qt5Core.dll b/bin/Release/Qt5Core.dll deleted file mode 100644 index 40e8de1..0000000 Binary files a/bin/Release/Qt5Core.dll and /dev/null differ diff --git a/bin/Release/Qt5Gui.dll b/bin/Release/Qt5Gui.dll deleted file mode 100644 index bf38dda..0000000 Binary files a/bin/Release/Qt5Gui.dll and /dev/null differ diff --git a/bin/Release/Qt5Network.dll b/bin/Release/Qt5Network.dll deleted file mode 100644 index d32644d..0000000 Binary files a/bin/Release/Qt5Network.dll and /dev/null differ diff --git a/bin/Release/Qt5Positioning.dll b/bin/Release/Qt5Positioning.dll deleted file mode 100644 index ec9e17d..0000000 Binary files a/bin/Release/Qt5Positioning.dll and /dev/null differ diff --git a/bin/Release/Qt5PrintSupport.dll b/bin/Release/Qt5PrintSupport.dll deleted file mode 100644 index de4c30b..0000000 Binary files a/bin/Release/Qt5PrintSupport.dll and /dev/null differ diff --git a/bin/Release/Qt5Qml.dll b/bin/Release/Qt5Qml.dll deleted file mode 100644 index 7c2e538..0000000 Binary files a/bin/Release/Qt5Qml.dll and /dev/null differ diff --git a/bin/Release/Qt5QmlModels.dll b/bin/Release/Qt5QmlModels.dll deleted file mode 100644 index a0497d3..0000000 Binary files a/bin/Release/Qt5QmlModels.dll and /dev/null differ diff --git a/bin/Release/Qt5Quick.dll b/bin/Release/Qt5Quick.dll deleted file mode 100644 index 4ff0bc6..0000000 Binary files a/bin/Release/Qt5Quick.dll and /dev/null differ diff --git a/bin/Release/Qt5QuickWidgets.dll b/bin/Release/Qt5QuickWidgets.dll deleted file mode 100644 index 11214e8..0000000 Binary files a/bin/Release/Qt5QuickWidgets.dll and /dev/null differ diff --git a/bin/Release/Qt5SerialPort.dll b/bin/Release/Qt5SerialPort.dll deleted file mode 100644 index b72028e..0000000 Binary files a/bin/Release/Qt5SerialPort.dll and /dev/null differ diff --git a/bin/Release/Qt5Svg.dll b/bin/Release/Qt5Svg.dll deleted file mode 100644 index edfbf4a..0000000 Binary files a/bin/Release/Qt5Svg.dll and /dev/null differ diff --git a/bin/Release/Qt5WebChannel.dll b/bin/Release/Qt5WebChannel.dll deleted file mode 100644 index a14cff6..0000000 Binary files a/bin/Release/Qt5WebChannel.dll and /dev/null differ diff --git a/bin/Release/Qt5WebEngineWidgets.dll b/bin/Release/Qt5WebEngineWidgets.dll deleted file mode 100644 index 6dcafb9..0000000 Binary files a/bin/Release/Qt5WebEngineWidgets.dll and /dev/null differ diff --git a/bin/Release/Qt5Widgets.dll b/bin/Release/Qt5Widgets.dll deleted file mode 100644 index 80ae4e3..0000000 Binary files a/bin/Release/Qt5Widgets.dll and /dev/null differ diff --git a/bin/Release/Qt6Core.dll b/bin/Release/Qt6Core.dll new file mode 100644 index 0000000..0cae8ca Binary files /dev/null and b/bin/Release/Qt6Core.dll differ diff --git a/bin/Release/Qt6Gui.dll b/bin/Release/Qt6Gui.dll new file mode 100644 index 0000000..fec3ed4 Binary files /dev/null and b/bin/Release/Qt6Gui.dll differ diff --git a/bin/Release/Qt6Network.dll b/bin/Release/Qt6Network.dll new file mode 100644 index 0000000..714601c Binary files /dev/null and b/bin/Release/Qt6Network.dll differ diff --git a/bin/Release/Qt6OpenGL.dll b/bin/Release/Qt6OpenGL.dll new file mode 100644 index 0000000..33b9051 Binary files /dev/null and b/bin/Release/Qt6OpenGL.dll differ diff --git a/bin/Release/Qt6Pdf.dll b/bin/Release/Qt6Pdf.dll new file mode 100644 index 0000000..5883628 Binary files /dev/null and b/bin/Release/Qt6Pdf.dll differ diff --git a/bin/Release/Qt6Positioning.dll b/bin/Release/Qt6Positioning.dll new file mode 100644 index 0000000..6e12067 Binary files /dev/null and b/bin/Release/Qt6Positioning.dll differ diff --git a/bin/Release/Qt6PrintSupport.dll b/bin/Release/Qt6PrintSupport.dll new file mode 100644 index 0000000..8a9eeee Binary files /dev/null and b/bin/Release/Qt6PrintSupport.dll differ diff --git a/bin/Release/Qt6Qml.dll b/bin/Release/Qt6Qml.dll new file mode 100644 index 0000000..1fc84db Binary files /dev/null and b/bin/Release/Qt6Qml.dll differ diff --git a/bin/Release/Qt6QmlModels.dll b/bin/Release/Qt6QmlModels.dll new file mode 100644 index 0000000..5b32a4d Binary files /dev/null and b/bin/Release/Qt6QmlModels.dll differ diff --git a/bin/Release/Qt6Quick.dll b/bin/Release/Qt6Quick.dll new file mode 100644 index 0000000..795e54c Binary files /dev/null and b/bin/Release/Qt6Quick.dll differ diff --git a/bin/Release/Qt6Quick3DUtils.dll b/bin/Release/Qt6Quick3DUtils.dll new file mode 100644 index 0000000..07eccae Binary files /dev/null and b/bin/Release/Qt6Quick3DUtils.dll differ diff --git a/bin/Release/Qt6QuickWidgets.dll b/bin/Release/Qt6QuickWidgets.dll new file mode 100644 index 0000000..e24c585 Binary files /dev/null and b/bin/Release/Qt6QuickWidgets.dll differ diff --git a/bin/Release/Qt6SerialPort.dll b/bin/Release/Qt6SerialPort.dll new file mode 100644 index 0000000..78716d0 Binary files /dev/null and b/bin/Release/Qt6SerialPort.dll differ diff --git a/bin/Release/Qt6Svg.dll b/bin/Release/Qt6Svg.dll new file mode 100644 index 0000000..00e76ce Binary files /dev/null and b/bin/Release/Qt6Svg.dll differ diff --git a/bin/Release/Qt6VirtualKeyboard.dll b/bin/Release/Qt6VirtualKeyboard.dll new file mode 100644 index 0000000..6a2b23d Binary files /dev/null and b/bin/Release/Qt6VirtualKeyboard.dll differ diff --git a/bin/Release/Qt6WebChannel.dll b/bin/Release/Qt6WebChannel.dll new file mode 100644 index 0000000..ffb8674 Binary files /dev/null and b/bin/Release/Qt6WebChannel.dll differ diff --git a/bin/Release/Qt5WebEngineCore.dll b/bin/Release/Qt6WebEngineCore.dll similarity index 66% rename from bin/Release/Qt5WebEngineCore.dll rename to bin/Release/Qt6WebEngineCore.dll index 7ac3371..7e5375d 100644 Binary files a/bin/Release/Qt5WebEngineCore.dll and b/bin/Release/Qt6WebEngineCore.dll differ diff --git a/bin/Release/Qt6WebEngineWidgets.dll b/bin/Release/Qt6WebEngineWidgets.dll new file mode 100644 index 0000000..9fe173d Binary files /dev/null and b/bin/Release/Qt6WebEngineWidgets.dll differ diff --git a/bin/Release/Qt6Widgets.dll b/bin/Release/Qt6Widgets.dll new file mode 100644 index 0000000..8d8ce2e Binary files /dev/null and b/bin/Release/Qt6Widgets.dll differ diff --git a/bin/Release/QtWebEngineProcess.exe b/bin/Release/QtWebEngineProcess.exe index 25a867f..3419e60 100644 Binary files a/bin/Release/QtWebEngineProcess.exe and b/bin/Release/QtWebEngineProcess.exe differ diff --git a/bin/Release/assets/config/app.json b/bin/Release/assets/config/app.json index bbc1ee3..c7083b1 100644 --- a/bin/Release/assets/config/app.json +++ b/bin/Release/assets/config/app.json @@ -1,7 +1,8 @@ { + "launchdate": "2025-09-01", "database": {"host": "localhost", "port": 3306, "user": "root", "passwd": "123456", "dbname": "ees"}, "token":"", "http": {"port": 19800}, - "mqtt": {"host":"tcp://localhost:1883","username":"","password":""}, - "weburl": "https://map.baidu.com" + "mqtt": {"host":"mqtt://43.136.119.46:6203","username":"jsyhsec","password":"123456"}, + "weburl": "http://127.0.0.1:19600/" } \ No newline at end of file diff --git a/bin/Release/assets/config/registeraddr.json b/bin/Release/assets/config/registeraddr.json index 2a55385..3603a0f 100644 --- a/bin/Release/assets/config/registeraddr.json +++ b/bin/Release/assets/config/registeraddr.json @@ -36,5 +36,858 @@ {"key": "0x0020", "datatype": "int16", "remark": "自动并离网 RW u 0:手动1:自动 2332项目需求(若为自动,则通过主控进行并离网切换)"}, {"key": "0x0021", "datatype": "int16", "remark": "并网离网 RW u 0:并网1:离网 2332项目需求(该下发参数的前提为手动模式下)"} ] + }, + "BCU_YX": { + "count":1, + "addr":[ + {"key": "0xA001", "datatype": "int16", "remark": "所属通道号 R u 1~4"}, + {"key": "0xA002", "datatype": "int16", "remark": "所属BCU号 R u 1~40"}, + {"key": "0xA003", "datatype": "int16", "remark": "蓄电池充放电状态 R u 0x11开路0x22待机0x33充电0x44放电"}, + {"key": "0xA004", "datatype": "int16", "remark": "电池组运行状态 R u 0x11跳机0x22待机0x33放空0x44充满0x55预警0x66正常"}, + {"key": "0xA005", "datatype": "int16", "remark": "簇DO1状态 R u 1:断开 2:闭合"}, + {"key": "0xA006", "datatype": "int16", "remark": "簇DO2状态 R u 1:断开 2:闭合"}, + {"key": "0xA007", "datatype": "int16", "remark": "继电器总正 R u 0:断开 1:闭合 2:粘连"}, + {"key": "0xA008", "datatype": "int16", "remark": "继电器总负 R u 0:断开 1:闭合 2:粘连"}, + {"key": "0xA009", "datatype": "int16", "remark": "继电器预充 R u 0:断开 1:闭合 2:粘连"}, + {"key": "0xA00A", "datatype": "int16", "remark": "继电器bmu供电 R u 0:断开 1:闭合 2:粘连"}, + {"key": "0xA00B", "datatype": "int16", "remark": "整簇总电压过高告警 R u 0:正常 1:告警"}, + {"key": "0xA00C", "datatype": "int16", "remark": "整簇总电压过低告警 R u 0:正常 1:告警"}, + {"key": "0xA00D", "datatype": "int16", "remark": "整簇中单体电压过高告警 R u 0:正常 1:告警"}, + {"key": "0xA00E", "datatype": "int16", "remark": "整簇中单体电压过低告警 R u 0:正常 1:告警"}, + {"key": "0xA00F", "datatype": "int16", "remark": "整簇中单体电压偏差过大告警 R u 0:正常 1:告警"}, + {"key": "0xA010", "datatype": "int16", "remark": "整簇中单体温度偏差过大告警 R u 0:正常 1:告警"}, + {"key": "0xA011", "datatype": "int16", "remark": "整簇中单体温度过高告警 R u 0:正常 1:告警"}, + {"key": "0xA012", "datatype": "int16", "remark": "整簇中单体温度过低告警 R u 0:正常 1:告警"}, + {"key": "0xA013", "datatype": "int16", "remark": "整簇总充电电流过高告警 R u 0:正常 1:告警"}, + {"key": "0xA014", "datatype": "int16", "remark": "整簇总放电电流过高告警 R u 0:正常 1:告警"}, + {"key": "0xA015", "datatype": "int16", "remark": "整簇总SOC过高告警 R u 0:正常 1:告警"}, + {"key": "0xA016", "datatype": "int16", "remark": "整簇总SOC过低告警 R u 0:正常 1:告警"}, + {"key": "0xA017", "datatype": "int16", "remark": "高压盒主正接触器粘连告警 R u 0:正常 1:告警"}, + {"key": "0xA018", "datatype": "int16", "remark": "高压盒主正接触器不能吸合告警 R u 0:正常 1:告警"}, + {"key": "0xA019", "datatype": "int16", "remark": "高压盒主负接触器粘连告警 R u 0:正常 1:告警"}, + {"key": "0xA01A", "datatype": "int16", "remark": "高压盒主负接触器不能吸合告警 R u 0:正常 1:告警"}, + {"key": "0xA01B", "datatype": "int16", "remark": "高压盒预充接触器粘连告警 R u 0:正常 1:告警"}, + {"key": "0xA01C", "datatype": "int16", "remark": "高压盒预充接触器不能吸合告警 R u 0:正常 1:告警"}, + {"key": "0xA01D", "datatype": "int16", "remark": "预充失败告警 R u 0:正常 1:告警"}, + {"key": "0xA01E", "datatype": "int16", "remark": "BCU电压检测模块出现问题告警 R u 0:正常 1:告警"}, + {"key": "0xA01F", "datatype": "int16", "remark": "BCU温度检测模块出现问题告警 R u 0:正常 1:告警"}, + {"key": "0xA020", "datatype": "int16", "remark": "BCU电流检测模块出现问题告警 R u 0:正常 1:告警"}, + {"key": "0xA021", "datatype": "int16", "remark": "BCU绝缘检测模块出现问题告警 R u 0:正常 1:告警"}, + {"key": "0xA022", "datatype": "int16", "remark": "高压盒内总压检测模块出现问题告警 R u 0:正常 1:告警"}, + {"key": "0xA023", "datatype": "int16", "remark": "高压盒外总压检测模块出现问题告警 R u 0:正常 1:告警"}, + {"key": "0xA024", "datatype": "int16", "remark": "PCS-CAN通信故障告警 R u 0:正常 1:告警"}, + {"key": "0xA025", "datatype": "int16", "remark": "高压盒供电电压过高告警 R u 0:正常 1:告警"}, + {"key": "0xA026", "datatype": "int16", "remark": "绝缘正极故障告警 R u 0:正常 1:告警"}, + {"key": "0xA027", "datatype": "int16", "remark": "绝缘负极故障告警 R u 0:正常 1:告警"}, + {"key": "0xA028", "datatype": "int16", "remark": "绝缘中间侧故障告警 R u 0:正常 1:告警"}, + {"key": "0xA029", "datatype": "int16", "remark": "绝缘故障告警 R u 0:正常 1:告警"}, + {"key": "0xA02A", "datatype": "int16", "remark": "BMU中电压采样线开路告警 R u 0:正常 1:告警"}, + {"key": "0xA02B", "datatype": "int16", "remark": "BMU中NTC采样线短开路告警 R u 0:正常 1:告警"}, + {"key": "0xA02C", "datatype": "int16", "remark": "BMU中采样芯片故障告警 R u 0:正常 1:告警"}, + {"key": "0xA02D", "datatype": "int16", "remark": "BMU中电池温度升高过快告警 R u 0:正常 1:告警"}, + {"key": "0xA02E", "datatype": "int16", "remark": "BMU中电池内部短路告警 R u 0:正常 1:告警"}, + {"key": "0xA02F", "datatype": "int16", "remark": "BMU充电均衡模块出现故障告警 R u 0:正常 1:告警"}, + {"key": "0xA030", "datatype": "int16", "remark": "BMU放电均衡模块出现故障告警 R u 0:正常 1:告警"}, + {"key": "0xA031", "datatype": "int16", "remark": "BMU通信故障告警 R u 0:正常 1:告警"}, + {"key": "0xA032", "datatype": "int16", "remark": "单体内阻过大告警 R u 0:正常 1:告警"}, + {"key": "0xA033", "datatype": "int16", "remark": "单体内阻过小告警 R u 0:正常 1:告警"}, + {"key": "0xA034", "datatype": "int16", "remark": "单体内阻阻差过大告警 R u 0:正常 1:告警"}, + {"key": "0xA035", "datatype": "int16", "remark": "簇内阻过大告警 R u 0:正常 1:告警"}, + {"key": "0xA036", "datatype": "int16", "remark": "簇内阻过小告警 R u 0:正常 1:告警"}, + {"key": "0xA037", "datatype": "int16", "remark": "SOC初始化无效告警 R u 0:正常 1:告警"}, + {"key": "0xA038", "datatype": "int16", "remark": "充电时soc降低故障告警 R u 0:正常 1:告警"}, + {"key": "0xA039", "datatype": "int16", "remark": "放电时soc升高告警 R u 0:正常 1:告警"}, + {"key": "0xA03A", "datatype": "int16", "remark": "静止时SOC跳变告警 R u 0:正常 1:告警"}, + {"key": "0xA03B", "datatype": "int16", "remark": "整簇总电压过高保护 R u 0:正常 1:保护"}, + {"key": "0xA03C", "datatype": "int16", "remark": "整簇总电压过低保护 R u 0:正常 1:保护"}, + {"key": "0xA03D", "datatype": "int16", "remark": "整簇中单体电压过高保护 R u 0:正常 1:保护"}, + {"key": "0xA03E", "datatype": "int16", "remark": "整簇中单体电压过低保护 R u 0:正常 1:保护"}, + {"key": "0xA03F", "datatype": "int16", "remark": "整簇中单体电压偏差过大保护 R u 0:正常 1:保护"}, + {"key": "0xA040", "datatype": "int16", "remark": "整簇中单体温度偏差过大保护 R u 0:正常 1:保护"}, + {"key": "0xA041", "datatype": "int16", "remark": "整簇中单体温度过高保护 R u 0:正常 1:保护"}, + {"key": "0xA042", "datatype": "int16", "remark": "整簇中单体温度过低保护 R u 0:正常 1:保护"}, + {"key": "0xA043", "datatype": "int16", "remark": "整簇总充电电流过高保护 R u 0:正常 1:保护"}, + {"key": "0xA044", "datatype": "int16", "remark": "整簇总放电电流过高保护 R u 0:正常 1:保护"}, + {"key": "0xA045", "datatype": "int16", "remark": "整簇总SOC过高保护 R u 0:正常 1:保护"}, + {"key": "0xA046", "datatype": "int16", "remark": "整簇总SOC过低保护 R u 0:正常 1:保护"}, + {"key": "0xA047", "datatype": "int16", "remark": "高压盒主正接触器粘连保护 R u 0:正常 1:保护"}, + {"key": "0xA048", "datatype": "int16", "remark": "高压盒主正接触器不能吸合保护 R u 0:正常 1:保护"}, + {"key": "0xA049", "datatype": "int16", "remark": "高压盒主负接触器粘连保护 R u 0:正常 1:保护"}, + {"key": "0xA04A", "datatype": "int16", "remark": "高压盒主负接触器不能吸合保护 R u 0:正常 1:保护"}, + {"key": "0xA04B", "datatype": "int16", "remark": "高压盒预充接触器粘连保护 R u 0:正常 1:保护"}, + {"key": "0xA04C", "datatype": "int16", "remark": "高压盒预充接触器不能吸合保护 R u 0:正常 1:保护"}, + {"key": "0xA04D", "datatype": "int16", "remark": "预充失败保护 R u 0:正常 1:保护"}, + {"key": "0xA04E", "datatype": "int16", "remark": "BCU电压检测模块出现问题保护 R u 0:正常 1:保护"}, + {"key": "0xA04F", "datatype": "int16", "remark": "BCU温度检测模块出现问题保护 R u 0:正常 1:保护"}, + {"key": "0xA050", "datatype": "int16", "remark": "BCU电流检测模块出现问题保护 R u 0:正常 1:保护"}, + {"key": "0xA051", "datatype": "int16", "remark": "BCU绝缘检测模块出现问题保护 R u 0:正常 1:保护"}, + {"key": "0xA052", "datatype": "int16", "remark": "高压盒内总压检测模块出现问题保护 R u 0:正常 1:保护"}, + {"key": "0xA053", "datatype": "int16", "remark": "高压盒外总压检测模块出现问题保护 R u 0:正常 1:保护"}, + {"key": "0xA054", "datatype": "int16", "remark": "PCS-CAN通信故障保护 R u 0:正常 1:保护"}, + {"key": "0xA055", "datatype": "int16", "remark": "高压盒供电电压过高保护 R u 0:正常 1:保护"}, + {"key": "0xA056", "datatype": "int16", "remark": "绝缘正极故障保护 R u 0:正常 1:保护"}, + {"key": "0xA057", "datatype": "int16", "remark": "绝缘负极故障保护 R u 0:正常 1:保护"}, + {"key": "0xA058", "datatype": "int16", "remark": "绝缘中间侧故障保护 R u 0:正常 1:保护"}, + {"key": "0xA059", "datatype": "int16", "remark": "绝缘故障保护 R u 0:正常 1:保护"}, + {"key": "0xA05A", "datatype": "int16", "remark": "BMU中电压采样线开路保护 R u 0:正常 1:保护"}, + {"key": "0xA05B", "datatype": "int16", "remark": "BMU中NTC采样线短开路保护 R u 0:正常 1:保护"}, + {"key": "0xA05C", "datatype": "int16", "remark": "BMU中采样芯片故障保护 R u 0:正常 1:保护"}, + {"key": "0xA05D", "datatype": "int16", "remark": "BMU中电池温度升高过快保护 R u 0:正常 1:保护"}, + {"key": "0xA05E", "datatype": "int16", "remark": "BMU中电池内部短路保护 R u 0:正常 1:保护"}, + {"key": "0xA05F", "datatype": "int16", "remark": "BMU充电均衡模块出现故障保护 R u 0:正常 1:保护"}, + {"key": "0xA060", "datatype": "int16", "remark": "BMU放电均衡模块出现故障保护 R u 0:正常 1:保护"}, + {"key": "0xA061", "datatype": "int16", "remark": "BMU通信故障保护 R u 0:正常 1:保护"}, + {"key": "0xA062", "datatype": "int16", "remark": "单体内阻过大保护 R u 0:正常 1:保护"}, + {"key": "0xA063", "datatype": "int16", "remark": "单体内阻过小保护 R u 0:正常 1:保护"}, + {"key": "0xA064", "datatype": "int16", "remark": "单体内阻阻差过大保护 R u 0:正常 1:保护"}, + {"key": "0xA065", "datatype": "int16", "remark": "簇内阻过大保护 R u 0:正常 1:保护"}, + {"key": "0xA066", "datatype": "int16", "remark": "簇内阻过小保护 R u 0:正常 1:保护"}, + {"key": "0xA067", "datatype": "int16", "remark": "SOC初始化无效保护 R u 0:正常 1:保护"}, + {"key": "0xA068", "datatype": "int16", "remark": "充电时soc降低故障保护 R u 0:正常 1:保护"}, + {"key": "0xA069", "datatype": "int16", "remark": "放电时soc升高保护 R u 0:正常 1:保护"}, + {"key": "0xA06A", "datatype": "int16", "remark": "静止时SOC跳变保护 R u 0:正常 1:保护"} + ] + }, + "BCU_YC": { + "count":1, + "addr":[ + {"key": "0x0001", "datatype": "int16", "remark": "所属通道号 R u 1~4"}, + {"key": "0x0002", "datatype": "int16", "remark": "所属BCU号 R u 1~40"}, + {"key": "0x0003", "datatype": "int32", "remark": "簇电压 R u 0.1V"}, + {"key": "0x0005", "datatype": "int32", "remark": "簇电流 R 0.1A"}, + {"key": "0x0007", "datatype": "int32", "remark": "簇温度 R 0.1℃"}, + {"key": "0x0009", "datatype": "int32", "remark": "簇电阻 R u 1mΩ"}, + {"key": "0x000B", "datatype": "int16", "remark": "簇SOC R u 0.1"}, + {"key": "0x000C", "datatype": "int16", "remark": "簇SOH R u 0.1"}, + {"key": "0x000D", "datatype": "int32", "remark": "簇正绝缘电阻 R u 1kΩ"}, + {"key": "0x000F", "datatype": "int32", "remark": "簇负绝缘电阻 R u 1kΩ"}, + {"key": "0x0011", "datatype": "int32", "remark": "簇允许最大充电电流 R 0.1A"}, + {"key": "0x0013", "datatype": "int32", "remark": "簇允许最大放电电流 R 0.1A"}, + {"key": "0x0015", "datatype": "int32", "remark": "簇允许最大充电功率 R u 1kW"}, + {"key": "0x0017", "datatype": "int32", "remark": "簇允许最大放电功率 R u 1kW"}, + {"key": "0x0019", "datatype": "int32", "remark": "簇可充容量 R u 0.1Ah"}, + {"key": "0x001B", "datatype": "int32", "remark": "簇可放容量 R u 0.1Ah"}, + {"key": "0x001D", "datatype": "int32", "remark": "簇单次累计充容量 R u 0.1Ah"}, + {"key": "0x001F", "datatype": "int32", "remark": "簇单次累计放容量 R u 0.1Ah"}, + {"key": "0x0021", "datatype": "int32", "remark": "簇总累计充容量 R u 0.1Ah"}, + {"key": "0x0023", "datatype": "int32", "remark": "簇总累计放容量 R u 0.1Ah"}, + {"key": "0x0025", "datatype": "int32", "remark": "簇可充电量 R u 1kWh"}, + {"key": "0x0027", "datatype": "int32", "remark": "簇可放电量 R u 1kWh"}, + {"key": "0x0029", "datatype": "int32", "remark": "簇单次充电量 R u 1kWh"}, + {"key": "0x002B", "datatype": "int32", "remark": "簇单次放电量 R u 1kWh"}, + {"key": "0x002D", "datatype": "int32", "remark": "簇累计充电量 R u 1kWh"}, + {"key": "0x002F", "datatype": "int32", "remark": "簇累计放电量 R u 1kWh"}, + {"key": "0x0031", "datatype": "int32", "remark": "pack累计簇总压 R u 0.1V"}, + {"key": "0x0033", "datatype": "int32", "remark": "簇与pack压差 R u 0.1V"}, + {"key": "0x0035", "datatype": "int32", "remark": "簇与PCS压差 R u 0.1V"}, + {"key": "0x0037", "datatype": "int16", "remark": "簇中BMU个数 R u"}, + {"key": "0x0038", "datatype": "int16", "remark": "簇中BMU中单体个数 R u"}, + {"key": "0x0039", "datatype": "int16", "remark": "簇中BMU中温度个数 R u"}, + {"key": "0x003A", "datatype": "int16", "remark": "簇中单体个数 R u"}, + {"key": "0x003B", "datatype": "int16", "remark": "簇中温度个数 R u"}, + {"key": "0x003C", "datatype": "int16", "remark": "单体最高SOC节号 R u"}, + {"key": "0x003D", "datatype": "int16", "remark": "单体最高SOC R u 0.1"}, + {"key": "0x003E", "datatype": "int16", "remark": "单体最低SOC节号 R u"}, + {"key": "0x003F", "datatype": "int16", "remark": "单体最低SOC R u 0.1"}, + {"key": "0x0040", "datatype": "int16", "remark": "单体最高SOH节号 R u"}, + {"key": "0x0041", "datatype": "int16", "remark": "单体最高SOH R u 0.1"}, + {"key": "0x0042", "datatype": "int16", "remark": "单体最低SOH节号 R u"}, + {"key": "0x0043", "datatype": "int16", "remark": "单体最低SOH R u 0.1"}, + {"key": "0x0044", "datatype": "int16", "remark": "单体最高电压节号 R u"}, + {"key": "0x0045", "datatype": "int16", "remark": "单体最高电压 R u mV"}, + {"key": "0x0046", "datatype": "int16", "remark": "单体最低电压节号 R u"}, + {"key": "0x0047", "datatype": "int16", "remark": "单体最低电压 R u mV"}, + {"key": "0x0048", "datatype": "int16", "remark": "单体电压差 R u mV"}, + {"key": "0x0049", "datatype": "int16", "remark": "单体平均电压 R u mV"}, + {"key": "0x004A", "datatype": "int16", "remark": "单体最高温度节号 R u"}, + {"key": "0x004B", "datatype": "int16", "remark": "单体最高温度 R 0.1℃"}, + {"key": "0x004C", "datatype": "int16", "remark": "单体最低温度节号 R u"}, + {"key": "0x004D", "datatype": "int16", "remark": "单体最低温度 R 0.1℃"}, + {"key": "0x004E", "datatype": "int16", "remark": "单体温度差 R 0.1℃"}, + {"key": "0x004F", "datatype": "int16", "remark": "单体平均温度 R 0.1℃"}, + {"key": "0x0050", "datatype": "int16", "remark": "单体最高内阻节号 R u"}, + {"key": "0x0051", "datatype": "int16", "remark": "单体最高内阻 R u mΩ"}, + {"key": "0x0052", "datatype": "int16", "remark": "单体最低内阻节号 R u"}, + {"key": "0x0053", "datatype": "int16", "remark": "单体最低内阻 R u mΩ"}, + {"key": "0x0054", "datatype": "int16", "remark": "单体内阻差 R u mΩ"}, + {"key": "0x0055", "datatype": "int16", "remark": "单体平均内阻 R u mΩ"}, + {"key": "0x0056", "datatype": "int16", "remark": "单体SOC R u[1000] 0.1"}, + {"key": "0x043E", "datatype": "int16", "remark": "单体SOH R u[1000] 0.1"}, + {"key": "0x0826", "datatype": "int16", "remark": "单体电压 R u[1000] mV"}, + {"key": "0x0C0E", "datatype": "int16", "remark": "单体温度 R [1000] 0.01℃"}, + {"key": "0x0FF6", "datatype": "int16", "remark": "单体内阻 R u[1000] mΩ"} + ] + }, + "BMS_YC": { + "count":1, + "addr":[ + {"key": "0x0001", "datatype": "int16", "remark": "SOC R u 0.1"}, + {"key": "0x0002", "datatype": "int16", "remark": "SOH R u 0.1"}, + {"key": "0x0003", "datatype": "int32", "remark": "电压 R u 0.1V"}, + {"key": "0x0005", "datatype": "int32", "remark": "电流 R 0.1A"}, + {"key": "0x0007", "datatype": "int32", "remark": "可充电量 R u 1kWh"}, + {"key": "0x0009", "datatype": "int32", "remark": "可放电量 R u 1kWh"}, + {"key": "0x000B", "datatype": "int32", "remark": "单次可充电量 R u 1kWh"}, + {"key": "0x000D", "datatype": "int32", "remark": "单次可放电量 R u 1kWh"}, + {"key": "0x000F", "datatype": "int32", "remark": "堆功率 R 1kW"}, + {"key": "0x0011", "datatype": "int32", "remark": "充电量累加 R u 1kWh"}, + {"key": "0x0013", "datatype": "int32", "remark": "放电量累加 R u 1kWh"}, + {"key": "0x0015", "datatype": "int16", "remark": "簇最大SOC R u 0.1"}, + {"key": "0x0016", "datatype": "int16", "remark": "簇最小SOC R u 0.1"}, + {"key": "0x0017", "datatype": "int16", "remark": "簇最大SOC号 R u"}, + {"key": "0x0018", "datatype": "int16", "remark": "簇最小SOC号 R u"}, + {"key": "0x0019", "datatype": "int16", "remark": "簇SOC差值 R u 0.1"}, + {"key": "0x001A", "datatype": "int16", "remark": "簇最大电压 R u 0.1V"}, + {"key": "0x001B", "datatype": "int16", "remark": "簇最小电压 R u 0.1V"}, + {"key": "0x001C", "datatype": "int16", "remark": "簇最大电压号 R u"}, + {"key": "0x001D", "datatype": "int16", "remark": "簇最小电压号 R u"}, + {"key": "0x001E", "datatype": "int16", "remark": "簇电压差值 R u 0.1V"}, + {"key": "0x001F", "datatype": "int16", "remark": "单体最大电压簇号 R u"}, + {"key": "0x0020", "datatype": "int16", "remark": "单体最大电压节号 R u"}, + {"key": "0x0021", "datatype": "int16", "remark": "单体最大电压 R u mV"}, + {"key": "0x0022", "datatype": "int16", "remark": "单体最小电压簇号 R u"}, + {"key": "0x0023", "datatype": "int16", "remark": "单体最小电压节号 R u"}, + {"key": "0x0024", "datatype": "int16", "remark": "单体最小电压 R u mV"}, + {"key": "0x0025", "datatype": "int16", "remark": "单体平均电压 R u mV"}, + {"key": "0x0026", "datatype": "int16", "remark": "单体电压差 R u mV"}, + {"key": "0x0027", "datatype": "int16", "remark": "单体最大温度簇号 R u"}, + {"key": "0x0028", "datatype": "int16", "remark": "单体最大温度节号 R u"}, + {"key": "0x0029", "datatype": "int16", "remark": "单体最大温度 R 0.1℃"}, + {"key": "0x002A", "datatype": "int16", "remark": "单体最小温度簇号 R u"}, + {"key": "0x002B", "datatype": "int16", "remark": "单体最小温度节号 R u"}, + {"key": "0x002C", "datatype": "int16", "remark": "单体最小温度 R 0.1℃"}, + {"key": "0x002D", "datatype": "int16", "remark": "单体平均温度 R 0.1℃"}, + {"key": "0x002E", "datatype": "int16", "remark": "单体温度差 R 0.1℃"}, + {"key": "0x002F", "datatype": "int16", "remark": "最大内阻簇号 R u"}, + {"key": "0x0030", "datatype": "int16", "remark": "最大内阻节号 R u"}, + {"key": "0x0031", "datatype": "int16", "remark": "最大内阻 R u mΩ"}, + {"key": "0x0032", "datatype": "int16", "remark": "最小内阻簇号 R u"}, + {"key": "0x0033", "datatype": "int16", "remark": "最小内阻节号 R u"}, + {"key": "0x0034", "datatype": "int16", "remark": "最小内阻 R u mΩ"}, + {"key": "0x0035", "datatype": "int16", "remark": "单体平均内阻 R u mΩ"}, + {"key": "0x0036", "datatype": "int16", "remark": "单体内阻差 R u mΩ"}, + {"key": "0x0037", "datatype": "int16", "remark": "单体最大SOH簇号 R u"}, + {"key": "0x0038", "datatype": "int16", "remark": "单体最大SOH节号 R u"}, + {"key": "0x0039", "datatype": "int16", "remark": "单体最大SOH R u 0.10%"}, + {"key": "0x003A", "datatype": "int16", "remark": "单体最小SOH簇号 R u"}, + {"key": "0x003B", "datatype": "int16", "remark": "单体最小SOH节号 R u"}, + {"key": "0x003C", "datatype": "int16", "remark": "单体最小SOH R u 0.10%"}, + {"key": "0x003D", "datatype": "int16", "remark": "单体最大SOc簇号 R u"}, + {"key": "0x003E", "datatype": "int16", "remark": "单体最大SOc节号 R u"}, + {"key": "0x0040", "datatype": "int16", "remark": "单体最大Soc R u 0.10%"}, + {"key": "0x0041", "datatype": "int16", "remark": "单体最小SOc簇号 R u"}, + {"key": "0x0042", "datatype": "int16", "remark": "单体最小SOc节号 R u"}, + {"key": "0x0043", "datatype": "int16", "remark": "单体最小SOc R u 0.10%"}, + {"key": "0x0043", "datatype": "int32", "remark": "系统剩余最大可充电功率 R u 1KW"}, + {"key": "0x0045", "datatype": "int32", "remark": "系统剩余最大可放电功率 R u 1KW"}, + {"key": "0x0047", "datatype": "int16", "remark": "可充电状态 R u 1:可充电;0:不可充电"}, + {"key": "0x0048", "datatype": "int16", "remark": "可放电状态 R u 1:可放电;0:不可放电"}, + {"key": "0x0049", "datatype": "int16", "remark": "运行状态 R u 运行状态 0-正常 1-告警 2-保护"}, + {"key": "0x004A", "datatype": "int16", "remark": "充放电状态 R u 0-待机 1-充电 2-放电"} + ] + }, + "EMS_YX": { + "count":1, + "addr":[ + {"key": "0x2001", "datatype": "int16", "remark": "BMS(电池堆)通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~16"}, + {"key": "0x2002", "datatype": "int64", "remark": "BCU(电池簇)通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~64"}, + {"key": "0x2006", "datatype": "int16", "remark": "PCU(主控)通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~16"}, + {"key": "0x2007", "datatype": "int64", "remark": "PCS(模块)通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~64"}, + {"key": "0x200B", "datatype": "int16", "remark": "电表总接点通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~16"}, + {"key": "0x200C", "datatype": "int32", "remark": "电表通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~32"}, + {"key": "0x200E", "datatype": "int16", "remark": "消防通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~16"}, + {"key": "0x200F", "datatype": "int16", "remark": "UPS通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~16"}, + {"key": "0x2010", "datatype": "int16", "remark": "温湿度总接点通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~16"}, + {"key": "0x2011", "datatype": "int32", "remark": "温湿度通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~32"}, + {"key": "0x2013", "datatype": "int16", "remark": "空调总接点通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~16"}, + {"key": "0x2014", "datatype": "int32", "remark": "空调通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~32"}, + {"key": "0x2016", "datatype": "int16", "remark": "控制干接点(配电系统)状态 R u 0:开路1:闭合 bit位从低到高分别对应1~16"}, + {"key": "0x2017", "datatype": "int16", "remark": "状态干接点(配电系统)状态 R u 0:开路1:闭合 bit位从低到高分别对应1~16"}, + {"key": "0x2018", "datatype": "int16", "remark": "BCU总通信状态 R u 0:正常 1:告警 2:故障"}, + {"key": "0x2019", "datatype": "int16", "remark": "PCU总通信状态 R u 0:正常 1:告警 2:故障"}, + {"key": "0x201A", "datatype": "int16", "remark": "电表总通信状态 R u 0:正常 1:告警 2:故障"}, + {"key": "0x201B", "datatype": "int16", "remark": "消防总通信状态 R u 0:正常 1:告警 2:故障"}, + {"key": "0x201C", "datatype": "int16", "remark": "UPS总通信状态 R u 0:正常 1:告警 2:故障"}, + {"key": "0x201D", "datatype": "int16", "remark": "温湿度总通信状态 R u 0:正常 1:告警 2:故障"}, + {"key": "0x201E", "datatype": "int16", "remark": "空调总通信状态 R u 0:正常 1:告警 2:故障"}, + {"key": "0x201F", "datatype": "int16", "remark": "EMU通信状态 R u 0:正常 1:告警 2:故障"}, + {"key": "0x2020", "datatype": "int16", "remark": "冷机总通信状态 R u 0:正常 1:告警 2:故障"}, + {"key": "0x2021", "datatype": "int16", "remark": "冷机总接点通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~16"}, + {"key": "0x2022", "datatype": "int16", "remark": "冷机通信状态 R u 0:正常1:故障 bit位从低到高分别对应1~16"}, + {"key": "0x2023", "datatype": "", "remark": "预留"}, + {"key": "0x207A", "datatype": "int16", "remark": "预留判断总表的三相总有功 < -5.0fkW 充电 >5.0fkW放电 否则停机 R u 0:充电 1:放电 2:停机 储能状态"} + ] + }, + "EMS_YC": { + "count":1, + "addr":[ + {"key": "0x1001", "datatype": "int16", "remark": "BMS(电池堆)个数 R u 1"}, + {"key": "0x1002", "datatype": "int16", "remark": "BCU通道个数 R u 1~2"}, + {"key": "0x1003", "datatype": "int16", "remark": "BCU(电池簇)个数 R u 1~40"}, + {"key": "0x1004", "datatype": "int16", "remark": "PCU(主控)个数 R u 1~4"}, + {"key": "0x1005", "datatype": "int16", "remark": "PCU通道个数 R u 1~4"}, + {"key": "0x1006", "datatype": "int16", "remark": "PCS(模块)个数 R u 1~40"}, + {"key": "0x1007", "datatype": "int16", "remark": "电表通道个数 R u 1"}, + {"key": "0x1008", "datatype": "int16", "remark": "电表个数 R u 1~10"}, + {"key": "0x1009", "datatype": "int16", "remark": "消防通道个数 R u 1~10"}, + {"key": "0x100A", "datatype": "int16", "remark": "消防个数 R u 1~10"}, + {"key": "0x100B", "datatype": "int16", "remark": "UPS通道个数 R u 1~10"}, + {"key": "0x100C", "datatype": "int16", "remark": "UPS个数 R u 1~10"}, + {"key": "0x100D", "datatype": "int16", "remark": "温湿度通道个数 R u 1"}, + {"key": "0x100E", "datatype": "int16", "remark": "温湿度个数 R u 1~10"}, + {"key": "0x100F", "datatype": "int16", "remark": "空调通道个数 R u 1"}, + {"key": "0x1010", "datatype": "int16", "remark": "空调个数 R u 1~10"}, + {"key": "0x1011", "datatype": "int16", "remark": "控制干接点(配电系统)个数 R u 16"}, + {"key": "0x1012", "datatype": "int16", "remark": "状态干接点(配电系统)个数 R u 16"}, + {"key": "0x1013", "datatype": "", "remark": "预留"}, + {"key": "0x1072", "datatype": "int32", "remark": "预留预留预留预留预留预留预留预留系统最大可充电功率 R u 1KW Pcu数据"}, + {"key": "0x1074", "datatype": "int32", "remark": "系统最大可放电功率 R u 1KW"}, + {"key": "0x1076", "datatype": "int32", "remark": "储能母线电压 R u 0.1V 堆数据"}, + {"key": "0x1078", "datatype": "int32", "remark": "储能母线电流 R 0.1A"}, + {"key": "0x107A", "datatype": "int16", "remark": "储能系统SOC R u 0.1"}, + {"key": "0x107B", "datatype": "int16", "remark": "储能系统SOH R u 0.1"}, + {"key": "0x107C", "datatype": "int16", "remark": "电流变比 R u 电表总表数据"}, + {"key": "0x107D", "datatype": "int16", "remark": "电压变比 R u"}, + {"key": "0x107E", "datatype": "int32", "remark": "A相电压 R u 1V"}, + {"key": "0x1080", "datatype": "int32", "remark": "B相电压 R u 1V"}, + {"key": "0x1082", "datatype": "int32", "remark": "C相电压 R u 1V"}, + {"key": "0x1084", "datatype": "int32", "remark": "A相电流 R 1A"}, + {"key": "0x1086", "datatype": "int32", "remark": "B相电流 R 1A"}, + {"key": "0x1088", "datatype": "int32", "remark": "C相电流 R 1A"}, + {"key": "0x108A", "datatype": "int32", "remark": "AB相电压 R u 1V"}, + {"key": "0x108C", "datatype": "int32", "remark": "BC相电压 R u 1V"}, + {"key": "0x108E", "datatype": "int32", "remark": "CA相电压 R u 1V"}, + {"key": "0x1090", "datatype": "int32", "remark": "A相有功功率 R 1kW"}, + {"key": "0x1092", "datatype": "int32", "remark": "B相有功功率 R 1kW"}, + {"key": "0x1094", "datatype": "int32", "remark": "C相有功功率 R 1kW"}, + {"key": "0x1096", "datatype": "int32", "remark": "三相总有功功率 R 1kW"}, + {"key": "0x1098", "datatype": "int32", "remark": "当前控制功率 R 0.1kW 堆数据"}, + {"key": "0x109A", "datatype": "int32", "remark": "负荷率 R u 1% 台区控制策略数据 0不拿 大于0 默认拿第一个"}, + {"key": "0x109C", "datatype": "int32", "remark": "三相不平衡度  R u 1%"}, + {"key": "0x109E", "datatype": "int32", "remark": "功率因素比率  R u 1%"}, + {"key": "0x10A0", "datatype": "int32", "remark": "进线开关柜功率 R 1kW 并网口电表"}, + {"key": "0x10A2", "datatype": "int32", "remark": "用户关口表功率 R 1kW 并网口电表"}, + {"key": "0x10A4", "datatype": "", "remark": "预留"}, + {"key": "0x1104", "datatype": "int32", "remark": "预留正向总有功总需量 R 1kW"}, + {"key": "0x1106", "datatype": "int32", "remark": "尖段电价 R u 1RMB"}, + {"key": "0x1108", "datatype": "int32", "remark": "峰段电价 R u 1RMB"}, + {"key": "0x110A", "datatype": "int32", "remark": "平段电价 R u 1RMB"}, + {"key": "0x110C", "datatype": "int32", "remark": "谷段电价 R u 1RMB"}, + {"key": "0x110E", "datatype": "int32", "remark": "日充电电量 R u 1kWh"}, + {"key": "0x1110", "datatype": "int32", "remark": "日放电电量 R u 1kWh"}, + {"key": "0x1112", "datatype": "int32", "remark": "日充电费用 R u 1RMB"}, + {"key": "0x1114", "datatype": "int32", "remark": "日放电费用 R u 1RMB"}, + {"key": "0x1116", "datatype": "int32", "remark": "日收益 R 1RMB"}, + {"key": "0x1118", "datatype": "int32", "remark": "日正向尖有功电能 R u 1kWh"}, + {"key": "0x111A", "datatype": "int32", "remark": "日正向峰有功电能 R u 1kWh"}, + {"key": "0x111C", "datatype": "int32", "remark": "日正向平有功电能 R u 1kWh"}, + {"key": "0x111E", "datatype": "int32", "remark": "日正向谷有功电能 R u 1kWh"}, + {"key": "0x1120", "datatype": "int32", "remark": "日正向总有功电能 R u 1kWh"}, + {"key": "0x1122", "datatype": "int32", "remark": "日反向尖有功电能 R u 1kWh"}, + {"key": "0x1124", "datatype": "int32", "remark": "日反向峰有功电能 R u 1kWh"}, + {"key": "0x1126", "datatype": "int32", "remark": "日反向平有功电能 R u 1kWh"}, + {"key": "0x1128", "datatype": "int32", "remark": "日反向谷有功电能 R u 1kWh"}, + {"key": "0x112A", "datatype": "int32", "remark": "日反向总有功电能 R u 1kWh"}, + {"key": "0x112C", "datatype": "int32", "remark": "总充电电量 R u 1kWh"}, + {"key": "0x112E", "datatype": "int32", "remark": "总放电电量 R u 1kWh"}, + {"key": "0x1130", "datatype": "int32", "remark": "总充电费用 R u 1RMB"}, + {"key": "0x1132", "datatype": "int32", "remark": "总放电费用 R u 1RMB"}, + {"key": "0x1134", "datatype": "int32", "remark": "总收益 R 1RMB"}, + {"key": "0x1136", "datatype": "int32", "remark": "总正向尖有功电能 R u 1kWh"}, + {"key": "0x1138", "datatype": "int32", "remark": "总正向峰有功电能 R u 1kWh"}, + {"key": "0x113A", "datatype": "int32", "remark": "总正向平有功电能 R u 1kWh"}, + {"key": "0x113C", "datatype": "int32", "remark": "总正向谷有功电能 R u 1kWh"}, + {"key": "0x113E", "datatype": "int32", "remark": "总正向总有功电能 R u 1kWh"}, + {"key": "0x1140", "datatype": "int32", "remark": "总反向尖有功电能 R u 1kWh"}, + {"key": "0x1142", "datatype": "int32", "remark": "总反向峰有功电能 R u 1kWh"}, + {"key": "0x1144", "datatype": "int32", "remark": "总反向平有功电能 R u 1kWh"}, + {"key": "0x1146", "datatype": "int32", "remark": "总反向谷有功电能 R u 1kWh"}, + {"key": "0x1148", "datatype": "int32", "remark": "总反向总有功电能 R u 1kWh"}, + {"key": "0x114A", "datatype": "", "remark": "预留"}, + {"key": "0x11AE", "datatype": "int16", "remark": "预留预留交流A相电压 R 1V"}, + {"key": "0x11AF", "datatype": "int16", "remark": "交流B相电压 R 1V"}, + {"key": "0x11B0", "datatype": "int16", "remark": "交流C相电压 R 1V"}, + {"key": "0x11B1", "datatype": "int16", "remark": "交流A相频率 R 1Hz"}, + {"key": "0x11B2", "datatype": "int16", "remark": "交流B相频率 R 1Hz"}, + {"key": "0x11B3", "datatype": "int16", "remark": "交流C相频率 R 1Hz"}, + {"key": "0x11B4", "datatype": "int32", "remark": "总直流功率 R 1kW"}, + {"key": "0x11B6", "datatype": "int32", "remark": "总直流电压 R u 0.1V"}, + {"key": "0x11B8", "datatype": "int32", "remark": "总直流电流 R 0.1A"}, + {"key": "0x11B9", "datatype": "", "remark": "预留"}, + {"key": "0x121B", "datatype": "int16", "remark": "预留预留储能系统温度 R 0.1℃ 堆里面单体温度最高"}, + {"key": "0x121C", "datatype": "int16", "remark": "储能充放电时段hh R u 时 0x01"}, + {"key": "0x121D", "datatype": "int16", "remark": "储能充放电时段mm R u 分 0x01"}, + {"key": "0x121E", "datatype": "int16", "remark": "储能充放电时段ss R u 秒 0x01"}, + {"key": "0x121F", "datatype": "int16", "remark": "储能系统各时段功率 R 1kW 0x01"} + ] + }, + "PCS_YX": { + "count":1, + "addr":[ + {"key": "0x1001", "datatype": "int16", "remark": "所属主控号 R u 1~4"}, + {"key": "0x1002", "datatype": "int16", "remark": "所属PCS号 R u 1~40"}, + {"key": "0x1003", "datatype": "int16", "remark": "故障状态 R u 1故障,0正常"}, + {"key": "0x1004", "datatype": "int16", "remark": "告警状态 R u 1告警,0正常"}, + {"key": "0x1005", "datatype": "int16", "remark": "设备在线 R u 1在线,0无效"}, + {"key": "0x1006", "datatype": "int16", "remark": "禁止充电 R u 1禁止,0无效"}, + {"key": "0x1007", "datatype": "int16", "remark": "禁止放电 R u 1禁止,0无效"}, + {"key": "0x1008", "datatype": "int16", "remark": "运行状态 R u 1开机,0关机"}, + {"key": "0x1009", "datatype": "int16", "remark": "充放状态 R u 0:待机,1:充电,2:放电,3:搁置"}, + {"key": "0x100A", "datatype": "int16", "remark": "电网状态 R u 1离网,0并网"}, + {"key": "0x100B", "datatype": "int16", "remark": "逆变供电 R u 0禁止,1使能"}, + {"key": "0x100C", "datatype": "int16", "remark": "缓启动完成 R u 0禁止,1使能"}, + {"key": "0x100D", "datatype": "int16", "remark": "主机标志 R u 0禁止,1使能"}, + {"key": "0x100E", "datatype": "int16", "remark": "并离网状态 R u 0:并网, 1:离网"}, + {"key": "0x100F", "datatype": "int16", "remark": "同步请求标志 R u 0:无效;1:动作"}, + {"key": "0x1010", "datatype": "int16", "remark": "绝缘故障 R u 1:故障,0正常"}, + {"key": "0x1011", "datatype": "int16", "remark": "漏电保护 R u 1:故障,0正常"}, + {"key": "0x1012", "datatype": "int16", "remark": "直流过压 R u 1:故障,0正常"}, + {"key": "0x1013", "datatype": "int16", "remark": "市电幅值异常 R u 1:故障,0正常"}, + {"key": "0x1014", "datatype": "int16", "remark": "市电相序异常 R u 1:故障,0正常"}, + {"key": "0x1015", "datatype": "int16", "remark": "温度开关异常 R u 1:故障,0正常"}, + {"key": "0x1016", "datatype": "int16", "remark": "市电频率异常 R u 1:故障,0正常"}, + {"key": "0x1017", "datatype": "int16", "remark": "IGBT过温 R u 1:故障,0正常"}, + {"key": "0x1018", "datatype": "int16", "remark": "交流接地故障 R u 1:故障,0正常"}, + {"key": "0x1019", "datatype": "int16", "remark": "逆变过流异常 R u 1:故障,0正常"}, + {"key": "0x101A", "datatype": "int16", "remark": "直流缓起故障 R u 1:故障,0正常"}, + {"key": "0x101B", "datatype": "int16", "remark": "直流主继电器故障 R u 1:故障,0正常"}, + {"key": "0x101C", "datatype": "int16", "remark": "风机异常 R u 1:故障,0正常"}, + {"key": "0x101D", "datatype": "int16", "remark": "主接触器异常 R u 1:故障,0正常"}, + {"key": "0x101E", "datatype": "int16", "remark": "均浮充切换超时 R u 1:故障,0正常"}, + {"key": "0x101F", "datatype": "int16", "remark": "硬件故障 R u 1:故障,0正常"}, + {"key": "0x1020", "datatype": "int16", "remark": "机内过温 R u 1:故障,0正常"}, + {"key": "0x1021", "datatype": "int16", "remark": "软启动故障 R u 1:故障,0正常"}, + {"key": "0x1022", "datatype": "int16", "remark": "触摸屏通讯故障 R u 1:故障,0正常"}, + {"key": "0x1023", "datatype": "int16", "remark": "防雷器故障 R u 1:故障,0正常"}, + {"key": "0x1024", "datatype": "int16", "remark": "急停故障 R u 1:故障,0正常"}, + {"key": "0x1025", "datatype": "int16", "remark": "BMS系统故障 R u 1:故障,0正常"}, + {"key": "0x1026", "datatype": "int16", "remark": "BMS通讯故障 R u 1:故障,0正常"}, + {"key": "0x1027", "datatype": "int16", "remark": "BMS干接点通讯故障 R u 1:故障,0正常"}, + {"key": "0x1028", "datatype": "int16", "remark": "远程通讯故障 R u 1:故障,0正常"}, + {"key": "0x1029", "datatype": "int16", "remark": "门禁告警 R u 1:故障,0正常"}, + {"key": "0x102A", "datatype": "int16", "remark": "锁相异常 R u 1:故障,0正常"}, + {"key": "0x102B", "datatype": "int16", "remark": "IGBT过温告警 R u 1:故障,0正常"}, + {"key": "0x102C", "datatype": "int16", "remark": "硬件过流保护 R u 1:故障,0正常"}, + {"key": "0x102D", "datatype": "int16", "remark": "驱动故障 R u 1:故障,0正常"}, + {"key": "0x102E", "datatype": "int16", "remark": "ID冲突 R u 1:故障,0正常"}, + {"key": "0x102F", "datatype": "int16", "remark": "电池过压 R u 1:故障,0正常"}, + {"key": "0x1030", "datatype": "int16", "remark": "电池欠压 R u 1:故障,0正常"}, + {"key": "0x1031", "datatype": "int16", "remark": "直流过流保护 R u 1:故障,0正常"}, + {"key": "0x1032", "datatype": "int16", "remark": "输出电压异常 R u 1:故障,0正常"}, + {"key": "0x1033", "datatype": "int16", "remark": "离网输出电压不符合 R u 1:故障,0正常"}, + {"key": "0x1034", "datatype": "int16", "remark": "输出过载保护 R u 1:故障,0正常"}, + {"key": "0x1035", "datatype": "int16", "remark": "输出短路保护 R u 1:故障,0正常"}, + {"key": "0x1036", "datatype": "int16", "remark": "并机通信异常 R u 1:故障,0正常"}, + {"key": "0x1037", "datatype": "int16", "remark": "电池保险异常 R u 1:故障,0正常"}, + {"key": "0x1038", "datatype": "int16", "remark": "电池重载低压 R u 1:故障,0正常"}, + {"key": "0x1039", "datatype": "int16", "remark": "电池低压告警 R u 1:故障,0正常"}, + {"key": "0x103A", "datatype": "int16", "remark": "一拖二压差过大 R u 1:故障,0正常"}, + {"key": "0x103B", "datatype": "int16", "remark": "电池反接故障 R u 1:故障,0正常"}, + {"key": "0x103C", "datatype": "int16", "remark": "电池电压异常 R u 1:故障,0正常"}, + {"key": "0x103D", "datatype": "int16", "remark": "过载告警 R u 1:故障,0正常"}, + {"key": "0x103E", "datatype": "int16", "remark": "外部接触器异常 R u 1:故障,0正常"}, + {"key": "0x103F", "datatype": "int16", "remark": "IGBT温度传感器异常 R u 1:故障,0正常"}, + {"key": "0x1040", "datatype": "int16", "remark": "整机温度传感器异常 R u 1:故障,0正常"}, + {"key": "0x1041", "datatype": "int16", "remark": "市电CT异常 R u 1:故障,0正常"}, + {"key": "0x1042", "datatype": "int16", "remark": "逆变电流三相不平衡 R u 1:故障,0正常"}, + {"key": "0x1043", "datatype": "int16", "remark": "逆变电流直流分量异常 R u 1:故障,0正常"}, + {"key": "0x1044", "datatype": "int16", "remark": "母线不平衡 R u 1:故障,0正常"}, + {"key": "0x1045", "datatype": "int16", "remark": "逆变电压直流分量异常 R u 1:故障,0正常"}, + {"key": "0x1046", "datatype": "int16", "remark": "主接触器控制异常 R u 1:故障,0正常"}, + {"key": "0x1047", "datatype": "int16", "remark": "逆变电压控制异常 R u 1:故障,0正常"}, + {"key": "0x1048", "datatype": "int16", "remark": "直流霍尔异常 R u 1:故障,0正常"}, + {"key": "0x1049", "datatype": "int16", "remark": "电池单体过压 R u 1:故障,0正常"}, + {"key": "0x104A", "datatype": "int16", "remark": "电池单体欠压 R u 1:故障,0正常"}, + {"key": "0x104B", "datatype": "int16", "remark": "电网过压 R u 1:故障,0正常"}, + {"key": "0x104C", "datatype": "int16", "remark": "电网欠压 R u 1:故障,0正常"}, + {"key": "0x104D", "datatype": "int16", "remark": "电网过频 R u 1:故障,0正常"}, + {"key": "0x104E", "datatype": "int16", "remark": "电网欠频 R u 1:故障,0正常"}, + {"key": "0x104F", "datatype": "int16", "remark": "市电不平衡 R u 1:故障,0正常"}, + {"key": "0x1050", "datatype": "int16", "remark": "参数设置不匹配 R u 1:故障,0正常"}, + {"key": "0x1051", "datatype": "int16", "remark": "SPI通信异常 R u 1:故障,0正常"}, + {"key": "0x1052", "datatype": "int16", "remark": "SCI通信异常 R u 1:故障,0正常"}, + {"key": "0x1053", "datatype": "int16", "remark": "IIC通信异常 R u 1:故障,0正常"}, + {"key": "0x1054", "datatype": "int16", "remark": "Xintf通信异常 R u 1:故障,0正常"}, + {"key": "0x1055", "datatype": "int16", "remark": "零偏校准异常 R u 1:故障,0正常"}, + {"key": "0x1056", "datatype": "int16", "remark": "烟雾告警 R u 1:故障,0正常"}, + {"key": "0x1057", "datatype": "int16", "remark": "无电池组故障 R u 1异常,0正常"}, + {"key": "0x1058", "datatype": "int16", "remark": "环温降频 R u 1异常,0正常"}, + {"key": "0x1059", "datatype": "int16", "remark": "交流过载 R u 1异常,0正常"}, + {"key": "0x105A", "datatype": "int16", "remark": "采样异常 R u 1异常,0正常"}, + {"key": "0x105B", "datatype": "int16", "remark": "24V辅源故障 R u 1异常,0正常"}, + {"key": "0x105C", "datatype": "int16", "remark": "直流欠压异常 R u 1异常,0正常"}, + {"key": "0x105D", "datatype": "int16", "remark": "散热器过温 R u 1异常,0正常"}, + {"key": "0x105E", "datatype": "int16", "remark": "CAN配置故障 R u 1异常,0正常"}, + {"key": "0x105F", "datatype": "int16", "remark": "3.3V辅源故障 R u 1异常,0正常"}, + {"key": "0x1060", "datatype": "int16", "remark": "环境过温 R u 1异常,0正常"}, + {"key": "0x1061", "datatype": "int16", "remark": "A相IGBT逆变过流 R u 1异常,0正常"}, + {"key": "0x1062", "datatype": "int16", "remark": "B相IGBT逆变过流 R u 1异常,0正常"}, + {"key": "0x1063", "datatype": "int16", "remark": "C相IGBT逆变过流 R u 1异常,0正常"} + ] + }, + "PCS_YC": { + "count":1, + "addr":[ + {"key": "0x0001", "datatype": "int16", "remark": "所属主控号 R u 1~4"}, + {"key": "0x0002", "datatype": "int16", "remark": "所属PCS号 R u 1~40"}, + {"key": "0x0003", "datatype": "int32", "remark": "总充电量 R u 1kWh"}, + {"key": "0x0005", "datatype": "int32", "remark": "总放电量 R u 1kWh"}, + {"key": "0x0007", "datatype": "int16", "remark": "散热器温度 R 1℃"}, + {"key": "0x0008", "datatype": "int16", "remark": "内部温度 R 1℃"}, + {"key": "0x0009", "datatype": "int16", "remark": "最大允许充电功率 R 0.1kW"}, + {"key": "0x000A", "datatype": "int16", "remark": "最大允许放电功率 R 0.1kW"}, + {"key": "0x000B", "datatype": "int16", "remark": "有功功率期望 R 1kWh"}, + {"key": "0x000C", "datatype": "int16", "remark": "无功功率期望 R 1kVar"}, + {"key": "0x000D", "datatype": "int16", "remark": "AB线电压 R 1V"}, + {"key": "0x000E", "datatype": "int16", "remark": "BC线电压 R 1V"}, + {"key": "0x000F", "datatype": "int16", "remark": "CA线电压 R 1V"}, + {"key": "0x0010", "datatype": "int16", "remark": "A相电压 R 1V"}, + {"key": "0x0011", "datatype": "int16", "remark": "B相电压 R 1V"}, + {"key": "0x0012", "datatype": "int16", "remark": "C相电压 R 1V"}, + {"key": "0x0013", "datatype": "int16", "remark": "A相频率 R 1Hz"}, + {"key": "0x0014", "datatype": "int16", "remark": "B相频率 R 1Hz"}, + {"key": "0x0015", "datatype": "int16", "remark": "C相频率 R 1Hz"}, + {"key": "0x0016", "datatype": "int16", "remark": "A相功率因数 R 1"}, + {"key": "0x0017", "datatype": "int16", "remark": "B相功率因数 R 1"}, + {"key": "0x0018", "datatype": "int16", "remark": "C相功率因数 R 1"}, + {"key": "0x0019", "datatype": "int16", "remark": "A相电流 R 1A"}, + {"key": "0x001A", "datatype": "int16", "remark": "B相电流 R 1A"}, + {"key": "0x001B", "datatype": "int16", "remark": "C相电流 R 1A"}, + {"key": "0x001C", "datatype": "int16", "remark": "A相有功功率 R 1kW"}, + {"key": "0x001D", "datatype": "int16", "remark": "B相有功功率 R 1kW"}, + {"key": "0x001E", "datatype": "int16", "remark": "C相有功功率 R 1kW"}, + {"key": "0x001F", "datatype": "int16", "remark": "A相无功功率 R 1kVar"}, + {"key": "0x0020", "datatype": "int16", "remark": "B相无功功率 R 1kVar"}, + {"key": "0x0021", "datatype": "int16", "remark": "C相无功功率 R 1kVar"}, + {"key": "0x0022", "datatype": "int16", "remark": "A相视在功率 R 1kVA"}, + {"key": "0x0023", "datatype": "int16", "remark": "B相视在功率 R 1kVA"}, + {"key": "0x0024", "datatype": "int16", "remark": "C相视在功率 R 1kVA"}, + {"key": "0x0025", "datatype": "int16", "remark": "三相总有功功率 R 1kW"}, + {"key": "0x0026", "datatype": "int16", "remark": "三相总无功功率 R 1kVar"}, + {"key": "0x0027", "datatype": "int16", "remark": "三相总视在功率 R 1kVA"}, + {"key": "0x0028", "datatype": "int16", "remark": "三相总功率因数 R 1"}, + {"key": "0x0029", "datatype": "int16", "remark": "直流功率 R 1kW"}, + {"key": "0x002A", "datatype": "int16", "remark": "直流电压 R 1V"}, + {"key": "0x002B", "datatype": "int16", "remark": "直流电流 R 1A"}, + {"key": "0x002C", "datatype": "int16", "remark": "充电功率 R 1kW"}, + {"key": "0x002D", "datatype": "int16", "remark": "放电功率 R 1kW"}, + {"key": "0x002E", "datatype": "int16", "remark": "PF值 R 1"}, + {"key": "0x002F", "datatype": "int16", "remark": "UV线/U相电网计量线电压 R 1V"}, + {"key": "0x0030", "datatype": "int16", "remark": "VW线/V相电网计量线电压 R 1V"}, + {"key": "0x0031", "datatype": "int16", "remark": "WU线/W相电网计量线电压 R 1V"}, + {"key": "0x0032", "datatype": "int16", "remark": "U相电网计量电流 R 1A"}, + {"key": "0x0033", "datatype": "int16", "remark": "V相电网计量电流 R 1A"}, + {"key": "0x0034", "datatype": "int16", "remark": "W相电网计量电流 R 1A"}, + {"key": "0x0035", "datatype": "int16", "remark": "正母线电压 R 1V"}, + {"key": "0x0036", "datatype": "int16", "remark": "可用功率 R 1kVA"}, + {"key": "0x0037", "datatype": "int16", "remark": "负母线电压 R 1V"}, + {"key": "0x0038", "datatype": "int16", "remark": "A相IGBT温度 R 1℃"}, + {"key": "0x0039", "datatype": "int16", "remark": "B相IGBT温度 R 1℃"}, + {"key": "0x003A", "datatype": "int16", "remark": "C相IGBT温度 R 1℃"}, + {"key": "0x003B", "datatype": "int16", "remark": "逆变侧AB线电压 R 1V"}, + {"key": "0x003C", "datatype": "int16", "remark": "逆变侧BC线电压 R 1V"}, + {"key": "0x003D", "datatype": "int16", "remark": "逆变侧CA线电压 R 1V"}, + {"key": "0x003E", "datatype": "int16", "remark": "逆变侧A相电压 R 1V"}, + {"key": "0x003F", "datatype": "int16", "remark": "逆变侧B相电压 R 1V"}, + {"key": "0x0040", "datatype": "int16", "remark": "逆变侧C相电压 R 1V"}, + {"key": "0x0041", "datatype": "int16", "remark": "逆变侧A相电流 R 1A"}, + {"key": "0x0042", "datatype": "int16", "remark": "逆变侧B相电流 R 1A"}, + {"key": "0x0043", "datatype": "int16", "remark": "逆变侧C相电流 R 1A"}, + {"key": "0x0044", "datatype": "int16", "remark": "逆变侧A相电流直流分量 R 1A"}, + {"key": "0x0045", "datatype": "int16", "remark": "逆变侧B相电流直流分量 R 1A"}, + {"key": "0x0046", "datatype": "int16", "remark": "逆变侧C相电流直流分量 R 1A"}, + {"key": "0x0047", "datatype": "int16", "remark": "离网频率 R 1Hz"}, + {"key": "0x0048", "datatype": "int16", "remark": "A相负载量 R 1"}, + {"key": "0x0049", "datatype": "int16", "remark": "B相负载量 R 1"}, + {"key": "0x004A", "datatype": "int16", "remark": "C相负载量 R 1"}, + {"key": "0x004B", "datatype": "int16", "remark": "总负载量 R 1"}, + {"key": "0x004C", "datatype": "int16", "remark": "逆变侧AB线电压直流分量 R 1A"}, + {"key": "0x004D", "datatype": "int16", "remark": "逆变侧BC线电压直流分量 R 1A"}, + {"key": "0x004E", "datatype": "int16", "remark": "逆变侧CA线电压直流分量 R 1A"}, + {"key": "0x004F", "datatype": "int16", "remark": "在线数量 R "}, + {"key": "0x0050", "datatype": "int16", "remark": "逆变数量 R "} + ] + }, + "PCU_YX": { + "count":1, + "addr":[ + {"key": "0x1001", "datatype": "int16", "remark": "所属通道号 R u 1~4"}, + {"key": "0x1002", "datatype": "int16", "remark": "故障状态 R u 1故障,0正常"}, + {"key": "0x1003", "datatype": "int16", "remark": "告警状态 R u 1告警,0正常"}, + {"key": "0x1004", "datatype": "int16", "remark": "设备在线 R u 1在线,0无效"}, + {"key": "0x1005", "datatype": "int16", "remark": "本地远程 R u 1本地,0远程"}, + {"key": "0x1006", "datatype": "int16", "remark": "启停状态 R u 1开机,0关机"}, + {"key": "0x1007", "datatype": "int16", "remark": "电网状态 R u 1离网,0并网"}, + {"key": "0x1008", "datatype": "int16", "remark": "模块状态 R u 1开机,0待机"}, + {"key": "0x1009", "datatype": "int16", "remark": "EPO急停 R u 1故障,0正常"}, + {"key": "0x100A", "datatype": "int16", "remark": "防雷器异常 R u 1告警,0正常"}, + {"key": "0x100B", "datatype": "int16", "remark": "负载电压反序 R u 1故障,0正常"}, + {"key": "0x100C", "datatype": "int16", "remark": "市电电压反序 R u 1故障,0正常"}, + {"key": "0x100D", "datatype": "int16", "remark": "输出相反序 R u 1故障,0正常"}, + {"key": "0x100E", "datatype": "int16", "remark": "过载告警 R u 1告警,0正常"}, + {"key": "0x100F", "datatype": "int16", "remark": "过载超时 R u 1故障,0正常"}, + {"key": "0x1010", "datatype": "int16", "remark": "交流过流保护 R u 1故障,0正常"}, + {"key": "0x1011", "datatype": "int16", "remark": "逆变电压异常 R u 1故障,0正常"}, + {"key": "0x1012", "datatype": "int16", "remark": "内部串口异常 R u 1故障,0正常"}, + {"key": "0x1013", "datatype": "int16", "remark": "485通信故障 R u 1故障,0正常"}, + {"key": "0x1014", "datatype": "int16", "remark": "CAN通信故障 R u 1故障,0正常"}, + {"key": "0x1015", "datatype": "int16", "remark": "E2PROM故障 R u 1故障,0正常"}, + {"key": "0x1016", "datatype": "int16", "remark": "电网过压 R u 1故障,0正常"}, + {"key": "0x1017", "datatype": "int16", "remark": "电网欠压 R u 1故障,0正常"}, + {"key": "0x1018", "datatype": "int16", "remark": "电网过频 R u 1故障,0正常"}, + {"key": "0x1019", "datatype": "int16", "remark": "电网欠频 R u 1故障,0正常"}, + {"key": "0x101A", "datatype": "int16", "remark": "电网快检综合异常 R u 1故障,0正常"}, + {"key": "0x101B", "datatype": "int16", "remark": "电网幅值快检异常 R u 1故障,0正常"}, + {"key": "0x101C", "datatype": "int16", "remark": "电网拖尾异常 R u 1故障,0正常"}, + {"key": "0x101D", "datatype": "int16", "remark": "消防输入信号NO R u 1闭合,0断开"}, + {"key": "0x101E", "datatype": "int16", "remark": "急停按钮信号NC R u 1急停,0正常"}, + {"key": "0x101F", "datatype": "int16", "remark": "避雷器NC R u 1故障,0正常"}, + {"key": "0x1020", "datatype": "int16", "remark": "避雷器断路器NC R u 1故障,0正常"}, + {"key": "0x1021", "datatype": "int16", "remark": "PCS总断路器NC R u 1闭合,0断开"}, + {"key": "0x1022", "datatype": "int16", "remark": "电操状态NO R u 1闭合,0断开"}, + {"key": "0x1023", "datatype": "int16", "remark": "远程关机NO R u 1开机,0无效"}, + {"key": "0x1024", "datatype": "int16", "remark": "远程开机NO R u 1开机,0无效"}, + {"key": "0x1025", "datatype": "int16", "remark": "BA故障信号NO R u 1故障,0正常"}, + {"key": "0x1026", "datatype": "int16", "remark": "PCS_01状态 R u 1在线,0掉线"}, + {"key": "0x1027", "datatype": "int16", "remark": "PCS_02状态 R u 1在线,0掉线"}, + {"key": "0x1028", "datatype": "int16", "remark": "PCS_03状态 R u 1在线,0掉线"}, + {"key": "0x1029", "datatype": "int16", "remark": "PCS_04状态 R u 1在线,0掉线"}, + {"key": "0x102A", "datatype": "int16", "remark": "PCS_05状态 R u 1在线,0掉线"}, + {"key": "0x102B", "datatype": "int16", "remark": "PCS_06状态 R u 1在线,0掉线"}, + {"key": "0x102C", "datatype": "int16", "remark": "PCS_07状态 R u 1在线,0掉线"}, + {"key": "0x102D", "datatype": "int16", "remark": "PCS_09状态 R u 1在线,0掉线"}, + {"key": "0x102E", "datatype": "int16", "remark": "PCS_10状态 R u 1在线,0掉线"}, + {"key": "0x102F", "datatype": "int16", "remark": "PCS_01下发设置 R u 1故障,0正常"}, + {"key": "0x1030", "datatype": "int16", "remark": "PCS_02下发设置 R u 1故障,0正常"}, + {"key": "0x1031", "datatype": "int16", "remark": "PCS_03下发设置 R u 1故障,0正常"}, + {"key": "0x1032", "datatype": "int16", "remark": "PCS_04下发设置 R u 1故障,0正常"}, + {"key": "0x1033", "datatype": "int16", "remark": "PCS_05下发设置 R u 1故障,0正常"}, + {"key": "0x1034", "datatype": "int16", "remark": "PCS_06下发设置 R u 1故障,0正常"}, + {"key": "0x1035", "datatype": "int16", "remark": "PCS_07下发设置 R u 1故障,0正常"}, + {"key": "0x1036", "datatype": "int16", "remark": "PCS_08下发设置 R u 1故障,0正常"}, + {"key": "0x1037", "datatype": "int16", "remark": "PCS_09下发设置 R u 1故障,0正常"}, + {"key": "0x1038", "datatype": "int16", "remark": "PCS_10下发设置 R u 1:故障,0正常"}, + {"key": "0x1039", "datatype": "int16", "remark": "内部DSP通信故障 R u 1:故障,0正常"}, + {"key": "0x103A", "datatype": "int16", "remark": "BMS CAN通信故障 R u 1:故障,0正常"}, + {"key": "0x103B", "datatype": "int16", "remark": "下发设置失败 R u 1:故障,0正常"} + ] + }, + "PCU_YC": { + "count":1, + "addr":[ + {"key": "0x0001", "datatype": "int16", "remark": "所属通道号 R u 1~4"}, + {"key": "0x0002", "datatype": "int32", "remark": "充电功率最大许可 R u 1KW"}, + {"key": "0x0004", "datatype": "int32", "remark": "放电功率最大许可 R u 1KW"}, + {"key": "0x0006", "datatype": "int32", "remark": "交流日总充电量 R u 1KWh"}, + {"key": "0x0008", "datatype": "int32", "remark": "交流日总放电量 R u 1KWh"}, + {"key": "0x000A", "datatype": "int32", "remark": "交流总充电量 R u 1KWh"}, + {"key": "0x000C", "datatype": "int32", "remark": "交流总放电量 R u 1KWh"}, + {"key": "0x000E", "datatype": "int16", "remark": "有功功率期望值 R 1KW"}, + {"key": "0x000F", "datatype": "int16", "remark": "无功功率期望值 R 1kVar"}, + {"key": "0x0010", "datatype": "int16", "remark": "PCS侧线电压VAB R 1v"}, + {"key": "0x0011", "datatype": "int16", "remark": "PCS侧线电压VBC R 1v"}, + {"key": "0x0012", "datatype": "int16", "remark": "PCS侧线电压VCA R 1v"}, + {"key": "0x0013", "datatype": "int16", "remark": "PCS侧线A相电压 R 1v"}, + {"key": "0x0014", "datatype": "int16", "remark": "PCS侧线B相电压 R 1v"}, + {"key": "0x0015", "datatype": "int16", "remark": "PCS侧线C相电压 R 1v"}, + {"key": "0x0016", "datatype": "int16", "remark": "PCS侧A相频率 R 1Hz"}, + {"key": "0x0017", "datatype": "int16", "remark": "PCS侧B相频率 R 1Hz"}, + {"key": "0x0018", "datatype": "int16", "remark": "PCS侧C相频率 R 1Hz"}, + {"key": "0x0019", "datatype": "int16", "remark": "PCS侧功率因数A R 1"}, + {"key": "0x001A", "datatype": "int16", "remark": "PCS侧功率因数B R 1"}, + {"key": "0x001B", "datatype": "int16", "remark": "PCS侧功率因数C R 1"}, + {"key": "0x001C", "datatype": "int16", "remark": "PCS侧相电流A R 1A"}, + {"key": "0x001D", "datatype": "int16", "remark": "PCS侧相电流B R 1A"}, + {"key": "0x001E", "datatype": "int16", "remark": "PCS侧相电流C R 1A"}, + {"key": "0x001F", "datatype": "int16", "remark": "PCS侧有功功率A R 1kW"}, + {"key": "0x0020", "datatype": "int16", "remark": "PCS侧有功功率B R 1kW"}, + {"key": "0x0021", "datatype": "int16", "remark": "PCS侧有功功率C R 1kW"}, + {"key": "0x0022", "datatype": "int16", "remark": "PCS侧无功功率A R 1kVar"}, + {"key": "0x0023", "datatype": "int16", "remark": "PCS侧无功功率B R 1kVar"}, + {"key": "0x0024", "datatype": "int16", "remark": "PCS侧无功功率C R 1kVar"}, + {"key": "0x0025", "datatype": "int16", "remark": "PCS侧视在功率A R 1kVar"}, + {"key": "0x0026", "datatype": "int16", "remark": "PCS侧视在功率B R 1kVar"}, + {"key": "0x0027", "datatype": "int16", "remark": "PCS侧视在功率C R 1kVar"}, + {"key": "0x0028", "datatype": "int16", "remark": "PCS侧三相总有功功率 R 1kW"}, + {"key": "0x0029", "datatype": "int16", "remark": "PCS侧三相总无功功率 R 1kVar"}, + {"key": "0x002A", "datatype": "int16", "remark": "PCS侧三相总视在功率 R 1kVA"}, + {"key": "0x002B", "datatype": "int16", "remark": "PCS侧三相总功率因数 R 1"}, + {"key": "0x002C", "datatype": "int16", "remark": "PCU模块温度 R 1℃"}, + {"key": "0x002D", "datatype": "int16", "remark": "外部温度NTC1 R 1℃"}, + {"key": "0x002E", "datatype": "int16", "remark": "外部温度NTC2 R 1℃"}, + {"key": "0x002F", "datatype": "int16", "remark": "外部温度NTC3 R 1℃"}, + {"key": "0x0030", "datatype": "int16", "remark": "台区负载侧A相电流 R 1A"}, + {"key": "0x0031", "datatype": "int16", "remark": "台区负载侧B相电流 R 1A"}, + {"key": "0x0032", "datatype": "int16", "remark": "台区负载侧C相电流 R 1A"}, + {"key": "0x0033", "datatype": "int16", "remark": "台区负载侧A相有功功率 R 1kW"}, + {"key": "0x0034", "datatype": "int16", "remark": "台区负载侧B相有功功率 R 1kW"}, + {"key": "0x0035", "datatype": "int16", "remark": "台区负载侧C相有功功率 R 1kW"}, + {"key": "0x0036", "datatype": "int16", "remark": "台区负载侧总有功功率 R 1kW"}, + {"key": "0x0037", "datatype": "int16", "remark": "台区负载侧A相无功功率 R 1kVar"}, + {"key": "0x0038", "datatype": "int16", "remark": "台区负载侧B相无功功率 R 1kVar"}, + {"key": "0x0039", "datatype": "int16", "remark": "台区负载侧C相无功功率 R 1kVar"}, + {"key": "0x003A", "datatype": "int16", "remark": "台区负载侧总无功功率 R 1kVar"}, + {"key": "0x003B", "datatype": "int16", "remark": "台区负载侧A相视在功率 R 1kVA"}, + {"key": "0x003C", "datatype": "int16", "remark": "台区负载侧B相视在功率 R 1kVA"}, + {"key": "0x003D", "datatype": "int16", "remark": "台区负载侧C相视在功率 R 1kVA"}, + {"key": "0x003E", "datatype": "int16", "remark": "台区负载侧总视在功率 R 1kVA"}, + {"key": "0x003F", "datatype": "int16", "remark": "台区负载侧A相功率因数 R 1"}, + {"key": "0x0040", "datatype": "int16", "remark": "台区负载侧B相功率因数 R 1"}, + {"key": "0x0041", "datatype": "int16", "remark": "台区负载侧C相功率因数 R 1"}, + {"key": "0x0042", "datatype": "int16", "remark": "台区负载侧总功率因数 R 1"}, + {"key": "0x0043", "datatype": "int16", "remark": "负载侧线电压AB R 1V"}, + {"key": "0x0044", "datatype": "int16", "remark": "负载侧线电压BC R 1V"}, + {"key": "0x0045", "datatype": "int16", "remark": "负载侧线电压CA R 1V"}, + {"key": "0x0046", "datatype": "int16", "remark": "负载侧相电压AN R 1V"}, + {"key": "0x0047", "datatype": "int16", "remark": "负载侧相电压BN R 1V"}, + {"key": "0x0048", "datatype": "int16", "remark": "负载侧相电压CN R 1V"}, + {"key": "0x0049", "datatype": "int16", "remark": "负载侧A功率因素 R 1"}, + {"key": "0x004A", "datatype": "int16", "remark": "负载侧B功率因素 R 1"}, + {"key": "0x004B", "datatype": "int16", "remark": "负载侧C功率因素 R 1"}, + {"key": "0x004C", "datatype": "int16", "remark": "负载侧A视在功率 R 1kVA"}, + {"key": "0x004D", "datatype": "int16", "remark": "负载侧B视在功率 R 1kVA"}, + {"key": "0x004E", "datatype": "int16", "remark": "负载侧C视在功率 R 1kVA"} + ] + }, + "MEM_YC": { + "count":1, + "addr":[ + {"key": "0x0001", "datatype": "int16", "remark": "所属通道号 R u 1"}, + {"key": "0x0002", "datatype": "int16", "remark": "电表地址 R u[6]"}, + {"key": "0x0008", "datatype": "int16", "remark": "电表类型 R u 0:储能站总表1:逆变前侧电表2:逆变后侧电表3:配电柜电表4:并网口电表"}, + {"key": "0x0009", "datatype": "int16", "remark": "电流变比 R u"}, + {"key": "0x000A", "datatype": "int16", "remark": "电压变比 R u"}, + {"key": "0x000B", "datatype": "int32", "remark": "A相电压 R u 1V"}, + {"key": "0x000D", "datatype": "int32", "remark": "B相电压 R u 1V"}, + {"key": "0x000F", "datatype": "int32", "remark": "C相电压 R u 1V"}, + {"key": "0x0011", "datatype": "int32", "remark": "A相电流 R 1A"}, + {"key": "0x0013", "datatype": "int32", "remark": "B相电流 R 1A"}, + {"key": "0x0015", "datatype": "int32", "remark": "C相电流 R 1A"}, + {"key": "0x0017", "datatype": "int32", "remark": "AB相电压 R u 1V"}, + {"key": "0x0019", "datatype": "int32", "remark": "BC相电压 R u 1V"}, + {"key": "0x001B", "datatype": "int32", "remark": "CA相电压 R u 1V"}, + {"key": "0x001D", "datatype": "int32", "remark": "A相有功 R 1kW"}, + {"key": "0x001F", "datatype": "int32", "remark": "B相有功 R 1kW"}, + {"key": "0x0021", "datatype": "int32", "remark": "C相有功 R 1kW"}, + {"key": "0x0023", "datatype": "int32", "remark": "三相总有功 R 1kW"}, + {"key": "0x0025", "datatype": "int32", "remark": "正向总有功总需量 R 1kW"}, + {"key": "0x0027", "datatype": "int32", "remark": "尖段电价 R u 1RMB"}, + {"key": "0x0029", "datatype": "int32", "remark": "峰段电价 R u 1RMB"}, + {"key": "0x002B", "datatype": "int32", "remark": "平段电价 R u 1RMB"}, + {"key": "0x002D", "datatype": "int32", "remark": "谷段电价 R u 1RMB"}, + {"key": "0x002F", "datatype": "int32", "remark": "日充电电量 R u 1kWh"}, + {"key": "0x0031", "datatype": "int32", "remark": "日放电电量 R u 1kWh"}, + {"key": "0x0033", "datatype": "int32", "remark": "日充电费用 R u 1RMB"}, + {"key": "0x0035", "datatype": "int32", "remark": "日放电费用 R u 1RMB"}, + {"key": "0x0037", "datatype": "int32", "remark": "日收益 R 1RMB"}, + {"key": "0x0039", "datatype": "int32", "remark": "日正向尖有功电能 R u 1kWh"}, + {"key": "0x003B", "datatype": "int32", "remark": "日正向峰有功电能 R u 1kWh"}, + {"key": "0x003D", "datatype": "int32", "remark": "日正向平有功电能 R u 1kWh"}, + {"key": "0x003F", "datatype": "int32", "remark": "日正向谷有功电能 R u 1kWh"}, + {"key": "0x0041", "datatype": "int32", "remark": "日正向总有功电能 R u 1kWh"}, + {"key": "0x0043", "datatype": "int32", "remark": "日反向尖有功电能 R u 1kWh"}, + {"key": "0x0045", "datatype": "int32", "remark": "日反向峰有功电能 R u 1kWh"}, + {"key": "0x0047", "datatype": "int32", "remark": "日反向平有功电能 R u 1kWh"}, + {"key": "0x0049", "datatype": "int32", "remark": "日反向谷有功电能 R u 1kWh"}, + {"key": "0x004B", "datatype": "int32", "remark": "日反向总有功电能 R u 1kWh"}, + {"key": "0x004D", "datatype": "int32", "remark": "总充电电量 R u 1kWh"}, + {"key": "0x004F", "datatype": "int32", "remark": "总放电电量 R u 1kWh"}, + {"key": "0x0051", "datatype": "int32", "remark": "总充电费用 R u 1RMB"}, + {"key": "0x0053", "datatype": "int32", "remark": "总放电费用 R u 1RMB"}, + {"key": "0x0055", "datatype": "int32", "remark": "总收益 R 1RMB"}, + {"key": "0x0057", "datatype": "int32", "remark": "总正向尖有功电能 R u 1kWh"}, + {"key": "0x0059", "datatype": "int32", "remark": "总正向峰有功电能 R u 1kWh"}, + {"key": "0x005B", "datatype": "int32", "remark": "总正向平有功电能 R u 1kWh"}, + {"key": "0x005D", "datatype": "int32", "remark": "总正向谷有功电能 R u 1kWh"}, + {"key": "0x005F", "datatype": "int32", "remark": "总正向总有功电能 R u 1kWh"}, + {"key": "0x0061", "datatype": "int32", "remark": "总反向尖有功电能 R u 1kWh"}, + {"key": "0x0063", "datatype": "int32", "remark": "总反向峰有功电能 R u 1kWh"}, + {"key": "0x0065", "datatype": "int32", "remark": "总反向平有功电能 R u 1kWh"}, + {"key": "0x0067", "datatype": "int32", "remark": "总反向谷有功电能 R u 1kWh"}, + {"key": "0x0069", "datatype": "int32", "remark": "总反向总有功电能 R u 1kWh"} + ] + }, + "TH_YC": { + "count":1, + "addr":[ + {"key": "0x0001", "datatype": "int16", "remark": "所属通道号 R u 1"}, + {"key": "0x0002", "datatype": "int16", "remark": "所属温湿度号 R u 1~10"}, + {"key": "0x0003", "datatype": "int16", "remark": "温度 R 0.1℃"}, + {"key": "0x0004", "datatype": "int16", "remark": "湿度 R 0.1℃"} + ] + }, + "Fire40_YX": { + "count":1, + "addr":[ + {"key": "0x0001", "datatype": "int16", "remark": "所属通道号 R u 1~10"}, + {"key": "0x0002", "datatype": "int16", "remark": "主控数量 R u 1"}, + {"key": "0x0003", "datatype": "int16", "remark": "主控ID R u 1"}, + {"key": "0x0004", "datatype": "int16", "remark": "主控状态 R u 0:正常 1:预警 2:火警"}, + {"key": "0x0005", "datatype": "int16", "remark": "主控硬件版本 R u[2] 主控硬件版本"}, + {"key": "0x0007", "datatype": "int16", "remark": "主控软件版本 R u[2] 主控软件版本"}, + {"key": "0x0009", "datatype": "int16", "remark": "主电状态 R u 0:使用市电 1:使用备电"}, + {"key": "0x000A", "datatype": "int32", "remark": "备电电流 R u 0.1A"}, + {"key": "0x000C", "datatype": "int32", "remark": "备电电压 R u 0.1V"}, + {"key": "0x000E", "datatype": "int32", "remark": "可用容量 R u 0.01Ah"}, + {"key": "0x0010", "datatype": "int32", "remark": "可充放容量 R u 0.01Ah"}, + {"key": "0x0012", "datatype": "int16", "remark": "警铃是否使用 R u"}, + {"key": "0x0013", "datatype": "int16", "remark": "警铃状态 R u 0:无效 1:掉线 2:正常 3:启动"}, + {"key": "0x0014", "datatype": "int16", "remark": "瓶头阀是否使用 R u"}, + {"key": "0x0015", "datatype": "int16", "remark": "瓶头阀状态 R u 0:无效 1:掉线 2:正常 3:启动"}, + {"key": "0x0016", "datatype": "int16", "remark": "手报是否使用 R u"}, + {"key": "0x0017", "datatype": "int16", "remark": "手报状态 R u 0:无效 1:掉线 2:正常 3:启动"}, + {"key": "0x0018", "datatype": "int16", "remark": "簇控制器数量 R u"}, + {"key": "0x0019", "datatype": "int16", "remark": "复合探测器总数量 R u"}, + {"key": "0x001A", "datatype": "int16", "remark": "烟雾探测器总数量 R u"}, + {"key": "0x001B", "datatype": "int16", "remark": "压力探测器总数量 R u"}, + {"key": "0x001C", "datatype": "int16", "remark": "吸气式探测器总数量 R u"}, + {"key": "0x001D", "datatype": "int16", "remark": "PACK探测器总数量 R u"}, + {"key": "0x001E", "datatype": "int16", "remark": "电池总数量 R u"} + ] + }, + "Cooling_YX": { + "count":1, + "addr":[ + {"key": "0x1001", "datatype": "int16", "remark": "所属通道号 R u 1"}, + {"key": "0x1002", "datatype": "int16", "remark": "所属冷机号 R u 1~10"}, + {"key": "0x1003", "datatype": "int16", "remark": "开关 R u 0:关机,1:开机"}, + {"key": "0x1004", "datatype": "int16", "remark": "采样模式 R u 0-出水温度 1-电芯温度"}, + {"key": "0x1005", "datatype": "int16", "remark": "制冷状态 R u 0:关闭,1:启动"}, + {"key": "0x1006", "datatype": "int16", "remark": "制热状态 R u 0:关闭,1:启动"}, + {"key": "0x1007", "datatype": "int16", "remark": "高温告警 R u 0:正常,1:告警"}, + {"key": "0x1008", "datatype": "int16", "remark": "低温告警 R u 0:正常,1:告警"}, + {"key": "0x1009", "datatype": "int16", "remark": "高压告警 R u 0:正常,1:告警"}, + {"key": "0x100A", "datatype": "int16", "remark": "低压告警 R u 0:正常,1:告警"}, + {"key": "0x100B", "datatype": "int16", "remark": "进水温度传感器 R u 0:正常,1:告警"}, + {"key": "0x100C", "datatype": "int16", "remark": "出水温度传感器 R u 0:正常,1:告警"}, + {"key": "0x100D", "datatype": "int16", "remark": "进水压力传感器 R u 0:正常,1:告警"}, + {"key": "0x100E", "datatype": "int16", "remark": "出水压力传感器 R u 0:正常,1:告警"} + ] + }, + "Cooling_YC": { + "count":1, + "addr":[ + {"key": "0x0001", "datatype": "int16", "remark": "所属通道号 R u 1"}, + {"key": "0x0002", "datatype": "int16", "remark": "所属冷机号 R u 1~10"}, + {"key": "0x0003", "datatype": "int16", "remark": "制冷点 R 0.1℃"}, + {"key": "0x0004", "datatype": "int16", "remark": "制冷偏差 R 0.1℃"}, + {"key": "0x0005", "datatype": "int16", "remark": "高温告警值 R 0.1℃"}, + {"key": "0x0006", "datatype": "int16", "remark": "低温告警值 R 0.1℃"}, + {"key": "0x0007", "datatype": "int16", "remark": "制热点 R 0.1℃"}, + {"key": "0x0008", "datatype": "int16", "remark": "制热偏差 R 0.1℃"}, + {"key": "0x0009", "datatype": "int16", "remark": "电芯温度 R 0.1℃"}, + {"key": "0x000A", "datatype": "int16", "remark": "环境湿度 R 0.1℃"}, + {"key": "0x000B", "datatype": "int16", "remark": "吸气温度 R 0.1℃"}, + {"key": "0x000C", "datatype": "int16", "remark": "排气温度 R 0.1℃"}, + {"key": "0x000D", "datatype": "int16", "remark": "进水温度/供液温度 R 0.1℃"}, + {"key": "0x000E", "datatype": "int16", "remark": "出水温度/回液温度 R 0.1℃"}, + {"key": "0x000F", "datatype": "int16", "remark": "进水压力/供液压力 R 0.1"}, + {"key": "0x0010", "datatype": "int16", "remark": "出水压力/回液压力 R 0.1"}, + {"key": "0x0011", "datatype": "int16", "remark": "高压压力 R 0.1"}, + {"key": "0x0012", "datatype": "int16", "remark": "低压压力 R 0.1"}, + {"key": "0x0013", "datatype": "int16", "remark": "循环水泵转速 R "}, + {"key": "0x0014", "datatype": "int16", "remark": "压缩机频率 R "}, + {"key": "0x0015", "datatype": "int16", "remark": "室外风机转速 R "} + ] } } \ No newline at end of file diff --git a/bin/Release/assets/ui/splash.jpg b/bin/Release/assets/ui/splash.jpg new file mode 100644 index 0000000..aebb6c9 Binary files /dev/null and b/bin/Release/assets/ui/splash.jpg differ diff --git a/bin/Release/assets/ui/splash.png b/bin/Release/assets/ui/splash.png new file mode 100644 index 0000000..5e0ede6 Binary files /dev/null and b/bin/Release/assets/ui/splash.png differ diff --git a/bin/Release/bearer/qgenericbearer.dll b/bin/Release/bearer/qgenericbearer.dll deleted file mode 100644 index 909b216..0000000 Binary files a/bin/Release/bearer/qgenericbearer.dll and /dev/null differ diff --git a/bin/Release/dxcompiler.dll b/bin/Release/dxcompiler.dll new file mode 100644 index 0000000..356cc2a Binary files /dev/null and b/bin/Release/dxcompiler.dll differ diff --git a/bin/Release/generic/qtuiotouchplugin.dll b/bin/Release/generic/qtuiotouchplugin.dll new file mode 100644 index 0000000..9eb7151 Binary files /dev/null and b/bin/Release/generic/qtuiotouchplugin.dll differ diff --git a/bin/Release/iconengines/qsvgicon.dll b/bin/Release/iconengines/qsvgicon.dll index cbca63c..a44f43e 100644 Binary files a/bin/Release/iconengines/qsvgicon.dll and b/bin/Release/iconengines/qsvgicon.dll differ diff --git a/bin/Release/imageformats/qgif.dll b/bin/Release/imageformats/qgif.dll index 7da1f08..f5b6ad5 100644 Binary files a/bin/Release/imageformats/qgif.dll and b/bin/Release/imageformats/qgif.dll differ diff --git a/bin/Release/imageformats/qicns.dll b/bin/Release/imageformats/qicns.dll index 5b4365f..74fe548 100644 Binary files a/bin/Release/imageformats/qicns.dll and b/bin/Release/imageformats/qicns.dll differ diff --git a/bin/Release/imageformats/qico.dll b/bin/Release/imageformats/qico.dll index 9ba89cb..402e83c 100644 Binary files a/bin/Release/imageformats/qico.dll and b/bin/Release/imageformats/qico.dll differ diff --git a/bin/Release/imageformats/qjpeg.dll b/bin/Release/imageformats/qjpeg.dll index 74ff76b..bf748d8 100644 Binary files a/bin/Release/imageformats/qjpeg.dll and b/bin/Release/imageformats/qjpeg.dll differ diff --git a/bin/Release/imageformats/qpdf.dll b/bin/Release/imageformats/qpdf.dll new file mode 100644 index 0000000..eaf9171 Binary files /dev/null and b/bin/Release/imageformats/qpdf.dll differ diff --git a/bin/Release/imageformats/qsvg.dll b/bin/Release/imageformats/qsvg.dll index c6b732b..dca0a2c 100644 Binary files a/bin/Release/imageformats/qsvg.dll and b/bin/Release/imageformats/qsvg.dll differ diff --git a/bin/Release/imageformats/qtga.dll b/bin/Release/imageformats/qtga.dll index d4f77f8..190cd53 100644 Binary files a/bin/Release/imageformats/qtga.dll and b/bin/Release/imageformats/qtga.dll differ diff --git a/bin/Release/imageformats/qtiff.dll b/bin/Release/imageformats/qtiff.dll index 43cbc0c..48cafac 100644 Binary files a/bin/Release/imageformats/qtiff.dll and b/bin/Release/imageformats/qtiff.dll differ diff --git a/bin/Release/imageformats/qwbmp.dll b/bin/Release/imageformats/qwbmp.dll index e1dc12c..ca4bd81 100644 Binary files a/bin/Release/imageformats/qwbmp.dll and b/bin/Release/imageformats/qwbmp.dll differ diff --git a/bin/Release/imageformats/qwebp.dll b/bin/Release/imageformats/qwebp.dll index 3c49ed8..b293af3 100644 Binary files a/bin/Release/imageformats/qwebp.dll and b/bin/Release/imageformats/qwebp.dll differ diff --git a/bin/Release/networkinformation/qnetworklistmanager.dll b/bin/Release/networkinformation/qnetworklistmanager.dll new file mode 100644 index 0000000..4e562ae Binary files /dev/null and b/bin/Release/networkinformation/qnetworklistmanager.dll differ diff --git a/bin/Release/opengl32sw.dll b/bin/Release/opengl32sw.dll index 475e82a..1bf3581 100644 Binary files a/bin/Release/opengl32sw.dll and b/bin/Release/opengl32sw.dll differ diff --git a/bin/Release/platforminputcontexts/qtvirtualkeyboardplugin.dll b/bin/Release/platforminputcontexts/qtvirtualkeyboardplugin.dll new file mode 100644 index 0000000..e412811 Binary files /dev/null and b/bin/Release/platforminputcontexts/qtvirtualkeyboardplugin.dll differ diff --git a/bin/Release/platforms/qwindows.dll b/bin/Release/platforms/qwindows.dll index c724999..6a4212d 100644 Binary files a/bin/Release/platforms/qwindows.dll and b/bin/Release/platforms/qwindows.dll differ diff --git a/bin/Release/plugins/platforms/qwindows.dll b/bin/Release/plugins/platforms/qwindows.dll deleted file mode 100644 index e9c319d..0000000 Binary files a/bin/Release/plugins/platforms/qwindows.dll and /dev/null differ diff --git a/bin/Release/position/qtposition_nmea.dll b/bin/Release/position/qtposition_nmea.dll new file mode 100644 index 0000000..d90d752 Binary files /dev/null and b/bin/Release/position/qtposition_nmea.dll differ diff --git a/bin/Release/position/qtposition_positionpoll.dll b/bin/Release/position/qtposition_positionpoll.dll index 1c5f7d4..40afa91 100644 Binary files a/bin/Release/position/qtposition_positionpoll.dll and b/bin/Release/position/qtposition_positionpoll.dll differ diff --git a/bin/Release/position/qtposition_serialnmea.dll b/bin/Release/position/qtposition_serialnmea.dll deleted file mode 100644 index 3458b8b..0000000 Binary files a/bin/Release/position/qtposition_serialnmea.dll and /dev/null differ diff --git a/bin/Release/position/qtposition_winrt.dll b/bin/Release/position/qtposition_winrt.dll index faf88d8..525344a 100644 Binary files a/bin/Release/position/qtposition_winrt.dll and b/bin/Release/position/qtposition_winrt.dll differ diff --git a/bin/Release/printsupport/windowsprintersupport.dll b/bin/Release/printsupport/windowsprintersupport.dll deleted file mode 100644 index 05f8a28..0000000 Binary files a/bin/Release/printsupport/windowsprintersupport.dll and /dev/null differ diff --git a/bin/Release/qmltooling/qmldbg_debugger.dll b/bin/Release/qmltooling/qmldbg_debugger.dll new file mode 100644 index 0000000..541bbb6 Binary files /dev/null and b/bin/Release/qmltooling/qmldbg_debugger.dll differ diff --git a/bin/Release/qmltooling/qmldbg_inspector.dll b/bin/Release/qmltooling/qmldbg_inspector.dll new file mode 100644 index 0000000..b52d637 Binary files /dev/null and b/bin/Release/qmltooling/qmldbg_inspector.dll differ diff --git a/bin/Release/qmltooling/qmldbg_local.dll b/bin/Release/qmltooling/qmldbg_local.dll new file mode 100644 index 0000000..dda3819 Binary files /dev/null and b/bin/Release/qmltooling/qmldbg_local.dll differ diff --git a/bin/Release/qmltooling/qmldbg_messages.dll b/bin/Release/qmltooling/qmldbg_messages.dll new file mode 100644 index 0000000..a411056 Binary files /dev/null and b/bin/Release/qmltooling/qmldbg_messages.dll differ diff --git a/bin/Release/qmltooling/qmldbg_native.dll b/bin/Release/qmltooling/qmldbg_native.dll new file mode 100644 index 0000000..fcd5e86 Binary files /dev/null and b/bin/Release/qmltooling/qmldbg_native.dll differ diff --git a/bin/Release/qmltooling/qmldbg_nativedebugger.dll b/bin/Release/qmltooling/qmldbg_nativedebugger.dll new file mode 100644 index 0000000..5629e48 Binary files /dev/null and b/bin/Release/qmltooling/qmldbg_nativedebugger.dll differ diff --git a/bin/Release/qmltooling/qmldbg_preview.dll b/bin/Release/qmltooling/qmldbg_preview.dll new file mode 100644 index 0000000..14f426f Binary files /dev/null and b/bin/Release/qmltooling/qmldbg_preview.dll differ diff --git a/bin/Release/qmltooling/qmldbg_profiler.dll b/bin/Release/qmltooling/qmldbg_profiler.dll new file mode 100644 index 0000000..bff4d5d Binary files /dev/null and b/bin/Release/qmltooling/qmldbg_profiler.dll differ diff --git a/bin/Release/qmltooling/qmldbg_quick3dprofiler.dll b/bin/Release/qmltooling/qmldbg_quick3dprofiler.dll new file mode 100644 index 0000000..95a8757 Binary files /dev/null and b/bin/Release/qmltooling/qmldbg_quick3dprofiler.dll differ diff --git a/bin/Release/qmltooling/qmldbg_quickprofiler.dll b/bin/Release/qmltooling/qmldbg_quickprofiler.dll new file mode 100644 index 0000000..04bb06f Binary files /dev/null and b/bin/Release/qmltooling/qmldbg_quickprofiler.dll differ diff --git a/bin/Release/qmltooling/qmldbg_server.dll b/bin/Release/qmltooling/qmldbg_server.dll new file mode 100644 index 0000000..8901fb1 Binary files /dev/null and b/bin/Release/qmltooling/qmldbg_server.dll differ diff --git a/bin/Release/qmltooling/qmldbg_tcp.dll b/bin/Release/qmltooling/qmldbg_tcp.dll new file mode 100644 index 0000000..fcd621b Binary files /dev/null and b/bin/Release/qmltooling/qmldbg_tcp.dll differ diff --git a/bin/Release/resources/icudtl.dat b/bin/Release/resources/icudtl.dat index ac101db..4d7e9ac 100644 Binary files a/bin/Release/resources/icudtl.dat and b/bin/Release/resources/icudtl.dat differ diff --git a/bin/Release/resources/qtwebengine_devtools_resources.pak b/bin/Release/resources/qtwebengine_devtools_resources.pak index 174c482..95ade78 100644 Binary files a/bin/Release/resources/qtwebengine_devtools_resources.pak and b/bin/Release/resources/qtwebengine_devtools_resources.pak differ diff --git a/bin/Release/resources/qtwebengine_resources.pak b/bin/Release/resources/qtwebengine_resources.pak index a613010..a1438a3 100644 Binary files a/bin/Release/resources/qtwebengine_resources.pak and b/bin/Release/resources/qtwebengine_resources.pak differ diff --git a/bin/Release/resources/qtwebengine_resources_100p.pak b/bin/Release/resources/qtwebengine_resources_100p.pak index d52a8b0..b9b5753 100644 Binary files a/bin/Release/resources/qtwebengine_resources_100p.pak and b/bin/Release/resources/qtwebengine_resources_100p.pak differ diff --git a/bin/Release/resources/qtwebengine_resources_200p.pak b/bin/Release/resources/qtwebengine_resources_200p.pak index 035184b..258beb7 100644 Binary files a/bin/Release/resources/qtwebengine_resources_200p.pak and b/bin/Release/resources/qtwebengine_resources_200p.pak differ diff --git a/bin/Release/resources/v8_context_snapshot.bin b/bin/Release/resources/v8_context_snapshot.bin new file mode 100644 index 0000000..58e71c7 Binary files /dev/null and b/bin/Release/resources/v8_context_snapshot.bin differ diff --git a/bin/Release/styles/qmodernwindowsstyle.dll b/bin/Release/styles/qmodernwindowsstyle.dll new file mode 100644 index 0000000..3540653 Binary files /dev/null and b/bin/Release/styles/qmodernwindowsstyle.dll differ diff --git a/bin/Release/styles/qwindowsvistastyle.dll b/bin/Release/styles/qwindowsvistastyle.dll deleted file mode 100644 index b35490b..0000000 Binary files a/bin/Release/styles/qwindowsvistastyle.dll and /dev/null differ diff --git a/bin/Release/tls/qcertonlybackend.dll b/bin/Release/tls/qcertonlybackend.dll new file mode 100644 index 0000000..620aa51 Binary files /dev/null and b/bin/Release/tls/qcertonlybackend.dll differ diff --git a/bin/Release/tls/qopensslbackend.dll b/bin/Release/tls/qopensslbackend.dll new file mode 100644 index 0000000..d2d9dc9 Binary files /dev/null and b/bin/Release/tls/qopensslbackend.dll differ diff --git a/bin/Release/tls/qschannelbackend.dll b/bin/Release/tls/qschannelbackend.dll new file mode 100644 index 0000000..23d2f81 Binary files /dev/null and b/bin/Release/tls/qschannelbackend.dll differ diff --git a/bin/Release/translations/qt_ar.qm b/bin/Release/translations/qt_ar.qm index a3ce57e..e45b67f 100644 Binary files a/bin/Release/translations/qt_ar.qm and b/bin/Release/translations/qt_ar.qm differ diff --git a/bin/Release/translations/qt_bg.qm b/bin/Release/translations/qt_bg.qm index b6a990d..32e42c0 100644 Binary files a/bin/Release/translations/qt_bg.qm and b/bin/Release/translations/qt_bg.qm differ diff --git a/bin/Release/translations/qt_ca.qm b/bin/Release/translations/qt_ca.qm index 62cca8a..785cc7c 100644 Binary files a/bin/Release/translations/qt_ca.qm and b/bin/Release/translations/qt_ca.qm differ diff --git a/bin/Release/translations/qt_da.qm b/bin/Release/translations/qt_da.qm index 9b3aa0b..c5f62b1 100644 Binary files a/bin/Release/translations/qt_da.qm and b/bin/Release/translations/qt_da.qm differ diff --git a/bin/Release/translations/qt_de.qm b/bin/Release/translations/qt_de.qm index b9a93a5..6f60abf 100644 Binary files a/bin/Release/translations/qt_de.qm and b/bin/Release/translations/qt_de.qm differ diff --git a/bin/Release/translations/qt_es.qm b/bin/Release/translations/qt_es.qm index 8e92be5..8b6b767 100644 Binary files a/bin/Release/translations/qt_es.qm and b/bin/Release/translations/qt_es.qm differ diff --git a/bin/Release/translations/qt_fa.qm b/bin/Release/translations/qt_fa.qm new file mode 100644 index 0000000..724e9e9 Binary files /dev/null and b/bin/Release/translations/qt_fa.qm differ diff --git a/bin/Release/translations/qt_fr.qm b/bin/Release/translations/qt_fr.qm index efe353c..a63ab93 100644 Binary files a/bin/Release/translations/qt_fr.qm and b/bin/Release/translations/qt_fr.qm differ diff --git a/bin/Release/translations/qt_gd.qm b/bin/Release/translations/qt_gd.qm index f0571d3..3fe3841 100644 Binary files a/bin/Release/translations/qt_gd.qm and b/bin/Release/translations/qt_gd.qm differ diff --git a/bin/Release/translations/qt_he.qm b/bin/Release/translations/qt_he.qm index 4b623a3..95ed0c7 100644 Binary files a/bin/Release/translations/qt_he.qm and b/bin/Release/translations/qt_he.qm differ diff --git a/bin/Release/translations/qt_hr.qm b/bin/Release/translations/qt_hr.qm new file mode 100644 index 0000000..8b5a444 Binary files /dev/null and b/bin/Release/translations/qt_hr.qm differ diff --git a/bin/Release/translations/qt_hu.qm b/bin/Release/translations/qt_hu.qm index 3667c99..dd3b4e9 100644 Binary files a/bin/Release/translations/qt_hu.qm and b/bin/Release/translations/qt_hu.qm differ diff --git a/bin/Release/translations/qt_it.qm b/bin/Release/translations/qt_it.qm index 6fb6e89..3785a6f 100644 Binary files a/bin/Release/translations/qt_it.qm and b/bin/Release/translations/qt_it.qm differ diff --git a/bin/Release/translations/qt_ja.qm b/bin/Release/translations/qt_ja.qm index 773a924..fac7090 100644 Binary files a/bin/Release/translations/qt_ja.qm and b/bin/Release/translations/qt_ja.qm differ diff --git a/bin/Release/translations/qt_ka.qm b/bin/Release/translations/qt_ka.qm new file mode 100644 index 0000000..70c8915 Binary files /dev/null and b/bin/Release/translations/qt_ka.qm differ diff --git a/bin/Release/translations/qt_ko.qm b/bin/Release/translations/qt_ko.qm index af72beb..6a67366 100644 Binary files a/bin/Release/translations/qt_ko.qm and b/bin/Release/translations/qt_ko.qm differ diff --git a/bin/Release/translations/qt_nl.qm b/bin/Release/translations/qt_nl.qm new file mode 100644 index 0000000..5939fcd Binary files /dev/null and b/bin/Release/translations/qt_nl.qm differ diff --git a/bin/Release/translations/qt_nn.qm b/bin/Release/translations/qt_nn.qm new file mode 100644 index 0000000..6e18383 Binary files /dev/null and b/bin/Release/translations/qt_nn.qm differ diff --git a/bin/Release/translations/qt_pl.qm b/bin/Release/translations/qt_pl.qm index 236452b..5698f9d 100644 Binary files a/bin/Release/translations/qt_pl.qm and b/bin/Release/translations/qt_pl.qm differ diff --git a/bin/Release/translations/qt_pt_BR.qm b/bin/Release/translations/qt_pt_BR.qm new file mode 100644 index 0000000..f4dd3e7 Binary files /dev/null and b/bin/Release/translations/qt_pt_BR.qm differ diff --git a/bin/Release/translations/qt_ru.qm b/bin/Release/translations/qt_ru.qm index 75b3059..8ddb8ec 100644 Binary files a/bin/Release/translations/qt_ru.qm and b/bin/Release/translations/qt_ru.qm differ diff --git a/bin/Release/translations/qt_sk.qm b/bin/Release/translations/qt_sk.qm index df87248..cf1619e 100644 Binary files a/bin/Release/translations/qt_sk.qm and b/bin/Release/translations/qt_sk.qm differ diff --git a/bin/Release/translations/qt_tr.qm b/bin/Release/translations/qt_tr.qm index 1dc5f6c..8660d4b 100644 Binary files a/bin/Release/translations/qt_tr.qm and b/bin/Release/translations/qt_tr.qm differ diff --git a/bin/Release/translations/qt_uk.qm b/bin/Release/translations/qt_uk.qm index 1a927c9..d0b7aeb 100644 Binary files a/bin/Release/translations/qt_uk.qm and b/bin/Release/translations/qt_uk.qm differ diff --git a/bin/Release/translations/qt_zh_CN.qm b/bin/Release/translations/qt_zh_CN.qm new file mode 100644 index 0000000..3007096 Binary files /dev/null and b/bin/Release/translations/qt_zh_CN.qm differ diff --git a/bin/Release/translations/qt_zh_TW.qm b/bin/Release/translations/qt_zh_TW.qm index 6205298..0a31fae 100644 Binary files a/bin/Release/translations/qt_zh_TW.qm and b/bin/Release/translations/qt_zh_TW.qm differ diff --git a/bin/Release/translations/qtwebengine_locales/am.pak b/bin/Release/translations/qtwebengine_locales/am.pak index e6b6034..5c6855d 100644 Binary files a/bin/Release/translations/qtwebengine_locales/am.pak and b/bin/Release/translations/qtwebengine_locales/am.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/ar.pak b/bin/Release/translations/qtwebengine_locales/ar.pak index 917f687..93e6182 100644 Binary files a/bin/Release/translations/qtwebengine_locales/ar.pak and b/bin/Release/translations/qtwebengine_locales/ar.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/bg.pak b/bin/Release/translations/qtwebengine_locales/bg.pak index 15309bb..8e39aa0 100644 Binary files a/bin/Release/translations/qtwebengine_locales/bg.pak and b/bin/Release/translations/qtwebengine_locales/bg.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/bn.pak b/bin/Release/translations/qtwebengine_locales/bn.pak index af3609b..abc3abd 100644 Binary files a/bin/Release/translations/qtwebengine_locales/bn.pak and b/bin/Release/translations/qtwebengine_locales/bn.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/ca.pak b/bin/Release/translations/qtwebengine_locales/ca.pak index f386ffa..c152b72 100644 Binary files a/bin/Release/translations/qtwebengine_locales/ca.pak and b/bin/Release/translations/qtwebengine_locales/ca.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/cs.pak b/bin/Release/translations/qtwebengine_locales/cs.pak index b5bb24e..86e87a1 100644 Binary files a/bin/Release/translations/qtwebengine_locales/cs.pak and b/bin/Release/translations/qtwebengine_locales/cs.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/da.pak b/bin/Release/translations/qtwebengine_locales/da.pak index 6435ccc..bdc05c9 100644 Binary files a/bin/Release/translations/qtwebengine_locales/da.pak and b/bin/Release/translations/qtwebengine_locales/da.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/de.pak b/bin/Release/translations/qtwebengine_locales/de.pak index 64c3afe..77423d8 100644 Binary files a/bin/Release/translations/qtwebengine_locales/de.pak and b/bin/Release/translations/qtwebengine_locales/de.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/el.pak b/bin/Release/translations/qtwebengine_locales/el.pak index ac01667..d2ccfeb 100644 Binary files a/bin/Release/translations/qtwebengine_locales/el.pak and b/bin/Release/translations/qtwebengine_locales/el.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/en-GB.pak b/bin/Release/translations/qtwebengine_locales/en-GB.pak index 68043fb..e91d0e3 100644 Binary files a/bin/Release/translations/qtwebengine_locales/en-GB.pak and b/bin/Release/translations/qtwebengine_locales/en-GB.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/en-US.pak b/bin/Release/translations/qtwebengine_locales/en-US.pak index 74732ee..d762397 100644 Binary files a/bin/Release/translations/qtwebengine_locales/en-US.pak and b/bin/Release/translations/qtwebengine_locales/en-US.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/es-419.pak b/bin/Release/translations/qtwebengine_locales/es-419.pak index d0a0221..4515a27 100644 Binary files a/bin/Release/translations/qtwebengine_locales/es-419.pak and b/bin/Release/translations/qtwebengine_locales/es-419.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/es.pak b/bin/Release/translations/qtwebengine_locales/es.pak index 3bc2f5b..f881077 100644 Binary files a/bin/Release/translations/qtwebengine_locales/es.pak and b/bin/Release/translations/qtwebengine_locales/es.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/et.pak b/bin/Release/translations/qtwebengine_locales/et.pak index bf97a55..4174f78 100644 Binary files a/bin/Release/translations/qtwebengine_locales/et.pak and b/bin/Release/translations/qtwebengine_locales/et.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/fa.pak b/bin/Release/translations/qtwebengine_locales/fa.pak index c0f0ff0..79f624a 100644 Binary files a/bin/Release/translations/qtwebengine_locales/fa.pak and b/bin/Release/translations/qtwebengine_locales/fa.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/fi.pak b/bin/Release/translations/qtwebengine_locales/fi.pak index e7b8dae..b4c92b7 100644 Binary files a/bin/Release/translations/qtwebengine_locales/fi.pak and b/bin/Release/translations/qtwebengine_locales/fi.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/fil.pak b/bin/Release/translations/qtwebengine_locales/fil.pak index 09edca2..9dcdfd3 100644 Binary files a/bin/Release/translations/qtwebengine_locales/fil.pak and b/bin/Release/translations/qtwebengine_locales/fil.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/fr.pak b/bin/Release/translations/qtwebengine_locales/fr.pak index a66f78a..ad301a7 100644 Binary files a/bin/Release/translations/qtwebengine_locales/fr.pak and b/bin/Release/translations/qtwebengine_locales/fr.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/gu.pak b/bin/Release/translations/qtwebengine_locales/gu.pak index 2863d05..e164d85 100644 Binary files a/bin/Release/translations/qtwebengine_locales/gu.pak and b/bin/Release/translations/qtwebengine_locales/gu.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/he.pak b/bin/Release/translations/qtwebengine_locales/he.pak index 5b7ada1..bcfb131 100644 Binary files a/bin/Release/translations/qtwebengine_locales/he.pak and b/bin/Release/translations/qtwebengine_locales/he.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/hi.pak b/bin/Release/translations/qtwebengine_locales/hi.pak index 7007d5f..1521db1 100644 Binary files a/bin/Release/translations/qtwebengine_locales/hi.pak and b/bin/Release/translations/qtwebengine_locales/hi.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/hr.pak b/bin/Release/translations/qtwebengine_locales/hr.pak index ac070bc..23292d9 100644 Binary files a/bin/Release/translations/qtwebengine_locales/hr.pak and b/bin/Release/translations/qtwebengine_locales/hr.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/hu.pak b/bin/Release/translations/qtwebengine_locales/hu.pak index 5f49050..370041e 100644 Binary files a/bin/Release/translations/qtwebengine_locales/hu.pak and b/bin/Release/translations/qtwebengine_locales/hu.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/id.pak b/bin/Release/translations/qtwebengine_locales/id.pak index 4226eb8..be7a86b 100644 Binary files a/bin/Release/translations/qtwebengine_locales/id.pak and b/bin/Release/translations/qtwebengine_locales/id.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/it.pak b/bin/Release/translations/qtwebengine_locales/it.pak index 68350ed..c2e51d1 100644 Binary files a/bin/Release/translations/qtwebengine_locales/it.pak and b/bin/Release/translations/qtwebengine_locales/it.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/ja.pak b/bin/Release/translations/qtwebengine_locales/ja.pak index dd70a4d..64c2170 100644 Binary files a/bin/Release/translations/qtwebengine_locales/ja.pak and b/bin/Release/translations/qtwebengine_locales/ja.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/kn.pak b/bin/Release/translations/qtwebengine_locales/kn.pak index 9b7463d..f80738c 100644 Binary files a/bin/Release/translations/qtwebengine_locales/kn.pak and b/bin/Release/translations/qtwebengine_locales/kn.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/ko.pak b/bin/Release/translations/qtwebengine_locales/ko.pak index b596f72..f4e548c 100644 Binary files a/bin/Release/translations/qtwebengine_locales/ko.pak and b/bin/Release/translations/qtwebengine_locales/ko.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/lt.pak b/bin/Release/translations/qtwebengine_locales/lt.pak index 815b775..2def459 100644 Binary files a/bin/Release/translations/qtwebengine_locales/lt.pak and b/bin/Release/translations/qtwebengine_locales/lt.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/lv.pak b/bin/Release/translations/qtwebengine_locales/lv.pak index 1cde1ba..6d8469b 100644 Binary files a/bin/Release/translations/qtwebengine_locales/lv.pak and b/bin/Release/translations/qtwebengine_locales/lv.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/ml.pak b/bin/Release/translations/qtwebengine_locales/ml.pak index d5fca14..3a4fec5 100644 Binary files a/bin/Release/translations/qtwebengine_locales/ml.pak and b/bin/Release/translations/qtwebengine_locales/ml.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/mr.pak b/bin/Release/translations/qtwebengine_locales/mr.pak index b9c28f6..4ee157c 100644 Binary files a/bin/Release/translations/qtwebengine_locales/mr.pak and b/bin/Release/translations/qtwebengine_locales/mr.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/ms.pak b/bin/Release/translations/qtwebengine_locales/ms.pak index 71adbb7..b91edfe 100644 Binary files a/bin/Release/translations/qtwebengine_locales/ms.pak and b/bin/Release/translations/qtwebengine_locales/ms.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/nb.pak b/bin/Release/translations/qtwebengine_locales/nb.pak index ac97bab..2b52e93 100644 Binary files a/bin/Release/translations/qtwebengine_locales/nb.pak and b/bin/Release/translations/qtwebengine_locales/nb.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/nl.pak b/bin/Release/translations/qtwebengine_locales/nl.pak index b0aab7c..8074411 100644 Binary files a/bin/Release/translations/qtwebengine_locales/nl.pak and b/bin/Release/translations/qtwebengine_locales/nl.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/pl.pak b/bin/Release/translations/qtwebengine_locales/pl.pak index 01a937f..ac1ec3c 100644 Binary files a/bin/Release/translations/qtwebengine_locales/pl.pak and b/bin/Release/translations/qtwebengine_locales/pl.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/pt-BR.pak b/bin/Release/translations/qtwebengine_locales/pt-BR.pak index 09fa673..69b05ee 100644 Binary files a/bin/Release/translations/qtwebengine_locales/pt-BR.pak and b/bin/Release/translations/qtwebengine_locales/pt-BR.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/pt-PT.pak b/bin/Release/translations/qtwebengine_locales/pt-PT.pak index f41c420..78b0f18 100644 Binary files a/bin/Release/translations/qtwebengine_locales/pt-PT.pak and b/bin/Release/translations/qtwebengine_locales/pt-PT.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/ro.pak b/bin/Release/translations/qtwebengine_locales/ro.pak index c24f959..c36c3dd 100644 Binary files a/bin/Release/translations/qtwebengine_locales/ro.pak and b/bin/Release/translations/qtwebengine_locales/ro.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/ru.pak b/bin/Release/translations/qtwebengine_locales/ru.pak index c347484..9048d22 100644 Binary files a/bin/Release/translations/qtwebengine_locales/ru.pak and b/bin/Release/translations/qtwebengine_locales/ru.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/sk.pak b/bin/Release/translations/qtwebengine_locales/sk.pak index 36edc9d..3265f3a 100644 Binary files a/bin/Release/translations/qtwebengine_locales/sk.pak and b/bin/Release/translations/qtwebengine_locales/sk.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/sl.pak b/bin/Release/translations/qtwebengine_locales/sl.pak index 353cb81..b723717 100644 Binary files a/bin/Release/translations/qtwebengine_locales/sl.pak and b/bin/Release/translations/qtwebengine_locales/sl.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/sr.pak b/bin/Release/translations/qtwebengine_locales/sr.pak index b1582d0..e6e3976 100644 Binary files a/bin/Release/translations/qtwebengine_locales/sr.pak and b/bin/Release/translations/qtwebengine_locales/sr.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/sv.pak b/bin/Release/translations/qtwebengine_locales/sv.pak index 0c0ae1d..6a63fe2 100644 Binary files a/bin/Release/translations/qtwebengine_locales/sv.pak and b/bin/Release/translations/qtwebengine_locales/sv.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/sw.pak b/bin/Release/translations/qtwebengine_locales/sw.pak index 540daee..3385bc2 100644 Binary files a/bin/Release/translations/qtwebengine_locales/sw.pak and b/bin/Release/translations/qtwebengine_locales/sw.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/ta.pak b/bin/Release/translations/qtwebengine_locales/ta.pak index 8744078..c618172 100644 Binary files a/bin/Release/translations/qtwebengine_locales/ta.pak and b/bin/Release/translations/qtwebengine_locales/ta.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/te.pak b/bin/Release/translations/qtwebengine_locales/te.pak index 5319e44..1806f76 100644 Binary files a/bin/Release/translations/qtwebengine_locales/te.pak and b/bin/Release/translations/qtwebengine_locales/te.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/th.pak b/bin/Release/translations/qtwebengine_locales/th.pak index 730c534..962de86 100644 Binary files a/bin/Release/translations/qtwebengine_locales/th.pak and b/bin/Release/translations/qtwebengine_locales/th.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/tr.pak b/bin/Release/translations/qtwebengine_locales/tr.pak index 6e0d3b1..23396ab 100644 Binary files a/bin/Release/translations/qtwebengine_locales/tr.pak and b/bin/Release/translations/qtwebengine_locales/tr.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/uk.pak b/bin/Release/translations/qtwebengine_locales/uk.pak index 4fa0bde..c3fc264 100644 Binary files a/bin/Release/translations/qtwebengine_locales/uk.pak and b/bin/Release/translations/qtwebengine_locales/uk.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/vi.pak b/bin/Release/translations/qtwebengine_locales/vi.pak index 9f8c528..7ed7974 100644 Binary files a/bin/Release/translations/qtwebengine_locales/vi.pak and b/bin/Release/translations/qtwebengine_locales/vi.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/zh-CN.pak b/bin/Release/translations/qtwebengine_locales/zh-CN.pak index 6afe0f3..69fa578 100644 Binary files a/bin/Release/translations/qtwebengine_locales/zh-CN.pak and b/bin/Release/translations/qtwebengine_locales/zh-CN.pak differ diff --git a/bin/Release/translations/qtwebengine_locales/zh-TW.pak b/bin/Release/translations/qtwebengine_locales/zh-TW.pak index 19c404a..05691cb 100644 Binary files a/bin/Release/translations/qtwebengine_locales/zh-TW.pak and b/bin/Release/translations/qtwebengine_locales/zh-TW.pak differ diff --git a/bin/Release/yhicon.ico b/bin/Release/yhicon.ico new file mode 100644 index 0000000..c7a07f1 Binary files /dev/null and b/bin/Release/yhicon.ico differ diff --git a/scripts/build_msvc2019.bat b/scripts/build_msvc2019.bat new file mode 100644 index 0000000..436e0b6 --- /dev/null +++ b/scripts/build_msvc2019.bat @@ -0,0 +1,7 @@ +@echo off +cd %~dp0 + +set MSVC_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\amd64 + +cd ../#buildmsvc2019 +"%MSVC_PATH%\MSBuild.exe" ESS.sln /t:Rebuild /p:Configuration=Release \ No newline at end of file diff --git a/scripts/cmake_msvc2019.bat b/scripts/cmake_msvc2019.bat new file mode 100644 index 0000000..e59df30 --- /dev/null +++ b/scripts/cmake_msvc2019.bat @@ -0,0 +1,11 @@ +@echo off +cd %~dp0 + +cd .. +@REM rd /S /Q .build +mkdir #buildmsvc2019 +cd #buildmsvc2019 + +@REM Visual Studio 16 2019/Visual Studio 17 2022 +@REM Win32/x64 +cmake ../src -G "Visual Studio 16 2019" -A x64 \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 37b8794..2486320 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -36,19 +36,19 @@ set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG") add_definitions(-DWIN32_LEAN_AND_MEAN) # Qt_PATH 为 Qt 的安装地址 -set(QT_PATH "D:/Programs/Qt5/5.15.2/msvc2019_64") +#set(QT_PATH "D:/Programs/Qt5/5.15.2/msvc2019_64") +set(QT_PATH "D:/Programs/Qt6/6.7.3/msvc2019_64") set(CMAKE_PREFIX_PATH ${QT_PATH}/lib/cmake) # 开启自动编译 set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) -find_package(Qt5 COMPONENTS +find_package(Qt6 COMPONENTS + Core + Gui Widgets - AxContainer Network - SerialBus - SerialPort Charts WebEngineWidgets REQUIRED) @@ -56,7 +56,7 @@ REQUIRED) set(ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) set(THIRDPARTY_PATH ${ROOT_PATH}/../thirdparty) -set(PVLIBS_PATH ${ROOT_PATH}/../libs/pvb) +#set(PVLIBS_PATH ${ROOT_PATH}/../libs/pvb) include_directories( ${ROOT_PATH} @@ -69,8 +69,8 @@ include_directories( ${THIRDPARTY_PATH}/cpp-httplib-0.25.0 ${THIRDPARTY_PATH}/paho_mqtt/include ${THIRDPARTY_PATH}/spdlog-1.13.0/include - ${PVLIBS_PATH}/include/pvserver - ${PVLIBS_PATH}/include/rllib + #${PVLIBS_PATH}/include/pvserver + #${PVLIBS_PATH}/include/rllib ) # 设置编译源文件 @@ -81,28 +81,30 @@ ADD_SOURCE_GROUP(database) ADD_SOURCE_GROUP(protocol) #ADD_SOURCE_GROUP(widgets) #ADD_SOURCE_GROUP(widgets/pages) -ADD_SOURCE_GROUP(pv) -ADD_SOURCE_GROUP(pv/pages) +#ADD_SOURCE_GROUP(pv) +#ADD_SOURCE_GROUP(pv/pages) +ADD_SOURCE_GROUP(qt) set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin) -add_executable(${PROJECT_NAME} ${SOURCE_FILE}) +add_executable(${PROJECT_NAME} ${SOURCE_FILE} "resource.rc") + #set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup") target_link_libraries(${PROJECT_NAME} - Qt5::Widgets - Qt5::AxContainer - Qt5::Network - Qt5::SerialBus - Qt5::SerialPort - Qt5::Charts - Qt5::WebEngineWidgets + Qt6::Core + Qt6::Gui + Qt6::Widgets + Qt6::Network + Qt6::Charts + Qt6::WebEngineWidgets ) + target_link_libraries(${PROJECT_NAME} ws2_32 iphlpapi ${THIRDPARTY_PATH}/mysql/lib/x64/libmysql.lib ${THIRDPARTY_PATH}/paho_mqtt/lib/paho-mqtt3a.lib ${THIRDPARTY_PATH}/paho_mqtt/lib/paho-mqtt3c.lib - ${PVLIBS_PATH}/x64/serverlib.lib - ${PVLIBS_PATH}/x64/rllib.lib + #${PVLIBS_PATH}/x64/serverlib.lib + #${PVLIBS_PATH}/x64/rllib.lib ) \ No newline at end of file diff --git a/src/RCa06216 b/src/RCa06216 new file mode 100644 index 0000000..a443f97 Binary files /dev/null and b/src/RCa06216 differ diff --git a/src/app/AppData.cpp b/src/app/AppData.cpp index e8e3bc4..48b2dea 100644 --- a/src/app/AppData.cpp +++ b/src/app/AppData.cpp @@ -33,8 +33,6 @@ std::string ElectPeriod::dump() } - - void AppData::initFromDB() { auto dao = DaoEntity::create(""); @@ -113,9 +111,9 @@ void AppData::initFromDB() { auto station = std::make_shared(); station->setFields(fields); - this->mapStation[station->id] = station; - mapping.stationName.push_back({std::to_string(station->id), station->name}); - str += ("场站: {" + std::to_string(station->id) + ":" + station->name + "},"); + this->mapStation[station->stationId] = station; + mapping.stationName.push_back({std::to_string(station->stationId), station->name}); + str += ("场站: {" + std::to_string(station->stationId) + ":" + station->name + "},"); } spdlog::info(str); } @@ -210,6 +208,34 @@ void AppData::initFromDB() } } } + + { // 初始化场站设备的历史监测数据 + + vector result; + DAO::queryRuntimeData(dao, Utils::dateStr(), result); + for (auto& item : result) + { + int stationId = item.get("station_id"); + int deviceId = item.get("device_id"); + auto device = this->getDevice(stationId, deviceId); + if (device) + { + int datatype = item.get("datatype"); + std::string value = item.value("value"); + + njson json; + if (JSON::parse(value, json)) + { + std::vector vecVal(json.size()); + for (int i=0; i(json[i]); + } + device->setCache(datatype, vecVal); + } + } + } + } } void AppData::init() @@ -222,10 +248,16 @@ void AppData::init() for (auto& item : mapStation) { auto& station = item.second; - // "tcp://localhost:1883" - station->mqttCli->init(optionMqtt.host, station->code, optionMqtt.username, optionMqtt.password); + + if (station->status == 1) + { + // "tcp://localhost:1883" + station->mqttCli->init(optionMqtt.host, station->code, optionMqtt.username, optionMqtt.password); + } } } + + this->launchDate = Config::option.lunchDate; } std::shared_ptr AppData::getStation(int stationId) diff --git a/src/app/AppData.h b/src/app/AppData.h index f9a46df..6a61ef8 100644 --- a/src/app/AppData.h +++ b/src/app/AppData.h @@ -109,7 +109,7 @@ public: public: /////////////////////////////////////////////////////////////////////////////////////////////// // === 系统 === - int64_t sysActivationTime {}; + std::string launchDate; /////////////////////////////////////////////////////////////////////////////////////////////// // === 数据库 === diff --git a/src/app/Application.cpp b/src/app/Application.cpp index db55822..bd80da1 100644 --- a/src/app/Application.cpp +++ b/src/app/Application.cpp @@ -49,6 +49,9 @@ void Application::init() // 创建主业务循环线程 std::thread([=]() { runThreadMain(); }).detach(); + + // 统计分析 + std::thread([=]() { runThreadStat(); }).detach(); } @@ -56,7 +59,7 @@ void Application::runThreadDevice() { while (!isQuit) { - std::this_thread::sleep_for(std::chrono::milliseconds(10)); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); } } @@ -101,4 +104,33 @@ void Application::runThreadMain() std::this_thread::sleep_for(std::chrono::milliseconds(10)); } +} + + +void Application::runThreadStat() +{ + int nCachePos = 0; + while (!isQuit) + { + int64_t tTime = Utils::time(); + int64_t tDate = Utils::date(); + int64_t delta = tTime-tDate; + int n = delta / 600; + int offset = delta % 600; + bool flagStore = (delta >=0 && delta < 86400 && offset <= 10 && n != nCachePos); + if (flagStore) + { + nCachePos = n; + std::string dt = Utils::dateStr(tDate); + for (auto item: appdata.mapStation) + { + item.second->writeRuntimeData(dt, nCachePos); + } + } + else + { + //spdlog::info("保存历史数据倒计时: {}", 600 - offset); + } + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); + } } \ No newline at end of file diff --git a/src/app/Application.h b/src/app/Application.h index c614ce7..3832257 100644 --- a/src/app/Application.h +++ b/src/app/Application.h @@ -29,6 +29,8 @@ public: void runThreadDevice(); + void runThreadStat(); + public: bool isQuit = false; diff --git a/src/app/Config.cpp b/src/app/Config.cpp index b1642fe..e4129f6 100644 --- a/src/app/Config.cpp +++ b/src/app/Config.cpp @@ -22,11 +22,11 @@ bool Config::init(std::string filename) if (jsonroot.contains("database")) { njson json = jsonroot.at("database"); - option.database.host = json.contains("host") ? json.at("host") : ""; - option.database.port = json.contains("port") ? json.at("port") : 0; - option.database.user = json.contains("user") ? json.at("user") : ""; - option.database.passwd = json.contains("passwd") ? json.at("passwd") : ""; - option.database.dbname = json.contains("dbname") ? json.at("dbname") : ""; + JSON::read(json, "host", option.database.host); + JSON::read(json, "port", option.database.port); + JSON::read(json, "user", option.database.user); + JSON::read(json, "passwd", option.database.passwd); + JSON::read(json, "dbname", option.database.dbname); spdlog::info("[config] parse database success. host={}", option.database.host); } @@ -60,10 +60,8 @@ bool Config::init(std::string filename) spdlog::info("[config] parse mqtt failed: not found."); } - if (jsonroot.contains("weburl")) - { - JSON::read(jsonroot, "weburl", option.webSrvUrl); - } + JSON::read(jsonroot, "weburl", option.webSrvUrl); + JSON::read(jsonroot, "launchdate", option.lunchDate); return true; } \ No newline at end of file diff --git a/src/app/Config.h b/src/app/Config.h index 35e649a..f800504 100644 --- a/src/app/Config.h +++ b/src/app/Config.h @@ -27,6 +27,7 @@ struct AppOption } mqtt; std::string webSrvUrl; + std::string lunchDate; }; diff --git a/src/app/Device.cpp b/src/app/Device.cpp index 88d2149..ddb0f95 100644 --- a/src/app/Device.cpp +++ b/src/app/Device.cpp @@ -5,6 +5,13 @@ #include "protocol/CommEntity.h" #include "common/JsonN.h" +#include + +static std::unordered_set g_setCacheDeviceType = {3, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110}; +static bool CheckCacheType(int type) +{ + return g_setCacheDeviceType.find(type) != g_setCacheDeviceType.end(); +} std::shared_ptr Device::create(Fields& fields) { @@ -40,15 +47,15 @@ std::shared_ptr Device::create(Fields& fields) } } - int step = 600; - for (int i = 0; i*600<86400; ++i) - { - double voltage = double(Utils::random(20000, 30000))*0.01; - double current = double(Utils::random(1000, 2000))*0.01; - device->mapCacheVoltage[i*step] = voltage; - device->mapCacheCurrent[i*step] = current; - device->mapCachePower[i*step] = voltage * current; - } + //int step = 600; + //for (int i = 0; i*600<86400; ++i) + //{ + // double voltage = double(Utils::random(20000, 30000))*0.01; + // double current = double(Utils::random(1000, 2000))*0.01; + // device->mapCacheVoltage[i*step] = voltage; + // device->mapCacheCurrent[i*step] = current; + // device->mapCachePower[i*step] = voltage * current; + //} // 启动通讯,该函数中会自动判断isOpen状态,选择是否进行通讯连接 //device->startComm(); @@ -117,9 +124,107 @@ void Device::getCachePower(std::vector& vec) } } +int64_t GetCurrentTimePos(int step) +{ + auto tp = chrono::system_clock::now(); + int64_t tTime = chrono::time_point_cast(tp).time_since_epoch().count(); + std::time_t t = chrono::system_clock::to_time_t(tp); + std::tm* tmlocal = localtime(&t); + tmlocal->tm_hour = 0; + tmlocal->tm_min = 0; + tmlocal->tm_sec = 0; + int64_t tDate = chrono::time_point_cast(chrono::system_clock::from_time_t(mktime(tmlocal))).time_since_epoch().count(); + return (tTime - tDate) / step; +} + +void Device::setCache(int datatype, std::vector& vec) +{ + std::map* mapptr = NULL; + if (datatype == 1) { mapptr = &mapCacheVoltage; } + else if (datatype == 2) { mapptr = &mapCacheCurrent; } + else if (datatype == 3) { mapptr = &mapCachePower; } + + if (mapptr) + { + const int step = 600; + const int N = 86400/step; + + int n = GetCurrentTimePos(step); + for (int i = 0; itype)) + { + return false; + } + if (npos == 0) + { + mapCacheVoltage.clear(); + mapCacheCurrent.clear(); + mapCachePower.clear(); + } + // 根据设备类型从参数(寄存器地址)中读取实时数据进行保存 + mapCacheVoltage[npos] = Utils::random(100, 200); + mapCacheCurrent[npos] = Utils::random(100, 200); + mapCachePower[npos] = Utils::random(100, 200); + + return true; +} + +void Device::storeDB(int npos) +{ +} + + + + + void Device::setParam(std::string k, std::string v) { mapParams[k] = v; + + if (type == 3 ) // 电表 + { + if (k == "") this->err = Utils::toInt(v); + } + else if (type == 101) // EMS + { + } + else if (type == 102) // PCS + { + if (k == "0x1003") err = Utils::toInt(v); // 故障状态 R uint16 1故障,0正常 0 0x1003 + if (k == "0x1005") online = Utils::toInt(v); // 设备在线 R uint16 1在线,0无效 1 0x1005 + if (k == "0x1009") running = (v=="1" || v=="2"); //充放状态 R uint16 0:待机, 1:充电, 2:放电, 3:搁置 0 0x1009 + } + else if (type == 103) // PCU + { + if (k == "0x1002") err = Utils::toInt(v); //故障状态 R uint16 1故障,0正常 0 0x1002 + if (k == "0x1004") online = Utils::toInt(v); //设备在线 R uint16 1在线,0无效 1 0x1004 + if (k == "0x1006") running = Utils::toInt(v); //启停状态 R uint16 1开机,0关机 1 0x1006 + } + else if (type == 104) // BMS + { + if (k == "0x004A") { err = (v=="1"); online = 1; } //运行状态 R uint16 0 运行状态 0-正常 1-告警 2-保护 0x004A + if (k == "0x004B") running = (v=="1" || v=="2"); //充放电状态 R uint16 0 0-待机 1-充电 2-放电 0x004B + } + else if (type == 105) // BCU + { + if (k == "0xA003") running = (v=="51" || v=="68"); //蓄电池充放电状态 R uint16 "0x11开路,0x22待机,0x33充电,0x44放电" 34 0xA003 + if (k == "0xA004") err = (v=="85"); online=1; //电池组运行状态 R uint16 "0x11跳机,0x22待机,0x33放空,0x44充满,0x55预警,0x66正常" 102 0xA004 + } + else if (type == 106) // 充电桩 + { + } + else if (type == 109) // 光伏板 + { + } } std::string Device::getParam(std::string k, std::string defaultVal) @@ -132,6 +237,7 @@ std::string Device::getParam(std::string k, std::string defaultVal) return defaultVal; } + void Device::getRuntimeParams(std::vector>& params) { // 3 电表 @@ -143,35 +249,70 @@ void Device::getRuntimeParams(std::vector>& // 106 充电桩 // 109 光伏板 + if (this->type == 3) { - params.push_back({"A相电压", getParam("0x000B", "0.0") + "V"}); - params.push_back({"B相电压", getParam("0x000D", "0.0") + "V"}); - params.push_back({"C相电压", getParam("0x000F", "0.0") + "V"}); - params.push_back({"A相电流", getParam("0x0011", "0.0") + "A"}); - params.push_back({"B相电流", getParam("0x0013", "0.0") + "A"}); - params.push_back({"C相电流", getParam("0x0015", "0.0") + "A"}); + params.push_back({"A相电压", getParam("0x000B", "0.0") + " V"}); + params.push_back({"A相电流", getParam("0x000D", "0.0") + " A"}); + params.push_back({"B相电压", getParam("0x000F", "0.0") + " V"}); + params.push_back({"B相电流", getParam("0x0011", "0.0") + " A"}); + params.push_back({"C相电压", getParam("0x0013", "0.0") + " V"}); + params.push_back({"C相电流", getParam("0x0015", "0.0") + " A"}); } - else if (this->type == 101) + else if (this->type == 101) // EMS { - params.push_back({"额定电压", getParam("0x0001", "0.0") + "V"}); - params.push_back({"实时电压", getParam("0x0001", "0.0") + "V"}); - params.push_back({"额定电流", getParam("0x0001", "0.0") + "A"}); - params.push_back({"实时电流", getParam("0x0001", "0.0") + "A"}); - params.push_back({"额定功率", getParam("0x0001", "0.0") + "kW"}); - params.push_back({"实时功率", getParam("0x0001", "0.0") + "A"}); + params.push_back({"A相电压", getParam("0x107E", "0.0") + " V"}); + params.push_back({"A相电流", getParam("0x1084", "0.0") + " A"}); + params.push_back({"B相电压", getParam("0x1080", "0.0") + " V"}); + params.push_back({"B相电流", getParam("0x1086", "0.0") + " A"}); + params.push_back({"C相电压", getParam("0x1082", "0.0") + " V"}); + params.push_back({"C相电流", getParam("0x1088", "0.0") + " A"}); + } + else if (this->type == 102) // PCS + { + params.push_back({"A相电压", getParam("0x0010", "0.0") + " V"}); + params.push_back({"A相电流", getParam("0x0019", "0.0") + " A"}); + params.push_back({"B相电压", getParam("0x0011", "0.0") + " V"}); + params.push_back({"B相电流", getParam("0x001A", "0.0") + " A"}); + params.push_back({"C相电压", getParam("0x0011", "0.0") + " V"}); + params.push_back({"C相电流", getParam("0x001B", "0.0") + " A"}); + } + else if (this->type == 103) // PCU + { + params.push_back({"A相电压", getParam("0x0013", "0.0") + " V"}); + params.push_back({"A相电流", getParam("0x001C", "0.0") + " A"}); + params.push_back({"B相电压", getParam("0x0014", "0.0") + " V"}); + params.push_back({"B相电流", getParam("0x001D", "0.0") + " A"}); + params.push_back({"C相电压", getParam("0x0015", "0.0") + " V"}); + params.push_back({"C相电流", getParam("0x001E", "0.0") + " A"}); + } + else if (this->type == 104) // BMS + { + params.push_back({"SOC", getParam("0x0001", "0") + " %"}); + params.push_back({"SOH", getParam("0x0002", "0") + " %"}); + params.push_back({"电压", getParam("0x0003", "0.0") + " V"}); + params.push_back({"电流", getParam("0x0005", "0.0") + " A"}); + params.push_back({"单体最大电压", getParam("0x0021", "0.0") + " V"}); + params.push_back({"单体最小电压", getParam("0x0024", "0.0") + " V"}); + params.push_back({"单体最大温度", getParam("0x0029", "0.0") + " ℃"}); + params.push_back({"单体最小温度", getParam("0x002C", "0.0") + " ℃"}); + } + else if (this->type == 105) // BCU + { + params.push_back({"簇电压", getParam("0x0003", "0.0") + " V"}); + params.push_back({"簇电流", getParam("0x0005", "0") + " A"}); + params.push_back({"簇温度", getParam("0x0007", "0.0") + " ℃"}); + params.push_back({"簇电阻", getParam("0x0009", "0.0") + " Ω"}); + params.push_back({"簇SOC", getParam("0x000B", "0") + " %"}); + params.push_back({"簇SOH", getParam("0x000C", "0") + " %"}); } - //else if (this->type == 101) - //{ - - //} else { - params.push_back({"额定电压", getParam("0x0001", "0.0") + "V"}); - params.push_back({"实时电压", getParam("0x0001", "0.0") + "V"}); - params.push_back({"额定电流", getParam("0x0001", "0.0") + "A"}); - params.push_back({"实时电流", getParam("0x0001", "0.0") + "A"}); - params.push_back({"额定功率", getParam("0x0001", "0.0") + "kW"}); - params.push_back({"实时功率", getParam("0x0001", "0.0") + "A"}); + params.push_back({"额定电压", getParam("0x0001", "0.0") + " V"}); + params.push_back({"实时电压", getParam("0x0001", "0.0") + " V"}); + params.push_back({"额定电流", getParam("0x0001", "0.0") + " A"}); + params.push_back({"实时电流", getParam("0x0001", "0.0") + " A"}); + params.push_back({"额定功率", getParam("0x0001", "0.0") + " W"}); + params.push_back({"实时功率", getParam("0x0001", "0.0") + " W"}); } } diff --git a/src/app/Device.h b/src/app/Device.h index cd5ed36..423baa1 100644 --- a/src/app/Device.h +++ b/src/app/Device.h @@ -4,6 +4,7 @@ #include #include #include +#include #include "common/Fields.h" @@ -15,18 +16,24 @@ class Device public: static std::shared_ptr create(Fields& fields); - int startComm(); void getCacheVoltage(std::vector& vec); void getCacheCurrent(std::vector& vec); void getCachePower(std::vector& vec); + // int datatype: 1: 电压,2:电流,3:功率 + void setCache(int datatype, std::vector& vec); + + bool cache(int npos); + void storeDB(int npos); + void setParam(std::string k, std::string v); std::string getParam(std::string k, std::string defaultVal = ""); void getRuntimeParams(std::vector>& params); + public: int deviceId = -1; int type = -1; diff --git a/src/app/Station.cpp b/src/app/Station.cpp index 2121fde..b68793d 100644 --- a/src/app/Station.cpp +++ b/src/app/Station.cpp @@ -6,8 +6,9 @@ #include "common/Spdlogger.h" #include "common/Utils.h" #include "protocol/MqttEntity.h" +#include "common/JsonN.h" -Station::Station() : id(0) +Station::Station() : stationId(0) { mqttCli = std::make_shared(); @@ -32,11 +33,12 @@ Station::Station() : id(0) void Station::setFields(Fields& fields) { - this->id = fields.get(DMStation::STATION_ID); + this->stationId = fields.get(DMStation::STATION_ID); this->name = fields.value(DMStation::NAME); this->energyCapacity = fields.get(DMStation::CAPACITY); this->workModeId = fields.get(DMStation::WORK_MODE); this->code = fields.value(DMStation::CODE); + this->status = fields.get(DMStation::STATUS); } void Station::addDevice(int deviceId, std::shared_ptr device) @@ -99,7 +101,7 @@ void Station::setWorkMode(int modeId) this->workModeId = modeId; std::string sql = SQL(SQL::TYPE::update).table(DMStation::TABLENAME) .update(DMStation::WORK_MODE, std::to_string(modeId)) - .where(DMStation::STATION_ID + "=" + std::to_string(id)).str(); + .where(DMStation::STATION_ID + "=" + std::to_string(stationId)).str(); Errcode err = DAO::exec(NULL, sql); if (err != Errcode::OK) { @@ -111,10 +113,49 @@ void Station::setPolicy(int policyId) { std::string sql = SQL(SQL::TYPE::update).table(DMStation::TABLENAME) .update(DMStation::POLICY_ID, std::to_string(policyId)) - .where(DMStation::STATION_ID + "=" + std::to_string(id)).str(); + .where(DMStation::STATION_ID + "=" + std::to_string(stationId)).str(); Errcode err = DAO::exec(NULL, sql); if (err != Errcode::OK) { spdlog::error("set station policy failed."); } } + +static std::string MapValueToJson(int npos, std::map& mapV) +{ + njson jsonarray = njson::array(); + for (int i = 0; i<=npos; i++) + { + jsonarray.push_back(mapV[i]); + } + return jsonarray.dump(); +} + +void Station::writeRuntimeData(std::string dt, int npos) +{ + auto dao = DaoEntity::create("history_day"); + for (auto iter = mapDevice.begin(); iter!=mapDevice.end(); ++iter) + { + auto device = iter->second; + if (device->cache(npos)) + { + Fields fields; + fields.set("dt", dt); + fields.set("station_id", this->stationId); + fields.set("device_id", device->deviceId); + fields.set("datatype", 1); + fields.set("value", MapValueToJson(npos, device->mapCacheVoltage)); + DAO::insertRuntimeData(dao, fields); + + fields.set("datatype", 2); + fields.set("value", MapValueToJson(npos, device->mapCacheCurrent)); + DAO::insertRuntimeData(dao, fields); + + fields.set("datatype", 3); + fields.set("value", MapValueToJson(npos, device->mapCachePower)); + DAO::insertRuntimeData(dao, fields); + + spdlog::info("[device] write runtime date to database, deviceId={}", device->deviceId); + } + } +} diff --git a/src/app/Station.h b/src/app/Station.h index 7d80c33..183200f 100644 --- a/src/app/Station.h +++ b/src/app/Station.h @@ -105,12 +105,15 @@ public: void setWorkMode(int modeId); void setPolicy(int policyId); + + void writeRuntimeData(std::string dt, int npos); public: - int id {}; + int stationId {}; std::string name; std::string code; + int status {0}; bool isConnected {false}; int workModeId {}; // 运行模式 diff --git a/src/common/Fields.cpp b/src/common/Fields.cpp index 56130dd..edd287e 100644 --- a/src/common/Fields.cpp +++ b/src/common/Fields.cpp @@ -35,7 +35,7 @@ void Fields::append(Fields& datafield) } } -std::unordered_map& Fields::map() +std::map& Fields::map() { return mapFields; } diff --git a/src/common/Fields.h b/src/common/Fields.h index 3c1be32..db3275d 100644 --- a/src/common/Fields.h +++ b/src/common/Fields.h @@ -72,7 +72,7 @@ public: /** * 获取数据项 map */ - std::unordered_map& map(); + std::map& map(); /** * 获取数据项的大小 @@ -140,7 +140,7 @@ public: void parseJson(std::string jsonstr); private: - std::unordered_map mapFields; + std::map mapFields; }; #endif \ No newline at end of file diff --git a/src/common/JsonN.cpp b/src/common/JsonN.cpp index ee92cd7..fc30ebc 100644 --- a/src/common/JsonN.cpp +++ b/src/common/JsonN.cpp @@ -1,6 +1,12 @@ #include "JsonN.h" #include "common/Utils.h" + +static std::string JsonValueToStr(njson& json) +{ + +} + bool JSON::load(std::string jsonfile, njson& json) { std::ifstream ifs(jsonfile); @@ -65,4 +71,25 @@ void JSON::parse(std::string jsonstr, std::vector& vd) { vd = jsonroot.get>(); } +} + +std::string JSON::toStr(njson& json) +{ + std::string v; + switch (json.type()) + { + case njson::value_t::string: { v = json.get(); } break; + case njson::value_t::boolean: { v = Utils::toStr(json.get()); } break; + case njson::value_t::number_integer: { v = Utils::toStr(json.get()); } break; + case njson::value_t::number_unsigned: { v = Utils::toStr(json.get()); } break; + case njson::value_t::number_float: { v = Utils::toStr(json.get()); } break; + case njson::value_t::null: {} { v = "null"; } break; + case njson::value_t::object: {} break; + case njson::value_t::array: {} break; + case njson::value_t::binary: {} break; + case njson::value_t::discarded: {} break; + default: + break; + } + return v; } \ No newline at end of file diff --git a/src/common/JsonN.h b/src/common/JsonN.h index b24485d..96515c6 100644 --- a/src/common/JsonN.h +++ b/src/common/JsonN.h @@ -4,6 +4,7 @@ #include #include #include +#include using njson = nlohmann::json; @@ -53,26 +54,46 @@ class JSON public: static bool load(std::string jsonfile, njson& json); - static bool parse(std::string jsonstr, njson& json); template - static void read(njson& json, std::string k, T& v) + static bool read(njson& json, std::string k, T& v) { try - { - if (json.contains(k)) { v = json.at(k).get(); } - } - catch (const nlohmann::detail::exception& e) - { - std::cout << "JSON read error: k=" << k << ", err=" << e.what() << std::endl; + { + if (json.contains(k)) + { + v = json.at(k).get(); + return true; + } } + catch (const nlohmann::detail::exception& e) { Spdlogger::info("JSON read error: k={}, err={}", k, e.what()); } + return false; + } + + template + static T read(njson& json, std::string k) + { + T v {}; + try { if (json.contains(k)) { v = json.at(k).get(); } } + catch (const nlohmann::detail::exception& e) { Spdlogger::info("JSON read error: k={}, err={}", k, e.what()); } + return v; + } + + template + static T get(njson& json) + { + T v {}; + try { v = json.get(); } + catch (const nlohmann::detail::exception& e) { Spdlogger::info("JSON read error: err={}, json={}", e.what(), json.dump()); } + return v; } static std::string readStr(njson& json, std::string k); static void parse(std::string jsonstr, std::vector& vd); + static std::string toStr(njson& json); }; diff --git a/src/common/Spdlogger.cpp b/src/common/Spdlogger.cpp index b782ed1..a9b45bd 100644 --- a/src/common/Spdlogger.cpp +++ b/src/common/Spdlogger.cpp @@ -30,7 +30,7 @@ void Spdlogger::init(spdlog::level::level_enum log_level, std::string filename) //fileSink->set_pattern("[%T] [%l] %v"); // 设置日志格式 // 每日文件sink(可选,每天生成新文件) - auto dailySink = std::make_shared("logs/mcs.log", 0, 0); + auto dailySink = std::make_shared("logs/ess.log", 0, 0); dailySink->set_level(spdlog::level::debug); //dailySink->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] %v"); diff --git a/src/common/Utils.h b/src/common/Utils.h index 5d20ed0..d544e8a 100644 --- a/src/common/Utils.h +++ b/src/common/Utils.h @@ -75,8 +75,8 @@ public: static unsigned short crc16(unsigned char* data, unsigned int len); - static string Utils::gbkToUtf8(string s); - static string Utils::utf8ToGbk(string s); + static string gbkToUtf8(string s); + static string utf8ToGbk(string s); static void sleep_ms(int ms); diff --git a/src/database/Dao.cpp b/src/database/Dao.cpp index 0e39fbc..1373ba4 100644 --- a/src/database/Dao.cpp +++ b/src/database/Dao.cpp @@ -551,7 +551,25 @@ Errcode DAO::queryPolicyTypeDef(std::shared_ptr dao, vector& Errcode DAO::insertRuntimeData(std::shared_ptr dao, Fields& fields) { - if (!dao) { dao = DaoEntity::create("history1"); } + if (!dao) { dao = DaoEntity::create("history_day"); } int ret = dao->duplicateUpdate(fields, {"value"}); return Errcode(ret); +} + + +Errcode DAO::queryRuntimeData(std::shared_ptr dao, std::string dt, int stationId, int deviceId, vector& result) +{ + if (!dao) { dao = DaoEntity::create("history_day"); } + std::string sql = "SELECT * FROM history_day WHERE dt='" + dt + "' AND station_id='" + std::to_string(stationId) + + "' AND device_id='" + std::to_string(deviceId) + "';"; + int ret = dao->exec(sql, result); + return Errcode(ret); +} + +Errcode DAO::queryRuntimeData(std::shared_ptr dao, std::string dt, vector& result) +{ + if (!dao) { dao = DaoEntity::create("history_day"); } + std::string sql = "SELECT * FROM history_day WHERE dt='" + dt + "';"; + int ret = dao->exec(sql, result); + return Errcode(ret); } \ No newline at end of file diff --git a/src/database/Dao.h b/src/database/Dao.h index 48e24f4..b6e9a4c 100644 --- a/src/database/Dao.h +++ b/src/database/Dao.h @@ -118,5 +118,13 @@ public: static Errcode queryPolicyTypeDef(std::shared_ptr dao, vector& result); + + + + + /////////////////////////////////////////////////////////////////////////////////////////////// + // === 设备历史监测数据管理 === static Errcode insertRuntimeData(std::shared_ptr dao, Fields& fields); + static Errcode queryRuntimeData(std::shared_ptr dao, std::string dt, int stationId, int deviceId, vector& result); + static Errcode queryRuntimeData(std::shared_ptr dao, std::string dt, vector& result); }; \ No newline at end of file diff --git a/src/database/DaoEntity.cpp b/src/database/DaoEntity.cpp index b97959c..6771809 100644 --- a/src/database/DaoEntity.cpp +++ b/src/database/DaoEntity.cpp @@ -105,6 +105,7 @@ int DaoEntity::insertFields(vector& vec_fields) } if (!values.empty()) { values += ","; } values += ("'" + v + "'"); + std::cout << k << std::endl; } if (first) { diff --git a/src/database/DataModelDef.h b/src/database/DataModelDef.h index a4b4ab3..e47cfd6 100644 --- a/src/database/DataModelDef.h +++ b/src/database/DataModelDef.h @@ -184,7 +184,7 @@ namespace DMStatStation namespace DMHistory1 { - const string TABLENAME = "history1"; + const string TABLENAME = "history_day"; const string DT = "dt"; const string STATION_ID = "station_id"; const string DEVICE_ID = "device_id"; diff --git a/src/main.cpp b/src/main.cpp index 03e6fa3..fcc56a5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,10 +15,7 @@ #include "widgets/MainWindow.h" -#include "pv/PvApp.h" -#include "pv/PvUser.h" -#include "rlsocket.h" #include "common/Spdlogger.h" #include "database/DaoEntity.h" @@ -30,28 +27,27 @@ #include #include "DataStruct.h" -#include -#include +#include "qt/MainWeb.h" -#define wsa rlwsa -void rlSocketTest() -{ - rlwsa(); - rlSocket socket("127.0.0.1", 19801, 1); - int ret = socket.connect(); - std::string s1 = "helloworld"; - socket.write(s1.c_str(), s1.size()); - - std::vector buf(1024, 0); - while (true) - { - int len = socket.read(&buf[0], 1, 0); - if (len > 0) - { - std::cout << "===>>> " << std::string(buf.begin(), buf.end()); - } - } -} +//#define wsa rlwsa +//void rlSocketTest() +//{ +// rlwsa(); +// rlSocket socket("127.0.0.1", 19801, 1); +// int ret = socket.connect(); +// std::string s1 = "helloworld"; +// socket.write(s1.c_str(), s1.size()); +// +// std::vector buf(1024, 0); +// while (true) +// { +// int len = socket.read(&buf[0], 1, 0); +// if (len > 0) +// { +// std::cout << "===>>> " << std::string(buf.begin(), buf.end()); +// } +// } +//} void memberJsonTest() { @@ -143,42 +139,42 @@ int main(int argc, char** argv) Application::instance().init(); // 启动 PV 服务主线程 - std::thread([=]() - { - // 运行pv主流程 - PARAM p; - int s; - pvInit(argc, argv, &p); - /* here you may interpret ac,av and set p->user to your data */ - while (1) - { - s = pvAccept(&p); - if (s != -1) pvCreateThread(&p, s); - std::this_thread::sleep_for(std::chrono::milliseconds(10)); - } - }).detach(); + //std::thread([=]() + // { + // // 运行pv主流程 + // PARAM p; + // int s; + // pvInit(argc, argv, &p); + // /* here you may interpret ac,av and set p->user to your data */ + // while (1) + // { + // s = pvAccept(&p); + // if (s != -1) pvCreateThread(&p, s); + // std::this_thread::sleep_for(std::chrono::milliseconds(10)); + // } + // }).detach(); QApplication qapp(argc, argv); - - QMainWindow mainWin; - mainWin.setWindowTitle("光储充站监控与运营管理平台"); - mainWin.setGeometry(0, 0, 1920, 1080); - QWebEngineView webView; - webView.setGeometry(0, 0, 1920, 1080); - // 默认设置透明, 解决加载时的白屏闪烁 - webView.page()->setBackgroundColor(Qt::transparent); - webView.setContextMenuPolicy(Qt::NoContextMenu); - webView.load(QUrl(Config::option.webSrvUrl.c_str())); - //webView.load(QUrl("file:///assets/html/main.html")); - //connect(wWebView.get(), &QWebEngineView::loadFinished, this, &MyWidget::slotLoadFinished); - //std::string htmlContent = "HelloWorld"; - //webView->setHtml(htmlContent.c_str(), QUrl("file:///assets/html/")); - webView.show(); - mainWin.setCentralWidget(&webView); - - mainWin.show(); + qapp.setWindowIcon(QIcon("./yhicon.ico")); + MainWeb mainWin; qapp.exec(); + + //QApplication a(argc, argv); + //QMainWindow w; + + //QWebEngineView webView(&w); + //webView.load(QUrl("http://127.0.0.1:19600/")); + + //w.setCentralWidget(&webView); + //w.setWindowTitle("Qt 6.7 WebEngine Demo"); + //w.resize(1280, 720); + //w.show(); + //webView.show(); + //a.exec(); + + + // 运行QT主窗口 //QApplication qapp(argc, argv); //MainWindow mainWin; diff --git a/src/protocol/HttpEntity.cpp b/src/protocol/HttpEntity.cpp index 3de980d..2f33a11 100644 --- a/src/protocol/HttpEntity.cpp +++ b/src/protocol/HttpEntity.cpp @@ -151,6 +151,7 @@ static std::map g_mapHttpHandlerGet = {"/queryDevicTypeDef", HandlerOptions(&HttpEntity::queryDevicTypeDef, {})}, {"/queryDevicByCategory", HandlerOptions(&HttpEntity::queryDevicByCategory, {DMStation::STATION_ID, "category"})}, {"/queryDevicCharts", HandlerOptions(&HttpEntity::queryDevicCharts, {DMStation::STATION_ID, "device_id"})}, + {"/queryDeviceBCUDetail", HandlerOptions(&HttpEntity::queryDeviceBCUDetail, {DMStation::STATION_ID, "device_id"})}, {"/queryPolicyList", HandlerOptions(&HttpEntity::queryPolicyList, {})}, @@ -165,8 +166,8 @@ static std::map g_mapHttpHandlerGet = {"/queryStatSystem", HandlerOptions(&HttpEntity::queryStatSystem, {})}, {"/queryStatTotal", HandlerOptions(&HttpEntity::queryStatTotal, {})}, - {"/queryStatStation", HandlerOptions(&HttpEntity::queryStatStation, {})}, {"/queryStatDayList", HandlerOptions(&HttpEntity::queryStatDayList, {})}, + {"/queryStatCharts", HandlerOptions(&HttpEntity::queryStatCharts, {})}, {"/queryEnvironment", HandlerOptions(&HttpEntity::queryEnvironment, { "station_id"})}, @@ -299,17 +300,42 @@ Errcode HttpEntity::login(const httplib::Request& req, njson& json, std::string& if (err == Errcode::OK) { json["token"] = token; + json["account"] = account; std::vector vecPermission; int roleId = fields.get(DMRole::ROLE_ID); DAO::queryRolePermission(dao, roleId, vecPermission); njson nodePermission = njson::array(); - for (auto& item : vecPermission) + std::map mapParentPos; + for (int i=0; isecond]["children"].push_back(node); + } + } } json["permission"] = nodePermission; } @@ -406,25 +432,56 @@ Errcode HttpEntity::queryRoleList(const httplib::Request& req, njson& json, std: { return err; } + std::map> mapP; - std::map> mapPermission; - for (auto& fields: vecPermission) + for (int i = 0; i& vecP = mapP[roleId]; + + std::map mapParentPos; + for (int i = 0; isecond]["children"].push_back(node); + } + } + } + item["permission"] = jsonpermission; } } return err; @@ -501,7 +558,7 @@ Errcode HttpEntity::insertStation(const httplib::Request& req, njson& json, std: Errcode HttpEntity::updateStation(const httplib::Request& req, njson& json, std::string& errmsg) { Fields params; - GetRequestParam(req, {"station_id", "name", "address", "lon", "lat", "tel", "capacity", "status"}, params); + GetRequestParam(req, {"station_id", "name", "address", "lon", "lat", "tel", "capacity", "status", "work_mode"}, params); params.check("capacity", "", "0.0"); params.check("lon", "", "0.0"); params.check("lat", "", "0.0"); @@ -550,7 +607,7 @@ Errcode HttpEntity::queryStationOverview(const httplib::Request& req, njson& jso { return Errcode(ret); } - njson jsonStorage = njson::parse(R"({"category":1, "count":0, "power":0.0})"); + njson jsonStorage = njson::parse(R"({"category":1, "gateway":0, "count":0, "power":0.0})"); njson jsonCharge = njson::parse(R"({"category":2, "count":0, "power":0.0})"); njson jsonSolar = njson::parse(R"({"category":3, "count":0, "power":0.0})"); njson jsonSecurity = njson::parse(R"({"category":4, "count":0, "power":0.0})"); @@ -739,6 +796,17 @@ Errcode HttpEntity::queryDevicCharts(const httplib::Request& req, njson& json, s return Errcode::OK; } +Errcode HttpEntity::queryDeviceBCUDetail(const httplib::Request& req, njson& json, std::string& errmsg) +{ + njson jsondata = njson::array(); + for (int i = 0; i<=100; ++i) + { + jsondata.push_back({{"SOC", "1"}, {"SOH", "1"}, {"V", "1"}, {"T", "1"}, {"R_i", "1"}}); + } + json["data"] = jsondata; + return Errcode::OK; +} + Errcode HttpEntity::queryPolicyList(const httplib::Request& req, njson& json, std::string& errmsg) { PageInfo pageinfo; @@ -839,7 +907,7 @@ Errcode HttpEntity::queryStatSystem(const httplib::Request& req, njson& json, st auto& appdata = Application::data(); njson jsondata; - jsondata["launch_date"] = "2025-01-01"; //: 系统上线启用日期,格式:yyyy-mm-dd + jsondata["launch_date"] = appdata.launchDate; //: 系统上线启用日期,格式:yyyy-mm-dd jsondata["income_total"] = std::to_string(Utils::random(100, 200)); // : 累计收益(元),精度0.01 jsondata["station_num"] = Utils::toStr(appdata.getStationCount()); // : 能源站数量 jsondata["storage_device_num "] = Utils::toStr(appdata.getStationCount()); //: 储能设备数量 @@ -857,49 +925,31 @@ Errcode HttpEntity::queryStatTotal(const httplib::Request& req, njson& json, std { std::string station_id = req.get_param_value("station_id"); std::string category = req.get_param_value("category"); - + njson jsondata; - jsondata["station_id"] = "1"; - jsondata["launch_date"] = "2025-01-01"; //场站上线日期 - jsondata["usage_rate"] = "12"; - jsondata["storage_elect_in"] = "123.123"; //储能充电电量(kWh),精度:0.001 - jsondata["storage_elect_out"] = "123.123"; //储能放电电量(kWh),精度:0.001 - jsondata["storage_num_in"] = "1"; //储能设备充电次数 - jsondata["storage_num_out"] = "1"; //储能设备放电次数 - jsondata["storage_num_err"] = "1"; //储能设备故障次数 - jsondata["solar_elect_gen"] = "123.123"; //光伏发电电量(kWh),精度:0.001 - jsondata["solar_elect_grid"] = "123.123"; //光伏入网电量(kWh),精度:0.001 - jsondata["solar_num_err"] = "1"; //光伏设备故障次数 - jsondata["charge_elect"] = "123.123"; //充电设备充电电量(kWh),精度:0.001 - jsondata["charge_num"] = "1"; //充电设备充电次数 - jsondata["charge_num_err"] = "1"; //充电设备故障次数 - jsondata["income_elect"] = "123.123"; //发电收益(元),精度:0.01 - jsondata["income_charge"] = "123.123"; //充电收益(元),精度:0.01 + auto station = Application::data().getStation(Utils::toInt(station_id)); + if (station) + { + jsondata["station_id"] = station_id; + jsondata["launch_date"] = "2025-09-01"; //场站上线日期 + jsondata["usage_rate"] = "12"; + jsondata["storage_elect_in"] = "123.123"; //储能充电电量(kWh),精度:0.001 + jsondata["storage_elect_out"] = "123.123"; //储能放电电量(kWh),精度:0.001 + jsondata["storage_num_in"] = "1"; //储能设备充电次数 + jsondata["storage_num_out"] = "1"; //储能设备放电次数 + jsondata["storage_num_err"] = "1"; //储能设备故障次数 + jsondata["solar_elect_gen"] = "123.123"; //光伏发电电量(kWh),精度:0.001 + jsondata["solar_elect_grid"] = "123.123"; //光伏入网电量(kWh),精度:0.001 + jsondata["solar_num_err"] = "1"; //光伏设备故障次数 + jsondata["charge_elect"] = "123.123"; //充电设备充电电量(kWh),精度:0.001 + jsondata["charge_num"] = "1"; //充电设备充电次数 + jsondata["charge_num_err"] = "1"; //充电设备故障次数 + jsondata["income_elect"] = "123.123"; //发电收益(元),精度:0.01 + jsondata["income_charge"] = "123.123"; //充电收益(元),精度:0.01 - json["data"] = jsondata; - return Errcode::OK; -} -Errcode HttpEntity::queryStatStation(const httplib::Request& req, njson& json, std::string& errmsg) -{ - std::string station_id = req.get_param_value("station_id"); - std::string category = req.get_param_value("category"); - njson jsondata; - jsondata["station_id"] = "1"; - jsondata["launch_date"] = "2025-01-01"; //场站上线日期 - jsondata["usage_rate"] = "12"; - jsondata["storage_elect_in"] = "123.123"; //储能充电电量(kWh),精度:0.001 - jsondata["storage_elect_out"] = "123.123"; //储能放电电量(kWh),精度:0.001 - jsondata["storage_num_in"] = "1"; //储能设备充电次数 - jsondata["storage_num_out"] = "1"; //储能设备放电次数 - jsondata["storage_num_err"] = "1"; //储能设备故障次数 - jsondata["solar_elect_gen"] = "123.123"; //光伏发电电量(kWh),精度:0.001 - jsondata["solar_elect_grid"] = "123.123"; //光伏入网电量(kWh),精度:0.001 - jsondata["solar_num_err"] = "1"; //光伏设备故障次数 - jsondata["charge_elect"] = "123.123"; //充电设备充电电量(kWh),精度:0.001 - jsondata["charge_num"] = "1"; //充电设备充电次数 - jsondata["charge_num_err"] = "1"; //充电设备故障次数 - jsondata["income_elect"] = "123.123"; //发电收益(元),精度:0.01 - jsondata["income_charge"] = "123.123"; //充电收益(元),精度:0.01 + } + + json["data"] = jsondata; return Errcode::OK; @@ -943,6 +993,65 @@ Errcode HttpEntity::queryStatDayList(const httplib::Request& req, njson& json, s return Errcode::OK; } +Errcode HttpEntity::queryStatCharts(const httplib::Request& req, njson& json, std::string& errmsg) +{ + std::string dt = req.get_param_value("dt"); + std::string stationId = req.get_param_value("station_id"); + std::string category = req.get_param_value("category"); + + if (dt.empty()) { errmsg = "参数[dt]错误"; return Errcode::ERR_PARAM; } + if (stationId.empty()) { errmsg = "参数[station_id]错误"; return Errcode::ERR_PARAM; } + if (category.empty()) { errmsg = "参数[category]错误"; return Errcode::ERR_PARAM; } + + njson jsondata; + + std::string sql = R"(SELECT hd.*, d.`type` device_type, ddt.category FROM history_day hd + LEFT JOIN device d ON d.device_id = hd.device_id + LEFT JOIN def_device_type ddt ON d.`type` = ddt.device_type_id + WHERE dt=')" + dt + "' AND d.station_id='" + stationId + "' AND ddt.category='" + category + "';"; + + std::vector result; + int ret = DaoEntity::execOnce(sql, result); + if (ret != 0) + { + return Errcode(ret); + } + + std::vector vecV; + std::vector vecI; + std::vector vecP; + for (auto fields : result) + { + int datetype = fields.get("datatype"); // 1: 电压,2:电流,3:功率 + std::string val = fields.value("value"); // JSON 数组(double) + njson jsonval; + if (JSON::parse(val, jsonval)) + { + for (int i = 0; i= vecV.size() ? vecV.push_back(val) : (val > vecV[i] ? (vecV[i] = val, (void)0) : (void)0); + } + else if (datetype == 2) + { + // 电流取最大 + i >= vecI.size() ? vecI.push_back(val) : (val > vecI[i] ? (vecI[i] = val, (void)0) : (void)0); + } + else if (datetype == 3) + { + // 功率累加 + i >= vecP.size() ? vecP.push_back(val) : (vecP[i] = vecP[i] + val, (void)0); + } + } + } + } + json["data"] = {{"V", vecV}, {"I", vecI}, {"P", vecP}}; + return Errcode::OK; +} + Errcode HttpEntity::queryEnvironment(const httplib::Request& req, njson& json, std::string& errmsg) { std::string stationId = req.get_param_value("station_id"); @@ -1031,7 +1140,6 @@ Errcode HttpEntity::queryEnvironment(const httplib::Request& req, njson& json, s return Errcode::OK; } - Errcode HttpEntity::queryServiceApiList(const httplib::Request& req, njson& json, std::string& errmsg) { PageInfo pageinfo; diff --git a/src/protocol/HttpEntity.h b/src/protocol/HttpEntity.h index 4eff86b..a161e50 100644 --- a/src/protocol/HttpEntity.h +++ b/src/protocol/HttpEntity.h @@ -63,6 +63,7 @@ public: Errcode queryDevicTypeDef(const httplib::Request& req, njson& json, std::string& errmsg); Errcode queryDevicByCategory(const httplib::Request& req, njson& json, std::string& errmsg); Errcode queryDevicCharts(const httplib::Request& req, njson& json, std::string& errmsg); + Errcode queryDeviceBCUDetail(const httplib::Request& req, njson& json, std::string& errmsg); Errcode queryPolicyList(const httplib::Request& req, njson& json, std::string& errmsg); Errcode insertPolicy(const httplib::Request& req, njson& json, std::string& errmsg); @@ -79,13 +80,17 @@ public: Errcode queryPredictionDetail(const httplib::Request& req, njson& json, std::string& errmsg); + // 系统总览所有场站统计 Errcode queryStatSystem(const httplib::Request& req, njson& json, std::string& errmsg); + // 一个场站的累计统计 Errcode queryStatTotal(const httplib::Request& req, njson& json, std::string& errmsg); - Errcode queryStatStation(const httplib::Request& req, njson& json, std::string& errmsg); + // 场站按类别按天统计 Errcode queryStatDayList(const httplib::Request& req, njson& json, std::string& errmsg); - Errcode queryEnvironment(const httplib::Request& req, njson& json, std::string& errmsg); + // 场站按类某一天的历史曲线数据 + Errcode queryStatCharts(const httplib::Request& req, njson& json, std::string& errmsg); + Errcode queryEnvironment(const httplib::Request& req, njson& json, std::string& errmsg); Errcode queryServiceApiList(const httplib::Request& req, njson& json, std::string& errmsg); Errcode insertServiceApi(const httplib::Request& req, njson& json, std::string& errmsg); diff --git a/src/protocol/MqttEntity.cpp b/src/protocol/MqttEntity.cpp index ee3b7a3..8a6ebd9 100644 --- a/src/protocol/MqttEntity.cpp +++ b/src/protocol/MqttEntity.cpp @@ -52,25 +52,30 @@ void MqttClient::loadDataStruct(std::string filename) } } } +// int MqttClient::init(string addr, string clientId, string username, string password) { this->addr = addr; this->clientId = clientId; - this->vecTopic = { - "up/json/" + clientId + "/EMS_YX", - "up/json/" + clientId + "/EMS_YC", - "up/json/" + clientId + "/EMS_YT", - "up/json/" + clientId + "/PCU_YX", - "up/json/" + clientId + "/PCU_YC", - "up/json/" + clientId + "/PCS_YX", - "up/json/" + clientId + "/PCS_YC", - "up/json/" + clientId + "/BCU_YX", - "up/json/" + clientId + "/BCU_YC", - "up/json/" + clientId + "/BMS_YX", - "up/json/" + clientId + "/BMS_YC", - "up/json/" + clientId + "/MEM_YC", - }; + + this->mapTopicInfo["EMS_YX"] = 101; + this->mapTopicInfo["EMS_YX"] = 101; + this->mapTopicInfo["EMS_YC"] = 101; + this->mapTopicInfo["EMS_YT"] = 101; + this->mapTopicInfo["PCS_YX"] = 102; + this->mapTopicInfo["PCS_YC"] = 102; + this->mapTopicInfo["PCU_YX"] = 103; + this->mapTopicInfo["PCU_YC"] = 103; + this->mapTopicInfo["BMS_YX"] = 104; + this->mapTopicInfo["BMS_YC"] = 104; + this->mapTopicInfo["BCU_YX"] = 105; + this->mapTopicInfo["BCU_YC"] = 105; + this->mapTopicInfo["MEM_YC"] = 3; + this->mapTopicInfo["Cooling_YC"] = 110; + this->mapTopicInfo["TH_YC"] = 111; + this->mapTopicInfo["Gateway_YX"] = 112; + this->mapTopicInfo["Charger_YC"] = 113; MQTTAsync_connectOptions option = MQTTAsync_connectOptions_initializer; MQTTAsync_message pubmsg = MQTTAsync_message_initializer; @@ -163,9 +168,29 @@ void MqttClient::subscribe() MQTTAsync_responseOptions options = MQTTAsync_responseOptions_initializer; options.onSuccess = funcSuccess; options.onFailure = funcFailure; - for (auto& topic: vecTopic) + + std::vector vecTopic = { + //"up/json/" + clientId + "/EMS_YX", + "up/json/" + clientId + "/EMS_YC", + //"up/json/" + clientId + "/EMS_YT", + //"up/json/" + clientId + "/PCU_YX", + //"up/json/" + clientId + "/PCU_YC", + //"up/json/" + clientId + "/PCS_YX", + "up/json/" + clientId + "/PCS_YC", + //"up/json/" + clientId + "/BCU_YX", + //"up/json/" + clientId + "/BCU_YC", + //"up/json/" + clientId + "/BMS_YX", + //"up/json/" + clientId + "/BMS_YC", + //"up/json/" + clientId + "/MEM_YC", + //"up/json/" + clientId + "/Cooling_YC", + //"up/json/" + clientId + "/TH_YC", + //"up/json/" + clientId + "/Gateway_YX", + //"up/json/" + clientId + "/Charger_YC", + }; + for (auto& item: mapTopicInfo) { - options.context = topic.data(); + std::string topic = "up/json/" + clientId + "/" + item.first; + options.context = (void*)&item.first; int rc = MQTTAsync_subscribe(client, topic.data(), qos, &options); if (rc != MQTTASYNC_SUCCESS) { @@ -174,9 +199,34 @@ void MqttClient::subscribe() } } -int MqttClient::publish(string topic, string text) + +int MqttClient::polling() { - spdlog::info("MQTT publish: topic={}, text={}", topic, text); + // 召测 发布 + std::vector vecTopic = { + "down/json/" + clientId + "/EMS_YX", + "down/json/" + clientId + "/EMS_YC", + //"down/json/" + clientId + "/EMS_YT", + //"down/json/" + clientId + "/PCU_YX", + //"down/json/" + clientId + "/PCU_YC", + //"down/json/" + clientId + "/PCS_YX", + "down/json/" + clientId + "/PCS_YC", + //"down/json/" + clientId + "/BCU_YX", + //"down/json/" + clientId + "/BCU_YC", + //"down/json/" + clientId + "/BMS_YX", + //"down/json/" + clientId + "/BMS_YC", + //"down/json/" + clientId + "/MEM_YC", + //"down/json/" + clientId + "/Cooling_YC", + //"down/json/" + clientId + "/TH_YC", + //"down/json/" + clientId + "/Gateway_YX", + //"down/json/" + clientId + "/Charger_YC", + }; + + + njson json; + json["ts"] = Utils::time(); + json["no"] = 1; + std::string text = json.dump(); MQTTAsync_responseOptions options = MQTTAsync_responseOptions_initializer; //options.onSuccess = onSend; @@ -184,21 +234,24 @@ int MqttClient::publish(string topic, string text) options.context = this; MQTTAsync_message msg = MQTTAsync_message_initializer; - msg.qos = 1; + msg.qos = this->qos; msg.payload = text.data(); msg.payloadlen = text.size(); msg.retained = 0; - int rc = MQTTAsync_sendMessage(client, topic.c_str(), &msg, &options); - if (rc == MQTTASYNC_SUCCESS) + for (auto& topic: vecTopic) { - spdlog::info("MQTT send message success, topic={}, text={}", topic, text); + int rc = MQTTAsync_sendMessage(client, topic.c_str(), &msg, &options); + if (rc == MQTTASYNC_SUCCESS) + { + spdlog::info("MQTT send message success, topic={}, text={}", topic, msg.payload); + } + else + { + spdlog::error("MQTT send message error, topic={}, text={}", topic, msg.payload); + } } - else - { - spdlog::error("MQTT send message error, topic={}, text={}", topic, text); - } - return rc; + return 0; } void MqttClient::onConnectionLost(char* cause) @@ -229,16 +282,18 @@ int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* m { std::string topicStr = topic; int len = msg->payloadlen; - std::string payload = (char*)msg->payload; - spdlog::info("MQTT message arrived: topic=[{},{}], payload len={}, payload msg={}", topic, msg->qos, len, payload); + std::string payload((const char*)msg->payload, len); + // <数据方向>/<数据格式>/<厂家ID>/<指合>/<设备标识,上行可选> std::string direction = GetSubStr("/", topicStr); std::string datatype = GetSubStr("/", topicStr); - std::string stationId = GetSubStr("/", topicStr); + std::string stationNo = GetSubStr("/", topicStr); std::string command = GetSubStr("/", topicStr); std::string deviceCode = GetSubStr("/", topicStr); + spdlog::info("[mqtt] message arrived: topic=[{},{}], len={}, payload={}", topic, msg->qos, len, payload); + spdlog::info("[mqtt] parse topic: {}, stationNo={}, command={}", topic, stationNo, command); njson json; bool ret = JSON::parse(payload, json); @@ -247,29 +302,31 @@ int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* m spdlog::error("[mqtt] json parse error."); return 1; } - auto station = Application::data().getStation(Utils::toInt(stationId)); + auto station = Application::data().getStationByCode(stationNo); if (!station) { - spdlog::error("[mqtt] get station error, clientId={}, stationId={}", clientId, stationId); + spdlog::error("[mqtt] get station error, clientId={}, stationId={}", clientId, stationNo); return 1; } auto iter = g_mapRegInfo.find(command); if (iter == g_mapRegInfo.end()) { - spdlog::error("[mqtt] get register add info error, clientId={}, stationId={}, command={}", clientId, stationId, command); + spdlog::error("[mqtt] get register add info error, clientId={}, stationId={}, command={}", clientId, stationNo, command); return 1; } std::map& mapRegInfo = iter->second; int deviceNo = -1; JSON::read(json, "no", deviceNo); - auto device = station->getDeviceByType(101, Utils::toStr(deviceNo)); + auto device = station->getDeviceByType(mapTopicInfo[command], Utils::toStr(deviceNo)); if (!device) { return 1; } + spdlog::info("[mqtt] deviceNo={}", deviceNo); + for (auto& item: json.items()) { std::string key = item.key(); @@ -284,7 +341,9 @@ int MqttClient::onMessageArrived(char* topic, int topicLen, MQTTAsync_message* m if (iter != mapRegInfo.end()) { auto addr = iter->first; - device->setParam(addr, JSON::readStr(data[i], addr)); + std::string val = JSON::toStr(data[i]); + spdlog::info("[mqtt] read register addr: [{}]={}, {}", addr, val, iter->second.remark); + device->setParam(addr, val); ++iter; } } diff --git a/src/protocol/MqttEntity.h b/src/protocol/MqttEntity.h index e011e92..8528859 100644 --- a/src/protocol/MqttEntity.h +++ b/src/protocol/MqttEntity.h @@ -25,6 +25,17 @@ struct REGInfo } }; +//struct TopicInfo +//{ +// std::string name; +// std::string topic; +// int deviceType; +// TopicInfo() {}; +// TopicInfo(std::string name, std::string topic, int deviceType) +// :name(name), topic(topic), deviceType(deviceType) +// {}; +//}; + using namespace std; class MqttClient @@ -36,7 +47,9 @@ public: void destory(); void subscribe(); - int publish(string topic, string text); + //int publish(); + + int polling(); void onConnectionLost(char* cause); int onMessageArrived(char* topic, int len, MQTTAsync_message* msg); @@ -46,33 +59,17 @@ public: void onConnectFaiure(MQTTAsync_failureData* resp); void parseEMS_YX(std::shared_ptr station, njson& json, std::map& mapRegInfo); - //void parseEMS_YC(std::shared_ptr station, njson& json, std::map& mapRegInfo); - //void parsePCU_YX(std::shared_ptr station, njson& json, std::map& mapRegInfo); - //void parsePCU_YC(std::shared_ptr station, njson& json, std::map& mapRegInfo); - //void parsePCS_YX(std::shared_ptr station, njson& json, std::map& mapRegInfo); - //void parsePCS_YC(std::shared_ptr station, njson& json, std::map& mapRegInfo); - //void parseBMS_YC(std::shared_ptr station, njson& json, std::map& mapRegInfo); - //void parseBCU_YX(std::shared_ptr station, njson& json, std::map& mapRegInfo); - //void parseBCU_YC(std::shared_ptr station, njson& json, std::map& mapRegInfo); - //void parseMEM_YC(std::shared_ptr station, njson& json, std::map& mapRegInfo); - //void parseTH_YC(std::shared_ptr station, njson& json, std::map& mapRegInfo); - //void parseFire40_YX(std::string& text); - //void parseCooling_YX(std::string& text); - //void parseCooling_YC(std::string& text); - //void parseCharger_YC(std::string& text); - //void parseGateway_YX(std::string& text); - //void parseGateway_YC(std::string& text); - //void parseGateway_YT(std::string& text); - //void parseTQ(std::string& text); public: std::string clientId; MQTTAsync client = nullptr; - std::vector vecTopic; + std::string addr; // "tcp://localhost:1883" int qos {0}; bool isConnected {false}; bool isSubscribed {false}; + + std::map mapTopicInfo; }; diff --git a/src/pv/pages/MaskPageRunning.cpp b/src/pv/pages/MaskPageRunning.cpp index 2824bc4..ddd596b 100644 --- a/src/pv/pages/MaskPageRunning.cpp +++ b/src/pv/pages/MaskPageRunning.cpp @@ -125,7 +125,7 @@ int MaskPageRunning::initUI(EPvCode pvcode) } PvApp::label(p, 0, 320, 110, 80, 30, "运行模式", "color:white; font: bold 16px;"); - ui.comboxWorkMode = PvApp::combox(p, 0, 400, 110, 200, 30, appdata.getWorkModes(), activeStation->id - 1); + ui.comboxWorkMode = PvApp::combox(p, 0, 400, 110, 200, 30, appdata.getWorkModes(), activeStation->stationId - 1); PvApp::label(p, 0, 670, 110, 80, 30, "策略名称", "color:white; font: bold 16px;"); PvApp::combox(p, 0, 750, 110, 200, 30, appdata.getPolicyNames()); diff --git a/src/qt/MainWeb.cpp b/src/qt/MainWeb.cpp new file mode 100644 index 0000000..1f49cf4 --- /dev/null +++ b/src/qt/MainWeb.cpp @@ -0,0 +1,105 @@ +#include "MainWeb.h" + +#include "app/Config.h" +#include +#include +#include +#include +#include +#include +#include + +void MySplash(MainWeb* mainWin) +{ + //===动态程序启动画面=== + QPixmap pixmap("./assets/ui/splash.png"); + QSplashScreen splash(pixmap); + splash.show(); + QCoreApplication::processEvents(); + QLabel label(&splash); + label.setStyleSheet("background-color: gray"); + label.setGeometry(100, 480, 800, 20); + label.show(); + + QLabel labelProgress(&splash); + labelProgress.setStyleSheet("background-color: rgb(29, 54, 102)"); + labelProgress.setGeometry(10, 10, 0, 20); + labelProgress.show(); + + int i = 0; + while ((++i)<500) + { + splash.showMessage(QString("Loading... %1 ms").arg(i), Qt::AlignBottom | Qt::AlignRight, Qt::black); + labelProgress.setGeometry(100, 480, i*2*0.8, 20); + QCoreApplication::processEvents(); + QThread::msleep(10); + } + + splash.finish(mainWin);//程序启动画面结束 +} + + +MainWeb::MainWeb() +{ + this->setWindowTitle("光储充站监控与运营管理平台"); + this->setGeometry(0, 0, 1920, 1080); + this->hide(); + + // 在加载页面之前清除缓存 + //QWebEngineProfile::defaultProfile()->clearHttpCache(); + //QWebEngineSettings* settings = webView.settings(); + //settings->setAttribute(QWebEngineSettings::JavascriptEnabled, true); + //settings->setAttribute(QWebEngineSettings::LocalStorageEnabled, true); + //settings->setAttribute(QWebEngineSettings::AllowRunningInsecureContent, true); // 解决http资源加载问题 + //settings->setAttribute(QWebEngineSettings::PluginsEnabled, true); + + webView.setGeometry(0, 0, 1920, 1080); + // 默认设置透明, 解决加载时的白屏闪烁 + //webView.page()->setBackgroundColor(Qt::transparent); + //webView.setContextMenuPolicy(Qt::NoContextMenu); + webView.load(QUrl(Config::option.webSrvUrl.c_str())); + this->setCentralWidget(&webView); + + + //===动态程序启动画面=== + + splash = std::make_shared(QPixmap("./assets/ui/splash.png")); + + QCoreApplication::processEvents(); + label1.setParent(splash.get()); + label1.setStyleSheet("background-color: gray"); + label1.setGeometry(100, 480, 800, 20); + + labelProgress.setParent(splash.get()); + labelProgress.setStyleSheet("background-color: rgb(29, 54, 102)"); + labelProgress.setGeometry(10, 10, 0, 20); + + splash->show(); + label1.show(); + labelProgress.show(); + + + QObject::connect(&webView, &QWebEngineView::loadFinished, [=](bool ok) + { + if (ok) + { + int i = 0; + while ((++i)<100) + { + splash->showMessage(QString("Loading... %1 ms").arg(i), Qt::AlignBottom | Qt::AlignRight, Qt::black); + labelProgress.setGeometry(100, 480, i*10*0.8, 20); + QCoreApplication::processEvents(); + QThread::msleep(20); + } + splash->finish(this);//程序启动画面结束 + this->show(); + } + else + { + qDebug() << "页面加载失败!"; + // 这里可以执行加载失败后的处理 + } + }); + + //this->show(); +} \ No newline at end of file diff --git a/src/qt/MainWeb.h b/src/qt/MainWeb.h new file mode 100644 index 0000000..96305fb --- /dev/null +++ b/src/qt/MainWeb.h @@ -0,0 +1,16 @@ +#include +#include +#include +#include + +class MainWeb : public QMainWindow +{ + Q_OBJECT +public: + MainWeb(); + + QWebEngineView webView; + std::shared_ptr splash {}; + QLabel label1; + QLabel labelProgress; +}; \ No newline at end of file diff --git a/src/resource.aps b/src/resource.aps new file mode 100644 index 0000000..7fa341e Binary files /dev/null and b/src/resource.aps differ diff --git a/src/resource.h b/src/resource.h new file mode 100644 index 0000000..bbaaa3a --- /dev/null +++ b/src/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ ɵİļ +// ESS.rc ʹ +// +#define IDI_ICON1 102 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 103 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/src/resource.rc b/src/resource.rc new file mode 100644 index 0000000..4e1b7c8 Binary files /dev/null and b/src/resource.rc differ diff --git a/src/widgets/uihelper.h b/src/widgets/uihelper.h index 59a32ce..1e6ee40 100644 --- a/src/widgets/uihelper.h +++ b/src/widgets/uihelper.h @@ -24,7 +24,7 @@ #include #include -using namespace QtCharts; +//using namespace QtCharts; using MapLabelPair = std::map, std::shared_ptr>>; diff --git a/src/windeployqt.bat b/src/windeployqt.bat new file mode 100644 index 0000000..9e4ae53 --- /dev/null +++ b/src/windeployqt.bat @@ -0,0 +1,4 @@ +cd %~dp0 +cd ../bin/Release +@REM D:\Programs\Qt5\5.15.2\msvc2019_64\bin\windeployqt.exe +D:\Programs\Qt6\6.7.3\msvc2019_64\bin\windeployqt.exe ESS.exe \ No newline at end of file diff --git a/src/yhicon.ico b/src/yhicon.ico new file mode 100644 index 0000000..c7a07f1 Binary files /dev/null and b/src/yhicon.ico differ