96 lines
5.4 KiB
MySQL
96 lines
5.4 KiB
MySQL
|
|
-- 1. device_data表新增8Multi字段(逐条执行,已存在会报错可忽略)
|
|||
|
|
ALTER TABLE `device_data` ADD COLUMN `f1` DECIMAL(10,2) DEFAULT NULL COMMENT '测频1(Hz)';
|
|||
|
|
ALTER TABLE `device_data` ADD COLUMN `f2` DECIMAL(10,2) DEFAULT NULL COMMENT '测频2(Hz)';
|
|||
|
|
ALTER TABLE `device_data` ADD COLUMN `cn_reg` INT DEFAULT NULL COMMENT '屏幕状态';
|
|||
|
|
ALTER TABLE `device_data` ADD COLUMN `do_reg` VARCHAR(16) DEFAULT NULL COMMENT '状态输出';
|
|||
|
|
ALTER TABLE `device_data` ADD COLUMN `reg1` DECIMAL(12,3) DEFAULT NULL COMMENT '从机数据1';
|
|||
|
|
ALTER TABLE `device_data` ADD COLUMN `reg2` DECIMAL(12,3) DEFAULT NULL COMMENT '从机数据2';
|
|||
|
|
ALTER TABLE `device_data` ADD COLUMN `tv` INT DEFAULT NULL COMMENT '显示';
|
|||
|
|
ALTER TABLE `device_data` ADD COLUMN `save_flag` INT DEFAULT NULL COMMENT '边缘存储';
|
|||
|
|
ALTER TABLE `device_data` ADD COLUMN `oee` INT DEFAULT NULL COMMENT 'OEE计算值';
|
|||
|
|
ALTER TABLE `device_data` ADD COLUMN `dt` INT DEFAULT NULL COMMENT '采样间隔(秒)';
|
|||
|
|
ALTER TABLE `device_data` ADD COLUMN `power1` DECIMAL(12,3) DEFAULT NULL COMMENT '功率1';
|
|||
|
|
ALTER TABLE `device_data` ADD COLUMN `power2` DECIMAL(12,3) DEFAULT NULL COMMENT '功率2';
|
|||
|
|
|
|||
|
|
-- 2. 触发器(8AdPro计数器累计)
|
|||
|
|
DROP TRIGGER IF EXISTS `update_counter_totals_on_insert`;
|
|||
|
|
|
|||
|
|
DELIMITER $$
|
|||
|
|
CREATE TRIGGER `update_counter_totals_on_insert`
|
|||
|
|
BEFORE INSERT ON `device_data`
|
|||
|
|
FOR EACH ROW
|
|||
|
|
BEGIN
|
|||
|
|
DECLARE last_c1 BIGINT UNSIGNED DEFAULT 0;
|
|||
|
|
DECLARE last_c2 BIGINT UNSIGNED DEFAULT 0;
|
|||
|
|
DECLARE proto VARCHAR(16) DEFAULT '8ADPRO';
|
|||
|
|
|
|||
|
|
SELECT IFNULL(protocol_type, '8ADPRO') INTO proto FROM device WHERE id = NEW.device_id LIMIT 1;
|
|||
|
|
|
|||
|
|
IF proto = '8ADPRO' OR proto IS NULL THEN
|
|||
|
|
SELECT IFNULL(counter1_total, 0), IFNULL(counter2_total, 0) INTO last_c1, last_c2
|
|||
|
|
FROM device_data WHERE device_id = NEW.device_id ORDER BY collected_at DESC LIMIT 1;
|
|||
|
|
|
|||
|
|
SET NEW.counter1_total = IF(NEW.counter1 > 0, last_c1 + NEW.counter1, last_c1);
|
|||
|
|
SET NEW.counter2_total = IF(NEW.counter2 > 0, last_c2 + NEW.counter2, last_c2);
|
|||
|
|
END IF;
|
|||
|
|
END$$
|
|||
|
|
DELIMITER ;
|
|||
|
|
|
|||
|
|
-- =====================================================
|
|||
|
|
-- 3. cn_reg 屏幕状态值说明(下位机已处理,直接使用)
|
|||
|
|
-- =====================================================
|
|||
|
|
-- cn_reg状态值定义:
|
|||
|
|
-- 0 = 计划停机
|
|||
|
|
-- 1 = 正常工作
|
|||
|
|
-- 2 = 待机
|
|||
|
|
-- 3 = 故障
|
|||
|
|
-- 4 = 在修
|
|||
|
|
-- 5 = 缺人
|
|||
|
|
-- 6 = 缺料
|
|||
|
|
-- 7 = 清零
|
|||
|
|
-- 注:8Multi协议使用cn_reg替代status_work/status_stop/status_fault等字段
|
|||
|
|
|
|||
|
|
-- =====================================================
|
|||
|
|
-- 4. 更新cn_reg字段注释(可选)
|
|||
|
|
-- =====================================================
|
|||
|
|
ALTER TABLE `device_data` MODIFY COLUMN `cn_reg` INT DEFAULT NULL COMMENT '屏幕状态(0计划停机/1正常工作/2待机/3故障/4在修/5缺人/6缺料/7清零)';
|
|||
|
|
|
|||
|
|
-- =====================================================
|
|||
|
|
-- 5. 8Multi V2.8 废弃字段说明(保留兼容,不删除)
|
|||
|
|
-- =====================================================
|
|||
|
|
-- 以下字段在8Multi V2.8协议中不再使用,但保留以兼容8ADPRO和旧版本:
|
|||
|
|
--
|
|||
|
|
-- | 废弃字段 | 替代方案 | 说明 |
|
|||
|
|
-- |-----------------------------|--------------------|-----------------------|
|
|||
|
|
-- | current1_raw, current2_raw | current1_value | 下位机已换算,直接传实际值 |
|
|||
|
|
-- | quality1_raw, quality2_raw | quality1_value | 下位机已换算,直接传实际值 |
|
|||
|
|
-- | status_work/stop/fault/reset| cn_reg (0-7) | 统一用屏幕状态 |
|
|||
|
|
-- | frequency1, frequency2 | f1, f2 | 使用新测频字段 |
|
|||
|
|
-- | counter1_current/delta | counter1 | 直接使用计数增量 |
|
|||
|
|
-- | counter2_current/delta | counter2 | 直接使用计数增量 |
|
|||
|
|
-- | counter1_total_8multi | counter1_total | 统一用counter1_total |
|
|||
|
|
-- | counter2_total_8multi | counter2_total | 统一用counter2_total |
|
|||
|
|
-- | relay_power/alarm | do_reg | 统一用状态输出 |
|
|||
|
|
-- | do_soft_start, do_stop | do_reg | 统一用状态输出 |
|
|||
|
|
-- | slave_data1, slave_data2 | reg1, reg2 | 使用新从机数据字段 |
|
|||
|
|
-- | touchscreen_data | tv | 使用新显示字段 |
|
|||
|
|
|
|||
|
|
-- =====================================================
|
|||
|
|
-- 6. 8Multi卡号ID格式说明
|
|||
|
|
-- =====================================================
|
|||
|
|
-- 卡号ID共12位: 品牌1位 + 年份1位 + 月日4位 + 用户号2位 + 序号4位
|
|||
|
|
-- 示例: 101126010002
|
|||
|
|
-- 1 - 品牌前缀
|
|||
|
|
-- 0 - 年份(0=2025, 1=2026, 2=2027...)
|
|||
|
|
-- 1126 - 月日(11月26日)
|
|||
|
|
-- 01 - 用户号
|
|||
|
|
-- 0002 - 设备序号(后端使用后4位作为设备号)
|
|||
|
|
|
|||
|
|
-- =====================================================
|
|||
|
|
-- 7. 设备扩展字段(设备位置、品牌、型号、车间、工段)
|
|||
|
|
-- =====================================================
|
|||
|
|
ALTER TABLE `device` ADD COLUMN `location` VARCHAR(255) DEFAULT NULL COMMENT '设备位置';
|
|||
|
|
ALTER TABLE `device` ADD COLUMN `brand` VARCHAR(128) DEFAULT NULL COMMENT '设备品牌';
|
|||
|
|
ALTER TABLE `device` ADD COLUMN `model` VARCHAR(128) DEFAULT NULL COMMENT '设备型号';
|
|||
|
|
ALTER TABLE `device` ADD COLUMN `workshop_id` BIGINT DEFAULT NULL COMMENT '车间ID(关联md_workshop)';
|
|||
|
|
ALTER TABLE `device` ADD COLUMN `section` VARCHAR(64) DEFAULT NULL COMMENT '工段(关联pro_process)';
|