C#源码 上位机 联合Visionpro 通用框架开发源码,已应用于多个项目,整套设备程序,可以根据需求编出来,具体Vpp功能自己编 程序包含功能 1.自动设置界面窗体个数及分布 2.照方式以命令触发 3.自动九点标定 4.自动旋转标定,有两种算法,3点拟合园和2点加角度,两者相互验证,通过对比可计算旋转方向 5.程序以客户机服务器模式开发,预留编程接口,可扩展 6.包含光源控制接口,可扩展光源控制 7.整个窗口以dll方式载入,可以内嵌到界面上 8.含有dll嵌入实例 9.该程序可用于快速开发视觉接口 10.该程序除了视觉Vpp程序本身很小

一、框架概述

CognexPlusDll 是基于 C# 开发的上位机视觉检测通用框架,深度集成 Cognex VisionPro 视觉处理库,专为工业视觉检测场景设计。该框架采用模块化架构,支持多相机管理、视觉标定、图像检测、参数配置、用户管理等核心功能,已在多个实际工业项目中落地应用。框架兼容 .NET Framework 4.5.2 及以上版本,通过灵活的配置机制和可扩展的工具链设计,能够快速适配不同类型的视觉检测需求。

二、核心技术栈与依赖

(一)开发环境与框架

  • 开发语言:C#
  • 目标框架:.NET Framework 4.6.1(主项目)、.NET Framework 4.5.2(工具类库)
  • 开发工具:Visual Studio 2017 及以上(支持 MSBuild 15.0+)

(二)核心依赖库

依赖类别 关键库名称 版本 用途
视觉处理 Cognex.VisionPro 59.2.0.0 核心视觉处理引擎,提供图像采集、分析、标定等基础能力
视觉扩展 Cognex.VisionPro.CalibFix 59.2.0.0 视觉标定工具集,支持九点标定、旋转标定等
控件库 Cognex.VisionPro.Controls 59.2.0.0 视觉专用控件,含图像显示、参数编辑控件
数据处理 Newtonsoft.Json 4.5.0.0 JSON 序列化与反序列化,用于参数配置存储
数据库 System.Data.SQLite 1.0.86.0 本地数据库,存储用户信息、检测日志、项目参数
界面组件 WeifenLuo.WinFormsUI.Docking 2.4.0.16114 停靠窗口组件,支持灵活的界面布局管理

三、项目结构与模块划分

项目整体分为 8 大核心模块,各模块通过分层设计实现低耦合、高内聚,具体结构如下:

CognexPlusDll/
├─ 核心接口层(CognexPlusIUntility)
├─ 界面交互层(Forms/Controls)
├─ 视觉处理层(VisionCtl/FrameClass)
├─ 数据存储层(SqliteFunCls/Log)
├─ 参数配置层(SystemSetClass/ViewFunClass)
├─ 标定工具层(CalibSet 相关类)
├─ 任务管理层(TaskSetLibrary)
└─ 通用工具层(GlobalClass/PhotoClass)

(一)核心接口层(CognexPlusIUntility)

定义框架核心接口 IIUntility,统一封装视觉检测、光源控制、标定管理等核心能力,为上层模块提供标准化调用入口。

关键接口方法说明
方法名 功能描述 参数说明 返回值
Init 初始化框架,加载配置文件 _fileDictory:配置文件目录路径 初始化后的视觉控制对象
CCDTrig 触发相机拍照并获取检测数据 TrigCmd:触发命令;prmInput:参数输入;cmdInput:命令输入;dataString:输出数据;retMsg:返回消息 执行结果(0 成功,-1 失败)
LightCtrl 控制光源开关/模式 mType:控制类型;Chl:光源通道;retMsg:返回消息
LightUpdate 更新光源亮度 Chl:光源通道;Value:亮度值
InitCalib 初始化标定模块

(二)界面交互层(Forms/Controls)

提供丰富的可视化交互界面,涵盖主控制窗口、参数配置窗口、图像显示窗口、标定工具窗口等,基于 WeifenLuo 停靠组件实现灵活的界面布局。

核心界面组件
  1. 停靠窗口(FormDock1~FormDock7):支持多窗口并行显示,可配置显示/隐藏状态,用于展示不同相机的实时图像或检测结果。
  2. 系统设置窗口(FormSystemSetting):提供图像存储路径、保存格式、窗口数量等全局参数配置,支持路径浏览和参数持久化。
  3. 视觉参数编辑窗口(FormToolBlockEdit):集成 Cognex VisionPro 工具块编辑控件,支持相机参数、检测算法、标定参数的可视化编辑。
  4. 实时显示窗口(FormLiveDisplay):展示相机实时图像,支持光源亮度调节、图像缩放、十字准星叠加等功能。
  5. 用户管理窗口(FormUserManager/FormUserLogin):实现用户登录、权限分配、密码修改等用户管理功能。

(三)视觉处理层(VisionCtl/FrameClass)

