jiateng_ws/README.md

282 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 腾智微丝产线包装系统
## 项目概述
腾智微丝产线包装系统是一个基于PySide6Qt 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. **前端技术**
- PySide6Qt for Python用于GUI开发
- Qt样式表(QSS)用于界面美化
2. **后端技术**
- Python 3.7+
- 支持多种数据库SQLite、PostgreSQL、MySQL
- 多线程处理模型
- 进程间通信
3. **通信技术**
- Modbus TCP协议与PLC设备通信
- 串口通信RS-232/485协议
- HTTP RESTful APIAPI模式
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寄存器地址配置