佳腾微丝包装
Go to file
2025-07-07 15:33:56 +08:00
apis feat: 更新托盘号和订单信息处理逻辑,优化API接口调用,调整数据库查询和写入逻辑,已完成 api 接口调用部分 2025-06-25 14:56:04 +08:00
camera feat: 更新相机控制库加载逻辑 2025-06-28 13:02:34 +08:00
config feat:提交一下关于线径获取和相机回显的代码 2025-07-07 15:33:56 +08:00
dao feat: 解决 sql 游标循环调用问题 2025-07-01 15:32:40 +08:00
db feat:提交一下关于线径获取和相机回显的代码 2025-07-07 15:33:56 +08:00
tests feat:提交一下关于线径获取和相机回显的代码 2025-07-07 15:33:56 +08:00
ui feat:提交一下关于线径获取和相机回显的代码 2025-07-07 15:33:56 +08:00
utils feat:提交一下关于线径获取和相机回显的代码 2025-07-07 15:33:56 +08:00
widgets feat:提交一下关于线径获取和相机回显的代码 2025-07-07 15:33:56 +08:00
.gitignore 删除__pycache__文件夹并更新.gitignore以忽略这些目录 2025-06-16 09:10:36 +08:00
app_config.json feat:提交一下关于线径获取和相机回显的代码 2025-07-07 15:33:56 +08:00
from pymodbus.py feat:新增上料下料按钮触发 2025-07-01 16:04:18 +08:00
main.py feat: 解决 sql 游标循环调用问题 2025-07-01 15:32:40 +08:00
modbus_server.py 添加托盘类型配置表和相关UI功能,更新主窗口以支持托盘类型选择,增强设置界面以管理托盘类型,修改配置文件以包含Modbus设置。 2025-06-10 16:13:22 +08:00
README.md feat:提交一下关于线径获取和相机回显的代码 2025-07-07 15:33:56 +08:00
requirements.txt feat:提交一下关于线径获取和相机回显的代码 2025-07-07 15:33:56 +08:00
test_keyboard.py 更新配置文件以支持串口功能,修改主窗口以初始化串口管理器并处理设置变更 2025-06-12 17:29:35 +08:00

腾智微丝产线包装系统

项目架构分析

这是一个基于PySide6Qt for Python开发的腾智微丝产线包装系统采用了典型的MVC模型-视图-控制器)架构:

  1. 模型层Model

    • 使用DAO数据访问对象模式访问数据库
    • 支持多种数据库SQLite、PostgreSQL、MySQL
    • 主要数据表包括用户表、检验配置表、检验数据表、电力消耗表等
  2. 视图层View

    • 使用PySide6构建UI界面
    • 主要界面包括登录界面、主窗口、设置界面等
    • 采用分离的UI类设计如LoginUI、MainWindowUI等
  3. 控制器层Controller

    • 主要控制逻辑在widgets目录下的类中实现
    • 使用信号槽机制进行组件间通信
    • 采用单例模式管理全局资源
  4. 工具层Utils

    • 提供各种工具类如配置加载器、Modbus通信、串口管理等
    • 采用单例模式确保资源共享
  5. 硬件集成层

    • 相机子系统基于海康威视SDK进行集成
      • 相机管理器CameraManager单例模式管理相机生命周期
      • 相机显示组件CameraDisplayWidget用于实时显示相机画面
      • 相机设置控制器CameraSettingsWidget管理相机参数设置
    • 串口通信:与称重设备、扫描器等外设通信
    • Modbus通信与PLC设备通信

技术栈

  1. 前端技术

    • PySide6Qt for Python用于GUI开发
    • 使用Qt的信号槽机制实现组件间通信
  2. 后端技术

    • Python作为主要开发语言
    • SQLite作为默认数据库支持PostgreSQL和MySQL
    • Modbus协议用于与设备通信
    • 多线程处理耗时操作
  3. 通信技术

    • Modbus TCP用于与PLC设备通信
    • 串口通信用于与称重设备、条码扫描器等外设通信
    • 海康威视SDK用于相机图像采集和处理
  4. 设计模式

    • 单例模式(配置加载器、监控器、相机管理器等)
    • DAO模式数据访问
    • 观察者模式(信号槽)
    • 工厂模式(数据库连接)

