# 推拉酸洗线 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 ```bash cd pickling-mes docker-compose up -d ``` 启动后访问: - 前端:http://localhost:8080 - 后端 API 文档:http://localhost:8000/docs - 默认账号:`admin` / `admin123` 停止: ```bash docker-compose down ``` --- ### 方式二:本地开发启动 **前置条件**:Python 3.11+,Node.js 18+,PostgreSQL 16,Redis 7 #### 1. 准备数据库 ```bash # 启动 PostgreSQL 和 Redis(也可用 Docker 只起这两个服务) docker-compose up -d postgres redis ``` #### 2. 启动后端 ```bash 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. 启动前端 ```bash cd frontend # 安装依赖 npm install # 开发模式启动 npm run serve ``` 访问 http://localhost:8080 --- ## 环境变量说明 在 `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 通信): ```bash 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` | 产能分析 |