VisionPro —— 上料检测模拟
摘要:
- 该作业实现了一个基于Cognex VisionPro的自动化料盘物料检测系统。
- 通过四个PMAlign工具分别匹配不同规格物料,利用区域分割和模板匹配技术检测料盘上物料的正确性。
- 系统支持自定义输入参数(如行列数、间距等),无需修改脚本即可调整检测布局。
- 检测结果以bool数组形式输出,标记每个物料位的OK/NG状态,供PLC或机械手决策取料。
- 脚本采用动态图形绘制技术,通过颜色区分合格(绿色)与不合格(红色)物料,并叠加序号标签实现可视化。
- 核心逻辑包括:区域坐标动态计算、PMAlign工具独立运行、结果集合并与输出参数绑定,最终在运行记录中生成直观的检测图形和文本反馈。
工具配置
借助CogToolBlock工具,可轻松自定义输入输出参数。
采用四个区域分割工具与四个模板匹配工具的组合方案,可实现对同一料盘中不同规格物料的同步检测。
无需打开脚本即可直接修改常用参数,编辑完成后点击运行按钮可立即查看调整效果。
输出参数:返回一个布尔数组,存储各目标的检测结果(OK/NG),用于指导PLC或机械手执行取料决策。
脚本解析
新建一个PMA工具,将原有PMA工具的参数复制到新工具中,使外部PMA工具与脚本内的工具彼此独立。
创建矩形对象并将其赋予复制生成的PMA工具。
初始化数据并与输入参数建立关联。
使用 for 循环自动执行工具,将结果存入集合后进行展示。
添加计数器可以防止子结果出现顺序错乱的情况。
在确保已添加类型正确的输出参数后,可省略此 if 语句。
显示图案和文本
脚本源码
#region namespace imports
using System;
using System.Collections;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Cognex.VisionPro;
using Cognex.VisionPro.ToolBlock;
using Cognex.VisionPro3D;
using Cognex.VisionPro.PMAlign;
using System.Collections.Generic;
#endregion
public class CogToolBlockAdvancedScript : CogToolBlockAdvancedScriptBase
{#region Private Member Variablesprivate Cognex.VisionPro.ToolBlock.CogToolBlock mToolBlock;// 搜索区域集合private Cognex.VisionPro.CogRectangle[] searchregions;// 使用泛型列表, 可以动态储存对象// ICogGraphic: 所有图形对象实现的接口, 可以储存所有类型图形private List<Cognex.VisionPro.ICogGraphic> graphic = new List<Cognex.VisionPro.ICogGraphic>();#endregion/// <summary>/// Called when the parent tool is run./// Add code here to customize or replace the normal run behavior./// </summary>public override bool GroupRun(ref string message, ref CogToolResultConstants result){// To let the execution stop in this script when a debugger is attached, uncomment the following lines.// #if DEBUG// if (Sys