jiateng_ws/README.md

224 lines
6.5 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界面
- 主要界面包括登录界面、主窗口、设置界面等
- 采用分离的UI类设计如LoginUI、MainWindowUI等
3. **控制器层Controller**
- 主要控制逻辑在widgets目录下的类中实现
- 使用信号槽机制进行组件间通信
- 采用单例模式管理全局资源
4. **工具层Utils**
- 提供各种工具类如配置加载器、Modbus通信、串口管理等
- 采用单例模式确保资源共享
5. **硬件集成层**
- **相机子系统**基于海康威视SDK进行集成
- **串口通信**:与称重设备、扫描器等外设通信
- **Modbus通信**与PLC设备通信
- **本地图像模式**:支持离线使用本地图像序列进行模拟测试
## 技术栈
1. **前端技术**
- PySide6Qt 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`进行通信测试