
一台设备上装了三四个气缸这是自动化行业里再常见不过的事。但你越是跟气缸打交道越会发现一个规律设备能不能稳定跑起来往往不取决于机械结构有多精巧而取决于程序里那几个模式怎么写、报警怎么判、复位怎么做。尤其是当现场喊着“气缸、气缸、气缸”的时候你听见的其实不是抱怨而是一个信号这台机器的气动回路和控制逻辑需要从头到尾盘一遍了。最近我就一直在折腾一台单环控制的小型装配设备机械上很典型一个夹紧气缸负责定位工件一个进给气缸负责把零件推到工位第三个气缸负责顶出或下料。听起来不起眼但真正调起来以后我发现围绕这三个气缸展开的控制逻辑几乎把 PLC 编程里最核心的那套东西都覆盖了一遍——main 程序、初始化、手动程序、自动程序、复位程序、气缸报警、模式切换、急停程序一个都没落下。这篇文章就把我这几天的实战过程做个整理希望能给正在调气缸设备、或者正在被多气缸顺序控制折磨的朋友一些参考。1. 三个气缸同台机的真实场景为什么要用“气缸、气缸、气缸”这种表达先描述一下这台设备因为后面所有程序和报警逻辑都是为了解决这台设备的具体问题。这台设备是一个半自动压装工装工艺流程并不复杂操作员把工件放到定位座上按下启动按钮夹紧气缸伸出把工件固定住进给气缸伸出带着压头把零件推入到位压装动作完成进给气缸退回夹紧气缸松开顶出气缸伸出把成品顶离定位座顶出气缸退回设备回到初始状态等待下一次启动。我们习惯管这种流程叫“单环”也就是一次按钮触发整套动作只完整地跑一个循环而不是连续自动运行。单环在小型工装、压装设备、检测设备上特别常见它的好处是调试简单、安全风险低但对程序结构的要求并不低。三个气缸在这台设备里各司其职气缸动作信号反馈作用夹紧气缸伸出/缩回磁性开关夹紧到位/松开到位定位工件保证后续动作稳定进给气缸伸出/缩回磁性开关进给到位/退回到位执行压装工序是核心动作顶出气缸伸出/缩回磁性开关顶出到位/退回到位下料避免人工取料效率低为什么标题里要说三遍“气缸”因为我实际调试中发现现场最怕的不是某一个气缸坏了而是三个气缸的信号互相牵扯、程序状态乱跳、报警提示模糊最后你根本不知道是哪一个气缸出了问题。你把“气缸”两个字念三遍本质上是在提醒自己每一个气缸都是一个独立的执行单元都要有独立的初始化判断、独立的动作条件、独立的报警监控。忽略其中任何一环设备迟早给你颜色看。2. 程序骨架main、初始化、手动自动复位如何在一台设备里协同工作很多刚入门的朋友拿到这类设备第一反应是写一个长梯形图从上到下把动作拍完。这种方式在小设备上确实能跑但一旦要加模式切换、加报警、加快捷键操作马上就会变成一团乱麻。我这次采用的是功能分块的方式把程序拆成五个部分然后在 main 程序里按顺序调用。这也是目前工业控制里比较成熟的一种组织方式适合中大型程序也适合像这种需要频繁修改的小设备。2.1 main 程序的职责不是“做动作”而是“调度”main 程序不直接控制气缸它的职责是先把当前设备所处的状态搞清楚再决定让哪一段子程序投入运行。我习惯的做法是在 main 里做一个简单的“模式判断链”急停被按下时直接跳过所有正常控制执行急停处理逻辑系统不在原点/未完成初始化时只允许执行复位程序或者手动单步复位程序完成且已经回原点才允许进入手动或自动在自动模式下手动按钮无效防止误操作叠加。这样做的道理很简单把模式判断放在最外层让底层的气缸控制子程序只管“当前模式下的动作”不用整天担心“这时候我该不该动”。否则每次写一段控制都要重新考虑模式条件代码翻来覆去改迟早出 bug。2.2 初始化程序上电第一件事不是让人按启动而是先问气缸在哪初始化程序是很多设备最容易忽略的环节。不少设备一上电程序从第一条开始扫但气缸此时停在什么位置完全未知。比如上一次机器在自动运行中突然断电夹紧气缸还在伸出状态工件还卡在定位座上这时候你直接按启动后果可能就是硬碰硬把机构顶坏。我的初始化逻辑分三步上电后先读所有气缸的磁性开关状态判断是否有气缸处于非原点位置如果有先给出“需要复位”的提示并且禁止自动启动如果没有直接给出“就绪”状态。从操作体验上说初始化程序的意义是你不必让操作员自己回忆“上次停机时气缸在哪儿”程序替他把这个判断做了。这也是为什么很多成熟设备上电后第一屏会显示“请按复位”而不是“请按启动”的原因。这个过程对应到 PLC 上其实就是几行比较指令如果“夹紧气缸松开到位” 0说明夹紧缸不在原点如果“进给气缸退回到位” 0说明进给缸不在原点如果“顶出气缸退回到位” 0说明顶出缸不在原点以上任一条件成立则系统状态锁定为“未初始化”同时输出“请复位”指示灯。2.3 手动程序不是“随便按”而是给维护人员留一条可控的后路手动程序的作用是安装调试和故障检修。说实话这一部分很多程序写得非常随意按钮一按输出一通也不管气缸当前在什么位置。我这次特意给手动程序加了“条件互锁”只有在非自动模式下手动按钮才有效气缸伸出按钮仅在气缸当前处于缩回状态时才生效气缸缩回按钮仅在气缸当前处于伸出状态时才生效左右相邻气缸的手动控制互不影响但如果某一步会导致机械干涉还是要在程序里做禁止。为什么要做这么多限制因为手动模式是给人操作的而人一旦手快很容联连点了两个不该点的按钮。程序层面把条件卡死比事后跟操作员强调“你小心一点”可靠一万倍。这里顺带提一个常见坑有些 PLC 的按钮输入用的是上升沿触发结果手动模式下按一次伸出再按一次缩回时系统响应不稳定原因是按钮信号抖动或者上一次沿没有复位。解决办法是用“电平状态判断”而不是单纯用沿触发或者在按钮函数里加去抖。2.4 自动程序单环逻辑就用步进状态来组织自动程序这一段我强烈推荐用“步进状态法”也就是业界经常说的状态机。三个气缸的单环流程本质上就是六个状态的切换状态号含义进入条件离开条件S0待机等待启动复位完成模式为自动启动按钮按下S1夹紧气缸伸出启动按钮按下夹紧到位信号1S2进给气缸伸出夹紧到位信号1进给到位信号1S3进给气缸退回进给到位信号1进给回退到位信号1S4夹紧气缸松开进给回退到位信号1夹紧松开到位信号1S5顶出气缸伸出再退回夹紧松开到位信号1顶出回退到位信号1回到S0用状态机的好处是逻辑清晰、排错容易。程序里你只需要用一个整数变量记录当前是第几步每一步写一个独立的网络块判断进入条件和离开条件。出了问题看变量就知道卡在哪一步。对应到 PLC 指令一般就是用 SET/RST 指令或者 MOVE 指令去切换状态号。核心套路是当状态 1 且条件满足时把状态改到 2同时把状态 1 的驱动输出复位。很多资历较深的电气工程师习惯用“起保停电路”来写顺序控制也能实现同样的效果。但状态机的好处是扩展性好比如将来要在 S3 和 S4 之间插入一个吹气动作只需要增加一个状态号不需要大改程序。2.5 复位程序不是让所有气缸一起缩回而是按安全顺序各归各位接下来单独聊复位程序因为这里是很多人容易翻车的地方。先说我见过的最危险的一种复位写法按下复位按钮程序把三个气缸的缩回输出全部置 ON认为“反正都缩回就安全了”。问题是如果夹紧气缸此时正夹着工件先松开夹紧、再退进给工件可能掉下来砸到人如果顶出气缸正在伸出状态直接复位缩回工件也会失去支撑。你让执行机构“同时缩回”恰恰会让设备从一个危险状态变成另一个危险状态。正确的复位应该这样设计先判断当前所有气缸的状态按照“先退进给再松夹紧最后退顶出”的安全顺序逐级复位每一级复位都等待磁性开关反馈信号到位再执行下一步全部到位后把系统状态切到“已就绪”。换句话说复位不是一个瞬间动作而是一个带有条件判断的短流程。它的本质是把设备从“任意状态”收敛回“原点状态”因此必须分级、有序、可监控。用代码来描述大概是复位第一步如果进给气缸在伸出状态输出进给缩回等待进给退回到位复位第二步如果夹紧气缸在伸出状态输出夹紧缩回等待夹紧松开到位复位第三步如果顶出气缸在伸出状态输出顶出缩回等待顶出退回到位复位完成置位“系统就绪”标志允许切换到自动模式。这种复位方式唯一的缺点是比“一键全缩回”复杂但它真实可靠。调试设备这行慢一分钟安全十年值。3. 模式切换与急停程序的完整链路从按下去到恢复运行的每一步单环设备虽然逻辑简单但模式切换的处理一旦粗糙照样会出问题。模式切换的核心矛盾是自动、手动、复位三套程序都要操作同一组气缸输出如果不加互锁就可能出现“自动程序刚把夹紧气缸置 ON手动程序又把夹紧气缸置 OFF”这种打架。3.1 模式切换的互锁规则我建议设备只设置三种模式状态手动、自动、复位。初始化完成后操作员通过旋钮或触摸屏按钮切换模式。程序里的互锁规则如下自动模式下手动控制按钮无效复位按钮也无效手动模式下自动启动按钮无效设备未回到原点时切换到自动模式无效并给出提示急停触发后无论当前什么模式直接跳到急停处理逻辑其余模式全部失效。这三条规则看似简单但写起来有个容易遗漏的细节模式切换不是瞬间完成的旋钮转动时抖动可能造成信号反复跳变。建议在程序里对模式选择信号做延时滤波比如连续采集 50ms 到 100ms 再判定避免模式状态来回跳动导致逻辑混乱。3.2 急停程序需要三件事一起做急停按下那一刻很多人的第一反应是“把所有输出断掉”。这个思路没有错但不完整。一套合格的急停处理逻辑至少要同时做三件事第一时间断开所有气缸输出电磁阀的电源让气缸停止运动把当前自动运行的状态号记录下来方便恢复后继续或复位锁存报警状态点亮急停指示并且禁止任何正常启动操作。我在程序里用了一个专门的中间变量来保存“急停发生时的状态号”。这个变量非常有用因为在排查故障时我能直接看到“急停是在进给气缸伸出这一步发生的”意味着问题焦点就在进给气缸区域而不是夹紧气缸或顶出气缸区域。有一点必须强调急停之后的恢复不是简单把报警清除就行。恢复流程应为“急停旋出 → 按复位按钮 → 执行安全复位程序 → 确认所有气缸回到原点 → 重新切换到手动或自动”。急停后的复位动作同样必须走一遍和断电后初始化类似的安全复位流程。还有一个经常被忽略的问题就是急停状态下电磁阀的排气。很多气动回路用的是双电控电磁阀断电后阀芯保持在原位气缸里的气体不会自动排出。也就是说急停虽然切了电气缸未必会缩回。所以我在设计气路时特意在电磁阀前面加了一个“急停时断气”的气控阀保证急停后气缸内的气压卸掉避免残压导致气缸自行窜动。这一点在行业里叫“急停断气”如果设备目前没有这个环节建议在维保时加上。3.3 模式切换时防止气缸突然动作的细节我遇到过这样的情况设备在手动模式下进给气缸处于伸出状态此时操作员把模式切到自动。由于自动程序的第一条状态是“待机等待启动”按道理不应该有气缸动作。可是老程序里有个 bug自动模式进入时会把所有输出刷新一遍结果进给气缸的伸出输出被刷新成 ON气缸猛地动了一下好在没伤到人。从那以后我在模式切换程序里都加了一条原则模式切换只改变“控制权限”不触发任何输出刷新。也就是说从手动切到自动的那一瞬间所有气缸输出保持原值不动直到自动程序根据状态条件决定下一步动作。这个原则在多个项目里验证过非常必要。4. 气缸报警不是气缸坏了而是“该到位的信号没到”“气缸报警”这四个字是设备屏幕上出现频率最高的报警之一。很多操作员一看报警就喊“气缸坏了”但实际上绝大多数气缸报警都不是气缸本身损坏而是“该到位的信号没到位”。4.1 报警判定的底层逻辑我在程序里给每个气缸都加了一个超时监控。思路是这样的当某一状态开始时把对应的电磁阀输出置 ON同时启动一个定时器如果在规定时间内比如 3 秒仍然没有收到磁性开关的到位信号判定为“该气缸动作超时”触发报警。以进给气缸为例程序逻辑可以简化成状态进入 S2进给伸出时置位进给电磁阀输出同时启动定时器 T2设定 3 秒如果 T2 计时到达且进给到位信号 0则触发报警“进给气缸伸出超时”并断开所有气缸输出如果进给到位信号变为 1T2 复位状态切到 S3。为什么要把超时报警和输出断开放在一起因为气缸一旦卡住如果继续给电磁阀通电可能让气缸一直顶住工件轻则憋坏气路重则机械变形。报警的同时断输出是给设备留一条生路。这里多说一句定时值怎么设不能拍脑袋。要参考气缸实际动作时间留出余量。比如正常情况下进给气缸伸出动作大约 0.5 秒那定时值就设 2 到 3 秒如果现场气源压力波动大可以把余量再放大一点但不要大得离谱——你设了 10 秒机构卡住后要等 10 秒才报警中间这段时间设备一直在憋着风险很大。4.2 磁性开关的误检与漏检气缸报警还有一个隐蔽的源头磁性开关本身接触不良。磁性开关是配合气缸活塞上的磁环工作的一旦活塞运动到开关位置开关内部干簧管动作信号接通。但这种开关有一个毛病就是感应位置非常敏感。如果开关固定位置偏了一点活塞到位的实际位置和开关检测位置不一致就会出现“气缸明明到位了程序却认为没到位”。碰到这种情况我的处理方法是先手动操作气缸伸出、缩回观察磁性开关指示灯是否正常点亮/熄灭如果指示灯闪烁或者时亮时灭大概率是开关松动或位置偏了重新调整固定位置如果开关指示灯正常再看 PLC 输入点是否有信号如果 PLC 输入点没信号查线路和输入模块公共端。这套排查顺序很重要很多新手一看到“气缸报警”就直接拆气缸结果拆下来气缸是好的浪费了大量时间最后发现只是磁性开关的插头松了。4.3 报警后的恢复流程报警恢复同样不能直接按个“清除报警”就完事。合理的恢复流程是先根据报警信息确认是哪一个气缸、哪一个动作超时切到手动模式点动该气缸确认其动作是否正常如果气缸动作正常、信号正常再按复位程序回原点回原点后再切换到自动模式重新试运行。从我的经验看如果同一个气缸在一天内反复报警三次以上不要只把它当偶然故障处理。要么是磁性开关位置已经漂了要么是气缸内部密封圈磨损导致动作变慢要么是气源压力不稳定。这些都需要从机械和气路上找根因而不是改大定时值来“掩盖症状”。改定时值只能让你暂时不报警但它掩盖了真正的风险。5. 现场调试中三缸设备最容易踩的坑和我的实测经验最后这部分我想围绕现场实操把这几天反复碰到的几个坑集中说一下。这些内容看似散但每一件都是真实经历过、并且花费不少代价才总结出来的。5.1 气源压力和流量比你想的重要得多三个气缸同时动作的时候如果气源供气量不够会出现一种很典型的现象气缸动作一会儿快一会儿慢甚至某个气缸卡在中间不动。原因不是气缸坏了而是气路压力瞬间掉得太低。尤其是进给气缸伸出和顶出气缸伸出如果在时序上有重叠瞬时用气量会翻倍。我给这台设备配套时特意观察了气源处理三联件上的压力表动作瞬间压力是否掉得厉害。如果掉压超过 0.1-0.2MPa就要考虑加大储气罐容量、调高减压阀压力、或者调整动作时序避免两个大缸同时用气。5.2 节流阀调速要“边量边调”气缸速度不是越开越大越好。进给气缸如果速度太快冲击力大容易压伤工件太慢影响节拍。正确的调法是先把节流阀全关然后逐步打开让气缸从最慢开始逐步找到合适的速度。调整的时候要注意排气节流还是进气节流。大多数普通气缸回路推荐用排气节流也就是调速阀装在电磁阀与气缸的排气口一侧这样做控制更平稳。如果你发现气缸动作一顿一顿的先检查是不是调速阀方向装反了其次是检查气缸安装是否别劲。5.3 磁性开关线缆布线不要和电磁阀线扎在一起这是一个非常容易踩的坑。现场接线为了美观经常把磁性开关的信号线和电磁阀的 220V 电源线绑在同一个线槽里。结果当初试车时一按电磁阀动作磁性开关信号就跳动报警频繁触发。这是因为电磁阀通断瞬间产生的电磁干扰耦合到了信号线上。解决办法很简单信号线单独走线或者用屏蔽线并将屏蔽层单端接地。如果已经扎在一起了至少要拉开距离或者把电磁阀线圈换成带浪涌吸收器的型号。别看这个细节小它直接影响设备能不能稳定跑起来。5.4 双电控阀断电后保持原状态不要忘我在前面提到过双电控电磁阀在断电后会保持阀芯原位这一点在现场调试时很容易被忽略。测试急停功能的时候按下急停你会看到电磁阀指示灯灭了但气缸还是停在半空中给人感觉是“急停没生效”。其实这是双电控阀的正常特性不是故障。因此设备设计阶段就要想清楚急停断气还是急停断电如果只断电子不断气某些位置上的气缸仍然可能因为外力移动造成安全隐患。按我个人的做法安全等级要求高的设备急停必须同时断气断电两者缺一不可。5.5 初始化结果要显眼别让操作员猜调试过程中我发现一个小问题操作员开机后不知道设备有没有准备好。程序虽然做了初始化判断但面板上没给提示导致操作员经常按了启动没反应然后反复找我。后来我在触摸屏主界面加了一个大大的“就绪/未就绪”状态块又加了一个相对醒目的“请按复位”提示。从此这类问题基本消失。这个经验虽然听起来和“气缸”没关系但实际影响却非常大。设备给人用的人机交互不清楚再好的控制逻辑都会被一句“机器坏了”埋没。5.6 一定要留好手动模式的单步操作入口最后一个经验也是最想强调的不要因为自动模式调试顺利就把手动模式简化掉。手动模式是故障排查时的唯一后路。气缸出报警了如果连手动模式都不能单动那维修人员就只能爬到设备下面去拆电控柜短接电磁阀既不安全又低效。我在手动模式下给三个气缸分别做了独立的“伸出/缩回”按钮并且把状态指示放到主界面上。调试维护的时候一个人就能快速判断是电气问题、气路问题还是机械问题。这套设计在我经历过的所有气动设备项目里都起到了关键作用。气缸、气缸、气缸说到底设备上的每一个气缸都值得被认真对待。它们的动作顺序、信号反馈、报警监控和复位逻辑构成了整个自动化的基础骨架。写程序的时候多花一点时间把这些基础做扎实后面在现场火急火燎救火的日子就会少很多。