224 lines
6.5 KiB
Markdown
224 lines
6.5 KiB
Markdown
# 腾智微丝产线包装系统
|
||
|
||
## 项目概述
|
||
|
||
腾智微丝产线包装系统是一个基于PySide6(Qt for Python)开发的工业自动化控制系统,用于管理和监控微丝产线的包装过程。该系统集成了相机监控、称重、条码扫描、PLC通信等功能,为微丝产品的质量控制与包装提供全面的解决方案。
|
||
|
||
## 项目架构
|
||
|
||
系统采用典型的MVC(模型-视图-控制器)架构:
|
||
|
||
1. **模型层(Model)**:
|
||
- 采用DAO(数据访问对象)模式访问数据库
|
||
- 支持多种数据库(SQLite、PostgreSQL、MySQL)
|
||
- 主要数据表包括用户表、检验配置表、检验数据表、电力消耗表等
|
||
|
||
2. **视图层(View)**:
|
||
- 基于PySide6构建UI界面
|
||
- 主要界面包括登录界面、主窗口、设置界面等
|
||
- 采用分离的UI类设计,如LoginUI、MainWindowUI等
|
||
|
||
3. **控制器层(Controller)**:
|
||
- 主要控制逻辑在widgets目录下的类中实现
|
||
- 使用信号槽机制进行组件间通信
|
||
- 采用单例模式管理全局资源
|
||
|
||
4. **工具层(Utils)**:
|
||
- 提供各种工具类,如配置加载器、Modbus通信、串口管理等
|
||
- 采用单例模式确保资源共享
|
||
|
||
5. **硬件集成层**:
|
||
- **相机子系统**:基于海康威视SDK进行集成
|
||
- **串口通信**:与称重设备、扫描器等外设通信
|
||
- **Modbus通信**:与PLC设备通信
|
||
- **本地图像模式**:支持离线使用本地图像序列进行模拟测试
|
||
|
||
## 技术栈
|
||
|
||
1. **前端技术**:
|
||
- PySide6(Qt for Python)用于GUI开发
|
||
- 使用Qt的信号槽机制实现组件间通信
|
||
|
||
2. **后端技术**:
|
||
- Python 3.7+作为主要开发语言
|
||
- 支持SQLite、PostgreSQL和MySQL数据库
|
||
- Modbus协议用于与PLC设备通信
|
||
- 多线程处理耗时操作
|
||
|
||
3. **通信技术**:
|
||
- Modbus TCP用于与PLC设备通信
|
||
- 串口通信用于与称重设备、条码扫描器等外设通信
|
||
- 支持键盘监听用于扫码枪等输入设备
|
||
|
||
4. **设计模式**:
|
||
- 单例模式(配置加载器、电力监控器、相机管理器等)
|
||
- DAO模式(数据访问)
|
||
- 观察者模式(信号槽)
|
||
- 工厂模式(数据库连接)
|
||
|
||
## 代码结构
|
||
|
||
1. **主要目录**:
|
||
- `widgets/`:包含所有窗口控制器类
|
||
- `ui/`:包含所有UI定义类
|
||
- `utils/`:包含工具类
|
||
- `dao/`:包含数据访问对象
|
||
- `db/`:包含数据库文件
|
||
- `config/`:包含配置文件
|
||
- `logs/`:包含日志文件
|
||
- `camera/`:包含相机模块和SDK接口类
|
||
- `apis/`:API接口(用于接口模式)
|
||
|
||
2. **核心文件**:
|
||
- `main.py`:程序入口点
|
||
- `modbus_server.py`:Modbus服务器模拟
|
||
- `utils/config_loader.py`:配置加载器
|
||
- `utils/local_image_player.py`:本地图像序列播放器
|
||
- `widgets/camera_manager.py`:相机管理器
|
||
- `dao/login_dao.py`:用户认证数据访问
|
||
|
||
## 系统特点与功能
|
||
|
||
1. **两种运行模式**:
|
||
- 单机模式(standalone):完整的独立系统
|
||
- 接口模式(api):作为其他系统的接口组件运行
|
||
|
||
2. **本地图像模式**:
|
||
- 支持本地图像序列播放,模拟相机实时画面
|
||
- 适用于开发测试和演示场景,无需连接实际相机设备
|
||
- 可调整播放帧率、设置循环播放等参数
|
||
|
||
3. **相机管理**:
|
||
- 支持海康威视相机设备管理
|
||
- 自动发现和枚举可用相机设备
|
||
- 相机参数设置和保存(曝光、增益、帧率等)
|
||
|
||
4. **Modbus通信**:
|
||
- 与PLC设备进行Modbus TCP通信
|
||
- 支持自动模式和手动模式切换
|
||
- 内置Modbus服务器模拟功能,便于开发测试
|
||
|
||
5. **电力监控**:
|
||
- 实时监控和记录电力消耗数据
|
||
- 数据可视化和统计分析
|
||
|
||
6. **数据管理**:
|
||
- 支持用户认证和权限控制
|
||
- 检验数据的采集、存储和分析
|
||
- 托盘类型管理
|
||
|
||
7. **日志系统**:
|
||
- 详细的日志记录
|
||
- 自动日志轮换
|
||
- 支持多级日志级别
|
||
|
||
## 安装与运行
|
||
|
||
### 系统要求
|
||
- Python 3.7+
|
||
- 支持Windows、macOS、Linux操作系统
|
||
|
||
### 安装步骤
|
||
|
||
1. 安装依赖:
|
||
```
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
2. 配置应用:
|
||
- 配置文件位于`config/app_config.json`
|
||
- 默认使用SQLite数据库,位于`db/jtDB.db`
|
||
- 可配置数据库连接、相机参数、Modbus设置等
|
||
|
||
3. 运行应用:
|
||
```
|
||
python main.py
|
||
```
|
||
|
||
### 配置说明
|
||
|
||
1. **数据库配置**:
|
||
```json
|
||
"database": {
|
||
"default": "sqlite",
|
||
"sources": {
|
||
"sqlite": {
|
||
"path": "db/jtDB.db",
|
||
"description": "默认SQLite数据库"
|
||
},
|
||
"postgresql": {
|
||
"host": "localhost",
|
||
"port": "5432",
|
||
"user": "postgres",
|
||
"password": "",
|
||
"name": "jtDB"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
2. **本地图像模式配置**:
|
||
```json
|
||
"local_image_mode": {
|
||
"enabled": true,
|
||
"folder_path": "/path/to/images",
|
||
"framerate": 15,
|
||
"loop": true
|
||
}
|
||
```
|
||
|
||
3. **应用模式配置**:
|
||
```json
|
||
"app": {
|
||
"mode": "standalone", // 或 "api"
|
||
"features": {
|
||
"enable_serial_ports": false,
|
||
"enable_keyboard_listener": false,
|
||
"enable_camera": false
|
||
}
|
||
}
|
||
```
|
||
|
||
## 开发与扩展
|
||
|
||
系统采用模块化设计,可以方便地进行功能扩展:
|
||
|
||
1. **添加新的数据源**:扩展DAO层,实现对应的数据访问对象
|
||
|
||
2. **添加新的硬件支持**:
|
||
- 参考`widgets/camera_manager.py`添加新的硬件管理器
|
||
- 参考`utils/local_image_player.py`添加新的设备模拟器
|
||
|
||
3. **扩展UI界面**:
|
||
- 在`ui/`目录下创建新的UI类
|
||
- 在`widgets/`目录下创建对应的控制器类
|
||
|
||
4. **添加新的通信协议**:参考`modbus_server.py`实现新的通信接口
|
||
|
||
## 注意事项
|
||
|
||
1. 首次运行时,系统将自动创建默认配置和数据库
|
||
|
||
2. 日志文件位于`logs/`目录,按日期自动轮换
|
||
|
||
3. 如果使用相机功能,需确保已安装海康威视SDK
|
||
|
||
4. 在测试环境中,可使用本地图像模式替代实际相机
|
||
|
||
## 故障排除
|
||
|
||
1. **日志查看**:
|
||
- 检查`logs/`目录下的日志文件
|
||
- 日志格式为`app_YYYY-MM-DD.log`
|
||
|
||
2. **数据库问题**:
|
||
- 确认数据库配置正确
|
||
- 查看数据库连接错误日志
|
||
|
||
3. **相机连接问题**:
|
||
- 确认相机驱动已正确安装
|
||
- 尝试启用本地图像模式进行测试
|
||
|
||
4. **Modbus通信问题**:
|
||
- 检查PLC设备IP和端口配置
|
||
- 使用`modbus_server.py`进行通信测试 |