3. PLC基础与选型

在LinuxCNC与PLC集成开发中,PLC(可编程逻辑控制器)承担着机床外围逻辑控制、安全联锁、I/O扩展和辅助轴控制等关键任务。理解PLC的工作原理、掌握主流品牌的技术特点、具备科学的选型能力,是构建稳定、可靠、可维护的数控系统的基础。本章将从PLC的扫描机制出发,深入剖析其内部运行逻辑,对比西门子、三菱、欧姆龙三大品牌的核心差异,并给出面向LinuxCNC集成场景的选型决策框架。

PLC工作原理与选型决策框架 PLC扫描周期(循环执行) ① 读输入(采样I/O状态) ② 执行用户程序(逻辑运算) ③ 写输出(刷新输出映像) ④ 系统服务/通信/自诊断 循环 主流品牌技术特征 西门子 S7-1200/1500 TIA博途 · 以太网原生 · 安全集成 三菱 FX5U / L系列 GX Works3 · 定位指令强 · 性价比高 欧姆龙 NJ/NX系列 Sysmac Studio · 运动控制一体 · 同步性强 选型核心维度 I/O点数与扩展能力 通信协议(EtherCAT/Profinet) 运动控制能力(轴数/插补) 环境适应性(温度/EMC/防护) LinuxCNC与PLC集成链路 LinuxCNC HAL Modbus TCP/RTU PLC 控制器 I/O / 执行器 信号流向:LinuxCNC通过HAL组件(如modbus)与PLC交换数据,PLC负责外围逻辑与安全联锁 关键参数对比: 扫描周期:西门子S7-1500约0.1ms/1K指令 · 三菱FX5U约0.034ms/1K指令 · 欧姆龙NJ约0.05ms/1K指令 通信接口:S7-1500集成Profinet · FX5U集成以太网+RS485 · NJ集成EtherCAT主站

3.1 PLC核心工作原理:扫描周期与I/O映像

PLC的本质是一台专用于工业控制的实时计算机。与普通PC不同,PLC采用"循环扫描"的工作模式,这种模式保证了控制逻辑的确定性和实时性。理解扫描周期是进行PLC编程和系统集成的前提,尤其是在LinuxCNC这种需要高实时性的数控系统中,PLC的扫描时间直接影响联锁响应的快慢。

3.1.1 扫描周期的四个阶段

PLC上电后,CPU不断重复执行以下四个阶段,形成一个完整的扫描周期:

  1. 读输入阶段(Input Scan):CPU读取所有输入端子(数字量输入、模拟量输入、高速计数器等)的状态,并将其存入输入映像寄存器(I区)。此时输入信号被"冻结",后续程序执行阶段即使外部信号变化,也不会影响本次扫描的输入值。
  2. 执行程序阶段(Program Execution):CPU从第一条指令开始,逐条执行用户程序(梯形图、ST、FBD等),根据输入映像寄存器和当前输出映像寄存器的值进行逻辑运算,运算结果写入输出映像寄存器(Q区),而非直接驱动物理输出。
  3. 写输出阶段(Output Update):CPU将输出映像寄存器的值一次性传送到输出锁存器,驱动物理输出端子。这一阶段保证了所有输出在同一时刻更新,避免因程序执行顺序导致的输出不一致。
  4. 系统服务阶段(Housekeeping):执行通信任务(如Modbus TCP请求处理)、自诊断(检查CPU温度、电池电压、I/O模块状态)、以及系统时间更新等。
关键理解:PLC的I/O映像机制意味着输入信号的变化最多延迟一个扫描周期才能影响输出。对于LinuxCNC集成场景,如果PLC扫描周期为5ms,那么从急停按钮按下到PLC输出断开,理论最大延迟为5ms + 输出继电器动作时间(约10ms)。在安全回路设计中,必须将这个延迟纳入风险评估。

3.1.2 扫描周期的影响因素与估算

扫描周期主要由以下因素决定:

  • 程序指令数量与复杂度:基本逻辑指令(LD、AND、OUT)执行时间极短(纳秒级),而数学运算、浮点运算、字符串处理则耗时数十倍。
  • I/O点数:每增加一个I/O点,读输入和写输出阶段增加约0.1-0.5μs。
  • 通信任务:以太网通信、Modbus轮询等任务会占用扫描周期的一部分时间。
  • 特殊功能指令:PID运算、定位控制、高速计数器处理等会显著增加扫描时间。