代码结构

  1. 主要目录

    • widgets/:包含所有窗口控制器类
    • ui/包含所有UI定义类
    • utils/:包含工具类
    • dao/:包含数据访问对象
    • db/:包含数据库文件
    • config/:包含配置文件
    • logs/:包含日志文件
    • camera/包含相机模块和SDK接口类
  2. 核心文件

    • main.py:程序入口点
    • widgets/login_widget.py:登录窗口控制器
    • widgets/main_window.py:主窗口控制器
    • widgets/camera_manager.py:相机管理器
    • widgets/camera_display_widget.py:相机显示组件
    • widgets/camera_settings_widget.py:相机设置控制器
    • utils/config_loader.py:配置加载器
    • utils/modbus_utils.pyModbus通信工具
    • utils/sql_utils.py:数据库工具
    • camera/CamOperation_class.py:相机操作类
    • camera/MvCameraControl_class.py海康威视相机控制SDK
    • utils/local_image_player.py:本地图像序列播放器
  3. 应用流程

    • 程序启动后初始化日志系统和配置
    • 创建和初始化各子系统(数据库、电力监控器等)
    • 显示登录窗口
    • 验证登录后显示主窗口
    • 主窗口中进行产线包装系统的操作,包括:
      • 产品检测和包装
      • 实时相机监控
      • 数据采集和报表生成
      • 设备状态监控和控制

相机子系统详解

  1. 架构设计

    • 采用分层设计将相机SDK封装在底层提供简洁API供上层使用
    • 相机管理采用单例模式,确保全局只有一个相机实例
    • 使用信号槽机制实现相机状态与UI的松耦合通信
  2. 核心组件

    • CameraManager:单例类,负责相机设备枚举、开关、参数设置等
    • CameraDisplayWidget显示组件负责在UI中显示相机画面
    • CameraSettingsWidget:设置控制器,负责参数调整界面交互
    • CamOperation_class相机操作封装类直接与海康SDK交互
    • LocalImagePlayer:本地图像序列播放器,提供基于本地图片序列的视频模拟功能
  3. 工作流程

    • 系统启动时初始化相机SDK
    • 用户界面显示时枚举并连接可用的相机设备
    • 启动相机图像采集并在UI中显示
    • 用户可通过设置界面调整相机参数(曝光、增益、帧率等)
    • 系统关闭时正确释放相机资源
  4. 配置管理

    • 相机参数保存在config/app_config.jsoncamera部分
    • 包括默认曝光时间、增益、帧率等参数
    • 用户调整的参数可保存至配置文件持久化
  5. 本地图像模式

    • 支持本地图像序列播放,可用于模拟相机实时画面
    • 用户可选择包含图像序列的文件夹,系统自动按时间顺序播放
    • 可调整播放帧率、设置循环播放等参数
    • 适用于开发测试和演示场景,无需连接实际相机设备
    • 配置参数保存在config/app_config.jsoncamera.local_mode部分

功能特点

  1. 用户认证:支持用户登录和权限控制
  2. 产线监控:实时监控产线状态、电力消耗等
  3. 数据采集:采集称重数据、检验数据等
  4. 相机集成:支持实时图像采集、显示和参数调整
  5. 报表生成:生成各类统计报表
  6. 设备通信与PLC、称重设备等通信
  7. 多模式支持:支持单机模式和接口模式

运行环境

  • Python 3.7+
  • PySide6
  • 支持的数据库SQLite、PostgreSQL、MySQL
  • 操作系统Windows、macOS、Linux

安装与配置

  1. 安装依赖:

    pip install -r requirements.txt
    
  2. 配置数据库:

    • 默认使用SQLite数据库位于db/jtDB.db
    • 可在config/app_config.json中配置其他数据库
  3. 配置相机:

    • config/app_config.json中的camera部分调整相机参数
    • 默认参数:
      "camera": {
          "enabled": false,
          "default_exposure": 20000,
          "default_gain": 10,
          "default_framerate": 30,
          "local_mode": {
              "enabled": false,
              "folder_path": "",
              "framerate": 15,
              "loop": true,
              "file_patterns": [".jpg", ".jpeg", ".png", ".bmp"]
          }
      }
      
  4. 运行程序:

    python main.py
    

开发与扩展

系统采用模块化设计,可以方便地进行功能扩展:

  1. 添加新的数据源:扩展utils/sql_utils.py
  2. 添加新的设备通信协议:参考utils/modbus_utils.py
  3. 添加新的UI界面ui/目录下创建新的UI类widgets/目录下创建对应的控制器类
  4. 扩展相机功能:修改widgets/camera_manager.pycamera/CamOperation_class.py