标签:#ARM+FPGA #Zynq #CODESYS #LinuxCNC #SoftMotionCNC #数控机床 #实时 Linux #EtherCAT #数控系统 #运动控制
摘要:Zynq、RK+FPGA 这类 ARM + 异构 FPGA 平台,是当前国产嵌入式数控控制器的热门硬件底座。很多机床研发团队站在同一个十字路口:上层控制内核,是直接商用 CODESYS SoftMotion CNC 快速落地;还是基于开源 LinuxCNC 二次开发、自己改造 G 代码解释器、前瞻插补、运动学与 PLC 逻辑? 本文从架构分工、实时链路、FPGA 接口形态、许可证风险、开发人力、长期维护、量产稳定性、扩展边界八个维度做工程化拆解,面向机床电控、底层驱动、数控算法工程师,给出可直接用于方案评审的选型逻辑,同时说明 ARM+FPGA 架构下两种路线 FPGA 的正确定位,避免把 FPGA 做成 "高速脉冲卡" 的单一误区。
一、前置共识:ARM+FPGA 在数控系统里到底承担什么职责
ARM+FPGA(典型为 Xilinx Zynq-7000/Zynq MPSoC,或 RK/NXP ARM 外接独立 FPGA)天然适合数控,核心是任务解耦:
- ARM 侧:Linux/RT-Linux,负责 G 代码解析、任务调度、HMI、文件管理、工艺参数、OPC UA、日志、人机交互、上层 PLC 逻辑、轨迹粗插补;
- FPGA 侧:硬件确定性通路,承担高速编码器采集、脉冲 / 方向输出、EtherCAT 从站 / 硬件 DC 同步、硬件精插补、急停 / 硬限位安全回路、并行 IO、PWM 主轴输出。FPGA 解决微秒级确定性时序,弥补 ARM Linux 内核调度抖动的短板,这是整个异构架构的价值所在。
核心区分点:FPGA 不是 "必选",但在脉冲伺服兼容、超高进给高光切削、多轴同步、硬件安全、高分辨率编码器场景下是刚需。两条软件路线,对 FPGA 的交互接口、数据协议、同步模型完全不一样,这也是选型最容易踩坑的地方。
二、路线 A:ARM+FPGA + CODESYS SoftMotion CNC
2.1 整体架构分工
CODESYS Runtime 跑在 ARM 的 PREEMPT_RT 实时域,独占实时核;CODESYS SoftMotion CNC 内核完成 G 代码解析、刀具补偿、多通道管理、前瞻 Look-Ahead、速度规划、粗插补、轴组变换、PLC 逻辑(IEC61131-3)。 FPGA 在这里是 CODESYS Runtime 的底层硬件外设加速层,两种对接模式:
- EtherCAT 主站模式(主流):CODESYS 原生 EtherCAT 主站下发周期位置指令,FPGA 做 EtherCAT 从站、DC 时钟校准、编码器采样、脉冲输出;Runtime 和 FPGA 之间是标准 CiA402 周期报文,FPGA 只做执行层,不参与插补。
- 自定义硬件接口模式:CODESYS 通过 C Custom Library(C 扩展功能块),通过 AXI / 共享内存向 FPGA 下发粗插补点,FPGA 完成硬件精插补、脉冲时序生成、编码器闭环采集,适合脉冲式老伺服改造、高光机、雕铣机。
所有应用层程序,全部在 CODESYS IDE 内使用 ST/LD/FBD/CFC 开发,G 代码处理、CNC 通道、M/S/T 辅助功能、刀库、换刀逻辑、报警框架全部由 SoftMotion CNC 组件提供。
2.2 优势(量产团队最关心)
- 标准化生态,工程师学习门槛统一 遵循 IEC61131-3、PLCopen Part3 CNC 规范。招进来的工控工程师、PLC 工程师可以直接上手,不需要专门培养一套自研数控语法。工程可跨 ARM/X86 复用,之前做机器人、专机、AGV 的 CODESYS 资产可以直接迁移到机床项目。
- CNC 内核成熟,自研工作量极小 G 代码解释、前瞻、拐角平滑、RTCP、刀具长度 / 半径补偿、子程序、宏变量、断点续切、进给倍率、主轴同步全部是商用组件,经过大量装备验证。团队不需要投入算法工程师去重写插补器和前瞻规划器,核心人力聚焦机床工艺:磨床磨削循环、车床固定循环、专机定制工艺逻辑。
- 总线兼容性强,对 FPGA 开发压力可控 优先走 EtherCAT 总线伺服路线时,FPGA 只需要实现标准从站,不需要修改上层 CNC 内核;如果需要兼容脉冲伺服,FPGA 做脉冲时序 + 编码器采集,上层 CODESYS 轴模型完全不变。FPGA 开发聚焦时序、并行 IO、安全回路,而不是运动算法。
- 安全、诊断、Trace、在线调试工具链完整 内置变量跟踪、运动 Trace、轴状态监控、总线诊断、报警管理、权限管理;支持 WebVisu/TargetVisu 一体 HMI,控制 + 显示同平台。OPC UA Server 原生集成,对接 MES、数字孪生非常方便。
- 版本可控、商业授权清晰,无开源传染性风险 CODESYS Runtime 授权为商业闭源许可,你开发的应用工程(ST 程序、HMI 画面)属于自有资产,不会因为底层库强制开源。对有上市、知识产权审核、OEM 对外交付的设备厂商非常友好。
2.3 短板与工程坑点
- 授权成本:SoftMotion CNC、Robotics、EtherCAT 主站都是按 Runtime / 轴数 / 功能包授权,轴数越多、功能越复杂,license 成本越高;小批量样机阶段不明显,大批量出货会成为固定 BOM 成本。
- CNC 内核可修改空间有限 前瞻算法、速度规划、拐角处理是 CODESYS 内部黑盒,你只能调参,不能修改内核底层算法。如果你的机床是特殊工艺(如特殊磨削、非均匀进给、自研光顺算法),很难深度植入 CNC 主路径;只能在周期回调、C 扩展功能块做后置补偿。
- ARM 平台实时调优依然是门槛 即使搭配 FPGA 做硬件兜底,CODESYS Runtime 运行在 ARM RT-Linux 上,依然要做 CPU 隔离、内存锁页、中断亲和、网卡硬时间戳调优。ARM 单核算力弱于 X86,多通道、高前瞻段数场景下算力压力明显。
- FPGA 与 Runtime 自定义链路需要自研 C 扩展 如果不走标准 EtherCAT,走 AXI 共享内存对接 FPGA 精插补,需要自己开发 CODESYS Custom C 库,做双端同步、时序保护,这部分属于定制开发,缺少官方现成参考方案。

