2. TwinCAT开发环境搭建与工程结构
TwinCAT 3 的虚拟调试工程并不是“装好软件就能跑”,它依赖一套清晰的运行时—开发环境—工程组织关系。理解 XAE 与 XAR 的分工、Solution 与 Project 的层级、PLC 项目与 IO 配置的入口位置,以及目标系统连接与激活配置的流程,是后续所有虚拟调试工作的基础。本节围绕这条主线,把安装、组织、创建、连接、激活五个环节串起来讲清楚。
XAE 与 XAR:开发端与运行端的分工
TwinCAT 3 在架构上分为两个部分:XAE(eXtended Automation Engineering)是工程开发环境,它作为 Visual Studio 的扩展集成在 IDE 中,负责编写 PLC 程序、配置 IO、组态运动控制、编译工程;XAR(eXtended Automation Runtime)是实时运行内核,负责在目标设备上实际执行编译后的实时任务。两者可以安装在同一台工控机或开发电脑上,也可以分离部署——开发机装 XAE,控制器或虚拟控制器装 XAR。
这种分离带来一个关键概念:目标系统(Target System)。XAE 中编写的工程必须“连接”到一个 XAR 上,才能把配置和程序下载并激活。本地运行时(Local Runtime)是安装在本机的 XAR,远程运行时则是通过网络访问的另一台设备的 XAR。虚拟调试中常见的做法是:开发机装 XAE + 本地 XAR,同时用一台虚拟机或独立进程模拟产线控制器,通过 ADS 路由连接。
Solution 与 Project 的组织方式
在 Visual Studio 中打开 TwinCAT 工程时,最先接触的是 Solution(解决方案),扩展名为 .sln。一个 Solution 可以包含一个或多个 TwinCAT Project(.tsproj)。对于一条产线的虚拟调试,通常建议一个 Solution 对应一条产线或一个调试单元,内部按功能划分 Project,例如“主控 PLC 项目”“安全逻辑项目”“仿真接口项目”。
每个 TwinCAT Project 内部才是真正的配置容器,它包含:PLC 项目(.plcproj,存放 IEC 61131-3 程序)、IO 设备树(EtherCAT 主站、耦合器、伺服驱动器等)、运动轴(NC/CNC 配置)、C++ 模块(如需自定义实时算法)。PLC 项目内部再细分为 POUs(程序组织单元,如 MAIN、功能块 FB、函数 FC)、DUTs(自定义数据类型)、GVLs(全局变量列表)。
这种层级的意义在于:Solution 是调试工程的边界,Project 是编译和下载的单元,PLC 项目是代码编写的最小完整单元。虚拟调试时,如果只改 PLC 逻辑,只需重新编译并激活对应的 PLC 项目,不必重建整个 Solution。
PLC 项目创建与 IO 配置入口
创建 PLC 项目的标准路径是:在 Solution 资源管理器中右键 PLC 节点 → Add New Item → Standard PLC Project。TwinCAT 会生成一个带 MAIN 程序的模板,默认语言通常是 ST(结构化文本)。创建后需要关注两个关键设置:PLC 项目名称(建议与功能对应,如 PLC_MainControl)和 目标系统(后续在系统节点中统一配置)。
IO 配置的入口不在 PLC 项目内部,而在 TwinCAT Project 的 I/O 节点下。右键 Devices → Scan 可以扫描实际硬件或虚拟从站;对于虚拟调试,更常用的是手动 Add New Item 添加 EtherCAT 主站,再在主站下挂载仿真从站或通过 Virtual EtherCAT 接口连接外部仿真器。IO 变量与 PLC 变量的映射通过 Linked Variables 完成:在 PLC 项目的 MAIN 变量声明区右键 → Change Link,选择对应的输入/输出通道。
AT %I* 和 AT %Q* 的变量,不指定固定地址,由 TwinCAT 在激活时自动分配过程映像地址。这样仿真模型替换真实硬件时,无需修改 PLC 代码。目标系统连接与激活配置
工程编写完成后,必须把 XAE 中的配置“推”到 XAR 上执行。操作入口在系统托盘区的 TwinCAT 图标右键菜单,或 Visual Studio 中的 TwinCAT → System → Target System。本地运行时直接选择 Local (127.0.0.1);远程运行时需要先建立 ADS 路由:在目标设备的 TwinCAT 托盘图标中获取 AMS NetId(形如 192.168.1.10.1.1),然后在开发机的 Static Routes 中添加该 NetId 和 IP 地址。
连接成功后,进入 Activate Configuration 流程。TwinCAT 会依次执行:编译所有项目 → 检查 IO 映射一致性 → 停止目标系统上的旧任务 → 下载新配置 → 启动实时任务。激活过程中需要特别注意 Run Mode 的选择:Config Mode 下可以修改 IO 配置和路由,Run Mode 下实时任务正常运行但 IO 配置锁定。虚拟调试通常先在 Config Mode 下完成设备扫描和映射,再切到 Run Mode 观察 PLC 逻辑与仿真模型的交互。
激活后,通过 PLC → Login 将程序下载到运行时,再 Start 任务。此时可以在线监控变量值、强制 IO 点、观察仿真模型反馈。如果激活失败,优先检查三项:目标系统是否可达(ADS 路由是否通)、IO 映射是否有未链接的变量、实时任务周期是否与仿真步长匹配。这三项也是虚拟调试环境搭建阶段最常见的排障入口。
环境搭建检查清单
| 检查项 | 预期状态 | 判断方式 |
|---|---|---|
| XAE 安装 | Visual Studio 中出现 TwinCAT 菜单 | 打开 VS → 菜单栏有 TwinCAT 项 |
| XAR 运行 | 托盘图标为蓝色或绿色 | 右键图标可看到 System Manager |
| ADS 路由 | 目标 NetId 出现在 Static Routes | Route 状态显示 Connected |
| PLC 项目 | Solution 中存在 .plcproj 且编译通过 | Build → 0 Error |
| IO 映射 | 所有 AT %I* / %Q* 变量已链接 | Linked Variables 无红色问号 |
| 激活配置 | Run Mode 下任务周期稳定 | 在线监控变量值刷新正常 |
完成以上配置后,TwinCAT 工程就具备了虚拟调试的基本运行条件:XAE 负责工程组织与代码编写,XAR 负责实时执行,Solution/Project/PLC 项目形成清晰的层级,IO 配置与目标系统连接把逻辑与仿真对象绑定在一起。后续的虚拟调试工作,都是在这个结构上展开的。