框架核心业务层,封装视觉检测全流程逻辑,包括相机管理、图像采集、算法运行、结果分析等核心能力。

1. 核心类 `FrameClass`
  • 功能:管理视觉框架核心对象(相机、标定、检测模块),提供配置加载、任务执行、结果反馈等能力。
  • 关键方法
  • GetPathList:加载项目配置,获取相机、标定、检测模块的文件路径和参数。
  • RunObjCamera:执行相机拍照与检测任务,返回检测结果并更新显示。
  • CreateCross:在图像上叠加十字准星,辅助视觉定位。
2. 视觉控制类 `VisionCtl`
  • 作为界面与业务逻辑的中间层,协调界面操作与视觉处理模块的交互,管理窗口布局、事件响应、参数传递。

(四)数据存储层(SqliteFunCls/Log)

负责数据持久化存储,包括用户信息、检测日志、项目参数、标定结果等数据的读写操作。

1. SQLite 数据库操作类 `SqliteFunCls`
  • 封装 SQLite 数据库的增删改查操作,支持用户管理、检测数据查询、参数存储等场景。
  • 关键功能:
  • InsertTestData:插入产品检测数据(时间、项目名、SN、检测结果)。
  • ReadImageDataView:查询图像检测日志,支持分页和条件筛选。
  • UpdateUserPassword:更新用户密码。
2. 日志工具类 `Log`
  • 按日期生成日志文件,记录系统运行状态、错误信息、用户操作等,支持日志目录自定义。

(五)参数配置层(SystemSetClass/ViewFunClass)

负责框架全局参数和界面配置的管理,支持参数的序列化存储与反序列化加载。

1. 系统配置类 `SystemSetClass`
  • 存储全局配置参数,包括项目选择、图像存储规则(格式、路径、保存天数)、窗口数量等。
  • 支持 JSON 格式的参数持久化,通过 ReadPrm/WritePrm 方法实现参数读写。
2. 界面配置类 `ViewFunClass`
  • 管理界面布局配置,包括窗口名称、显示顺序、停靠位置等,支持配置文件的导入导出。

(六)标定工具层(CalibSet 相关类)

提供多种视觉标定工具,满足不同场景的标定需求,确保检测精度。

核心标定类型
标定类型 对应类/窗口 功能描述 应用场景
九点标定 FormNineCalibRun 通过九个标定点建立像素坐标与物理坐标的映射 平面检测场景,需要较高定位精度
旋转标定 FormFitCircleRun/FormFitCircleRun2 基于圆形特征的旋转中心与半径标定 旋转工件检测、圆弧特征定位
点胶标定 FormGlueCalibRun 点胶路径标定,支持九点胶点坐标映射 点胶设备视觉引导
CCD 中心标定 FormCCDCenter 标定相机成像中心,修正图像偏移 高精度视觉定位场景
标定流程
  1. 选择标定类型,配置标定点参数或导入标定文件。
  2. 触发相机采集标定点图像,提取标定点像素坐标。
  3. 建立像素坐标与物理坐标的映射关系,计算标定参数(旋转角度、缩放比例、偏移量)。
  4. 保存标定结果,用于后续检测的坐标转换。

(七)任务管理层(TaskSetLibrary)

管理视觉检测任务,包括相机参数配置、检测流程定义、任务调度等,支持多任务并行执行。

核心类 `TaskFunClass`
  • 加载项目任务配置,解析相机、标定、检测模块的关联关系。
  • 提供任务执行状态监控、结果汇总等能力。

(八)通用工具层(GlobalClass/PhotoClass)

提供框架通用工具函数,包括图像处理、进程管理、文件操作等辅助功能。

1. 图像处理工具 `PhotoClass`
  • 支持图像文件的读取、批量检测、重命名等操作,可加载本地图像进行离线检测。
2. 全局工具 `GlobalClass`
  • 提供进程杀死、文件路径处理等系统级辅助功能。

四、核心工作流程

(一)框架初始化流程

  1. 调用 IIUntility.Init 方法,传入配置文件目录。
  2. 加载系统全局配置(SystemSetClass.ReadPrm)和项目任务配置(TaskFunClass.ReadPrm)。
  3. 初始化 SQLite 数据库,创建用户表、检测日志表等基础表结构。
  4. 加载相机、标定、检测模块的配置文件,初始化视觉处理引擎。
  5. 初始化界面布局,加载停靠窗口配置(thisDockClass.LoadXml)。

(二)视觉检测流程

  1. 用户通过界面触发检测(手动触发或外部信号触发)。
  2. 框架调用 CCDTrig 方法,触发相机拍照。
  3. 相机采集图像后,自动执行标定转换(基于预存标定参数)。
  4. 调用视觉检测算法(Cognex VisionPro 工具块),分析图像特征(如尺寸、缺陷、位置等)。
  5. 保存检测结果(数据库存储+日志记录),并在界面实时展示。
  6. 若配置图像保存规则,自动将检测图像(原始图/OK图/NG图)保存到指定路径。

