- 从物料跟踪页面移除订单号列和表单字段 - 从导航菜单移除PDI管理,添加设备巡检 - 新增InspectionLocation和InspectionRecord后端模型和API - 新增设备巡检前端页面(左侧点位列表,右侧设备和历史记录)
189 lines
5.1 KiB
Markdown
189 lines
5.1 KiB
Markdown
# 推拉酸洗线 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` | 产能分析 |
|