第一次在装配流水线上完整跑通欧姆龙PLC梯形图程序的时候,我的体会是:真正难的从来不是指令用法,而是把整条生产线的动作关系想清楚。装配流水线控制系统,本质上就是一组传感器、气缸、电机和操作按钮之间不断循环的时序配合,而梯形图只是把这种配合落地的工具。你用欧姆龙CP系列也好,NJ系列也好,梯形图写得好不好,核心就看你能不能把工艺动作拆成PLC能理解的逻辑层次。
这篇文章我会完整梳理一套装配流水线控制系统从需求拆解、I/O分配、梯形图结构到最后调试的完整过程。内容不绑定某个具体机型,以欧美系和日系梯形图指令习惯兼容的写法为主,适合做设备设计、自动化改造或毕业设计的读者参考。如果你手头的项目正好是类似的分拣、装配、供料这类环节,可以直接把文中的思路套过去用。
1. 装配流水线为什么值得用PLC方案来落地
先说一个现实问题:很多小型装配线还在用继电器回路控制。几个气缸、几条传送带,靠中间继电器和时间继电器也能转起来,有些老设备一跑就是十年。那为什么还要换成PLC?我经历过一次改造后,答案非常直接——工艺要改、节拍要调、故障要查,这三件事用继电器回路做,代价都高得离谱。改一个动作顺序就得重新拆线接线,排查一次按钮没反应可能要把整柜端子翻一遍。PLC的价值不在于它多“智能”,而在于它在面对工艺调整时,你的成本只有改程序和按一下下载按钮。
梯形图这种编程形式之所以被广泛应用,是因为它的表达方式和传统的继电器电路图几乎一一对应。常开触点、常闭触点、线圈、定时器、计数器,这些元素在图纸上画出来,电工师傅基本不需要培训就能看懂。对装配流水线这种逻辑密集、输入输出点不多的场景,梯形图的直观程度远高于ST或FB,这也是我在这类项目里坚持用梯形图的原因。
另外还有一个常被忽略的点:欧姆龙PLC处理回路上的质量辨识度确实高。老款CP1系列到现在依然大量用于装配线,除了稳定性,还有一点是它的输入点自带高速计数能力,编码器和接近开关可以直接接进去,省掉额外的计数模块。装配线上工件计数、工位判定、传送带定位,这些都是高频需求,PLC内置计数通道能扛住,预算和柜内空间都能省。所以用欧姆龙PLC做装配线控制,不单是“能用”,而是这个场景下的资源利用率确实合适。
需要说明的是,下面这套设计思路并不属于某个具体产品。我以某类典型小型PLC为参照来写,指令结构上兼容绝大多数主流梯形图习惯,因此你用的具体型号可能略有差异,但工程思路是通用的。
2. 工艺拆解先行:把一条装配线变成可编程的逻辑单元
写梯形图之前,必须先把工艺动作拆干净。我接手项目时不会第一件事就去建工程,而是在本子上把每个工位的工作内容、触发条件、完成标志列出来。装配流水线通常包含供料、传送、分拣、装配、检测、下料这六个环节,但不同产品线的细节差异很大。
2.1 工艺流程的阶段化处理
以一条典型的小型装配线为例,工艺流程可以拆成五个阶段:
| 阶段 | 工位 | 主要动作 | 完成标志 |
|---|---|---|---|
| 1 | 供料工位 | 料仓顶升、推料气缸推出一个工件 | 工件到达传送带入口 |
| 2 | 传送过程 | 电机启动,传送带带动工件前进 | 工件到达分拣传感器位置 |
| 3 | 分拣工位 | 根据材质或颜色传感器结果,挡停或放行 | 挡料气缸动作完成、放行 |
| 4 | 装配工位 | 夹具夹紧、机械手或压装气缸下压、复位 | 压装到位信号反馈 |
| 5 | 下料工位 | 推料气缸将成品推入料箱 | 下料传感器落料信号 |
每个阶段的完成标志,就是PLC判断是否进入下一阶段的依据。这里有个很关键的思路:不要用“时间到了”作为阶段完成的唯一依据,尽量用“传感器到位”作为硬信号,时间参数只作为超时保护。原因很实际——气缸如果卡住没到位,定时器照样到点,程序就会带着错误继续跑,轻则叠料,重则撞坏治具。
装配线各工位的物理位置一旦排定,背后就隐含了一组“空间顺序”约束。工位A的工件必须等传送带转到位,机械手才能下压;机械手下压过程中,后边的料不能再顶入。这类约束不需要额外传感器参与,只需在梯形图里做连锁,也就是用前一个动作的完成位去使能后一个动作的启动条件。
2.2 工作模式的优先级与安全边界
流水线控制首先要解决的不是全自动,而是“手动、单步、全自动”三个模式的共存。手动模式用于调机、换型和故障检查,单步用于首次跑通和验证每个工位逻辑,全自动用于正常生产。这三个模式必须互斥,并且由外部旋钮开关或触摸屏软按键切换控制。模式互斥的逻辑我建议放到梯形图最前面,因为它是离线状态还是在线状态的分水岭。
安全边界方面,急停回路要坚持“硬接线优先、程序连锁辅助”。急停按钮必须直接断开主接触器的控制回路,这是国家标准里对安全回路的明确要求,不能省。PLC程序里只做“急停复位前的输出屏蔽”,例如检测到急停输入断开后,将主控段的搬送输出位全部复位。这样做的好处是:即使急停按钮复位了,PLC也不会立刻恢复执行之前的动作,必须走到步序初始状态或重新触发循环启动。
拆完工艺流程和模式需求后,还有一项容易被初学者漏掉——上下游工位节拍匹配。装配流水线里每个工位耗时不一样,供料工位快、装配工位慢,如果PLC只按“完成就往下一工位送”的逻辑做事,工件会在慢速工位前堆成一排,甚至造成传送带卡料。处理办法有两种:一是给每个工位缓冲区传感器,前段工位探测到下游缓冲区有料就暂停送料;二是用节拍统一调度,给每个工位设定最大等待时间。这两种方式在后面的梯形图对策里我会对应给出具体写法。
3. 编程前必须钉死的I/O点表与电气边界条件
很多梯形图写不下去或者调试期反复改,根因是I/O分配在编程前没有敲死。我习惯把I/O表当成梯形图的第一份正式设计文档,先定完再写程序。分配不好会出现两种很痛苦的状况:一是梯形图写了一半发现输入点不够,只能重新分配、大改逻辑;二是传感器类型接错,带了NPN的信号接到源型输入端子,程序里怎么调试都没反应。
3.1 输入输出点示例表
输入点的规划原则是“一个物理信号对应一个输入位,不做多点复用”。以某条小型装配线为例,I/O表如下:
| 编号 | 信号名称 | 元件 | 说明 |
|---|---|---|---|
| 0.00 | 启动按钮 | 带灯按钮 | 上升沿触发循环启动 |
| 0.01 | 停止按钮 | 按钮 | 下降沿触发循环停止 |
| 0.02 | 急停按钮 | 常闭触点接入 | 断开信号有效 |
| 0.03 | 模式选择-手动 | 旋钮 | 与0.04互斥 |
| 0.04 | 模式选择-自动 | 旋钮 | 与0.03互斥 |
| 0.05 | 料仓无料检测 | 光电传感器 | 无料时为ON |
| 0.06 | 供料到位 | 接近开关 | 工件推出到位 |
| 0.07 | 分拣传感器 | 色标传感器 | 区分工件A/B |
| 1.00 | 装配工位挡停检测 | 光电传感器 | 工件进入装配区 |
| 1.01 | 压装到位 | 磁性开关 | 气缸压装到底 |
| 1.02 | 下料仓满 | 反射光电 | 料箱接近满位 |
| 1.03 | 传送带电机过载 | 热继电器触点 | 常闭,过载时断开 |
| …… | …… | …… | …… |
| 2.00 | 传送带电机 | 接触器线圈 | 驱动传送带 |
| 2.01 | 供料顶升气缸Y1 | 电磁阀线圈 | 顶升动作 |
| 2.02 | 供料推料气缸Y2 | 电磁阀线圈 | 推料动作 |
| 2.03 | 挡料气缸Y3 | 电磁阀线圈 | 分拣挡停 |
| 2.04 | 压装气缸Y4 | 电磁阀线圈 | 压装下压 |
| 2.05 | 下料推料气缸Y5 | 电磁阀线圈 | 成品推出 |
| 2.06 | 三色灯-红 | 指示灯 | 故障报警 |
| 2.07 | 三色灯-绿 | 指示灯 | 运行指示 |
这只是一张示意表,实际项目按设备点数扩展。分配时认真区分类别:把急停和过载这一类安全信号放在一起,把传感器信号统一放在连续输入区,把高数脉冲输入尽量留给编码器信号。这对后面程序编写和排查都有好处。
3.2 NPN与PNP混用的接线问题
装配线上传感器品牌往往不统一,常见的接近开关和光电开关有NPN和PNP两种输出形式。欧姆龙PLC的输入端子根据型号不同分为漏型输入和源型输入,接错的话信号灯都不会亮。我的习惯是:在选型阶段就统一采购NPN常开输出传感器,配合漏型输入接法,把传感器正极接24V,信号线和PLC输入端短接,公共端接DC0V。这种接法在日系PLC体系里最通用,后续备件更换也方便。
输出端则要分清是接电阻性负载还是电感性负载。电磁阀线圈一定要并联续流二极管,否则断电瞬间会产生几百伏的反向电动势,轻则导致PLC输出点烧毁,重则引起整个控制系统复位重启。接触器线圈则建议通过中间继电器过渡,PLC输出点驱动中间继电器线圈,中间继电器触点再去控制接触器。这样即使负载短路,损坏的也只是几十块钱的中间继电器,而不是PLC的输出模块。
3.3 安全回路的独立设计原则
安全回路的独立性,是我每次评审图纸时都会盯住的点。急停、门锁、双手启动这种涉及人身安全的信号,要求做到三件事:接在PLC输入点之前要经过硬回路,直接同时切断动力电源;PLC程序里仅判断其状态,不承担切断动作;安全器件本身用常闭触点串联接入回路。
这样设计的原因是梯形图也存在死区。比如程序扫描循环卡死、通讯停滞或者PLC本体异常,靠梯形图内处理安全信号是不可靠的,唯独物理断路才能保证设备停下来。这方面宁可多花几百块接线成本,也不能精简。
4. 梯形图核心模块逐段拆解:从起保停到移位节拍器
当你手上有了工艺流程图和I/O表,梯形图的结构其实就已经定型了。我习惯把整份程序拆成几个独立模块,分别是公共逻辑、模式切换、步序节拍、工位动作、计数报警。下面我挑几个最有代表性的模块,用助记符形式展示等价逻辑——纯文本里画梯形图图形不方便,但助记符和梯形图是一一对应的,你照着画回梯形图即可。
4.1 公共逻辑与起保停
主控回路的写法是梯形图的基础。启动按钮按下后,系统进入运行状态并自保持;停止按钮按下或异常发生时复位运行状态。这个逻辑用助记符写出来后很直观:
LD 0.00 // 启动按钮,上升沿触发置位 OR W0.00 // 运行中自保持 ANDNOT 0.01 // 停止按钮 AND 0.02 // 急停信号正常状态(常闭接入,断开表示急停) OUT W0.00 // 主循环运行标志位W0.00是整个程序的总闸。后面所有自动模式下的工位动作,第一行判断条件都必须串联W0.00。这样可以做到一个停止按钮或一次急停,就让所有输出退回安全状态。这里尤其要注意:急停复位后,绝不能自动恢复运行,必须人为再按一次启动按钮。所以上面这段逻辑里W0.00一旦断开,要等0.00的上升沿重新触发才能再置位。
4.2 移位节拍器实现工位流转
装配流水线最核心的时序逻辑是工件从一个工位移动到下一个工位,每个工位的动作在工件到达时触发。用欧姆龙PLC实现这个逻辑,我优先推荐移位寄存器指令,也叫位移位指令。它比一堆计时器串联简洁可靠得多。
假设产线有5个工位,PLC内存里用5个连续位W1.00到W1.04表示工件位置。每当检测到“可进给”信号上升沿时,把所有位整体向右移动一格:
LD 条件位 // 可进给信号上升沿 AND W0.00 // 运行中且模式允许 @SFT W1.00 // 将W1.00开始的连续位做位移,W1.00移入W1.01,以此类推 LD 供料工位传感器 // 新工件进入时,将最低位移入 OR W1.00 OUT W1.00这里SFT指令操作的是从W1.00开始的连续连续位区域,每个工位对应一位。哪一位为ON,就代表哪个工位当前有工件。对应工位的动作指令直接串联这个状态位即可实现“工件到位才动作”的效果。
移位节拍器的好处在调试现场特别明显——工艺顺序调整时,只需要调整传感器在传送带上的安装顺序和移位条件,不用重新编写大段联锁。而且每个工位的动作判断条件天然带上了位置信息,互锁逻辑变得非常简单清晰。
4.3 分拣判别逻辑与定时器稳定性
分拣工位的典型场景:传送带上同时有A、B两种工件,色标传感器识别后,需要把B工件挡停推入次品料道。这个逻辑怎么写是关键。
先说一个坑:传感器识别信号往往只有几十到几百毫秒,直接用它驱动电磁阀,要么反应不过来,要么信号抖动导致误动作。我的做法是先把传感器状态锁存到一个中间位,再在条件确认后驱动挡料气缸:
LD 分拣传感器 // 识别到B类工件 AND 传送带运行状态 OR W5.00 // 锁存位 ANDNOT 挡料气缸到位 OUT W5.00 LD W5.00 // 锁存的B信号 AND TIM0 // 定时器0的常闭触点,防止重复触发 OUT 挡料电磁阀 LD 挡料到位信号 OR 分拣推料完成 AND 定时器到点或复位条件 OUT TIM0 // 延迟复位锁存位用锁存位加定时器复位的方式,可以有效过滤传感器信号抖动,保证挡料动作稳定执行一次。这个思路也可以推广到其他需要单次响应信号的场景。装配线现场常有振动、光线变化干扰传感器,这类瞬时信号的稳定性处理是梯形图调试过程中的常见瓶颈。
4.4 计数、产量统计与班次切换
装配线通常需要统计每班产量、次品数。欧姆龙PLC内置高速计数器或普通计数指令就能实现。普通计数器适合低频计数,高速计数器则接编码器或接近开关做高速计数。产量统计的梯形图逻辑是:下料传感器每检测到一个成品,计数器加1;班次切换时把当前值存入保持继电器后清零。
LD 下料传感器上升沿 LD 产量计数指令参数 OUT 产量计数当前值 LD 班次结束按钮 MOV 当前值, 保持区地址 RSET 产量计数当前值这里有一个细节:产量数据在断电后仍需保留的话,要把数据存到PLC的保持区或者EEPROM备份区。如果只是存在普通数据区,断电一次数据就丢了,现场统计就会出问题。如果还需要对接MES系统,这个地址就要单独定义出来,方便上位机通过通讯读取。
4.5 报警处理与故障复位的完整链
报警逻辑是一套控制系统是否成熟的重要标志。我设计的报警模块分三个层次:一是硬件层,过载继电器、急停、气压检测这些硬信号,直接触发三色灯和蜂鸣器;二是程序层,比如某个气缸动作后超时未到位,通过上升沿锁存报警,实现自动模式的急停;三是信息化层,把报警代码保存到指定数据区,供触摸屏和上位机显示。
气缸超时报警的梯形图逻辑是:
LD 气缸动作输出位 ANDNOT 气缸到位信号 AND TIM10 // 超时定时器 OUT 报警锁存位 LD 报警锁存位 OR 三色灯红 ANDNOT 报警复位按钮 OUT 三色灯红超时定时器的设定值根据气缸实际动作时间加一点余量。压装气缸动作一般0.5到1秒,我给1.5秒超时;供料推料气缸动作0.3秒,给1秒超时。设太紧容易误报,设太松则故障反应慢,调试时根据现场实测调整。
故障复位必须设计为“立即复位输出、清除报警、按下复位确认”三步。常见错误是一按复位把所有气缸同时得电归位,这在装配线上很可能导致二次碰撞。我的复位逻辑是先把所有动作位清零,再延时500ms,然后才允许模式切换和重新启动。
5. 调试阶段真正容易踩的坑:扫描周期、上电状态与现场干扰
写完梯形图、下载进PLC,这只是开始。一套程序在仿真里跑得再顺,到了现场也可能出现各种意想不到的问题。下面这几个坑是我在装配线调试过程中反复踩过的,每个都值得你在调试前有所准备。
5.1 传感器信号太快,PLC扫描周期捕捉不到
装配线传送带运行速度中等时,工件经过传感器的时间大约在几十毫秒到一两百毫秒之间,通常情况下PLC循环扫描的时间足以捕捉到。但当传送带提速后,传感器ON的时间就很短了,PLC可能刚好错过一个扫描周期,程序完全没反应。出现这种情况,典型的处理方式是调整PLC输入滤波时间,把输入滤波从默认的几毫秒调低到几十微秒。欧姆龙PLC里可以用输入时间常数设置,有的机型还可以对指定输入点单独设置。
不过输入滤波不是调得越低越好。滤波调低后,现场干扰脉冲可能直接进入PLC程序,导致误计数、误触发。所以滤波时间的设定原则是:能稳定捕捉工艺信号的前提下,尽量大一点。如果信号太短实在捉不到,优先考虑改硬件——换响应速度更快的传感器,或者调整安装位置让工件在传感器前驻留更久,这比压滤波时间可靠得多。
5.2 程序下载后上电瞬间输出乱动
这个坑遇到过好几次:程序功能验证都过了,结果每次现场一送电,气缸“砰”一声自己动作了一下。排查下来,绝大多数原因是PLC在启动时刻的扫描没有来得及读取对默认值初始化好的输出状态。输出点在上电瞬间可能处于不可控状态,而梯形图程序此时正在初始化。
解决思路有三个层面:
- 硬件上:PLC输出端加“安全上电延迟继电器”,在PLC运行稳定后才允许动力回路接通。
- 程序上:在所有输出电磁阀线圈前串联一个“系统就绪”位,这个位在PLC第一条扫描时保持OFF,延迟若干周期后才置ON。
- 工艺上:电磁阀尽量选择中位封闭型,断电或初始状态时气缸保持在原地,防止突然动作。
我现在写程序时习惯在程序首部做一次整个输出区的强制清零,再在系统就绪位置位之前插入200ms的延时。这样可以最大限度避免上电瞬间的动作冲击。
5.3 24V电源容量不足导致I/O信号漂移
装配线传感器多的时候,24V直流电源的容量不能只按简单加法估算。每个接近开关大约消耗十几毫安,但几十个传感器加电磁阀后,总额可能超过开关电源额定值的80%。超出后电源电压会跌落,传感器信号就可能互相干扰,表现为:某个气缸一动,旁边工位的传感器跟着闪,程序逻辑混乱。
调试时遇到这类“莫名其妙的乱跳”,先查电源容量和接线方式,比先查程序效率高得多。我一般要求24V电源留出至少30%的余量,并且把传感器供电、PLC本体供电、电磁阀供电分成独立回路,各自走自己的电源或者至少加隔离DC-DC。这能让梯形图程序的运行环境稳定,故障率明显下降。
5.4 机械振动引起的传感器瞬时断信号
装配线设备总有一定振动,传送带电机启停、气缸下压都会带来冲击。接近开关或光电开关位置若固定不牢,振一下就可能瞬间断开几十毫秒,程序接收到掉线信号就以为工件已经离开,导致误判。
应对手段是程序内的信号确认机制。检测到一个状态信号变化后,延迟一定时间再确认一次,只有二次确认一致才执行下一步动作。这在PLC里的实现方式是使用定时器做延时确认。虽然会让动作响应变慢几十毫秒,但大大减少了误动作的可能,和系统节拍匹配后,现场的稳定性和用户信心完全不一样。
5.5 调试流程的顺序安排
按我自己的习惯,新装配线第一次通电调试,顺序是:先各工位单机手动,再全流程空载自动,最后带料生产。单机手动没有问题,说明输出接线和传感器接线都正确;空载自动能跑通,说明节拍和移位逻辑基本正确;带料生产阶段才真正检验传感器的可靠性和机械结构的配合。
任何一个环节过不去,都不要急着改程序。先回到上一个环节确认:手动不正常,多半查电气接线;空载不连贯,多半查时序互锁;带料生产出错,则可能是机械定位、传感器灵敏度或者程序响应速度综合问题。按这个顺序排查,能省掉大量瞎改程序的时间。
6. 扩展方向:触摸屏、变频器与上位通讯如何自然接入
一套只靠按钮和指示灯运行的装配线,能完成基本功能,但调试、换型和数据追溯都吃力。实际项目中,控制系统的下一步扩展集中在触摸屏、变频器控制和上位机通讯三个方向。它们和梯形图程序的关系,是逐步向更完整的信息化产线推进的过程。
6.1 触摸屏的变量规划
触摸屏不是简单代替按钮,它的核心价值是参数集中管理。压装压力、动作时间、报警阈值、产量目标,这些参数在PLC里定义成数据寄存器后,通过通讯映射到触摸屏界面。这里我说一个规划思路:在PLC程序中专门划分一个参数区,所有工艺参数都引用这个区域的地址,并且通过触摸屏写入时带上下限限制。这样换型时操作员只需要在触摸屏上改配方,不需要打开编程软件。
HMI界面建议按层级规划:主界面显示运行状态、节拍、产量、报警概要;二级页面做手动操作和参数设定;三级页面做I/O监控和报警记录。层级过多会不方便运营使用,层级过少又会让手动分拣和参数调整都摆在首页,凌乱且误触风险高。
6.2 变频器接入与多段速控制
装配线传送带的启停和调速,最简方案是接触器直启,但多段速或者平滑启停控制更合理。用PLC的通讯端口通过Modbus-RTU协议控制变频器,是一种性价比很高的做法。欧姆龙PLC侧做Modbus-RTU从站或者主站都可以,把传送带频率设定、启动停止命令、当前频率反馈这几个寄存器映射到PLC数据区,梯形图里就能像读写普通数据一样控制变频器了。
需要注意的是,通讯控制的实时性和接线条件下,如果PLC与变频器距离较远又布线不讲究,通讯容易受干扰。现场的经验是:RS485通讯线用双绞屏蔽线,屏蔽层单端接地,和动力线分开走线槽;波特率设置在9600或19200比较可得平衡。通讯可靠性有了保障,变频器的加减速时间也可以由触摸屏参数实时调节,节拍调整变得非常灵活。
6.3 上位机与MES的衔接:把数据留在产线上
当产线运行稳定后,下一步往往是对接数据采集或MES系统。PLC需要向上位机提供两类数据:一类是运行状态,例如正在运行、待机、故障、累计运行时间;另一类是生产数据,例如班次产量、不良品数、报警记录。欧姆龙PLC用HostLink或以太网FINS协议均可实现,如果上位机是组态软件,走以太网更简单。
这里有一个项目管理上的经验:通讯协议表要在编程阶段就预留出来,不要等上位机团队进场时再补。先把代表的地址定义在规划的数据区,上位机直接按地址读取即可。哪怕当前没有上位机,也建议把产量、报警、状态等数据提前整理到连续地址,将来对接时完全不用改PLC程序。
6.4 从装配线控制到整线协同的演进路线
一条装配线的PLC控制稳定之后,还可以向两个方向延伸:纵向深化和横向协同。
纵向深化是指让单站设备更智能,例如在压装工位加入压力传感器做力位监控,在检测工位加入视觉识别做缺陷判断,再把判断结果通过PLC信号参与分拣逻辑。横向协同则是指多台设备之间的联锁调度,比如前一台设备的料满信号、后一台设备的需求信号,通过PLC输入输出或者通讯交互,组成一条完整联动的自动化产线。
我实际参与这类项目时,最深的体验是:PLC梯形图,或者说整个控制系统的设计,永远是从“摸清工艺”开始的。手上有了一张精确到每个气缸动作顺序和传感器信号含义的流程图,梯形图只是把这些文字用触点线圈表达出来而已。反过来,如果流程图没画清楚,哪怕用再高级的编程工具,也很难写出真正能稳定跑生产的程序。
最后再提个实操建议:每次在现场改动梯形图,都要把改动点记录在程序注释里,连线下的数据,最好再配上“改造日期、改造原因、改造前后对比”的简要记录。装配线设备往往要服务五到十年,中途随时可能换人维护,一套注释清楚、结构分明的程序,比隐藏逻辑的“高深写法”更能经得起时间考验,也是设备长期稳定运行的重要基础。