Files
pickling-mes/README.md

189 lines
5.1 KiB
Markdown
Raw Normal View History

# 推拉酸洗线 L2 过程控制系统
基于 FastAPI + Vue 2 的推拉酸洗线二级过程控制系统,实现物料跟踪、实绩管理、计划管理、停机管理、设备管理、工艺预测等功能。
---
## 技术栈
| 层 | 技术 |
|----|------|
| 后端 | Python 3.11+FastAPISQLAlchemy 2asyncasyncpg |
| 数据库 | PostgreSQL 16 |
| 缓存 | Redis 7 |
| 前端 | Vue 2.7Element UIAxios |
| L1通信 | UDPasyncio 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 16Redis 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` | 产能分析 |