2. 开发环境搭建与工程配置

在开始编写任何运动控制代码之前,必须先把“工具链”和“实时运行环境”这两件事做扎实。TwinCAT 3 的开发环境并不是一个独立软件,而是以 Visual Studio 为外壳、以 TwinCAT XAE(eXtended Automation Engineering)为功能插件的集成体系。理解这一点,能帮助你在遇到“找不到菜单”“无法激活配置”等问题时,快速定位是 VS 侧的问题还是 TwinCAT 侧的问题。

一、Visual Studio 与 TwinCAT XAE 的集成关系

Beckhoff 官方推荐使用 Visual Studio 2017/2019/2022 的特定版本,并安装对应版本的 TwinCAT XAE。安装顺序非常关键:先装 Visual Studio,再装 TwinCAT XAE。如果顺序颠倒,TwinCAT 安装程序无法把工程模板、菜单项和调试器注册到 VS 中,结果就是打开 VS 后看不到“TwinCAT”菜单。

安装 TwinCAT XAE 时,安装向导会提供几种模式:

  • Integrated(集成模式):把 TwinCAT 作为 VS 插件安装,这是开发 PLC 和运动控制项目的标准选择。
  • Shell(独立外壳):不依赖完整 VS,使用 TwinCAT 自带的精简外壳,适合只做配置的现场调试。
  • Remote(远程模式):仅安装远程管理组件,用于连接远程目标。

对于本课程,选择 Integrated 模式。安装完成后,在 VS 中新建项目时,应能看到 “TwinCAT XAE Project” 模板。若没有,可在 VS 安装程序中确认是否勾选了 “.NET 桌面开发” 和 “通用 Windows 平台开发” 工作负载——TwinCAT 的部分组件依赖这些运行时。

二、实时核配置:把实时性交给正确的 CPU

TwinCAT 的实时性来自 Windows 之外的实时内核(Real-Time Kernel)。它并不是让 Windows 变成实时系统,而是通过 CPU 隔离,把某个物理核心从 Windows 调度中“拿走”,专门运行 TwinCAT 实时任务。因此,实时核配置的核心就是:选择哪些 CPU 核心给 Windows,哪些给 TwinCAT。

在 VS 中打开 TwinCAT 项目后,进入 SYSTEM → Real-Time 页面,可以看到 CPU 核心列表。典型做法是:

  • 4 核 CPU:把 CPU0 留给 Windows,CPU1~CPU3 分配给 TwinCAT 实时任务。
  • 2 核 CPU:CPU0 给 Windows,CPU1 给 TwinCAT。

分配完成后,需要设置实时任务的优先级和周期。对于多轴运动控制,通常把运动任务(Motion Task)设为较高优先级,周期设为 1 ms 或 2 ms;PLC 任务周期可设为 2 ms 或 4 ms。周期越短,控制精度越高,但对 CPU 占用也越大。一个实用的判断依据是:在 Real-Time 页面观察 CPU 负载,若实时任务占用长期超过 70%,应考虑放宽周期或增加隔离核心。

如果目标机是虚拟机或笔记本,BIOS 中的 C-State、SpeedStep 等节能选项可能导致实时抖动。建议在 BIOS 中关闭节能特性,并在 Windows 电源计划中选择“高性能”。

三、I/O 扫描与设备识别

实时核配置完成后,下一步是让 TwinCAT 识别实际的 I/O 设备。在 I/O → Devices 上右键选择 “Scan”,TwinCAT 会通过 EtherCAT 或现场总线扫描已连接的从站。扫描前需确认:

  • 网卡已正确选择为 EtherCAT 适配器(在 Adapter 标签页中指定)。
  • 从站供电正常,EtherCAT 链路指示灯为绿色。
  • 若使用 EK1100 耦合器 + EL 系列模块,扫描结果会以树形结构显示每个从站的型号和拓扑位置。

