oldwine 4 mēneši atpakaļ
vecāks
revīzija
fe232bdda9

+ 27 - 0
conf/s7@172.16.1.20.csv

@@ -0,0 +1,27 @@
+name,type,db,start,offset,size,read_allow,write_allow,frequency,group
+中间包连续测温温度,dint,7,4,0,4,TRUE,FALSE,500,1
+中间包手动测温,dint,4,30,0,4,TRUE,FALSE,500,1
+1流结晶器拉速,real,6,36,0,4,TRUE,FALSE,500,1
+1流结晶器通钢量,real,15,0,0,4,TRUE,FALSE,500,1
+2流结晶器拉速,real,6,40,0,4,TRUE,FALSE,500,1
+2流结晶器通钢量,real,15,4,0,4,TRUE,FALSE,500,1
+3流结晶器拉速,real,6,44,0,4,TRUE,FALSE,500,1
+3流结晶器通钢量,real,15,8,0,4,TRUE,FALSE,500,1
+4流结晶器拉速,real,6,48,0,4,TRUE,FALSE,500,1
+4流结晶器通钢量,real,15,12,0,4,TRUE,FALSE,500,1
+5流结晶器拉速,real,6,52,0,4,TRUE,FALSE,500,1
+5流结晶器通钢量,real,15,16,0,4,TRUE,FALSE,500,1
+6流结晶器拉速,real,6,56,0,4,TRUE,FALSE,500,1
+6流结晶器通钢量,real,15,20,0,4,TRUE,FALSE,500,1
+7流结晶器拉速,real,6,60,0,4,TRUE,FALSE,500,1
+7流结晶器通钢量,real,15,24,0,4,TRUE,FALSE,500,1
+8流结晶器拉速,real,6,64,0,4,TRUE,FALSE,500,1
+8流结晶器通钢量,real,15,28,0,4,TRUE,FALSE,500,1
+1流定尺,real,6,72,0,4,TRUE,FALSE,500,1
+2流定尺,real,6,76,0,4,TRUE,FALSE,500,2
+3流定尺,real,6,80,0,4,TRUE,FALSE,500,2
+4流定尺,real,6,84,0,4,TRUE,FALSE,500,2
+5流定尺,real,6,88,0,4,TRUE,FALSE,500,2
+6流定尺,real,6,92,0,4,TRUE,FALSE,500,2
+7流定尺,real,6,96,0,4,TRUE,FALSE,500,2
+8流定尺,real,6,100,0,4,TRUE,FALSE,500,2

+ 47 - 0
conf/s7@172.16.1.21.csv

