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 路由连接。

TwinCAT 3 开发环境与工程组织关系 XAE 工程开发环境(Visual Studio 扩展) Solution (.sln) Project (.tsproj) PLC 项目 (.plcproj) IO 配置 / 设备树 编译 → 生成 .tpy / 配置描述 XAR 实时运行内核 实时任务调度 PLC 运行时 IO 映射 / 过程映像 ADS 通信服务 执行实时任务,周期 1ms / 10ms 等 下载 / 激活 ADS 状态回读 目标系统 Target System 本地 Local 或 远程 Remote(通过 ADS 路由) 层级: Solution (.sln) → 可含多个 Project (.tsproj) → 每个 Project 含 PLC 项目、IO 设备、运动轴、C++ 模块等 PLC 项目内部:POUs(程序组织单元)→ MAIN / 功能块 / 函数;DUTs(数据类型);GVLs(全局变量)

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,选择对应的输入/输出通道。

虚拟调试中,IO 映射的常见做法是:PLC 侧声明 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 与 XAR 版本必须匹配。如果开发机装的是 TwinCAT 3.1.4024,目标运行时也应是同一版本或兼容版本,否则激活时可能报“Target system version mismatch”。虚拟调试中若使用虚拟机作为 XAR,建议与开发机保持相同安装包。

环境搭建检查清单

检查项预期状态判断方式
XAE 安装Visual Studio 中出现 TwinCAT 菜单打开 VS → 菜单栏有 TwinCAT 项
XAR 运行托盘图标为蓝色或绿色右键图标可看到 System Manager
ADS 路由目标 NetId 出现在 Static RoutesRoute 状态显示 Connected
PLC 项目Solution 中存在 .plcproj 且编译通过Build → 0 Error
IO 映射所有 AT %I* / %Q* 变量已链接Linked Variables 无红色问号
激活配置Run Mode 下任务周期稳定在线监控变量值刷新正常

完成以上配置后,TwinCAT 工程就具备了虚拟调试的基本运行条件:XAE 负责工程组织与代码编写,XAR 负责实时执行,Solution/Project/PLC 项目形成清晰的层级,IO 配置与目标系统连接把逻辑与仿真对象绑定在一起。后续的虚拟调试工作,都是在这个结构上展开的。