扫描完成后,TwinCAT 会自动为每个从站生成过程数据对象(PDO)映射。此时不要急于编写程序,而应先检查每个轴的 PDO 是否包含所需信号,例如:控制字(Control Word)、状态字(Status Word)、目标位置(Target Position)、实际位置(Actual Position)、目标速度(Target Velocity)等。这些信号是后续 PLC 运动控制库(Tc2_MC2 或 Tc3_MC2)与驱动器交互的基础。

四、PLC 项目创建与运动控制库引用

在 TwinCAT XAE 项目中,右键 PLC 节点选择 “Add New Item”,创建一个标准 PLC 项目(.plcproj)。创建后,需要做三件关键配置:

  1. 引用运动控制库:在 PLC 项目的 References 中右键 “Add Library”,选择 Tc2_MC2(TwinCAT 2 兼容库)或 Tc3_MC2(TwinCAT 3 原生库)。多轴控制通常使用 Tc3_MC2,它提供 AXIS_REF 结构体和 MC_Power、MC_MoveAbsolute、MC_MoveRelative 等功能块。
  2. 建立轴变量链接:在 PLC 中声明 AXIS_REF 类型的变量,然后在 Motion 节点下创建 NC 轴(Axis),并把 PLC 变量与 NC 轴通过 “Link to PLC” 关联。这一步是“软件轴”与“PLC 逻辑轴”之间的桥梁。
  3. 设置任务周期与优先级:在 PLC 项目的 Task Configuration 中,把运动控制任务绑定到之前配置的实时核上,并设置与 NC 任务一致的周期。

完成上述配置后,编译整个项目。若编译通过,说明库引用、变量声明和链接关系均无语法错误。此时可以进入 Activate Configuration,把配置下载到目标机,并切换到 Run Mode。在 Motion 节点下观察轴的状态字,若显示 “Standstill” 或 “Disabled”,说明 NC 轴已就绪,可以开始编写运动控制逻辑。

TwinCAT 3 开发环境搭建与工程配置链路 Visual Studio .NET 桌面开发工作负载 TwinCAT XAE 插件注册 TwinCAT XAE Integrated 安装模式 工程模板 / 菜单 / 调试器 新建 XAE 项目 TwinCAT XAE Project 解决方案结构生成 实时核配置 (Real-Time) CPU0 → Windows | CPU1~3 → TwinCAT Motion Task: 1 ms 高优先级 PLC Task: 2 ms 中优先级 I/O 扫描与设备识别 EtherCAT 适配器选择 EK1100 + EL 系列从站扫描 PDO 映射检查 (控制字/状态字/位置) PLC 项目创建与运动控制库引用 引用 Tc3_MC2 库 AXIS_REF 结构体 MC_Power / MC_MoveAbsolute 轴变量链接 PLC AXIS_REF ↔ NC Axis Link to PLC 关联 任务周期绑定 运动任务绑定实时核 周期与 NC 任务一致 编译通过 → Activate Configuration → Run Mode → 轴状态 Standstill/Disabled

五、常见配置问题与判断依据

环境搭建阶段最容易卡住的几个点,往往不是代码问题,而是配置顺序或权限问题。下面给出一个快速排查表,供实际搭建时对照使用。

现象 可能原因 处理方式
VS 中无 TwinCAT 菜单 安装顺序错误或 XAE 未集成 卸载 XAE,先装 VS,再重装 XAE 并选 Integrated
Real-Time 页面无 CPU 可选 未以管理员身份运行 VS 关闭 VS,右键“以管理员身份运行”
I/O 扫描不到从站 网卡未指定为 EtherCAT 适配器 在 Adapter 标签页中手动选择正确网卡
编译报错“未找到 AXIS_REF” 未引用 Tc3_MC2 库 在 References 中添加 Tc3_MC2 库
轴状态一直为 Disabled MC_Power 未使能或链接未建立 检查 PLC 变量与 NC 轴的 Link 关系,确认 MC_Power 的 Enable 为 TRUE
在 Activate Configuration 之前,务必确认目标机处于 Config Mode。若目标机已在 Run Mode,激活配置会中断正在运行的程序,可能造成设备意外动作。现场调试时,应先确认所有轴处于安全位置,再执行激活。