2. TwinCAT开发环境与第一个通信工程

上一节我们从整体上认识了 TwinCAT 在工业通信中的角色,这一节要把视角落到“动手”上:在一台 Windows 工控机或开发电脑上安装配置 TwinCAT 3 XAE/XAR,创建一个 PLC 项目,扫描 EtherCAT 从站,完成变量映射与在线监控,最终实现一个远程 I/O 点亮的实战任务。整个过程其实就是一条从“软件环境”到“物理输出”的完整链路,理解了这条链路,后面更复杂的设备集成都会变得有章可循。

一、先分清 XAE 与 XAR:开发端与运行端

TwinCAT 3 采用“开发环境 + 运行时”分离的架构。XAE(eXtended Automation Engineering)是工程开发环境,它集成在 Visual Studio 中,用来编写 PLC 程序、配置 I/O、扫描设备、编译和下载;XAR(eXtended Automation Runtime)是运行时系统,负责在目标机上真正执行实时任务、驱动 EtherCAT 主站并和从站交换数据。两者可以装在同一台电脑上(本地运行),也可以分开:XAE 装在你的笔记本上,XAR 装在现场的工控机上,通过网络远程连接。理解这一点很关键,因为它决定了你后面“下载程序”时到底下载到了哪里。

安装时通常先装 Visual Studio(TwinCAT 3 支持特定版本的 VS),再运行 TwinCAT 3 安装包,勾选 XAE 与对应版本的 XAR。安装完成后需要重启,并在系统托盘找到 TwinCAT 图标,切换到“Config Mode”或“Run Mode”。Config Mode 用于扫描和配置硬件,Run Mode 用于实际运行。很多初学者扫描不到从站,往往就是因为还停留在 Run Mode 或网卡没有绑定到实时驱动。

二、创建 PLC 项目并绑定实时网卡

打开 Visual Studio,新建 TwinCAT XAE Project,工程树里会出现 SYSTEM、MOTION、PLC、I/O、SAFETY 等节点。右键 PLC 节点添加“Standard PLC Project”,TwinCAT 会自动生成一个带 MAIN 程序的 PLC 项目。此时先别急着写代码,第一步是让 EtherCAT 主站“认识”你的网卡:在 I/O → Devices 上右键“Scan”,选择要作为 EtherCAT 主站的以太网口。TwinCAT 会提示安装实时以太网驱动,确认后该网卡就被绑定为实时网卡,普通 Windows 网络通信将不再使用它。

绑定完成后,TwinCAT 会扫描该网段上的 EtherCAT 从站。以常见的 EK1100 耦合器 + EL1008 数字量输入 + EL2008 数字量输出模块为例,扫描结果会以树形结构显示:EK1100 作为第一个从站,后面挂 EL1008 和 EL2008。每个从站都有明确的拓扑位置(Auto Increment Address),这个地址是 EtherCAT 通信寻址的基础,不要随意改动。

TwinCAT 3 通信工程链路:从开发环境到远程 I/O 点亮 XAE 开发环境(Visual Studio) • 新建 TwinCAT XAE Project • 添加 Standard PLC Project • 编写 MAIN 程序(点亮逻辑) • 编译 → 生成 .tpy 描述 • 变量映射 / 在线监控 • 下载到目标 XAR 下载/激活 XAR 运行时(工控机) • 实时任务调度(1ms 周期) • EtherCAT 主站协议栈 • 过程映像区读写 • 与从站周期通信 • 状态:Config / Run • 实时网卡绑定 EtherCAT EtherCAT 从站链 EK1100 耦合器(Addr 1001) EL1008 数字输入(Addr 1002) EL2008 数字输出(Addr 1003) 变量映射与在线监控(PLC 变量 ↔ EtherCAT 过程数据) PLC 变量 bStart : BOOL; bLamp : BOOL; nCount : INT; 映射 EtherCAT 过程数据 EL1008 Ch1 → bStart EL2008 Ch1 ← bLamp 周期:1 ms 驱动 物理输出 灯 EL2008 输出 Q1 = TRUE 远程 I/O 点亮

三、编写点亮逻辑并完成变量映射

在 MAIN 程序中,我们用一个最简单的自锁逻辑来演示:按下启动按钮,输出点亮并保持;按下停止按钮,输出熄灭。示例代码如下(变量名与映射保持一致):

PROGRAM MAIN
VAR
    bStart   : BOOL;   // 来自 EL1008 输入
    bStop    : BOOL;   // 来自 EL1008 输入
    bLamp    : BOOL;   // 输出到 EL2008
    nCount   : INT;    // 记录点亮次数
END_VAR

IF bStart AND NOT bStop THEN
    bLamp := TRUE;
    nCount := nCount + 1;
ELSIF bStop THEN
    bLamp := FALSE;
END_IF

代码写完后,关键一步是变量映射。在 PLC 项目的 Instance 上右键,选择“Link to I/O”,把 bStart 链接到 EL1008 的 Channel 1,把 bLamp 链接到 EL2008 的 Channel 1。TwinCAT 会自动在过程映像区建立对应关系:输入变量每个周期从从站读入,输出变量每个周期写入从站。映射完成后,编译整个工程,确认没有错误,再点击“Activate Configuration”把配置下载到 XAR 并切换到 Run Mode。

四、在线监控与结果判断

进入 Run Mode 后,在 Visual Studio 中打开 MAIN 程序,点击“Online → Login”,再点击“Monitoring”,就能看到变量实时刷新。此时手动触发 EL1008 的输入通道(例如用按钮或短接线),观察 bStart 是否变为 TRUE、bLamp 是否跟随置位、nCount 是否递增。如果 bLamp 为 TRUE 但实际灯不亮,需要依次检查:EL2008 的通道是否真的映射到了 bLamp、输出模块的供电是否正常、灯是否接在正确的端子(Q1 对应通道 1)。如果变量根本不刷新,则要检查 XAR 是否处于 Run Mode、EtherCAT 从站是否全部进入 OP 状态。

判断 EtherCAT 通信是否正常的直观依据:在 I/O → Devices 下查看从站状态,所有从站应显示为 OP(Operational)。若停留在 PREOP 或 SAFEOP,说明配置或拓扑有问题,此时 PLC 变量不会真正与硬件交换数据。

五、一个可复用的最小工程检查清单

为了让你在后续章节中快速复现,这里给出一份最小工程检查清单,按顺序核对即可定位大多数“点不亮”的问题:

检查项正常状态异常时的常见原因
XAR 运行模式Run Mode仍停留在 Config Mode
实时网卡绑定已绑定 EtherCAT 驱动未安装驱动或选错网卡
从站扫描结果EK1100 + EL1008 + EL2008 全部识别网线、供电或拓扑顺序问题
从站状态全部 OP配置未激活或从站不匹配
变量映射bStart→EL1008 Ch1,bLamp→EL2008 Ch1映射遗漏或通道选错
在线监控变量随输入实时变化未 Login 或未 Monitoring
物理输出EL2008 Q1 指示灯亮,负载得电输出供电缺失或端子接错

完成这个任务后,你实际上已经走通了 TwinCAT 通信工程的最小闭环:开发环境配置、PLC 程序编写、EtherCAT 从站扫描、变量映射、在线监控和物理输出验证。后续无论是接入伺服驱动器、远程 I/O 站还是第三方 EtherCAT 设备,都可以沿用这条链路,只是把“点灯”替换成更复杂的设备数据交换。