1. 按钢种分组 K_cal:cal_coeffs.json 升级为嵌套结构,
{kcal: {model: {_default, Q235, ...}}, phys: {...}},
旧平铺格式首次加载时自动迁移。
2. 物理参数自适应:EA_R/K0/N_CONC 按钢种网格拟合
(7×5×3=105 组合),每次校准追加样本到
production_samples.jsonl,≥10 条后自动触发拟合。
3. 数据飞轮:新增 POST /retrain 端点,后台子进程跑
train_models.py --use-real-data 混入实绩重训
(10× 权重),完成后 ONNX 热重载,无需重启服务。
新增端点:
GET /calibration/samples 样本数统计
GET /calibration/phys-params 物理参数查询
POST /calibration/fit-phys/{key} 手动触发物理参数拟合
POST /retrain 启动重训
GET /retrain/status 重训进度
模型类签名变更:
TensionModel / QualityPredictionModel 新增 steel_grade 参数
AcidConsumptionModel 新增 fe_conc_avg 参数
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
推拉酸洗线 L2 过程控制系统
基于 FastAPI + Vue 2 的推拉酸洗线二级过程控制系统,实现物料跟踪、实绩管理、计划管理、停机管理、设备管理、工艺预测等功能。
技术栈
| 层 | 技术 |
|---|---|
| 后端 | Python 3.11+,FastAPI,SQLAlchemy 2(async),asyncpg |
| 数据库 | PostgreSQL 16 |
| 缓存 | Redis 7 |
| 前端 | Vue 2.7,Element UI,Axios |
| L1通信 | UDP(asyncio DatagramProtocol),监听 9000 端口 |
目录结构
pickling-mes/
├── backend/
│ ├── app/
│ │ ├── api/ # 路由(各模块接口)
│ │ ├── models/ # SQLAlchemy 数据模型
│ │ ├── services/ # 业务逻辑(UDP解析、预测模型)
│ │ ├── config.py # 配置(环境变量)
│ │ ├── database.py # 数据库连接
│ │ └── main.py # 入口
│ ├── tests/
│ │ └── test_udp_sender.py # UDP报文模拟测试工具
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── views/ # 页面组件
│ │ ├── api/ # 接口调用
│ │ ├── store/ # Vuex(认证)
│ │ └── router/ # 路由
│ └── package.json
├── docs/ # 接口文档
└── docker-compose.yml
启动方式
方式一:Docker Compose(推荐)
前置条件:已安装 Docker Desktop
cd pickling-mes
docker-compose up -d
启动后访问:
- 前端:http://localhost:8080
- 后端 API 文档:http://localhost:8000/docs
- 默认账号:
admin/admin123
停止:
docker-compose down
方式二:本地开发启动
前置条件:Python 3.11+,Node.js 18+,PostgreSQL 16,Redis 7
1. 准备数据库
# 启动 PostgreSQL 和 Redis(也可用 Docker 只起这两个服务)
docker-compose up -d postgres redis
2. 启动后端
cd backend
# 安装依赖
pip install -r requirements.txt
# 配置环境变量(可选,默认值已可用于本地开发)
cp .env.example .env # 如有需要修改数据库连接
# 启动
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
后端启动时会自动:
- 建表(init_db)
- 创建默认 admin 账号(admin / admin123)
- 启动 UDP 监听服务(0.0.0.0:9000)
3. 启动前端
cd frontend
# 安装依赖
npm install
# 开发模式启动
npm run serve
环境变量说明
在 backend/.env 中配置(不存在则使用下列默认值):
| 变量 | 默认值 | 说明 |
|---|---|---|
DATABASE_URL |
postgresql+asyncpg://postgres:password@localhost:5432/pickling_mes |
数据库连接(async) |
DATABASE_SYNC_URL |
postgresql://postgres:password@localhost:5432/pickling_mes |
数据库连接(同步,Alembic用) |
REDIS_URL |
redis://localhost:6379/0 |
Redis 连接 |
SECRET_KEY |
dev-secret-key |
JWT 签名密钥,生产环境必须修改 |
L1_HOST |
0.0.0.0 |
UDP 监听地址 |
L1_PORT |
9000 |
UDP 监听端口(L1 PLC 向此端口发送报文) |
ACCESS_TOKEN_EXPIRE_MINUTES |
480 |
Token 有效期(分钟) |
L1 通信(UDP)
系统启动后自动监听 UDP 0.0.0.0:9000,接收 L1 PLC 推送的报文。
已实现的报文类型(Body 格式待 PLC 方协议文档确认后适配):
| 报文 ID | 含义 | 触发时机 |
|---|---|---|
| PC01 | 卷材入口 | 带钢上线时 |
| PC02 | 卷材出口 | 带钢下线时 |
| PC03 | 过程数据 | 周期推送(2s) |
| PC04 | 质量缺陷 | 缺陷检出时 |
| PC05 | 设备状态 | 状态变化时 |
| PC20 | 心跳 | 每 10s |
模拟测试(无 PLC 时验证 UDP 通信):
cd backend
python tests/test_udp_sender.py
# 默认向 127.0.0.1:9000 发送 PC20/PC01/PC03/PC02 测试帧
预测模型
后端内置 4 个基于物理公式的工艺预测模型,无需训练数据即可运行:
| 模型 | 接口 | 说明 |
|---|---|---|
| 酸洗速度 | POST /prediction/acid-speed |
基于 Arrhenius 动力学,输出最大允许速度 |
| 张力设定 | POST /prediction/tension |
基于截面积×屈服强度,输出各区张力 |
| 质量预测 | POST /prediction/quality |
输出质量等级(A1~C)及改进建议 |
| 消耗预测 | POST /prediction/consumption |
输出单卷酸、蒸汽、电、水消耗量 |
接口参数详见:http://localhost:8000/docs
主要功能模块
| 路径 | 模块 |
|---|---|
/dashboard |
生产看板(实时指标、趋势图) |
/material |
物料跟踪(卷材全流程跟踪) |
/production |
实绩管理 |
/plan |
计划管理 |
/downtime |
停机管理 |
/equipment |
设备管理 |
/message |
报文监控(UDP收发日志) |
/process-model |
工艺段模型(酸洗速度预测) |
/tension-model |
张力设定 |
/pdi |
PDI 管理(L3 下发→L2 确认) |
/quality |
质量管理 |
/capacity |
产能分析 |
Description
Languages
Vue
41.8%
Python
33.1%
HTML
20.9%
JavaScript
2.1%
SCSS
2%