(三)参数配置流程

  1. 用户通过 FormSystemSetting 窗口修改配置参数(如图像格式、存储路径)。
  2. 点击“确定”按钮,调用 SystemSetClass.SavePrm 方法序列化参数到本地文件。
  3. 框架实时加载新配置,更新运行时参数(无需重启)。

五、关键技术亮点

(一)模块化与可扩展性

  • 基于接口设计,核心功能模块化封装,支持自定义算法模块接入(如新增检测工具、标定类型)。
  • 支持多相机、多任务并行处理,可通过配置文件扩展相机数量和检测流程。

(二)高精度视觉标定

  • 提供多种标定工具,支持九点标定、旋转标定等复杂场景,标定结果自动持久化,确保检测精度稳定性。
  • 支持标定参数可视化编辑和验证,便于调试优化。

(三)灵活的界面布局

  • 基于停靠窗口组件,支持用户自定义界面布局,窗口显示/隐藏、位置调整等操作实时保存。
  • 图像显示窗口支持缩放、十字准星、结果叠加等增强功能,提升操作体验。

(四)完善的数据管理

  • 本地 SQLite 数据库存储,支持检测数据、用户信息、日志的持久化,可查询历史数据和统计分析。
  • 日志系统按日期分类存储,便于问题排查和系统维护。

六、应用场景与适配范围

该框架适用于各类工业视觉检测场景,包括但不限于:

  1. 电子元器件尺寸检测、缺陷检测(如芯片引脚检测、PCB 板缺陷检测)。
  2. 机械零件定位、装配引导(如轴承安装引导、齿轮齿形检测)。
  3. 包装检测(如标签位置检测、包装完整性检测)。
  4. 点胶、焊接等工艺的视觉引导。

框架支持 Cognex 全系列工业相机,可通过配置文件适配不同分辨率、帧率的相机设备,同时支持自定义算法工具块开发,满足特定检测需求。

七、部署与使用说明

(一)环境依赖

  1. 安装 .NET Framework 4.6.1 及以上版本。
  2. 安装 Cognex VisionPro 59.2 及以上版本(需配置环境变量)。
  3. 安装 SQLite 运行时(框架已包含相关依赖库)。

(二)部署步骤

  1. 解压框架文件到指定目录。
  2. 配置 PrmConfig.dll 中的全局参数(项目路径、相机参数等)。
  3. 启动可执行文件,通过登录窗口进入系统(默认管理员账号:Administrator,密码:默认空)。
  4. 在系统设置中配置图像存储路径、标定参数等,完成项目初始化。

(三)基本操作流程

  1. 选择项目:在系统设置窗口的“项目”下拉框中选择目标项目。
  2. 启动相机:点击“拍照”按钮,触发相机实时显示。
  3. 执行检测:手动点击“检测”按钮或通过外部信号触发,查看检测结果。
  4. 查看数据:在“运行状态”标签页查看检测日志和历史数据。

八、扩展与二次开发建议

(一)新增检测算法

  1. 基于 Cognex VisionPro 开发自定义检测工具块(.vpp 文件)。
  2. TaskSet 目录下新增任务配置,关联自定义工具块。
  3. 实现 IIUntility 接口的扩展方法,集成新算法的调用逻辑。

(二)扩展相机支持

  1. FrameClass 中新增相机驱动配置,支持非 Cognex 相机(需适配图像采集接口)。
  2. 扩展 CogCameraMoudle 类,添加新相机的参数配置和采集方法。

(三)优化界面功能

  1. 基于现有界面组件,新增自定义显示控件(如检测结果统计图表)。
  2. 扩展用户权限管理,新增角色和权限细分(如操作员、管理员、开发人员)。

九、总结

CognexPlusDll 框架是一款功能完善、扩展性强的工业视觉检测通用框架,通过模块化设计、高精度标定、灵活的界面布局和完善的数据管理,能够快速适配各类工业视觉检测需求。框架已在实际项目中验证,稳定性和可靠性较高,同时提供丰富的二次开发接口,便于用户根据具体场景进行定制化开发。

C#源码 上位机 联合Visionpro 通用框架开发源码,已应用于多个项目,整套设备程序,可以根据需求编出来,具体Vpp功能自己编 程序包含功能 1.自动设置界面窗体个数及分布 2.照方式以命令触发 3.自动九点标定 4.自动旋转标定,有两种算法,3点拟合园和2点加角度,两者相互验证,通过对比可计算旋转方向 5.程序以客户机服务器模式开发,预留编程接口,可扩展 6.包含光源控制接口,可扩展光源控制 7.整个窗口以dll方式载入,可以内嵌到界面上 8.含有dll嵌入实例 9.该程序可用于快速开发视觉接口 10.该程序除了视觉Vpp程序本身很小

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