3. NC PTP 系统组成
在 TwinCAT NC PTP 中,理解系统组成的关键不是记住几个名词,而是建立一条从“物理硬件”到“逻辑轴对象”再到“任务调度”的完整映射链。只有把轴类型、轴对象、轴状态机以及 NC 任务与 PLC 任务的分工放在同一张图上理解,才能在配置、调试和排障时快速定位问题发生在哪一层。
一、轴类型:物理轴与逻辑轴的对应关系
TwinCAT NC PTP 中的“轴”通常分为物理轴和逻辑轴两个层面。物理轴对应实际的驱动器和电机,例如通过 EtherCAT 连接的伺服驱动器、步进驱动器或变频器;逻辑轴则是 NC 内部用于描述运动行为的软件对象,它不直接等于某个硬件,而是通过映射关系与物理轴绑定。
常见的轴类型包括:
- 伺服轴:带位置反馈,支持位置、速度、转矩模式,适合高精度定位。
- 步进轴:通常以脉冲/方向或总线方式控制,成本低,适合中小型设备。
- 虚拟轴:没有物理硬件,由 NC 内部模拟生成,常用于仿真、同步主轴或电子齿轮。
- 编码器轴:只读取位置反馈,不输出控制量,常用于测量或跟随。
轴类型决定了 NC 如何解释设定值和反馈值,也决定了 PLC 侧可以调用哪些运动功能块。例如,虚拟轴可以用于验证程序逻辑,但不能替代真实伺服进行负载测试。
二、轴对象:NC 中的逻辑容器
在 TwinCAT 系统中,每个轴都会在 NC 配置中生成一个轴对象。轴对象是 NC 内部管理运动的核心容器,它保存了轴的类型、单位、软限位、最大速度、加速度、回零参数、耦合关系等配置信息。PLC 程序并不直接操作硬件,而是通过轴对象的接口发送命令和读取状态。
轴对象与 PLC 变量之间通过“轴引用”建立联系。常见做法是在 PLC 中声明 AXIS_REF 类型变量,然后将其链接到 NC 轴对象。这样,PLC 中的运动功能块就能以轴引用为句柄,对指定轴进行控制。
VAR
Axis1 : AXIS_REF;
Power : MC_Power;
MoveAbs : MC_MoveAbsolute;
END_VAR
Power(Axis := Axis1, Enable := TRUE);
MoveAbs(Axis := Axis1, Execute := TRUE, Position := 100.0, Velocity := 50.0);
轴对象是 NC 与 PLC 之间的“合同”:PLC 只关心轴引用和功能块调用,NC 负责把命令翻译成驱动器的周期性设定值。
三、轴状态机:运动控制的统一语言
NC PTP 的轴状态机是理解运动控制行为的关键。无论使用哪种轴类型,轴都必须经过一系列状态迁移才能执行运动。典型状态包括:
- Disabled:轴未使能,不输出控制量。
- Standstill:轴已使能但静止,可以接受运动命令。
- Homing:正在执行回零。
- Discrete Motion:正在执行单轴定位或速度运动。
- Continuous Motion:正在执行连续运动,如速度模式。
- Synchronized Motion:正在执行电子齿轮、凸轮等同步运动。
- ErrorStop:发生错误,需要复位后才能继续。
状态机不是“建议”,而是强制约束。例如,在 Disabled 状态下调用 MC_MoveAbsolute 不会产生运动;在 ErrorStop 状态下必须先调用 MC_Reset。理解状态迁移条件,可以避免大量“功能块不执行”的误判。
四、NC 任务与 PLC 任务的分工
TwinCAT 中 NC 任务和 PLC 任务运行在不同的周期和优先级上。PLC 任务通常是非周期或较慢的周期任务,负责逻辑判断、命令发起和状态监控;NC 任务则是固定周期的实时任务,负责插补计算、状态机推进和设定值输出。两者通过轴引用和过程数据交换信息。
| 对比项 | PLC 任务 | NC 任务 |
|---|---|---|
| 执行周期 | 非周期或较慢周期(如 10 ms) | 固定实时周期(如 1 ms 或 2 ms) |
| 主要职责 | 逻辑联锁、命令发起、状态判断 | 插补、状态机、设定值输出 |
| 操作对象 | 轴引用、功能块 | 轴对象、驱动器过程数据 |
| 典型功能块 | MC_Power、MC_MoveAbsolute | 内部插补器、状态迁移 |
| 实时性要求 | 较低,允许抖动 | 高,必须稳定周期 |
这种分工带来的直接好处是:PLC 程序不需要关心每个周期的插补细节,NC 也不需要处理复杂的工艺逻辑。但代价是,PLC 侧看到的轴状态存在一定的“延迟”,因为状态回读要经过任务周期同步。调试时如果发现“命令已发但轴没动”,应先检查轴状态机是否处于允许运动的状态,而不是怀疑功能块本身。
五、案例:一个定位任务的完整链路
假设设备需要将一个滑台从当前位置移动到 100 mm 处。PLC 程序在 Standstill 状态下调用 MC_MoveAbsolute,NC 任务接收到命令后,将轴状态切换到 Discrete Motion,并按周期计算位置设定值,通过 EtherCAT 发送给驱动器。驱动器驱动电机运动,编码器反馈实际位置。当位置误差进入设定窗口后,NC 将状态切回 Standstill,PLC 通过 MC_ReadStatus 或功能块的 Done 位感知完成。
调试建议:先确认轴对象已正确链接到 PLC 轴引用,再确认 NC 任务周期与 EtherCAT 周期匹配,最后检查轴状态机是否允许当前命令。三步顺序不要颠倒。
六、常见误区与复盘
- 误区一:把轴对象当成硬件。轴对象是 NC 内部的逻辑容器,删除或重建轴对象会影响 PLC 链接,但不等于更换驱动器。
- 误区二:忽略状态机直接发命令。在
Disabled或ErrorStop状态下发运动命令不会生效,必须先使能或复位。 - 误区三:PLC 周期越短越好。PLC 周期过短会增加 CPU 负担,且不会提升 NC 插补精度;NC 周期才是决定运动平滑度的关键。
- 误区四:虚拟轴可以替代真实轴测试。虚拟轴适合验证逻辑和状态迁移,但无法暴露驱动器使能、编码器方向、限位接线等硬件问题。
核心结论:轴类型决定“用什么”,轴对象决定“控什么”,轴状态机决定“能不能动”,NC 任务与 PLC 任务的分工决定“谁在什么时候做什么”。把这四者串起来,NC PTP 的配置和排障就有了清晰的层次。