1. 课程导入与协同全景
在基于 PC 的控制系统中,TwinCAT 把一台普通工业 PC 或嵌入式控制器变成实时控制器:PLC 任务负责逻辑、顺序、工艺判断与人机交互,NC(Numerical Control)任务负责多轴插补、轨迹规划与位置闭环。两者不是简单的“上层调用下层”,而是运行在同一实时内核中的两个协作运行时——PLC 通过运动控制库(Tc2_MC2 / Motion Control)向 NC 轴下发指令,NC 以固定周期完成插补与位置环运算,再把轴状态、位置、速度、错误码回传给 PLC。理解这条“指令下行、状态上行”的协同链路,是后续所有编程、调试与故障排查的基础。
一、协同的定位:谁负责什么
可以把整个系统分成三层来看。最上层是 PLC 逻辑层,它关心的是“什么时候动、动到哪、允不允许动”,例如:安全门关闭且气缸缩回到位后,才允许 X 轴定位到 100 mm;或者根据配方切换,决定三轴走直线插补还是圆弧插补。中间是 NC 运动层,它关心的是“怎么动得平滑、准确、同步”,包括轨迹插补、加减速规划、前馈与位置环整定、多轴耦合。最下层是驱动与电机层,通过 EtherCAT 把 NC 计算出的设定值以分布式时钟同步的方式送到伺服驱动器,并把编码器实际位置读回。
关键点在于:PLC 不直接生成每个插补周期的位置点,那是 NC 的职责;NC 也不判断工艺逻辑,那是 PLC 的职责。二者通过标准化的接口交互,接口的核心对象是轴(Axis)——PLC 侧看到的是一个 AXIS_REF 引用,NC 侧对应一个配置好的 NC 轴。所有运动指令(上电、使能、绝对/相对定位、速度运行、回零、停止、复位)都作用在这个轴上。
二、整体架构与数据流
下图给出本节最需要看清的协同全景:PLC 任务与 NC 任务在同一实时内核中按各自周期运行,通过运动控制库交换指令与状态,NC 再经 EtherCAT 与伺服驱动构成位置闭环。
从图中可以读出三条关键路径。第一条是指令下行:PLC 调用 MC_Power 使能轴,调用 MC_MoveAbsolute 给出目标位置、速度、加减速和方向,NC 接收后进入插补与规划。第二条是状态上行:NC 把轴的实际位置、速度、使能状态、运动完成标志、错误码写回 AXIS_REF,PLC 据此判断“到位没有、能不能进下一步”。第三条是位置闭环:NC 每个周期把设定位置发给驱动器,驱动器完成电流环、速度环,编码器把实际位置送回 NC 位置环,形成闭环。三条路径的周期不同、职责不同,调试时必须分清问题出在哪一段。
三、典型应用场景
这套协同架构最典型的场景是多轴点位与插补运动。例如一台三轴直角坐标搬运机构:PLC 负责取放料逻辑,NC 负责 X/Y/Z 三轴定位与直线插补。示例参数可以这样设定:X 轴行程 0~500 mm,额定速度 300 mm/s,加减速 1000 mm/s²;Y 轴行程 0~300 mm,速度 200 mm/s;Z 轴行程 0~100 mm,速度 100 mm/s。PLC 在安全条件满足后依次调用三轴的 MC_MoveAbsolute,通过每个轴的 Done 位判断到位,再触发夹爪动作。这类场景中,PLC 的扫描周期通常设为 1 ms,NC 任务周期也设为 1 ms,二者通过 AXIS_REF 直接交互,不需要额外的通信配置。
第二类场景是电子齿轮与凸轮同步,例如包装机上的飞剪或追剪:主轴由编码器或虚拟轴提供位置,从轴通过 NC 的耦合功能跟随主轴,PLC 只负责使能耦合、切换凸轮表和监控同步误差。第三类场景是回零与安全停止:PLC 调用 MC_Home 完成参考点建立,调用 MC_Stop 或 MC_Halt 实现可控停止,并在急停时通过安全逻辑切断使能。第四类场景是工艺配方切换:PLC 根据配方号选择不同的目标位置、速度和插补方式,NC 执行具体轨迹。这些场景的共同点是:PLC 管“逻辑与决策”,NC 管“轨迹与闭环”。
四、学习目标与协同要点
学完本章,应当能够说清三件事。第一,能画出 PLC 与 NC 的协同架构,指出指令下行、状态上行、位置闭环三条路径各自经过哪些环节。第二,能区分 PLC 与 NC 的职责边界:什么时候该用 PLC 逻辑判断,什么时候该交给 NC 做插补和闭环,避免把轨迹计算写进 PLC 循环。第三,能识别协同中的关键接口对象——AXIS_REF、轴状态机、Done/Busy/Error 标志、错误码,并知道它们在调试中的观察位置。