282 lines
8.4 KiB
Markdown
282 lines
8.4 KiB
Markdown
# 腾智微丝产线包装系统
|
||
|
||
## 项目概述
|
||
|
||
腾智微丝产线包装系统是一个基于PySide6(Qt for Python)开发的工业自动化控制系统,用于管理和监控微丝产线的包装过程。该系统集成了相机监控、称重、条码扫描、PLC通信等功能,为微丝产品的质量控制与包装提供全面的解决方案。
|
||
|
||
## 系统架构
|
||
|
||
系统采用MVC(模型-视图-控制器)架构,并集成了多种工业通信协议:
|
||
|
||
1. **模型层(Model)**:
|
||
- 采用DAO(数据访问对象)模式访问数据库
|
||
- 支持多种数据库(SQLite、PostgreSQL、MySQL)
|
||
- 核心数据表包括用户表、检验配置表、检验数据表、电力消耗表、托盘类型表等
|
||
|
||
2. **视图层(View)**:
|
||
- 基于PySide6构建UI界面
|
||
- 界面包括登录界面、主窗口、设置界面、相机配置界面、检验设置等
|
||
- 支持多语言界面(中文简体为主)
|
||
|
||
3. **控制器层(Controller)**:
|
||
- 主要控制逻辑在widgets目录下实现
|
||
- 使用Qt信号槽机制进行组件间通信
|
||
- 采用单例模式管理全局资源和服务
|
||
|
||
4. **工具层(Utils)**:
|
||
- 配置加载器(config_loader.py)
|
||
- 本地图像播放器(local_image_player.py)
|
||
- 串口管理器(serial_manager.py)
|
||
- Modbus通信工具(modbus_utils.py和modbus_monitor.py)
|
||
- 电力监控(electricity_monitor.py)
|
||
- 键盘监听器(keyboard_listener.py)
|
||
- 数据库工具(sql_utils.py)
|
||
- 检验配置管理器(inspection_config_manager.py)
|
||
|
||
5. **硬件集成**:
|
||
- **相机子系统**:基于海康威视SDK集成(camera目录)
|
||
- **串口通信**:支持多种设备(称重设备、扫描器等)
|
||
- **Modbus通信**:与PLC设备通信
|
||
- **本地图像模式**:支持离线使用本地图像序列
|
||
|
||
## 技术栈
|
||
|
||
1. **前端技术**:
|
||
- PySide6(Qt for Python)用于GUI开发
|
||
- Qt样式表(QSS)用于界面美化
|
||
|
||
2. **后端技术**:
|
||
- Python 3.7+
|
||
- 支持多种数据库(SQLite、PostgreSQL、MySQL)
|
||
- 多线程处理模型
|
||
- 进程间通信
|
||
|
||
3. **通信技术**:
|
||
- Modbus TCP协议(与PLC设备通信)
|
||
- 串口通信(RS-232/485协议)
|
||
- HTTP RESTful API(API模式)
|
||
|
||
4. **设计模式**:
|
||
- 单例模式(ConfigLoader、ElectricityMonitor等)
|
||
- DAO模式(数据访问层)
|
||
- 观察者模式(基于Qt信号槽)
|
||
- 工厂模式(数据库连接)
|
||
- 策略模式(不同通信协议的实现)
|
||
|
||
## 代码结构
|
||
|
||
1. **主要目录**:
|
||
- `main.py`:程序入口,初始化应用
|
||
- `widgets/`:窗口控制器类(包含主窗口、设置窗口、相机窗口等)
|
||
- `ui/`:UI定义类(使用PySide6的界面描述)
|
||
- `utils/`:工具类(配置、串口、Modbus、电力监控等)
|
||
- `dao/`:数据访问对象(用户、检验、电力数据等)
|
||
- `db/`:数据库文件和工具
|
||
- `config/`:配置文件目录
|
||
- `logs/`:日志文件存储目录
|
||
- `camera/`:相机模块和SDK集成
|
||
- `apis/`:API接口定义(用于接口模式)
|
||
- `inspection/`:检验相关业务逻辑
|
||
|
||
2. **关键组件**:
|
||
- **主窗口**(`widgets/main_window.py`):系统核心界面,集成所有功能
|
||
- **相机管理器**(`widgets/camera_manager.py`):管理相机设备连接与图像获取
|
||
- **串口管理器**(`utils/serial_manager.py`):管理多个串口设备连接
|
||
- **Modbus工具**(`utils/modbus_utils.py`):Modbus协议通信
|
||
- **电力监控**(`utils/electricity_monitor.py`):监控电力消耗
|
||
- **检验DAO**(`dao/inspection_dao.py`):处理检验数据存储与检索
|
||
- **本地图像播放器**(`utils/local_image_player.py`):模拟相机图像源
|
||
|
||
## 系统特点与功能
|
||
|
||
1. **运行模式**:
|
||
- **单机模式**(standalone):完整独立系统
|
||
- **API模式**(api):作为其他系统的接口组件运行
|
||
- **开发/测试模式**:支持模拟器和测试工具
|
||
|
||
2. **本地图像模式**:
|
||
- 支持从本地图像序列模拟相机画面
|
||
- 可配置播放速率、循环模式
|
||
- 支持多种图像格式(JPG、PNG、BMP等)
|
||
|
||
3. **相机管理**:
|
||
- 支持海康威视相机设备
|
||
- 相机参数配置(曝光、增益、帧率等)
|
||
- 实时图像显示和处理
|
||
|
||
4. **通信功能**:
|
||
- **Modbus通信**:支持读写PLC寄存器
|
||
- **串口通信**:支持多种设备协议(称重设备、扫描器等)
|
||
- **键盘监听**:支持扫码枪等输入设备
|
||
|
||
5. **检验管理**:
|
||
- 检验配置管理
|
||
- 检验数据记录和分析
|
||
- 检验报告生成
|
||
|
||
6. **电力监控**:
|
||
- 定时记录电力消耗数据
|
||
- 电力数据分析和报表
|
||
|
||
7. **安全与用户管理**:
|
||
- 用户认证系统
|
||
- 操作日志记录
|
||
- 系统异常处理和恢复
|
||
|
||
8. **日志系统**:
|
||
- 多级日志记录
|
||
- 自动日志轮换
|
||
- 异常信息捕获与记录
|
||
|
||
## 安装与运行
|
||
|
||
### 系统要求
|
||
- Python 3.7+
|
||
- PySide6 6.2.0+
|
||
- 相关依赖库(见requirements.txt)
|
||
- 支持Windows、macOS、Linux操作系统
|
||
|
||
### 安装步骤
|
||
|
||
1. 安装依赖:
|
||
```
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
2. 配置应用:
|
||
- 配置文件位于`config/app_config.json`
|
||
- 默认使用SQLite数据库,位于`db/jtDB.db`
|
||
- 可配置数据库连接、相机参数、串口设置等
|
||
|
||
3. 运行应用:
|
||
```
|
||
python main.py
|
||
```
|
||
|
||
### 配置说明
|
||
|
||
1. **应用配置**:
|
||
```json
|
||
"app": {
|
||
"name": "腾智微丝产线包装系统",
|
||
"version": "1.0.0",
|
||
"features": {
|
||
"enable_serial_ports": true,
|
||
"enable_keyboard_listener": false,
|
||
"enable_camera": false
|
||
},
|
||
"mode": "api" // 或 "standalone"
|
||
}
|
||
```
|
||
|
||
2. **数据库配置**:
|
||
```json
|
||
"database": {
|
||
"default": "sqlite",
|
||
"sources": {
|
||
"sqlite": {
|
||
"path": "db/jtDB.db",
|
||
"description": "默认SQLite数据库"
|
||
},
|
||
"postgresql": {
|
||
"host": "localhost",
|
||
"port": "5432",
|
||
"user": "postgres",
|
||
"password": "",
|
||
"name": "jtDB"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
3. **相机配置**:
|
||
```json
|
||
"camera": {
|
||
"enabled": false,
|
||
"default_exposure": 20000,
|
||
"default_gain": 10,
|
||
"default_framerate": 30,
|
||
"local_mode": {
|
||
"enabled": true,
|
||
"folder_path": "/path/to/images",
|
||
"framerate": 15,
|
||
"loop": true
|
||
}
|
||
}
|
||
```
|
||
|
||
4. **Modbus配置**:
|
||
```json
|
||
"modbus": {
|
||
"host": "localhost",
|
||
"port": "5020"
|
||
}
|
||
```
|
||
|
||
5. **串口配置**:
|
||
```json
|
||
"serial": {
|
||
"cz": { // 称重设备
|
||
"code": "cz",
|
||
"ser": "COM2",
|
||
"port": "9600",
|
||
"data_bits": 8,
|
||
"stop_bits": 1,
|
||
"parity": "N",
|
||
"timeout": 1
|
||
},
|
||
// 其他串口设备配置...
|
||
}
|
||
```
|
||
|
||
## 开发与扩展
|
||
|
||
系统设计采用模块化和松耦合原则,便于扩展:
|
||
|
||
1. **添加新的数据源**:
|
||
- 在`dao/`目录下创建新的DAO类
|
||
- 遵循现有DAO模式和接口约定
|
||
|
||
2. **添加新的硬件支持**:
|
||
- 在`utils/`目录下创建新的硬件管理类
|
||
- 实现相应的信号机制与主程序通信
|
||
|
||
3. **扩展UI界面**:
|
||
- 在`ui/`目录下创建新的UI定义类
|
||
- 在`widgets/`目录下创建对应控制器类
|
||
|
||
4. **添加新的通信协议**:
|
||
- 参考`utils/modbus_utils.py`和`utils/serial_manager.py`实现
|
||
|
||
## 注意事项
|
||
|
||
1. 首次运行时,系统将自动创建默认配置和数据库
|
||
|
||
2. 日志文件位于`logs/`目录,按日期自动轮换
|
||
|
||
3. 使用相机功能前,确保已安装相应的SDK
|
||
|
||
4. 在开发/测试环境中,可使用本地图像模式和Modbus服务器模拟
|
||
|
||
5. 系统支持热插拔设备,但建议在操作前确认设备状态
|
||
|
||
## 故障排除
|
||
|
||
1. **日志查看**:
|
||
- 检查`logs/`目录下的日志文件(`app_YYYY-MM-DD.log`格式)
|
||
- 查看控制台输出信息
|
||
|
||
2. **数据库问题**:
|
||
- 确认数据库配置正确
|
||
- 检查数据库文件权限
|
||
- 可使用SQLite浏览工具查看数据库内容
|
||
|
||
3. **设备连接问题**:
|
||
- 检查设备是否正确连接
|
||
- 确认设备驱动已安装
|
||
- 验证设备配置参数(串口、波特率等)
|
||
|
||
4. **Modbus通信问题**:
|
||
- 使用`modbus_server.py`进行通信测试
|
||
- 检查网络连接和防火墙设置
|
||
- 验证Modbus寄存器地址配置 |