# 腾智微丝产线包装系统 ## 项目概述 腾智微丝产线包装系统是一个基于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寄存器地址配置