@@ -0,0 +1,47 @@
+name,type,db,start,offset,size,read_allow,write_allow,frequency,group
+5#结晶器流量,real,16,232,0,4,TRUE,FALSE,500,1
+5#结晶器水温差,real,16,236,0,4,TRUE,FALSE,500,1
+5#二冷水总管压力,real,16,240,0,4,TRUE,FALSE,500,1
+5#结晶器进水温度,real,16,244,0,4,TRUE,FALSE,500,1
+5#结晶器水压,real,16,248,0,4,TRUE,FALSE,500,1
+5#二冷水总管温度,real,16,252,0,4,TRUE,FALSE,500,1
+5#水流量-1流-1段,real,16,0,0,4,TRUE,FALSE,500,1
+5#水流量-1流-2段,real,16,4,0,4,TRUE,FALSE,500,1
+5#水流量-1流-3段,real,16,8,0,4,TRUE,FALSE,500,1
+5#水流量-1流-4段,real,16,12,0,4,TRUE,FALSE,500,1
+5#水流量-1流-5段,real,16,16,0,4,TRUE,FALSE,500,1
+5#水流量-2流-1段,real,16,20,0,4,TRUE,FALSE,500,1
+5#水流量-2流-2段,real,16,24,0,4,TRUE,FALSE,500,1
+5#水流量-2流-3段,real,16,28,0,4,TRUE,FALSE,500,1
+5#水流量-2流-4段,real,16,32,0,4,TRUE,FALSE,500,1
+5#水流量-2流-5段,real,16,36,0,4,TRUE,FALSE,500,1
+5#水流量-3流-1段,real,16,40,0,4,TRUE,FALSE,500,1
+5#水流量-3流-2段,real,16,44,0,4,TRUE,FALSE,500,1
+5#水流量-3流-3段,real,16,48,0,4,TRUE,FALSE,500,1
+5#水流量-3流-4段,real,16,52,0,4,TRUE,FALSE,500,2
+5#水流量-3流-5段,real,16,56,0,4,TRUE,FALSE,500,2
+5#水流量-4流-1段,real,16,60,0,4,TRUE,FALSE,500,2
+5#水流量-4流-2段,real,16,64,0,4,TRUE,FALSE,500,2
+5#水流量-4流-3段,real,16,68,0,4,TRUE,FALSE,500,2
+5#水流量-4流-4段,real,16,72,0,4,TRUE,FALSE,500,2
+5#水流量-4流-5段,real,16,76,0,4,TRUE,FALSE,500,2
+5#水流量-5流-1段,real,16,80,0,4,TRUE,FALSE,500,2
+5#水流量-5流-2段,real,16,84,0,4,TRUE,FALSE,500,2
+5#水流量-5流-3段,real,16,88,0,4,TRUE,FALSE,500,2
+5#水流量-5流-4段,real,16,92,0,4,TRUE,FALSE,500,2
+5#水流量-5流-5段,real,16,96,0,4,TRUE,FALSE,500,2
+5#水流量-6流-1段,real,16,100,0,4,TRUE,FALSE,500,2
+5#水流量-6流-2段,real,16,104,0,4,TRUE,FALSE,500,2
+5#水流量-6流-3段,real,16,108,0,4,TRUE,FALSE,500,2
+5#水流量-6流-4段,real,16,112,0,4,TRUE,FALSE,500,2
+5#水流量-6流-5段,real,16,116,0,4,TRUE,FALSE,500,2
+5#水流量-7流-1段,real,16,120,0,4,TRUE,FALSE,500,2
+5#水流量-7流-2段,real,16,124,0,4,TRUE,FALSE,500,2
+5#水流量-7流-3段,real,16,128,0,4,TRUE,FALSE,500,3
+5#水流量-7流-4段,real,16,132,0,4,TRUE,FALSE,500,3
+5#水流量-7流-5段,real,16,136,0,4,TRUE,FALSE,500,3
+5#水流量-8流-1段,real,16,140,0,4,TRUE,FALSE,500,3
+5#水流量-8流-2段,real,16,144,0,4,TRUE,FALSE,500,3
+5#水流量-8流-3段,real,16,148,0,4,TRUE,FALSE,500,3
+5#水流量-8流-4段,real,16,152,0,4,TRUE,FALSE,500,3
+5#水流量-8流-5段,real,16,156,0,4,TRUE,FALSE,500,3

+ 0 - 0
conf/BarLine1.csv → conf/s7@192.168.0.3.csv


+ 1 - 1
main.py

@@ -2,6 +2,6 @@ from utils.s7data import S7Client, S7data
 
 s7 = S7Client()
 s7.connect("192.168.0.3", 0, 3)
-data = S7data("conf/BarLine1")
+data = S7data("conf/s7@192.168.0.3.csv")
 data.set_S7Client(s7)
 data.auto_update_group()

+ 2 - 0
models/data_loader.py

@@ -41,6 +41,8 @@ for data in data_list:
             else:
                 solved_list.append((input_buffer, data[7]))
             input_buffer = []
+    
+    has_steel_sig = data[3]
 
 output_list = []
 for i in range(len(solved_list)-1):

+ 121 - 0
sql/steel_rolling.sql

