2. TwinCAT 与运动控制基础
TwinCAT(The Windows Control and Automation Technology)是倍福(Beckhoff)基于 PC 的控制平台。它把一台普通工业 PC 或嵌入式控制器,通过实时扩展改造为具备 PLC、NC、CNC、机器人学等能力的运动控制核心。理解 TwinCAT 平台架构、NC 与 PLC 的分工关系,以及 PTP 运动控制的基本概念,是后续编写轴控程序、调试伺服系统的前提。
一、TwinCAT 平台架构:从 Windows 到实时核
TwinCAT 的架构可以理解为“双核并行”:Windows 侧负责工程组态、HMI、数据库、视觉等非实时任务;实时侧(Real-Time)负责 PLC 逻辑与 NC 运动插补,运行在独立的内核或隔离的 CPU 核上。两者通过 TwinCAT 实时驱动与共享内存交换数据,保证运动控制周期稳定在微秒到毫秒级。
在软件层面,TwinCAT 由几个关键组件构成:
- TwinCAT System Service:系统服务,负责实时核加载、路由与系统配置。
- TwinCAT PLC:IEC 61131-3 编程环境,执行逻辑控制、状态机与轴使能。
- TwinCAT NC PTP:运动控制内核,负责轨迹规划、位置闭环与轴状态管理。
- TwinCAT IO:现场总线与 I/O 映射,连接 EtherCAT 伺服、编码器与数字量模块。
- TwinCAT XAE:Visual Studio 中的工程环境,用于组态、编程与调试。
下图展示了 TwinCAT 平台中 PLC、NC、IO 与伺服驱动之间的信号链关系,是理解后续编程模型的关键。
二、NC 与 PLC 的关系:分工与协作
很多初学者会混淆 PLC 与 NC 的职责。简单来说:PLC 负责“什么时候动、动到什么状态”,NC 负责“怎么动、动得是否精准”。
PLC 程序通过轴接口(Axis Interface)与 NC 交互。PLC 侧通常使用 AXIS_REF 变量引用一个 NC 轴,然后调用运动功能块(如 MC_Power、MC_MoveAbsolute、MC_MoveVelocity)发出指令。NC 内核接收指令后,进行加减速规划、插补计算与位置闭环,再通过 IO 层把设定值发送给伺服驱动器,同时读取编码器反馈形成闭环。
这种分工带来两个重要特性:
- 实时性隔离:PLC 任务周期通常为 1~10 ms,NC 周期可短至 50~250 μs,NC 独立于 PLC 扫描周期运行,保证运动平滑。
- 状态一致性:NC 轴状态(使能、就绪、错误、回零完成)通过接口反馈给 PLC,PLC 据此做逻辑判断与联锁。
核心记忆点:PLC 是“指挥官”,NC 是“驾驶员”,伺服是“执行器”。指挥官下达目标,驾驶员负责平稳准确地到达,执行器负责出力。
三、PTP 运动控制基本概念
PTP(Point-To-Point)即点到点运动控制,是 NC PTP 最基础也最常用的运动模式。它不要求刀具或末端沿严格路径行走,只要求从当前位置运动到目标位置,中间轨迹由 NC 自动规划。常见指令包括绝对定位、相对定位、速度运行、回零等。
理解 PTP 需要掌握以下核心参数与概念:
| 概念/参数 | 含义 | 典型单位/取值 |
|---|---|---|
| 位置 Position | 轴当前坐标,由编码器反馈或 NC 内部计算 | mm、°、脉冲 |
| 速度 Velocity | 运动过程中的最大速度 | mm/s、r/min |
| 加速度 Acceleration | 速度变化率,影响启停冲击 | mm/s² |
| 减速度 Deceleration | 停止或减速时的变化率 | mm/s² |
| 加加速度 Jerk | 加速度的变化率,用于平滑冲击 | mm/s³ |
| 目标位置 Target | PTP 运动终点 | 与位置同单位 |
| 轴状态 State | Disabled / Standstill / Moving / Error 等 | 枚举值 |
PTP 运动通常遵循“使能 → 回零 → 定位”的流程。回零(Homing)用于建立机械原点与坐标系的对应关系,是绝对定位的前提。若未回零就执行绝对定位,NC 可能报错或产生不可预期的运动。
四、典型场景与代码示例
假设一台设备有一个进给轴,需要在按下启动按钮后从当前位置运动到 100 mm 处,速度为 50 mm/s。PLC 侧代码结构如下:
VAR
Axis1 : AXIS_REF;
bPower : BOOL := TRUE;
bMove : BOOL;
bDone : BOOL;
fbPower : MC_Power;
fbMoveAbs : MC_MoveAbsolute;
END_VAR
// 1. 轴使能
fbPower(Axis := Axis1, Enable := bPower, Enable_Positive := TRUE, Enable_Negative := TRUE);
// 2. 绝对定位
fbMoveAbs(
Axis := Axis1,
Execute := bMove,
Position := 100.0,
Velocity := 50.0,
Acceleration:= 500.0,
Deceleration:= 500.0,
Done => bDone
);
这段代码体现了 PLC 与 NC 的典型协作:MC_Power 让 NC 轴进入使能状态,MC_MoveAbsolute 把目标位置、速度、加减速度交给 NC,NC 负责生成平滑的位置曲线并驱动伺服。
调试建议:首次调试时先把速度、加速度设小,使用 TwinCAT Scope 观察位置、速度、跟随误差曲线,确认方向与单位正确后再逐步提高动态参数。
五、常见误区与复盘
- 误区一:把 PLC 扫描周期当成运动周期。NC 周期独立于 PLC,运动平滑性由 NC 周期和伺服周期决定,不要用 PLC 周期去估算运动精度。
- 误区二:忽略回零直接绝对定位。没有原点坐标系,绝对位置没有物理意义,容易撞机。
- 误区三:单位不统一。NC 轴配置中的单位、齿轮比、编码器分辨率必须与机械实际一致,否则 100 mm 可能变成 100 脉冲。
- 误区四:使能后立即发运动指令。应等待轴状态进入 Standstill 且无错误后再触发运动,避免指令被忽略。
复盘时可以用一张检查清单快速定位问题:轴是否使能?是否回零?目标位置与速度是否合理?NC 轴状态是否报错?伺服使能与抱闸是否释放?把这几个问题按顺序排查,大部分 PTP 运动异常都能快速定位。