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