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 通信寻址的基础,不要随意改动。
三、编写点亮逻辑并完成变量映射
在 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 状态。
五、一个可复用的最小工程检查清单
为了让你在后续章节中快速复现,这里给出一份最小工程检查清单,按顺序核对即可定位大多数“点不亮”的问题:
| 检查项 | 正常状态 | 异常时的常见原因 |
|---|---|---|
| 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 设备,都可以沿用这条链路,只是把“点灯”替换成更复杂的设备数据交换。