三、路线 B:ARM+FPGA + LinuxCNC 开源搭建
3.1 整体架构分工
LinuxCNC 起源于 NIST 的 EMC 项目,GPLv2 开源数控软件,原生包含任务层(Task)、运动规划层(Motion)、实时层(Hal),G 代码解释、前瞻、插补、运动学全部开源可见LinuxCNC。 在 ARM+FPGA 架构下,经典分工:
- ARM RT-Linux:运行 LinuxCNC,HAL 组件、用户界面、G 代码预处理;
- FPGA:作为 Hal 的硬件驱动后端,类似 Mesa7i92/7i80 卡的逻辑,负责 stepgen 脉冲生成、encoder 计数器、并行 IO、主轴 PWM,通过 SPI/EtherCAT/AXI 和 ARM 的 HAL 层交换数据; HAL(Hardware Abstraction Layer)是 LinuxCNC 的核心:所有信号(位置指令、反馈、限位、使能)以信号连线的方式绑定,软件组件和 FPGA 硬件驱动统一挂在 HAL 总线上。
关键点:LinuxCNC 的实时核心早期高度依赖 X86,ARM 平台属于社区移植版本,官方原生支持度远弱于 X86。
3.2 优势
- 内核完全开源,零授权费,可深度改造 G 代码解释器、前瞻、速度规划、插补、运动学、HAL 调度逻辑全部源码开放。适合需要自研差异化数控算法的团队:定制拐角平滑、特殊磨削循环、自研热误差补偿、特殊五轴变换、非标运动学,算法可以嵌入运动核心链路,而不是外挂补偿。没有按轴收费、按功能包收费的商业授权,大批量出货没有 license 成本压力。
- HAL 架构极其灵活,FPGA 驱动对接自由度高 只要实现 HAL 驱动,FPGA 的 stepgen、encoder、安全 IO 可以自由组合;脉冲伺服、模拟伺服、EtherCAT 都可以通过 HAL 组件接入,适合大量老机床改造、多类型驱动兼容的场景。
- 社区资料丰富,脉冲控制场景成熟 LinuxCNC 在雕刻机、木工机、小型车床、脉冲伺服设备社区沉淀非常久,Mesa FPGA 卡方案是经过多年验证的成熟范式,很多开源 Hal 驱动可以直接参考移植到自研 FPGA 上LinuxCNC。
3.3 短板与量产风险(这是很多团队低估的部分)
- GPL 开源许可证传染性风险(重中之重) LinuxCNC 主程序基于 GPLv2。如果你把 LinuxCNC 集成到自研控制器、作为整机产品对外销售、交付给客户,并且修改 / 链接 LinuxCNC 源码,那么你整套衍生的控制软件都有开源披露义务,需要开放修改后的源码。对做封闭商用数控系统、自有品牌控制器、不愿意对外公开数控内核的厂商,这是致命的知识产权风险,很多团队前期忽略,量产之后产生法务隐患。
补充:单纯自己内部研究、样机测试没问题;商用整机售卖是红线。
- ARM 平台移植、实时稳定性工作量巨大 LinuxCNC 原生的实时栈(rtapi)对 ARM PREEMPT_RT 适配属于社区维护分支,不是官方主线。X86 上 cyclictest 抖动容易控制在几十微秒,同等调优水平下 ARM 平台更容易出现抖动漂移、偶发丢步、前瞻卡顿。你需要投入底层驱动工程师,长期维护 rtapi、HAL、FPGA 驱动的适配,而不是拿来即用。
- PLC 能力薄弱,和数控内核绑定在一起 LinuxCNC 没有 IEC61131-3 标准 PLC。逻辑控制有两种方案:Hal+Python,或者外接独立软 PLC。机床的刀库、冷却、润滑、门联锁、安全逻辑很难用标准化 PLC 工程开发,电控工程师习惯的梯形图、ST 编程体系不存在,团队学习成本高,大型机床逻辑维护起来非常臃肿。
- 工具链、诊断、HMI 体系零散,缺少原厂技术支撑 HMI(Axis/QtVCP)是社区 UI,工业级稳定性、权限管理、数据归档、远程运维弱于商用平台;出了偶发同步故障、前瞻异常、轨迹抖动,没有原厂技术支持,只能靠社区论坛和自己啃源码定位,售后成本极高。
- 多通道、五轴 RTCP、复杂工艺的成熟度弱于 CODESYS CNC LinuxCNC 可以实现五轴,但社区方案多集中在三轴、简单五轴;高端机床的 RTCP、动态刀尖跟随、多通道独立加工、同步主轴、高精度磨削循环,需要大量二次修改内核,调试周期很长。
四、两条路线 FPGA 定位对比表
表格
| 对比项 | ARM+FPGA + CODESYS SoftMotion CNC | ARM+FPGA + LinuxCNC |
|---|---|---|
| FPGA 角色 | 外设加速 / 总线从站 / 脉冲生成 / 安全硬件;上层 CNC 算法黑盒,不侵入插补内核 | HAL 硬件后端,运动链路的一部分,FPGA 驱动和 LinuxCNC 实时 rtapi 深度绑定 |
| 标准总线 | 优先 EtherCAT CiA402,原生支持;脉冲为扩展模式 | 脉冲 stepgen 最成熟;EtherCAT 需要 Etherlab 主站 + HAL 组件,属于社区方案 |
| 同步模型 | CODESYS 周期任务 + DC 分布式时钟 | HAL 实时线程,位置指令按周期下发给 FPGA stepgen |
| FPGA 开发工作量 | 中等,聚焦时序和接口协议,不用懂 CNC 前瞻插补 | 高,驱动要适配 rtapi/HAL 信号模型,需要理解 LinuxCNC 实时调度机制 |
| 算法植入位置 | 只能在周期回调 C 功能块做后置补偿,无法修改主前瞻插补 | 直接修改 Motion 层源码,在主轨迹链路植入自研算法 |
五、选型决策树(直接用于方案评审)
✅ 优先选 CODESYS SoftMotion CNC,如果你满足下面任意多条:
- 目标是商用封闭品牌数控控制器,不希望承担 GPL 开源衍生作品的源码披露风险;
- 团队主力是工控 PLC、运动控制工程师,熟悉 IEC61131、ST、EtherCAT;
- 产品覆盖混合场景:机床 + 机器人 + AGV,希望一套 Runtime 软件栈跨产品线复用;
- 看重量产稳定性、原厂技术支持、标准化诊断、OPC UA/MES 对接、整机 OEM 交付;
- 以 EtherCAT 伺服为主,脉冲伺服仅作为兼容选项,三轴 / 四轴 / 标准五轴雕铣、小型加工中心。