实际工程中,可以通过PLC编程软件(如TIA博途、GX Works3、Sysmac Studio)的诊断功能直接读取当前扫描周期。对于LinuxCNC集成,建议PLC扫描周期控制在5ms以内,以保证急停、限位等安全信号的响应速度。

PLC型号 典型扫描周期(1K指令) 最大I/O点数 通信接口 运动控制能力
西门子 S7-1200 约0.5ms 扩展后可达数百点 Profinet, Modbus TCP, RS485 4轴脉冲/模拟量
西门子 S7-1500 约0.1ms 数千点 Profinet IRT, Modbus TCP 支持运动控制(通过TM模块)
三菱 FX5U 约0.034ms 256点(本地) 以太网, RS485, CC-Link IE 4轴200kHz脉冲
三菱 L系列 约0.02ms 数千点 以太网, CC-Link, Modbus 支持SSCNET III运动总线
欧姆龙 NJ501 约0.05ms 数千点 EtherCAT, EtherNet/IP 内置EtherCAT主站,最多64轴

3.2 主流PLC品牌技术特征与选型对比

在LinuxCNC集成项目中,PLC品牌的选择往往取决于现有设备兼容性、工程师熟悉度、通信协议支持以及成本预算。以下从工程应用角度对三大品牌进行深度对比。

3.2.1 西门子(Siemens)—— 工程生态最完整

西门子PLC在大型机床、汽车生产线和高端装备中占据主导地位。其S7-1200/1500系列采用TIA博途(Totally Integrated Automation Portal)作为统一工程平台,支持梯形图、ST、SCL、FBD等多种编程语言。对于LinuxCNC集成,西门子的核心优势在于:

  • Profinet IRT(等时实时):支持精确的同步通信,可与LinuxCNC通过Profinet从站方式连接,实现亚毫秒级的数据交换。
  • 安全集成(Safety Integrated):S7-1500F系列支持安全PLC编程,急停、安全门等回路可通过软件编程实现,减少硬接线。
  • 强大的诊断能力:系统自动生成报警文本,便于远程维护。

但西门子的缺点是授权费用较高,TIA博途软件对硬件要求高,且与LinuxCNC的Modbus TCP通信需要额外配置。

3.2.2 三菱(Mitsubishi)—— 性价比与定位指令优势

三菱PLC在中小型机床、包装机械和电子制造设备中应用广泛。FX5U系列是当前主流,其特点包括:

  • 定位指令丰富:内置DRVI、DRVA等定位指令,配合高速脉冲输出,可直接控制步进/伺服驱动器,适合简单的轴控场景。
  • GX Works3编程环境:支持结构化编程,工程管理清晰。
  • Modbus TCP/RTU原生支持:与LinuxCNC的Modbus通信配置简单,无需额外协议转换模块。

三菱的局限在于大型系统的扩展能力不如西门子,且运动控制总线(SSCNET III)为封闭协议,与LinuxCNC集成时通常只能通过脉冲或Modbus方式。

3.2.3 欧姆龙(Omron)—— 运动控制一体化

欧姆龙NJ/NX系列将PLC和运动控制器合二为一,内置EtherCAT主站,可直接连接伺服驱动器。对于需要多轴同步运动的LinuxCNC系统,欧姆龙提供了独特的价值:

  • EtherCAT原生支持:LinuxCNC本身支持EtherCAT主站(通过IgH或SOEM),因此欧姆龙PLC可以作为EtherCAT从站,实现与LinuxCNC的高速数据交换。
  • Sysmac Studio:统一配置PLC、运动轴、视觉和I/O,工程效率高。
  • 同步精度高:分布式时钟(DC)同步精度可达纳秒级,适合电子凸轮、飞剪等应用。

欧姆龙的缺点是入门门槛较高,且其EtherCAT从站功能需要特定固件支持,与LinuxCNC的兼容性需要提前验证。

