1. VisionPro架构总览
VisionPro 的工程能力并不是“一个软件界面里点几下”这么简单。它由一组层次分明的对象构成:最底层是图像与算法工具,往上是把工具组织成可执行流程的作业(Job),再往上是承载交互与逻辑的 QuickBuild 工程,最外层才是用 C#、VB.NET 或 C++ 编写的自定义应用。理解这四层之间的数据流与调用关系,是后续做组件复用、脚本扩展和通信集成的前提。
先看最核心的一层:工具(Tool)。在 VisionPro 中,工具是完成单一视觉任务的最小可复用单元,例如 CogPMAlignTool 做模板匹配、CogBlobTool 做斑点分析、CogCaliperTool 做卡尺测量、CogFindLineTool 做直线查找。每个工具都有输入图像、一组参数(如模板、阈值、搜索区域)和输出结果(如匹配分数、位置、角度、测量值)。工具本身不关心“谁来调用它”,它只负责“给我图像,我返回结果”。这种设计使得工具天然具备复用性——同一个 CogPMAlignTool 实例可以被多个作业引用,也可以被自定义程序直接 new 出来使用。
第二层是作业(Job)。作业把多个工具按数据依赖关系串起来,形成一条完整的检测流程。例如一个典型的定位加测量作业:CogPMAlignTool 先在图像中找到产品基准,输出基准点的 X、Y、角度;CogCaliperTool 再以该基准为参考,在指定偏移位置测量边缘宽度。这里的关键是工具之间的数据流:上游工具的输出结果会作为下游工具的输入参数。VisionPro 通过“终端(Terminal)”机制管理这种连接,每个工具的输出终端可以绑定到另一个工具的输入终端。作业还负责定义图像采集源、触发方式以及整体运行状态。
第三层是 QuickBuild 工程。QuickBuild 是 VisionPro 的图形化集成环境,它把作业、工具、脚本、通信接口和用户界面元素组织在一个工程文件(.vpp)中。在 QuickBuild 里,你可以拖拽工具、连线终端、编写脚本、配置通信,并直接运行查看结果。QuickBuild 工程本质上是一个“可执行的配置容器”,它既可以在 QuickBuild 中交互运行,也可以被自定义应用通过 CogJobManager 或 CogToolGroup 加载执行。这一层是连接“配置”与“代码”的桥梁。
最外层是自定义应用。当检测逻辑需要与产线 PLC、MES 系统、运动控制卡或数据库交互时,QuickBuild 的图形界面就不够用了。此时需要用 .NET 或 C++ 编写应用程序,通过 VisionPro 的 API 加载 QuickBuild 工程或直接创建工具对象。自定义应用负责图像采集触发、结果判定、通信收发、界面显示和异常处理。它不重复实现视觉算法,而是调用 VisionPro 已经封装好的工具和作业。
从数据流的角度看,图像从采集源进入作业,作业按顺序调用工具,工具处理图像并输出结果,结果通过终端传递给下游工具或脚本,最终由自定义应用读取并做出判定。这个方向是单向的:图像和结果向下游流动,配置和调用指令向上游传递。理解这一点,就能明白为什么 QuickBuild 工程可以被自定义应用加载,而工具又可以被 QuickBuild 和自定义应用同时复用。
在实际工程中,一个常见的做法是:先在 QuickBuild 中搭建并调试好作业,确认工具参数和终端连接正确;然后把 .vpp 文件交给自定义应用,由应用负责触发采集、调用作业、读取结果并发送给 PLC。这样既利用了 QuickBuild 的快速配置能力,又保留了自定义应用的灵活性和集成能力。需要注意的是,QuickBuild 中的脚本(Script)运行在作业上下文中,可以访问工具和终端,但它不是用来替代自定义应用的;脚本适合做轻量逻辑,如结果格式化、简单判断和变量计算,而复杂的通信协议、多线程调度和界面交互仍应放在自定义应用中。
下面用一个简化的参数示例说明工具之间的数据传递关系。假设使用 CogPMAlignTool 定位一个 Mark 点,输出结果为 Result.TranslationX = 125.4、Result.TranslationY = 88.7、Result.Rotation = 2.3(单位:像素和度)。下游的 CogCaliperTool 需要在这个基准上偏移 dx = 50、dy = 0 的位置测量边缘。在 QuickBuild 中,CogCaliperTool 的搜索区域终端会绑定到 CogPMAlignTool 的输出终端,并附加偏移量。运行时,Caliper 实际搜索中心为 (125.4 + 50, 88.7 + 0) = (175.4, 88.7),同时考虑 2.3° 的旋转补偿。这个例子说明:工具输出不是孤立的数值,而是会直接影响下游工具的空间位置和测量结果。
最后需要明确的是,VisionPro 的架构设计遵循“关注点分离”原则:工具只做算法,作业只做流程,QuickBuild 只做配置,自定义应用只做集成。每一层都可以独立测试和替换。例如,你可以用同一个 CogPMAlignTool 实例,在 QuickBuild 中调试参数,在自定义应用中直接调用;也可以把作业导出为 .vpp,在另一台机器上加载运行。这种分层复用机制,正是 VisionPro 在工业视觉项目中能够快速交付和长期维护的根本原因。