# 腾智微丝产线包装系统 ## 项目概述 腾智微丝产线包装系统是一个基于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`进行通信测试