4. WAGO工程软件与编程环境

在WAGO机器视觉与PLC协同工程中,软件环境的选择与配置直接决定了视觉系统与控制器之间能否高效、稳定地交换数据。WAGO提供了多个层次的工程工具,它们并非互相替代,而是面向不同任务分工协作。理解每个工具的定位、能力边界以及它们之间的衔接方式,是搭建视觉协同项目的第一步。

三个工程工具的分工与定位

e!COCKPIT是WAGO主推的集成工程环境,基于CODESYS内核构建,但针对WAGO的PFC200、TP600等控制器做了深度定制。它把PLC编程、HMI组态、运动控制配置和现场总线管理整合在一个项目树中,适合从单机设备到中等规模产线的完整工程。对于视觉协同项目,e!COCKPIT的优势在于:它可以直接在同一个项目里引用视觉设备的通信库,无需在多个软件之间来回切换。

CODESYS是底层编程平台,e!COCKPIT本质上是在CODESYS之上封装了WAGO的硬件描述和库。当项目需要更底层的控制逻辑、自定义功能块或跨品牌设备集成时,可以直接使用CODESYS开发,再通过WAGO的运行时环境部署。需要注意的是,CODESYS版本与WAGO固件版本之间存在兼容矩阵,选型时必须核对。

WAGO I/O PRO则专注于I/O模块的配置与诊断。它不负责编写控制逻辑,而是用来设置模块参数、通道量程、滤波时间、故障响应方式等。在视觉协同场景中,I/O PRO常用于配置与视觉触发相关的数字量输入输出模块,例如相机触发信号、光源使能信号、结果分拣输出等。它的配置结果会以设备描述文件的形式被e!COCKPIT或CODESYS引用。

WAGO视觉协同工程软件环境与数据链路 e!COCKPIT 集成工程环境 PLC编程 + HMI组态 现场总线 + 视觉库引用 项目树统一管理 CODESYS 底层编程平台 自定义功能块开发 跨品牌设备集成 版本兼容矩阵核对 WAGO I/O PRO I/O模块配置与诊断 通道量程 / 滤波时间 故障响应方式设定 生成设备描述文件 内核 描述文件 视觉协同通信层 TCP/IP Socket · Modbus TCP · PROFINET · EtherNet/IP · 共享内存 视觉系统 相机 / 镜头 / 光源 图像处理算法 结果判定与坐标输出 WAGO PLC控制器 PFC200 / TP600 实时控制逻辑 执行机构驱动 触发/结果 坐标/状态 视觉协同工程的核心:三个工具各司其职,通过统一通信层实现视觉与控制的闭环

视觉协同相关库与配置要点

在e!COCKPIT中,视觉协同通常依赖以下几类库:通信库(如TCP/IP Socket库、Modbus TCP主站库)、数据处理库(如字符串解析、数组操作、类型转换)、状态机库(用于管理视觉触发、等待结果、超时处理等状态流转)。这些库在e!COCKPIT的库管理器中以“.library”文件形式存在,添加后即可在POU中调用。

配置视觉协同通信时,需要明确几个关键参数。以TCP/IP Socket为例,视觉系统通常作为服务器端,PLC作为客户端。PLC侧需要配置:目标IP地址、端口号(示例中可设为8000)、连接超时时间(如3000ms)、接收缓冲区大小(如1024字节)。视觉侧则需设置监听端口、数据格式(如ASCII字符串或二进制结构体)以及触发方式(软触发或硬触发)。

数据格式的约定是协同工程中最容易出问题的环节。建议在项目初期就定义一份接口数据字典,明确每个字段的名称、数据类型、字节长度、取值范围和单位。例如,视觉结果可以约定为:状态码(INT,1字节,0=OK,1=NG,2=超时)、X坐标(REAL,4字节,单位mm)、Y坐标(REAL,4字节,单位mm)、角度(REAL,4字节,单位度)。PLC侧解析时,需要严格按照字节序(大端或小端)进行转换。