选型警示:不要仅凭品牌偏好选型。在LinuxCNC集成项目中,通信协议的开放性比品牌知名度更重要。如果PLC不支持Modbus TCP或EtherCAT,而LinuxCNC侧又无法扩展相应主站,将导致集成失败或需要额外购买协议转换网关(如Anybus),增加成本和故障点。

3.3 PLC选型要点:从需求到决策的完整流程

PLC选型不是简单的参数对比,而是基于系统需求、环境约束、成本预算和长期维护的综合决策。以下给出一个适用于LinuxCNC集成场景的选型流程。

3.3.1 第一步:明确I/O点数与类型

统计所有需要接入PLC的输入输出信号,包括:

  • 数字量输入(DI):急停按钮、限位开关、门锁开关、模式选择开关、传感器信号等。
  • 数字量输出(DO):接触器、继电器、指示灯、电磁阀、风扇等。
  • 模拟量输入(AI):温度传感器、压力传感器、液位计等(4-20mA或0-10V)。
  • 模拟量输出(AO):比例阀、变频器给定信号等。
  • 高速计数/编码器输入:主轴转速监测、手轮脉冲等。

建议在初步统计基础上预留15%-20%的余量,以应对后期功能扩展。例如,当前需要32个DI和24个DO,建议选择至少支持40个DI和30个DO的PLC或扩展模块组合。

3.3.2 第二步:确定通信协议与集成方式

LinuxCNC与PLC的通信方式决定了数据交换的实时性和便捷性。常见方案如下:

通信方式 实时性 LinuxCNC侧支持 适用场景
Modbus TCP 中等(5-20ms) HAL组件:modbus 通用逻辑控制、状态监控
Modbus RTU (RS485) 较低(20-50ms) HAL组件:modbus 简单系统、距离较近
EtherCAT(PLC作为从站) 高(<1ms) IgH主站 / SOEM 运动控制同步、高速联锁
Profinet(PLC作为从站) 高(<1ms) 需要专用主站卡 西门子PLC深度集成
数字I/O直连(GPIO) 极高(μs级) LinuxCNC并行端口/扩展卡 急停、限位等安全信号
工程经验:对于急停、超程等安全关键信号,建议不依赖PLC通信,而是通过硬接线直接连接到LinuxCNC的运动控制卡或驱动器使能端。PLC通信仅用于非安全信号的交换,如模式选择、状态显示、冷却控制等。这种"硬安全+软逻辑"的架构是数控系统设计的黄金法则。

3.3.3 第三步:评估环境与可靠性要求

PLC的工作环境直接影响其寿命和可靠性。选型时需考虑:

  • 工作温度:标准PLC为0-55℃,宽温型可达-20℃至70℃。如果机床安装在无空调车间,应选择宽温型号。
  • 防护等级:控制柜内安装通常IP20即可,若PLC需安装在粉尘或油雾环境中,应选择IP65以上的面板式PLC。
  • EMC抗干扰:机床环境中变频器、伺服驱动器是强干扰源。选择具有高EMC抗扰度(符合IEC 61131-2标准)的PLC,并在安装时注意接地和屏蔽。
  • 供电质量:如果车间电网波动大,应选择宽电压输入(AC 85-264V)的PLC电源模块,或增加UPS。

3.3.4 第四步:成本与维护策略

成本不仅包括PLC硬件采购费用,还包括:

  • 编程软件授权费:西门子TIA博途需要购买授权(约数千元),三菱GX Works3提供免费基础版,欧姆龙Sysmac Studio有试用版。
  • 备件库存:建议选择市场保有量大的型号,便于后期采购备件。
  • 工程师培训成本:如果团队不熟悉某品牌,需要额外投入学习时间。

3.4 实战案例:某数控铣床的PLC选型与集成

以下通过一个实际项目案例,展示PLC选型与LinuxCNC集成的完整决策过程。

3.4.1 项目背景与需求

