6.5 KiB
6.5 KiB
腾智微丝产线包装系统
项目概述
腾智微丝产线包装系统是一个基于PySide6(Qt for Python)开发的工业自动化控制系统,用于管理和监控微丝产线的包装过程。该系统集成了相机监控、称重、条码扫描、PLC通信等功能,为微丝产品的质量控制与包装提供全面的解决方案。
项目架构
系统采用典型的MVC(模型-视图-控制器)架构:
-
模型层(Model):
- 采用DAO(数据访问对象)模式访问数据库
- 支持多种数据库(SQLite、PostgreSQL、MySQL)
- 主要数据表包括用户表、检验配置表、检验数据表、电力消耗表等
-
视图层(View):
- 基于PySide6构建UI界面
- 主要界面包括登录界面、主窗口、设置界面等
- 采用分离的UI类设计,如LoginUI、MainWindowUI等
-
控制器层(Controller):
- 主要控制逻辑在widgets目录下的类中实现
- 使用信号槽机制进行组件间通信
- 采用单例模式管理全局资源
-
工具层(Utils):
- 提供各种工具类,如配置加载器、Modbus通信、串口管理等
- 采用单例模式确保资源共享
-
硬件集成层:
- 相机子系统:基于海康威视SDK进行集成
- 串口通信:与称重设备、扫描器等外设通信
- Modbus通信:与PLC设备通信
- 本地图像模式:支持离线使用本地图像序列进行模拟测试
技术栈
-
前端技术:
- PySide6(Qt for Python)用于GUI开发
- 使用Qt的信号槽机制实现组件间通信
-
后端技术:
- Python 3.7+作为主要开发语言
- 支持SQLite、PostgreSQL和MySQL数据库
- Modbus协议用于与PLC设备通信
- 多线程处理耗时操作
-
通信技术:
- Modbus TCP用于与PLC设备通信
- 串口通信用于与称重设备、条码扫描器等外设通信
- 支持键盘监听用于扫码枪等输入设备
-
设计模式:
- 单例模式(配置加载器、电力监控器、相机管理器等)
- DAO模式(数据访问)
- 观察者模式(信号槽)
- 工厂模式(数据库连接)
代码结构
-
主要目录:
widgets/:包含所有窗口控制器类ui/:包含所有UI定义类utils/:包含工具类dao/:包含数据访问对象db/:包含数据库文件config/:包含配置文件logs/:包含日志文件camera/:包含相机模块和SDK接口类apis/:API接口(用于接口模式)
-
核心文件:
main.py:程序入口点modbus_server.py:Modbus服务器模拟utils/config_loader.py:配置加载器utils/local_image_player.py:本地图像序列播放器widgets/camera_manager.py:相机管理器dao/login_dao.py:用户认证数据访问
系统特点与功能
-
两种运行模式:
- 单机模式(standalone):完整的独立系统
- 接口模式(api):作为其他系统的接口组件运行
-
本地图像模式:
- 支持本地图像序列播放,模拟相机实时画面
- 适用于开发测试和演示场景,无需连接实际相机设备
- 可调整播放帧率、设置循环播放等参数
-
相机管理:
- 支持海康威视相机设备管理
- 自动发现和枚举可用相机设备
- 相机参数设置和保存(曝光、增益、帧率等)
-
Modbus通信:
- 与PLC设备进行Modbus TCP通信
- 支持自动模式和手动模式切换
- 内置Modbus服务器模拟功能,便于开发测试
-
电力监控:
- 实时监控和记录电力消耗数据
- 数据可视化和统计分析
-
数据管理:
- 支持用户认证和权限控制
- 检验数据的采集、存储和分析
- 托盘类型管理
-
日志系统:
- 详细的日志记录
- 自动日志轮换
- 支持多级日志级别
安装与运行
系统要求
- Python 3.7+
- 支持Windows、macOS、Linux操作系统
安装步骤
-
安装依赖:
pip install -r requirements.txt -
配置应用:
- 配置文件位于
config/app_config.json - 默认使用SQLite数据库,位于
db/jtDB.db - 可配置数据库连接、相机参数、Modbus设置等
- 配置文件位于
-
运行应用:
python main.py
配置说明
-
数据库配置:
"database": { "default": "sqlite", "sources": { "sqlite": { "path": "db/jtDB.db", "description": "默认SQLite数据库" }, "postgresql": { "host": "localhost", "port": "5432", "user": "postgres", "password": "", "name": "jtDB" } } } -
本地图像模式配置:
"local_image_mode": { "enabled": true, "folder_path": "/path/to/images", "framerate": 15, "loop": true } -
应用模式配置:
"app": { "mode": "standalone", // 或 "api" "features": { "enable_serial_ports": false, "enable_keyboard_listener": false, "enable_camera": false } }
开发与扩展
系统采用模块化设计,可以方便地进行功能扩展:
-
添加新的数据源:扩展DAO层,实现对应的数据访问对象
-
添加新的硬件支持:
- 参考
widgets/camera_manager.py添加新的硬件管理器 - 参考
utils/local_image_player.py添加新的设备模拟器
- 参考
-
扩展UI界面:
- 在
ui/目录下创建新的UI类 - 在
widgets/目录下创建对应的控制器类
- 在
-
添加新的通信协议:参考
modbus_server.py实现新的通信接口
注意事项
-
首次运行时,系统将自动创建默认配置和数据库
-
日志文件位于
logs/目录,按日期自动轮换 -
如果使用相机功能,需确保已安装海康威视SDK
-
在测试环境中,可使用本地图像模式替代实际相机
故障排除
-
日志查看:
- 检查
logs/目录下的日志文件 - 日志格式为
app_YYYY-MM-DD.log
- 检查
-
数据库问题:
- 确认数据库配置正确
- 查看数据库连接错误日志
-
相机连接问题:
- 确认相机驱动已正确安装
- 尝试启用本地图像模式进行测试
-
Modbus通信问题:
- 检查PLC设备IP和端口配置
- 使用
modbus_server.py进行通信测试