✅ 优先选 LinuxCNC + 自研 FPGA HAL 驱动,仅适合:
- 内部自用设备、教学设备、样机研究,不对外作为封闭商用控制器售卖;
- 核心差异化就在自研数控插补 / 前瞻 / 特殊工艺算法,愿意投入全职算法 + 底层驱动团队长期维护;
- 大批量低成本脉冲伺服机床(木工、广告雕刻机),预算严格控制,能接受开源合规约束;
- 团队有熟悉 LinuxCNC HAL、rtapi、实时内核的资深底层工程师。
❌ 不推荐场景:
- 商用高端五轴、精密磨床、量产自有品牌数控、给客户做 OEM 控制器:尽量避开 LinuxCNC,知识产权与长期维护风险不可控;
- 团队只有电控工程师、没有 Linux 底层 / 驱动工程师:不要碰 LinuxCNC ARM 移植,很容易卡在实时抖动、偶发故障,项目延期。
六、容易混淆的折中方案说明(很多项目踩坑)
- LinuxCNC 只做 G 代码预处理,运动控制交给 CODESYS:理论可行,但属于两层控制框架叠加,多了一层 G 代码转 CODESYS 轴指令的转发,同步链路变长、调试复杂,很少量产使用;
- CODESYS 只跑 PLC,CNC 内核自研:等于放弃 SoftMotion CNC,自己在 C 扩展里写 G 代码解释和插补,开发工作量基本等同于 LinuxCNC 路线,失去商用包的意义;
- Zynq PL 跑 EtherCAT 主站,PS 跑 CODESYS/LinuxCNC:是 ARM+FPGA 非常优秀的形态,EtherCAT 主站下沉到 PL,ARM 侧实时压力大幅降低,两条路线都可以适配,属于高端异构数控的优选硬件架构。
七、总结
ARM+FPGA 异构硬件,本身只是载体,软件路线的本质是 "买成熟商用数控内核" 还是 "认领一套开源数控内核,承担合规与全栈维护成本"。
CODESYS SoftMotion CNC 是工程化量产路线:把 G 代码解析、前瞻、插补、PLC、总线、诊断这些通用、高风险的基础能力交给商用组件,FPGA 做硬件时序兜底,团队聚焦机床工艺 Know-how,交付周期短、风险可控,代价是持续的授权费用、内核算法不可定制。
LinuxCNC 是算法自研路线:内核完全开放、无授权费,但 GPL 许可证是商用产品的第一道门槛;ARM 平台移植、实时稳定性、PLC 生态、售后诊断都需要团队自建能力,适合技术导向、有底层研发储备、且能接受开源规则的项目。
对于绝大多数国产机床装备厂商,如果目标是快速落地一款稳定、可对外销售、支持 EtherCAT、兼顾 PLC 逻辑和 CNC 加工的 ARM+FPGA 嵌入式数控控制器,CODESYS SoftMotion CNC 是更稳妥的主选路线;LinuxCNC 更适合作为自研算法预研、小众脉冲设备、内部工装的技术底座。
补充:无论选哪条路线,FPGA 都不要盲目堆砌功能。数控系统的第一优先级永远是实时确定性,FPGA 只承载软件难以保证时序的任务,不要把本该 ARM 做的复杂业务逻辑塞进 PL,否则会带来调试灾难。