在e!COCKPIT中调试视觉通信时,可以先用“在线视图”监控Socket接收缓冲区的原始数据,确认字节流与视觉侧发送的内容一致后,再编写解析逻辑。这样可以快速区分是通信问题还是解析问题。

一个可参考的配置示例

以下是一个基于TCP/IP的视觉触发与结果接收配置片段,展示了PLC侧的关键参数设置和状态机逻辑框架。该示例假设视觉系统IP为192.168.1.100,端口8000,PLC为客户端。

// 视觉通信配置参数(示例)
VAR CONST
    VISION_IP       : STRING := '192.168.1.100';
    VISION_PORT     : UINT := 8000;
    CONNECT_TIMEOUT : TIME := T#3S;
    RECV_BUFFER_SIZE: UINT := 1024;
END_VAR

// 状态机状态定义
TYPE eVisionState :
(
    IDLE,
    CONNECTING,
    TRIGGER_SENT,
    WAITING_RESULT,
    RESULT_RECEIVED,
    TIMEOUT,
    ERROR
);
END_TYPE

// 触发与接收流程(伪代码结构)
CASE eState OF
    IDLE:
        IF bStartTrigger THEN
            eState := CONNECTING;
        END_IF
    CONNECTING:
        // 建立Socket连接,超时则进入TIMEOUT
    TRIGGER_SENT:
        // 发送触发命令,如"TRIG\r\n"
        eState := WAITING_RESULT;
    WAITING_RESULT:
        // 等待视觉返回结果,超时则进入TIMEOUT
        IF bDataReceived THEN
            eState := RESULT_RECEIVED;
        END_IF
    RESULT_RECEIVED:
        // 解析结果,更新坐标与状态码
        eState := IDLE;
    TIMEOUT:
        // 记录超时,触发报警或重试
        eState := IDLE;
END_CASE

这个示例中的参数和状态划分是合理假设,实际项目中需要根据视觉设备的通信协议手册调整。关键点在于:连接超时和接收超时必须分别设置,且超时后的处理策略(重试、报警、跳过)要在状态机中明确体现,避免PLC无限等待导致产线停滞。

WAGO I/O PRO在视觉协同中的具体作用

视觉协同不仅涉及数据通信,还涉及硬件信号的时序配合。例如,相机触发信号通常由PLC的数字量输出模块产生,而光源使能信号可能需要与相机曝光同步。WAGO I/O PRO用于配置这些模块的通道参数:输出通道的响应时间、输入通道的滤波时间、故障时的输出状态等。

一个典型的配置场景是:PLC的750-530数字量输出模块驱动相机触发。在I/O PRO中,需要确认输出通道的开关频率是否满足相机触发要求(例如,相机要求触发脉冲宽度不小于100μs),以及输出通道在PLC停止时的状态(保持、复位或用户定义)。这些参数会直接影响视觉系统能否稳定抓拍到合格图像。

WAGO I/O PRO的配置结果需要与e!COCKPIT中的硬件组态保持一致。如果I/O PRO中修改了模块参数但未在e!COCKPIT中更新设备描述,PLC运行时可能使用旧参数,导致触发信号异常。建议每次修改I/O配置后,重新导入设备描述文件并重新编译项目。

工具链协同的工作流程

综合来看,一个完整的视觉协同项目通常按以下顺序推进:首先在WAGO I/O PRO中完成I/O模块的参数配置,导出设备描述文件;然后在e!COCKPIT中新建项目,导入设备描述,添加视觉通信库和数据处理库;接着编写PLC侧的状态机逻辑和通信解析代码;之后与视觉系统联调,通过在线监控和抓包工具验证数据链路;最后将项目下载到PFC200或TP600控制器,进行现场测试。

在这个过程中,CODESYS的角色是提供底层编程能力。当e!COCKPIT的库无法满足特定视觉设备的通信协议时,可以在CODESYS中编写自定义功能块,再导入e!COCKPIT使用。但需要注意,自定义功能块必须遵循WAGO的运行时规范,否则可能导致控制器异常。