添加前端Vue2项目结构,包括ElementUI集成、路由配置和API模块 实现后端FastAPI服务,包含Oracle数据库连接和PDI CRUD接口 添加OPC-UA轮询服务,支持跟踪图数据同步到Oracle 提供SQLite镜像数据库用于本地开发和快速查询 包含完整的部署脚本和文档说明
3.4 KiB
3.4 KiB
HEFA-L2 PDI 管理系统
基于 FastAPI + Oracle + OPC-UA + Vue2 的生产计划数据管理平台。
功能说明
| 模块 | 说明 |
|---|---|
| PDI 计划管理 | 对 PDI_PLTM 表进行增删改查,支持分页、筛选 |
| 跟踪图监控 | 实时展示 CMPT_PL_TRACKMAP OPC 采集数据,每 3 秒刷新 |
| OPC 配置 | 可视化配置 OPC-UA 服务器地址、计数器节点、节点映射 |
目录结构
HEFA-L2/
├── backend/
│ ├── main.py # FastAPI 路由
│ ├── database.py # Oracle 连接
│ ├── models.py # Pydantic 模型
│ ├── opc_service.py # OPC-UA 轮询服务
│ ├── requirements.txt
│ └── .env.example # 环境变量模板
└── frontend/
├── src/
│ ├── main.js
│ ├── router.js
│ ├── App.vue
│ ├── api/index.js
│ └── views/
│ ├── PdiList.vue # PDI CRUD
│ ├── TrackMap.vue # OPC 跟踪图
│ └── OpcConfig.vue # OPC 配置
├── package.json
└── vue.config.js
快速启动
1. 后端
cd backend
# 复制并填写环境变量
copy .env.example .env
# 编辑 .env,填入 Oracle 连接信息和 OPC 地址
# 安装依赖(需要先安装 Oracle Instant Client)
pip install -r requirements.txt
# 启动
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
2. 前端
cd frontend
npm install
npm run serve
# 访问 http://localhost:8080
环境变量说明 (.env)
| 变量 | 说明 | 示例 |
|---|---|---|
ORACLE_DSN |
Oracle 数据源 | 192.168.1.10:1521/ORCL |
ORACLE_USER |
用户名 | pltm |
ORACLE_PASSWORD |
密码 | your_password |
OPC_URL |
OPC-UA 服务器地址 | opc.tcp://192.168.1.100:4840 |
OPC_COUNTER_NODE |
计数器节点 ID | ns=2;s=PL.TRACKMAP.COUNTER |
OPC_POLL_INTERVAL |
轮询间隔(秒) | 2 |
OPC_NODE_position |
位置节点映射 | ns=2;s=PL.TRACKMAP.POSITION |
OPC_NODE_coilid |
卷号节点映射 | ns=2;s=PL.TRACKMAP.COILID |
OPC 采集逻辑
- 后端启动时自动开始轮询 OPC-UA 服务器
- 每隔
OPC_POLL_INTERVAL秒读取OPC_COUNTER_NODE节点值 - 当 counter 值发生变化时,读取所有在
trackmap_nodes中配置的节点 - 根据
position字段更新 OraclePLTM.CMPT_PL_TRACKMAP对应行 - 所有操作写入事件日志,可在「OPC 配置」和「跟踪图监控」页面查看
OPC 节点映射配置方式
方式一:通过 .env 文件
OPC_NODE_position=ns=2;s=PL.TRACKMAP.POSITION
OPC_NODE_coilid=ns=2;s=PL.TRACKMAP.COILID
OPC_NODE_bef_es=ns=2;s=PL.TRACKMAP.BEF_ES
OPC_NODE_es=ns=2;s=PL.TRACKMAP.ES
OPC_NODE_ent_loo=ns=2;s=PL.TRACKMAP.ENT_LOO
OPC_NODE_pl=ns=2;s=PL.TRACKMAP.PL
OPC_NODE_int_loo=ns=2;s=PL.TRACKMAP.INT_LOO
OPC_NODE_st=ns=2;s=PL.TRACKMAP.ST
OPC_NODE_exi_loo=ns=2;s=PL.TRACKMAP.EXI_LOO
OPC_NODE_run_speed_min=ns=2;s=PL.TRACKMAP.RUN_SPEED_MIN
OPC_NODE_run_speed_max=ns=2;s=PL.TRACKMAP.RUN_SPEED_MAX
方式二:通过前端「OPC 配置」页面
在界面上添加列名→节点ID映射,保存后立即生效。
Oracle Instant Client 安装
安装后设置环境变量或在代码中初始化:
import cx_Oracle
cx_Oracle.init_oracle_client(lib_dir=r"C:\oracle\instantclient_21_x")