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 PTP 轴状态机与 NC / PLC 任务分工 PLC 任务(非周期) 命令发起 / 状态判断 / 逻辑联锁 MC_Power MC_Reset MC_MoveAbsolute MC_MoveVelocity MC_ReadStatus NC 任务(周期) 插补 / 状态机 / 设定值输出 轴状态机管理 位置 / 速度插补 回零与限位处理 同步与耦合计算 周期设定值输出 轴对象与驱动器 配置 / 反馈 / 物理执行 轴对象参数 软限位 / 单位 EtherCAT 驱动器 电机 / 编码器 位置反馈 位置反馈与状态回读

四、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 的配置和排障就有了清晰的层次。