某机械加工企业需要改造一台旧数控铣床,原控制系统已停产。改造方案采用LinuxCNC作为核心控制器,需要新增PLC负责外围逻辑。具体需求如下:

  • I/O需求:DI 24点(急停、限位、门锁、模式选择、刀具到位等),DO 16点(接触器、电磁阀、指示灯),AI 4点(主轴温度、液压压力、气压、冷却液液位),AO 2点(主轴变频器给定、比例阀控制)。
  • 通信需求:与LinuxCNC通过Modbus TCP交换数据,数据量约50个寄存器。
  • 运动控制:主轴由变频器驱动(模拟量给定),进给轴由LinuxCNC通过脉冲方向控制伺服驱动器,PLC不参与轴控。
  • 环境条件:车间温度0-40℃,有少量粉尘,控制柜内安装。
  • 预算:PLC部分总预算不超过8000元。

3.4.2 选型分析与决策

根据需求,我们对比了三个方案:

方案 型号配置 估算成本 优势 劣势
方案A:西门子 S7-1200 CPU 1214C + SM1231 AI模块 + SM1232 AO模块 约9500元 品牌认可度高,Profinet扩展性好 超预算,TIA博途授权费另计
方案B:三菱 FX5U-32MT/ES + FX5-4AD + FX5-4DA 约6800元 性价比高,Modbus TCP原生支持,编程简单 扩展能力有限,但满足当前需求
方案C:欧姆龙 NJ501-1300 + NX-ID/OD模块 约12000元 EtherCAT集成能力强 严重超预算,且本案例不需要EtherCAT

决策结果:选择方案B(三菱FX5U-32MT/ES)。理由如下:

  1. 成本在预算范围内,且GX Works3基础版免费,降低软件成本。
  2. FX5U内置以太网口,支持Modbus TCP服务器模式,LinuxCNC侧通过HAL的modbus组件即可实现通信,无需额外网关。
  3. 32点I/O(16DI/16DO)加上扩展模块后满足需求,且留有少量余量。
  4. 三菱PLC在机床行业应用广泛,工程师熟悉度高,后期维护方便。

3.4.3 集成实施要点

在LinuxCNC侧,通过HAL配置文件实现Modbus通信:

# /etc/linuxcnc/hal/plc_modbus.hal
loadrt modbus
# 创建modbus主站实例,连接PLC的IP地址
loadrt modbus name=plc_modbus
# 配置从站地址、寄存器映射
setp plc_modbus.ip_address "192.168.1.20"
setp plc_modbus.tcp_port 502
setp plc_modbus.slave_id 1
# 映射PLC保持寄存器(40001-40050)到HAL引脚
addf plc_modbus.read  servo-thread
addf plc_modbus.write servo-thread
# 连接信号:急停状态、模式选择等
net estop-plc  plc_modbus.holding-register-0
net mode-auto  plc_modbus.holding-register-1
net coolant-on plc_modbus.holding-register-10

PLC侧使用GX Works3编写梯形图程序,将急停、限位等输入状态写入保持寄存器,同时读取LinuxCNC下发的控制命令(如冷却开/关、主轴正转/反转)。

3.4.4 结果与复盘

系统改造完成后,PLC扫描周期实测约1.2ms,Modbus TCP通信周期约10ms,完全满足外围逻辑控制需求。急停信号通过硬接线直接连接伺服驱动器使能端,响应时间小于1ms,通过PLC通信的软急停作为第二层保护。

复盘经验:(1)选型时不要盲目追求高端品牌,满足需求且留有适当余量即可;(2)通信协议兼容性是集成项目的第一优先级,务必在选型前确认LinuxCNC侧HAL组件是否支持;(3)安全信号必须硬接线,不能依赖PLC通信;(4)预留I/O余量时,建议按"当前需求×1.2+固定余量"计算,避免后期扩展时更换PLC。

3.5 常见误区与总结

在PLC选型与集成过程中,工程师常犯以下错误:

  • 误区一:PLC点数越多越好。实际上,点数过多会导致成本上升、柜内空间浪费,且闲置I/O点反而可能引入干扰。
  • 误区二:忽视通信实时性。Modbus TCP虽然方便,但实时性有限。如果PLC需要参与安全联锁,必须评估通信延迟。
  • 误区三:忽略编程软件兼容性。某些PLC的编程软件仅支持Windows,且对虚拟机支持不佳。如果开发环境是Linux,需提前确认是否有替代方案(如OpenPLC或第三方工具)。
  • 误区四:不重视接地与布线。PLC的I/O线缆与动力线缆未分开敷设,导致电磁干扰引起误动作。