@@ -0,0 +1,121 @@
+CREATE DATABASE IF NOT EXISTS industrial_data;
+USE industrial_data;
+
+-- 创建数据点表
+CREATE TABLE data_points (
+    id INT AUTO_INCREMENT PRIMARY KEY,
+    name VARCHAR(100) NOT NULL COMMENT '数据点名称',
+    type VARCHAR(20) NOT NULL COMMENT '数据类型(bool/int/dint/real)',
+    db_number INT NOT NULL COMMENT 'DB块号',
+    start_offset INT NOT NULL COMMENT '起始偏移量',
+    bit_offset INT NOT NULL COMMENT '位偏移量(仅bool类型有意义)',
+    size INT NOT NULL COMMENT '数据大小(字节)',
+    read_allow BOOLEAN NOT NULL COMMENT '是否允许读取',
+    write_allow BOOLEAN NOT NULL COMMENT '是否允许写入',
+    frequency INT NOT NULL COMMENT '采集频率(ms)',
+    group_id INT NOT NULL COMMENT '组别',
+    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    UNIQUE KEY (name)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据点配置表';
+
+-- 创建实时数据表
+CREATE TABLE realtime_data (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    point_id INT NOT NULL COMMENT '数据点ID',
+    bool_value BOOLEAN NULL COMMENT '布尔值',
+    int_value INT NULL COMMENT '整数值',
+    real_value FLOAT NULL COMMENT '实数值',
+    timestamp TIMESTAMP(3) NOT NULL COMMENT '数据时间戳(毫秒精度)',
+    FOREIGN KEY (point_id) REFERENCES data_points(id),
+    INDEX (point_id, timestamp)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='实时数据表';
+
+-- 创建历史数据表(按天分区)
+CREATE TABLE historical_data (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    point_id INT NOT NULL COMMENT '数据点ID',
+    bool_value BOOLEAN NULL COMMENT '布尔值',
+    int_value INT NULL COMMENT '整数值',
+    real_value FLOAT NULL COMMENT '实数值',
+    timestamp TIMESTAMP(3) NOT NULL COMMENT '数据时间戳(毫秒精度)',
+    FOREIGN KEY (point_id) REFERENCES data_points(id),
+    INDEX (point_id, timestamp)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='历史数据表';
+
+-- 插入数据点配置
+INSERT INTO data_points (name, type, db_number, start_offset, bit_offset, size, read_allow, write_allow, frequency, group_id) VALUES
+('看门狗', 'bool', 889, 0, 0, 1, TRUE, FALSE, 500, 1),
+('18#有钢信号', 'bool', 889, 0, 1, 1, TRUE, FALSE, 500, 1),
+('炉号', 'dint', 889, 4, 0, 4, TRUE, FALSE, 500, 1),
+('定尺', 'dint', 889, 8, 0, 4, TRUE, FALSE, 500, 1),
+('流号(末架)', 'int', 889, 36, 0, 2, TRUE, FALSE, 500, 1),
+('尾钢长度(热检)', 'int', 889, 38, 0, 2, TRUE, FALSE, 500, 1),
+('轧制规格', 'real', 889, 52, 0, 4, TRUE, FALSE, 500, 1),
+('尾钢长度(激光)', 'real', 889, 56, 0, 4, TRUE, FALSE, 500, 1),
+('轧前温度', 'real', 889, 60, 0, 4, TRUE, FALSE, 500, 1),
+('1流修正值', 'real', 889, 64, 0, 4, TRUE, FALSE, 500, 1),
+('2流修正值', 'real', 889, 68, 0, 4, TRUE, FALSE, 500, 1),
+('3流修正值', 'real', 889, 72, 0, 4, TRUE, FALSE, 500, 1),
+('4流修正值', 'real', 889, 76, 0, 4, TRUE, FALSE, 500, 1),
+('5流修正值', 'real', 889, 80, 0, 4, TRUE, FALSE, 500, 1),
+('6流修正值', 'real', 889, 84, 0, 4, TRUE, FALSE, 500, 1),
+('7流修正值', 'real', 889, 88, 0, 4, TRUE, FALSE, 500, 1),
+('8流修正值', 'real', 889, 92, 0, 4, TRUE, FALSE, 500, 1),
+('1流炼钢反馈重量', 'real', 889, 96, 0, 4, TRUE, FALSE, 500, 1),
+('2流炼钢反馈重量', 'real', 889, 100, 0, 4, TRUE, FALSE, 500, 1),
+('3流炼钢反馈重量', 'real', 889, 104, 0, 4, TRUE, FALSE, 500, 2),
+('4流炼钢反馈重量', 'real', 889, 108, 0, 4, TRUE, FALSE, 500, 2),
+('5流炼钢反馈重量', 'real', 889, 112, 0, 4, TRUE, FALSE, 500, 2),
+('6流炼钢反馈重量', 'real', 889, 116, 0, 4, TRUE, FALSE, 500, 2),
+('7流炼钢反馈重量', 'real', 889, 120, 0, 4, TRUE, FALSE, 500, 2),
+('8流炼钢反馈重量', 'real', 889, 124, 0, 4, TRUE, FALSE, 500, 2),
+('米重', 'real', 889, 128, 0, 4, TRUE, FALSE, 500, 2),
+('尾钢设定', 'real', 889, 132, 0, 4, TRUE, FALSE, 500, 2),
+('1#设定速度', 'real', 889, 136, 0, 4, TRUE, FALSE, 500, 2),
+('2#设定速度', 'real', 889, 140, 0, 4, TRUE, FALSE, 500, 2),
+('3#设定速度', 'real', 889, 144, 0, 4, TRUE, FALSE, 500, 2),
+('4#设定速度', 'real', 889, 148, 0, 4, TRUE, FALSE, 500, 2),
+('5#设定速度', 'real', 889, 152, 0, 4, TRUE, FALSE, 500, 2),
+('6#设定速度', 'real', 889, 156, 0, 4, TRUE, FALSE, 500, 2),
+('7#设定速度', 'real', 889, 160, 0, 4, TRUE, FALSE, 500, 2),
+('8#设定速度', 'real', 889, 164, 0, 4, TRUE, FALSE, 500, 2),
+('9#设定速度', 'real', 889, 168, 0, 4, TRUE, FALSE, 500, 2),
+('10#设定速度', 'real', 889, 172, 0, 4, TRUE, FALSE, 500, 2),
+('11#设定速度', 'real', 889, 176, 0, 4, TRUE, FALSE, 500, 2),
+('12#设定速度', 'real', 889, 180, 0, 4, TRUE, FALSE, 500, 3),
+('13#设定速度', 'real', 889, 184, 0, 4, TRUE, FALSE, 500, 3),
+('14#设定速度', 'real', 889, 188, 0, 4, TRUE, FALSE, 500, 3),
+('15#设定速度', 'real', 889, 192, 0, 4, TRUE, FALSE, 500, 3),
+('16#设定速度', 'real', 889, 196, 0, 4, TRUE, FALSE, 500, 3),
+('17#设定速度', 'real', 889, 200, 0, 4, TRUE, FALSE, 500, 3),
+('18#设定速度', 'real', 889, 204, 0, 4, TRUE, FALSE, 500, 3),
+('1#辊径', 'real', 889, 208, 0, 4, TRUE, FALSE, 500, 3),
+('2#辊径', 'real', 889, 212, 0, 4, TRUE, FALSE, 500, 3),
+('3#辊径', 'real', 889, 216, 0, 4, TRUE, FALSE, 500, 3),
+('4#辊径', 'real', 889, 220, 0, 4, TRUE, FALSE, 500, 3),
+('5#辊径', 'real', 889, 224, 0, 4, TRUE, FALSE, 500, 3),
+('6#辊径', 'real', 889, 228, 0, 4, TRUE, FALSE, 500, 3),
+('7#辊径', 'real', 889, 232, 0, 4, TRUE, FALSE, 500, 3),
+('8#辊径', 'real', 889, 236, 0, 4, TRUE, FALSE, 500, 3),
+('9#辊径', 'real', 889, 240, 0, 4, TRUE, FALSE, 500, 3),
+('10#辊径', 'real', 889, 244, 0, 4, TRUE, FALSE, 500, 3),
+('11#辊径', 'real', 889, 248, 0, 4, TRUE, FALSE, 500, 3),
+('12#辊径', 'real', 889, 252, 0, 4, TRUE, FALSE, 500, 3),
+('13#辊径', 'real', 889, 256, 0, 4, TRUE, FALSE, 500, 4),
+('14#辊径', 'real', 889, 260, 0, 4, TRUE, FALSE, 500, 4),
+('15#辊径', 'real', 889, 264, 0, 4, TRUE, FALSE, 500, 4),
+('16#辊径', 'real', 889, 268, 0, 4, TRUE, FALSE, 500, 4),
+('17#辊径', 'real', 889, 272, 0, 4, TRUE, FALSE, 500, 4),
+('18#辊径', 'real', 889, 276, 0, 4, TRUE, FALSE, 500, 4);
+
+-- 批量初始化bool类型数据点
+INSERT INTO realtime_data (point_id, bool_value, timestamp)
+SELECT id, FALSE, NOW(3) FROM data_points WHERE type = 'bool';
+
+-- 批量初始化int/dint类型数据点
+INSERT INTO realtime_data (point_id, int_value, timestamp)
+SELECT id, 0, NOW(3) FROM data_points WHERE type IN ('int', 'dint');
+
+-- 批量初始化real类型数据点
+INSERT INTO realtime_data (point_id, real_value, timestamp)
+SELECT id, 0.0, NOW(3) FROM data_points WHERE type = 'real';

+ 13 - 0
steelmaking_main.py

@@ -0,0 +1,13 @@
+from utils.s7data import S7Client, S7data
+
+s7_1 = S7Client()
+s7_1.connect("172.16.1.20", 0, 0)
+data_1 = S7data("conf/s7@172.16.1.20.csv")
+data_1.set_S7Client(s7_1)
+data_1.auto_update_group()
+
+s7_2 = S7Client()
+s7_2.connect("172.16.1.21", 0, 0)
+data_2 = S7data("conf/s7@172.16.1.21.csv")
+data_2.set_S7Client(s7_2)
+data_2.auto_update_group()