evo-BMS/sql/bms_battery_data.sql
2025-11-09 19:21:01 +08:00

83 lines
7.3 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 电池实时数据表(用于存储大量实时监测数据)
DROP TABLE IF EXISTS `bms_battery_data`;
CREATE TABLE `bms_battery_data` (
`data_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '数据ID',
`battery_id` bigint(20) NOT NULL COMMENT '电池ID',
`box_id` bigint(20) NOT NULL COMMENT 'BOX设备ID冗余字段便于查询',
`battery_code` varchar(50) NOT NULL COMMENT '电池编号(冗余字段,便于查询)',
`collect_time` datetime NOT NULL COMMENT '采集时间',
`current_voltage` decimal(6,2) DEFAULT '0.00' COMMENT '当前电压(V)',
`current_current` decimal(8,2) DEFAULT '0.00' COMMENT '当前电流(A)',
`current_power` decimal(10,2) DEFAULT '0.00' COMMENT '当前功率(W)',
`soc` decimal(5,2) DEFAULT '0.00' COMMENT '电量百分比(%)',
`soh` decimal(5,2) DEFAULT '100.00' COMMENT '健康状态(%)',
`remaining_capacity` decimal(8,2) DEFAULT '0.00' COMMENT '剩余容量(Ah)',
`temperature` decimal(5,2) DEFAULT '0.00' COMMENT '温度(°C)',
`internal_resistance` decimal(8,4) DEFAULT '0.0000' COMMENT '内阻(Ω)',
`charge_cycles` int(11) DEFAULT '0' COMMENT '充电循环次数',
`deep_discharge_count` int(11) DEFAULT '0' COMMENT '深度放电次数',
`overcharge_count` int(11) DEFAULT '0' COMMENT '过充次数',
`over_temperature_count` int(11) DEFAULT '0' COMMENT '过温次数',
`runtime_status` tinyint(1) DEFAULT '1' COMMENT '运行状态0离线 1正常 2充电中 3放电中 4故障 5维护',
`charge_status` tinyint(1) DEFAULT '0' COMMENT '充电状态0未充电 1充电中 2充满 3充电故障',
`balance_status` tinyint(1) DEFAULT '0' COMMENT '均衡状态0未均衡 1均衡中 2均衡完成',
`alarm_status` tinyint(1) DEFAULT '0' COMMENT '告警状态0正常 1告警',
`alarm_info` text COMMENT '告警信息',
`last_charge_time` datetime DEFAULT NULL COMMENT '最后充电时间',
`last_discharge_time` datetime DEFAULT NULL COMMENT '最后放电时间',
`last_balance_time` datetime DEFAULT NULL COMMENT '最后均衡时间',
`data_source` varchar(50) DEFAULT 'MQTT' COMMENT '数据来源MQTT、Modbus、CAN等',
`raw_data` text COMMENT '原始数据JSON格式',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`data_id`),
KEY `idx_battery_id` (`battery_id`),
KEY `idx_box_id` (`box_id`),
KEY `idx_battery_code` (`battery_code`),
KEY `idx_collect_time` (`collect_time`),
KEY `idx_runtime_status` (`runtime_status`),
KEY `idx_alarm_status` (`alarm_status`),
KEY `idx_soc` (`soc`),
KEY `idx_temperature` (`temperature`),
KEY `idx_battery_collect_time` (`battery_id`, `collect_time`),
CONSTRAINT `fk_battery_data_battery` FOREIGN KEY (`battery_id`) REFERENCES `bms_battery` (`battery_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='电池实时数据表';
-- 创建分区表(按月分区,提高查询性能)
-- ALTER TABLE `bms_battery_data` PARTITION BY RANGE (YEAR(collect_time)*100 + MONTH(collect_time)) (
-- PARTITION p202501 VALUES LESS THAN (202502),
-- PARTITION p202502 VALUES LESS THAN (202503),
-- PARTITION p202503 VALUES LESS THAN (202504),
-- PARTITION p202504 VALUES LESS THAN (202505),
-- PARTITION p202505 VALUES LESS THAN (202506),
-- PARTITION p202506 VALUES LESS THAN (202507),
-- PARTITION p202507 VALUES LESS THAN (202508),
-- PARTITION p202508 VALUES LESS THAN (202509),
-- PARTITION p202509 VALUES LESS THAN (202510),
-- PARTITION p202510 VALUES LESS THAN (202511),
-- PARTITION p202511 VALUES LESS THAN (202512),
-- PARTITION p202512 VALUES LESS THAN (202601),
-- PARTITION p_future VALUES LESS THAN MAXVALUE
-- );
-- 插入电池实时数据示例最近24小时的数据
INSERT INTO `bms_battery_data` VALUES
-- BOX001-电池01的实时数据
(1, 1, 1, 'BAT001-01', '2025-01-22 10:30:00', 6.38, 1.2, 7.66, 85.2, 98.5, 85.2, 24.1, 0.0025, 156, 2, 0, 0, 2, 1, 0, 0, NULL, '2025-01-22 08:30:00', '2025-01-21 18:45:00', '2025-01-22 02:15:00', 'MQTT', '{"voltage":6.38,"current":1.2,"temperature":24.1,"soc":85.2}', '2025-01-22 10:30:00'),
(2, 1, 1, 'BAT001-01', '2025-01-22 10:25:00', 6.37, 1.1, 7.01, 85.0, 98.5, 85.0, 24.0, 0.0025, 156, 2, 0, 0, 2, 1, 0, 0, NULL, '2025-01-22 08:30:00', '2025-01-21 18:45:00', '2025-01-22 02:15:00', 'MQTT', '{"voltage":6.37,"current":1.1,"temperature":24.0,"soc":85.0}', '2025-01-22 10:25:00'),
(3, 1, 1, 'BAT001-01', '2025-01-22 10:20:00', 6.39, 1.3, 8.31, 85.4, 98.5, 85.4, 24.2, 0.0025, 156, 2, 0, 0, 2, 1, 0, 0, NULL, '2025-01-22 08:30:00', '2025-01-21 18:45:00', '2025-01-22 02:15:00', 'MQTT', '{"voltage":6.39,"current":1.3,"temperature":24.2,"soc":85.4}', '2025-01-22 10:20:00'),
-- BOX001-电池02的实时数据
(4, 2, 1, 'BAT001-02', '2025-01-22 10:30:00', 6.41, 1.3, 8.33, 86.1, 98.2, 86.1, 24.3, 0.0024, 156, 1, 0, 0, 2, 1, 0, 0, NULL, '2025-01-22 08:30:00', '2025-01-21 18:45:00', '2025-01-22 02:15:00', 'MQTT', '{"voltage":6.41,"current":1.3,"temperature":24.3,"soc":86.1}', '2025-01-22 10:30:00'),
(5, 2, 1, 'BAT001-02', '2025-01-22 10:25:00', 6.40, 1.2, 7.68, 85.9, 98.2, 85.9, 24.2, 0.0024, 156, 1, 0, 0, 2, 1, 0, 0, NULL, '2025-01-22 08:30:00', '2025-01-21 18:45:00', '2025-01-22 02:15:00', 'MQTT', '{"voltage":6.40,"current":1.2,"temperature":24.2,"soc":85.9}', '2025-01-22 10:25:00'),
-- BOX002-电池01的实时数据
(6, 9, 2, 'BAT002-01', '2025-01-22 10:25:00', 6.45, 1.5, 9.68, 92.1, 96.8, 92.1, 25.2, 0.0022, 89, 1, 0, 0, 2, 1, 0, 0, NULL, '2025-01-22 09:15:00', '2025-01-21 20:30:00', '2025-01-22 03:20:00', 'MQTT', '{"voltage":6.45,"current":1.5,"temperature":25.2,"soc":92.1}', '2025-01-22 10:25:00'),
(7, 9, 2, 'BAT002-01', '2025-01-22 10:20:00', 6.44, 1.4, 9.02, 91.9, 96.8, 91.9, 25.1, 0.0022, 89, 1, 0, 0, 2, 1, 0, 0, NULL, '2025-01-22 09:15:00', '2025-01-21 20:30:00', '2025-01-22 03:20:00', 'MQTT', '{"voltage":6.44,"current":1.4,"temperature":25.1,"soc":91.9}', '2025-01-22 10:20:00'),
-- BOX003-电池01的实时数据故障状态
(8, 21, 3, 'BAT003-01', '2025-01-22 09:45:00', 6.20, 0.0, 0.0, 78.5, 95.2, 78.5, 27.8, 0.0035, 234, 5, 1, 2, 4, 0, 0, 1, '电压过低告警', '2025-01-21 16:20:00', '2025-01-21 22:10:00', '2025-01-21 23:45:00', 'MQTT', '{"voltage":6.20,"current":0.0,"temperature":27.8,"soc":78.5,"alarm":"电压过低"}', '2025-01-22 09:45:00'),
(9, 21, 3, 'BAT003-01', '2025-01-22 09:40:00', 6.18, 0.0, 0.0, 78.3, 95.2, 78.3, 27.9, 0.0035, 234, 5, 1, 2, 4, 0, 0, 1, '电压过低告警', '2025-01-21 16:20:00', '2025-01-21 22:10:00', '2025-01-21 23:45:00', 'MQTT', '{"voltage":6.18,"current":0.0,"temperature":27.9,"soc":78.3,"alarm":"电压过低"}', '2025-01-22 09:40:00'),
-- BOX003-电池03的实时数据高温故障
(10, 23, 3, 'BAT003-03', '2025-01-22 09:45:00', 6.18, 0.0, 0.0, 77.8, 94.9, 77.8, 29.5, 0.0038, 234, 6, 2, 3, 4, 0, 0, 1, '温度过高告警,电压异常', '2025-01-21 16:20:00', '2025-01-21 22:10:00', '2025-01-21 23:45:00', 'MQTT', '{"voltage":6.18,"current":0.0,"temperature":29.5,"soc":77.8,"alarm":"温度过高,电压异常"}', '2025-01-22 09:45:00'),
(11, 23, 3, 'BAT003-03', '2025-01-22 09:40:00', 6.16, 0.0, 0.0, 77.6, 94.9, 77.6, 29.8, 0.0038, 234, 6, 2, 3, 4, 0, 0, 1, '温度过高告警,电压异常', '2025-01-21 16:20:00', '2025-01-21 22:10:00', '2025-01-21 23:45:00', 'MQTT', '{"voltage":6.16,"current":0.0,"temperature":29.8,"soc":77.6,"alarm":"温度过高,电压异常"}', '2025-01-22 09:40:00');