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引用。
视觉协同相关库与配置要点
在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侧解析时,需要严格按照字节序(大端或小端)进行转换。
一个可参考的配置示例
以下是一个基于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中完成I/O模块的参数配置,导出设备描述文件;然后在e!COCKPIT中新建项目,导入设备描述,添加视觉通信库和数据处理库;接着编写PLC侧的状态机逻辑和通信解析代码;之后与视觉系统联调,通过在线监控和抓包工具验证数据链路;最后将项目下载到PFC200或TP600控制器,进行现场测试。
在这个过程中,CODESYS的角色是提供底层编程能力。当e!COCKPIT的库无法满足特定视觉设备的通信协议时,可以在CODESYS中编写自定义功能块,再导入e!COCKPIT使用。但需要注意,自定义功能块必须遵循WAGO的运行时规范,否则可能导致控制器异常。