CognexPlusDll 视觉检测通用框架代码功能说明
CognexPlusDll 是基于 C# 开发的上位机视觉检测通用框架,深度集成 Cognex VisionPro 视觉处理库,专为工业视觉检测场景设计。该框架采用模块化架构,支持多相机管理、视觉标定、图像检测、参数配置、用户管理等核心功能,已在多个实际工业项目中落地应用。框架兼容 .NET Framework 4.5.2 及以上版本,通过灵活的配置机制和可扩展的工具链设计,能够快速适配不同类型的
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 停靠组件实现灵活的界面布局。
核心界面组件
- 停靠窗口(FormDock1~FormDock7):支持多窗口并行显示,可配置显示/隐藏状态,用于展示不同相机的实时图像或检测结果。
- 系统设置窗口(FormSystemSetting):提供图像存储路径、保存格式、窗口数量等全局参数配置,支持路径浏览和参数持久化。
- 视觉参数编辑窗口(FormToolBlockEdit):集成 Cognex VisionPro 工具块编辑控件,支持相机参数、检测算法、标定参数的可视化编辑。
- 实时显示窗口(FormLiveDisplay):展示相机实时图像,支持光源亮度调节、图像缩放、十字准星叠加等功能。
- 用户管理窗口(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 |
标定相机成像中心,修正图像偏移 | 高精度视觉定位场景 |
标定流程
- 选择标定类型,配置标定点参数或导入标定文件。
- 触发相机采集标定点图像,提取标定点像素坐标。
- 建立像素坐标与物理坐标的映射关系,计算标定参数(旋转角度、缩放比例、偏移量)。
- 保存标定结果,用于后续检测的坐标转换。
(七)任务管理层(TaskSetLibrary)
管理视觉检测任务,包括相机参数配置、检测流程定义、任务调度等,支持多任务并行执行。
核心类 `TaskFunClass`
- 加载项目任务配置,解析相机、标定、检测模块的关联关系。
- 提供任务执行状态监控、结果汇总等能力。
(八)通用工具层(GlobalClass/PhotoClass)
提供框架通用工具函数,包括图像处理、进程管理、文件操作等辅助功能。
1. 图像处理工具 `PhotoClass`
- 支持图像文件的读取、批量检测、重命名等操作,可加载本地图像进行离线检测。
2. 全局工具 `GlobalClass`
- 提供进程杀死、文件路径处理等系统级辅助功能。
四、核心工作流程
(一)框架初始化流程
- 调用
IIUntility.Init方法,传入配置文件目录。 - 加载系统全局配置(
SystemSetClass.ReadPrm)和项目任务配置(TaskFunClass.ReadPrm)。 - 初始化 SQLite 数据库,创建用户表、检测日志表等基础表结构。
- 加载相机、标定、检测模块的配置文件,初始化视觉处理引擎。
- 初始化界面布局,加载停靠窗口配置(
thisDockClass.LoadXml)。
(二)视觉检测流程
- 用户通过界面触发检测(手动触发或外部信号触发)。
- 框架调用
CCDTrig方法,触发相机拍照。 - 相机采集图像后,自动执行标定转换(基于预存标定参数)。
- 调用视觉检测算法(Cognex VisionPro 工具块),分析图像特征(如尺寸、缺陷、位置等)。
- 保存检测结果(数据库存储+日志记录),并在界面实时展示。
- 若配置图像保存规则,自动将检测图像(原始图/OK图/NG图)保存到指定路径。
(三)参数配置流程
- 用户通过
FormSystemSetting窗口修改配置参数(如图像格式、存储路径)。 - 点击“确定”按钮,调用
SystemSetClass.SavePrm方法序列化参数到本地文件。 - 框架实时加载新配置,更新运行时参数(无需重启)。
五、关键技术亮点
(一)模块化与可扩展性
- 基于接口设计,核心功能模块化封装,支持自定义算法模块接入(如新增检测工具、标定类型)。
- 支持多相机、多任务并行处理,可通过配置文件扩展相机数量和检测流程。
(二)高精度视觉标定
- 提供多种标定工具,支持九点标定、旋转标定等复杂场景,标定结果自动持久化,确保检测精度稳定性。
- 支持标定参数可视化编辑和验证,便于调试优化。
(三)灵活的界面布局
- 基于停靠窗口组件,支持用户自定义界面布局,窗口显示/隐藏、位置调整等操作实时保存。
- 图像显示窗口支持缩放、十字准星、结果叠加等增强功能,提升操作体验。
(四)完善的数据管理
- 本地 SQLite 数据库存储,支持检测数据、用户信息、日志的持久化,可查询历史数据和统计分析。
- 日志系统按日期分类存储,便于问题排查和系统维护。
六、应用场景与适配范围
该框架适用于各类工业视觉检测场景,包括但不限于:
- 电子元器件尺寸检测、缺陷检测(如芯片引脚检测、PCB 板缺陷检测)。
- 机械零件定位、装配引导(如轴承安装引导、齿轮齿形检测)。
- 包装检测(如标签位置检测、包装完整性检测)。
- 点胶、焊接等工艺的视觉引导。
框架支持 Cognex 全系列工业相机,可通过配置文件适配不同分辨率、帧率的相机设备,同时支持自定义算法工具块开发,满足特定检测需求。
七、部署与使用说明
(一)环境依赖
- 安装 .NET Framework 4.6.1 及以上版本。
- 安装 Cognex VisionPro 59.2 及以上版本(需配置环境变量)。
- 安装 SQLite 运行时(框架已包含相关依赖库)。
(二)部署步骤
- 解压框架文件到指定目录。
- 配置
PrmConfig.dll中的全局参数(项目路径、相机参数等)。 - 启动可执行文件,通过登录窗口进入系统(默认管理员账号:Administrator,密码:默认空)。
- 在系统设置中配置图像存储路径、标定参数等,完成项目初始化。
(三)基本操作流程
- 选择项目:在系统设置窗口的“项目”下拉框中选择目标项目。
- 启动相机:点击“拍照”按钮,触发相机实时显示。
- 执行检测:手动点击“检测”按钮或通过外部信号触发,查看检测结果。
- 查看数据:在“运行状态”标签页查看检测日志和历史数据。
八、扩展与二次开发建议
(一)新增检测算法
- 基于 Cognex VisionPro 开发自定义检测工具块(.vpp 文件)。
- 在
TaskSet目录下新增任务配置,关联自定义工具块。 - 实现
IIUntility接口的扩展方法,集成新算法的调用逻辑。
(二)扩展相机支持
- 在
FrameClass中新增相机驱动配置,支持非 Cognex 相机(需适配图像采集接口)。 - 扩展
CogCameraMoudle类,添加新相机的参数配置和采集方法。
(三)优化界面功能
- 基于现有界面组件,新增自定义显示控件(如检测结果统计图表)。
- 扩展用户权限管理,新增角色和权限细分(如操作员、管理员、开发人员)。
九、总结
CognexPlusDll 框架是一款功能完善、扩展性强的工业视觉检测通用框架,通过模块化设计、高精度标定、灵活的界面布局和完善的数据管理,能够快速适配各类工业视觉检测需求。框架已在实际项目中验证,稳定性和可靠性较高,同时提供丰富的二次开发接口,便于用户根据具体场景进行定制化开发。

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




更多推荐
所有评论(0)