ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

欧姆龙PLC与组态王实现自动装卸料小车控制方案详解

欧姆龙PLC与组态王实现自动装卸料小车控制方案详解 做电气自动化的早晚都会碰上一台小车在两个工位之间来回跑。这种设备看着简单但要把梯形图、接线、上位机监控串成一套能稳定运行的系统还是有不少门道。今天就把这套基于欧姆龙PLC和组态王的自动装卸料小车控制方案完整拆开讲一遍从控制需求、I/O分配、接线原理到梯形图程序、组态王画面和调试排障全流程拉通。这套项目属于典型的“PLC基础逻辑 上位机组态”组合核心是欧姆龙CP1H系列PLC的梯形图程序负责小车往复运动、装料卸料、互锁保护上位机用组态王做SCADA监控负责远程启停、运行状态显示、报警记录和趋势查看。学完这套东西以后再做类似的多工位输送、自动化配料、物料转运基本就是换汤不换药。1. 项目需求与控制方案设计1.1 自动装卸料小车的工作场景先想象一个最常见的车间布局装料工位在左侧卸料工位在右侧中间是轨道小车沿轨道左右移动。小车在装料位停稳后上方料斗或计量料仓向车内装料装料完成小车自动右行到卸料位到位后自动打开卸料机构翻斗、底部阀门或侧翻机构卸料卸料完成后再自动左行回装料位开始下一轮循环。这类设备在建材、冶金、化工、粮食仓储行业特别常见比如耐火材料配料、混凝土骨料转运、粉体计量上料。别看动作简单真正生产线上对它的要求是每次停车位置要准装料卸料时间要可控不能溜车不能误动作最好还能在上位机上看清楚当前是装料还是卸料、料位有没有卡住、小车在哪个区间。所以项目目标很明确用欧姆龙PLC实现自动往复控制用组态王实现可视化监控并通过手动/自动切换保证调试和检修的便利性。1.2 控制需求拆解与I/O分配拿到需求后第一步不是写程序而是把所有输入输出信号列清楚。这步做不好后面接线和程序都会乱。我按现场常用配置梳理了一份I/O分配表欧姆龙CP1H的CIO区可以这样分配信号类型地址含义说明输入0.00自动启动按钮常开点瞬时ON启动循环输入0.01停止按钮常闭点用于紧急停止输入0.02复位按钮故障复位声光报警消除输入0.03装料位到位开关SQ1小车在左侧装料点输入0.04卸料位到位开关SQ2小车在右侧卸料点输入0.05左行限位开关防超程硬限位输入0.06右行限位开关防超程硬限位输入0.07装料完成信号料位计/时间到/料斗关到位输入0.08卸料完成信号料位空/翻斗回位到位输入0.09手动/自动切换开关SAON为自动OFF为手动输入0.10手动左行按钮手动模式点动需按住输入0.11手动右行按钮手动模式点动需按住输出100.00装料阀/料斗闸门控制装料机构动作输出100.01卸料阀/翻斗电磁阀控制卸料机构动作输出100.02小车左行接触器KM1驱动电机正转输出100.03小车右行接触器KM2驱动电机反转输出100.04报警指示灯/电铃超时或故障报警这里有个关键设计思想装料完成信号和卸料完成信号不要只做成时间单纯延时最好接真实的传感器或设备反馈。比如装料位用重锤料位计或者料斗闸门开到位/关到位的限位卸料位用小车称重信号或翻斗回位开关。只用定时器的系统也能跑但物料粘度大、流动性差时很容易“时间到了却没卸干净”下次装料就超载。1.3 为什么选“Omron PLC 组态王”而不是继电器或单片机有人说这种小车控制用继电器电路也能做但继电器方案的痛点是中间继电器数量多、接线量大改一个动作时间要拆线换继电器故障排查全靠万用表逐段量。而且继电器方案没法实时看到小车在哪也没法记录历史数据。单片机方案成本低但工业现场的抗干扰、维护性、电气人员上手难度都是问题。欧姆龙CP1H的好处在于指令丰富、自带高速计数和位置判断十几个I/O点的小系统用CP1H-XA40DR-A完全够用扩展性也好。组态王则是国内最常见的SCADA软件和欧姆龙PLC通信有成熟驱动通过Fins/TCP以太网或HostLink串口就能连上不用自己写通信协议。对于最终用户来说操作界面就是组态王画面启动、停止、看状态、查报警几分钟就能学会。2. 硬件选型与接线图原理解读2.1 主要硬件清单与选型理由实际项目里我不推荐一上来就选高端型号够用、稳定、采购方便最重要。这套系统我常用的配置如下PLC欧姆龙CP1H-XA40DR-A继电器输出型自带24点输入、16点输出外加模拟量通道。继电器输出好处是直接驱动中间继电器或小接触器不挑负载缺点是有机械寿命但小车动作频率不高完全够用。触摸屏/上位机工控机或普通电脑安装组态王6.55/7.5通过以太网与PLC通信。电机与驱动小车用三相异步电机减速机功率一般0.75kW到2.2kW用两个接触器实现正反转。如果小车惯性大、要求停车准可以加变频器用PLC的开关量输出控制变频器正反转和速度此时接触器只做变频器进线侧保护。传感器装料位和卸料位用接近开关或行程开关超程保护用机械式限位开关装料完成/卸料完成根据现场情况用料位计、称重传感器或闸门限位。开关电源24V DC至少2A给PLC输入和传感器供电。中间继电器PLC输出到接触器线圈之间建议加中间继电器隔离尤其当接触器线圈功率较大或PLC输出是晶体管型时中间继电器还能避免感性负载通断对PLC输出点造成冲击。2.2 电机主回路与安全互锁接线小车电机正反转的主回路并不复杂就是两个接触器KM1、KM2调换相序。接线原理图可以这样描述断路器QF出来先接接触器KM1的进线端KM1出线端U、V、W接电机。KM2进线端也并接在QF下端但KM2出线端的相序要调换两相比如U、W、V。这样KM1吸合时电机正转KM2吸合时电机反转。最容易出问题的是互锁不只是PLC程序里要互锁硬接线上也必须互锁。具体做法是KM1的线圈回路串入KM2的常闭触点KM2的线圈回路串入KM1的常闭触点。这样即使PLC程序出错或者输出点卡死两个接触器也不可能同时吸合短路。我见过只做软件互锁不做过硬互锁的案例结果PLC程序跑飞时接触器同时吸合主回路直接炸了。另外小车左右两个方向都要接超程限位开关的常闭触点串在对应接触器线圈回路里。比如左行接触器KM1线圈回路里串左限位开关LS1的常闭触点右行接触器KM2线圈回路里串右限位开关LS2的常闭触点。这样小车一旦冲过正常停止位撞到硬限位硬回路直接切断接触器比等PLC反应更快更可靠。控制回路按24V DC设计PLC输出点接中间继电器线圈中间继电器触点再串入接触器线圈防止接触器线圈频繁通断对PLC输出点产生电弧损耗。如果是220V AC接触器中间继电器隔离尤其必要。2.3 传感器与PLC输入回路的接线要点欧姆龙CP1H的输入公共端COM接24V DC正极还是负极取决于你用漏型还是源型接线。CP1H的输入端子支持漏型输入也就是输入公共端COM接24V正极传感器/开关一端接输入端子另一端接24V负极。我用得最多的是三线制NPN接近开关棕色接24V正蓝色接24V负极黑色信号线接PLC输入端子这样传感器导通时输出低电平输入点得到电流信号。给每个输入点并联的传感器供电时要注意电源容量。如果传感器数量多比如接近开关、行程开关、料位计加起来超过8个24V电源至少选3A。另外接近开关的布线要避开电机动力线至少保持200mm以上间距不能缠在同一个线槽里。我之前遇到小车位置检测偶尔误动作查了半天就是因为接近开关信号线和变频器输出线走了同一个桥架变频器干扰串进信号线导致误触发。输入信号里停止按钮最好用常闭点接到PLC输入后程序里读它的常开状态。这样做的好处是一旦急停按钮线路断了PLC会把这个信号判断为“停止”而不是“正常运行”。这属于安全惯例很多人初次做项目时习惯把所有按钮都用常开但停止按钮一定要反过来接。3. 梯形图程序设计与实现3.1 程序架构手动、自动、复位三模式写程序不是上来就写自动循环而是把运行模式拆开。我习惯在程序开头先做模式选择手动模式用于现场调试、检修、单步动作自动模式用于正常生产循环复位模式用于故障处理后把设备拉回初始状态。模式切换用1.09信号手动/自动开关SA。当SA为OFF时程序只执行手动控制逻辑0.10有信号且0.03装料位没到位时才允许左行0.11有信号且0.04卸料位没到位时才允许右行。方向之间做互锁左行输出100.02动作的条件是100.03没有输出右行输出100.03动作的条件是100.02没有输出。手动和自动不是两套完全独立的程序而是共用输出点这样能保证切换时不会出现状态不一致。我建议用“自动运行标志”W0.00来区分W0.00为ON时自动逻辑控制输出W0.00为OFF时手动逻辑控制输出。切换瞬间最怕输出乱跳可以在模式切换信号上加一个微分和0.2秒延时确认模式稳定后再允许输出。具体做法是手动/自动切换信号1.09经DIFU指令变成一扫描周期的脉冲再用这个脉冲复位W0.00、W0.01、W0.02等内部状态把小车所有动作先停下来然后再进入新模式的初始判断。3.2 自动循环核心逻辑位置判断与方向控制自动循环流程可以总结为五步小车在装料位0.03为ON装料阀输出100.00打开开始装料。装料完成信号0.07来到后关闭装料阀启动右行输出100.03。小车到达卸料位0.04为ON停止右行打开卸料阀输出100.01开始卸料。卸料完成信号0.08来到后关闭卸料阀启动左行输出100.02。小车回到装料位0.03为ON停止左行进入下一轮装料。这个流程如果用梯形图写最简单的写法是用步进控制指令或者用SET/RESET指令做状态寄存器。用欧姆龙指令来说明可以定义三个内部位W0.10等待装料状态W0.11等待卸料状态W0.12自动循环运行中刚进入自动模式时如果小车在装料位置位W0.10如果小车在卸料位先置位W0.12然后自动左行回装料位回到装料位后再进入装料状态。右行条件这样写自动标志W0.00为ONW0.10为OFFW0.11为ON0.04卸料位没到位0.06右超程限位没动作而且100.02左行输出没有输出。当0.04从OFF变ON说明到位用上升沿指令DIFU把W0.11复位置位W0.10卸料完成等待同时关闭右行输出。左行条件类似自动标志为ONW0.11为OFFW0.10为ON0.03装料位没到位0.05左超程限位没动作100.03右行输出没有输出。当0.03从OFF变ON复位W0.10置位W0.11进入下一轮装料。这样写的好处是每一步都有明确的“条件动作”排查问题时候顺着状态位看就知道卡在哪一步。3.3 关键互锁与超时保护自动循环简单真正考验可靠性的是互锁和保护。软件层面必须做到左行输出100.02和右行输出100.03在程序里串联对方的常闭触点做软件互锁。装料阀100.00和卸料阀100.01也要互锁防止误开同时动作尤其对于只有一个料仓的设备装料阀和卸料阀同时打开会让物料走短路。小车运行中禁止开卸料阀卸料时禁止小车移动。也就是说100.01动作的条件里必须串入100.02和100.03的常闭触点。超时保护用定时器监控每一步比如装料状态W0.10持续500秒还没有收到装料完成信号0.07就判定为装料超时卸料状态W0.11持续300秒还没有收到卸料完成信号0.08就判定为卸料超时小车启动后30秒还没到目标位置的某个中间点就判定为行走故障。超时定时器不能单独挂在输出点上要挂在状态位后面。这样即使装料阀故障没有动作只要状态位进入了装料等待超时保护就在计时不会因为输出信号没建立就漏掉故障。3.4 梯形图助记符程序参考很多新手拿到CP1H不知道助记符怎么对应梯形图。这里给出一段简化但完整可用的自动循环核心逻辑助记符用欧姆龙CX-One格式书写导入到CX-Programmer后会自动生成梯形图。为便于阅读我只写关键段落省略手动部分和报警细节// 自动模式启动1.09自动模式且0.00启动按钮上升沿 LD 1.09 AND 0.00 DIFU W0.00 // 启动脉冲 OR W0.01 // 自动运行保持 ANDNOT 0.01 // 停止按钮常闭 OUT W0.01 // 自动运行标志 // 初始位置判断装料位进入装料等待状态 LD W0.01 AND 0.03 ANDNOT W0.10 ANDNOT W0.11 ANDNOT W0.12 SET W0.10 // 装料控制装料等待状态开装料阀 LD W0.10 AND 0.03 ANDNOT 100.01 OUT 100.00 // 装料完成0.07上升沿复位装料等待置位卸料等待 LD 0.07 AND W0.10 DIFU W0.02 LD W0.02 SET W0.11 RSET W0.10 // 右行控制卸料等待状态允许右行 LD W0.11 ANDNOT 0.04 ANDNOT 0.06 // 右超程限位 ANDNOT 100.02 // 软件互锁 OUT 100.03 // 到卸料位0.04上升沿停止右行进入卸料 LD 0.04 AND W0.11 DIFU W0.03 LD W0.03 SET W0.12 RSET W0.11 // 卸料控制 LD W0.12 AND 0.04 ANDNOT 100.00 OUT 100.01 // 卸料完成0.08上升沿复位卸料置位卸料等待回程 LD 0.08 AND W0.12 DIFU W0.04 LD W0.04 SET W0.11 RSET W0.12 // 左行控制 LD W0.11 ANDNOT 0.03 ANDNOT 0.05 // 左超程限位 ANDNOT 100.03 // 软件互锁 OUT 100.02 // 回到装料位0.03上升沿复位卸料等待进入下一轮装料 LD 0.03 AND W0.11 DIFU W0.05 LD W0.05 SET W0.10 RSET W0.11这段程序的思路是W0.10装料等待、W0.11卸料等待/回程、W0.12卸料状态。装料完成后自动右行卸料完成后自动左行。左右行互锁靠输出点前面串联对方常闭触点方向切换全靠到位开关上升沿触发不会出现两边同时输出的情况。实际使用时还需要加自动模式标志W0.01作为总前置条件并且在每段输出前加入“自动模式”和“无故障W0.99”的常开触点。超时报警、复位逻辑我这里不展开但一定要补上。4. 组态王SCADA画面与通讯配置4.1 组态王与欧姆龙PLC的通讯组态组态王连接欧姆龙CP1H选驱动时二选一串口HostLink或以太网Fins/TCP。现在新项目基本都用以太网速度快还能多台上位机同时访问所以重点说Fins/TCP。在组态王工程浏览器里新建设备选择“PLC → 欧姆龙 → Fins_TCP”。配置时需要填PLC的IP地址和端口号。CP1H内置以太网口时端口号常规是9600。连接参数里还有一个“单元号”一般为0。PLC侧要在CX-Programmer里设置好IP地址、子网掩码并且把Fins/TCP服务允许打开。组态王中变量的地址格式要注意欧姆龙区名对应关系如下CIO区组态王地址写“CIO100.00”或“CIO0.00”对应PLC的100.00输出点和0.00输入点。WR区内部继电器地址写“W0.00”对应PLC的W0.00内部位。HR区地址写“H0.00”。DM区地址写“D100”对应PLC的D100数据寄存器。最容易踩的坑是组态王变量类型和PLC地址类型不匹配。比如想监控PLC里100.00的输出状态变量类型应该选“I/O离散”读写属性设“只读”想通过组态王画面上的按钮写PLC线圈先要在PLC程序里定义这个地址为允许写入的线圈组态王变量读写属性设“读写”不要直接对输入点地址1.09写入因为输入点只能由外部硬件驱动写不进PLC。4.2 变量定义与画面设计变量规划这一步很多人忽略我建议所有要在画面上显示的数据都提前建好用“设备.寄存器”格式命名方便后续查找。以下是我习惯建的组态王变量表组态王变量名连接设备寄存器数据类型读写属性自动启动按钮PLC_FinsCIO0.00I/O离散读写停止按钮状态PLC_FinsCIO0.01I/O离散只读手动/自动模式PLC_FinsCIO0.09I/O离散只读装料位信号PLC_FinsCIO0.03I/O离散只读卸料位信号PLC_FinsCIO0.04I/O离散只读装料阀输出PLC_FinsCIO100.00I/O离散只读卸料阀输出PLC_FinsCIO100.01I/O离散只读左行输出PLC_FinsCIO100.02I/O离散只读右行输出PLC_FinsCIO100.03I/O离散只读报警状态PLC_FinsW0.99I/O离散只读运行时间累计PLC_FinsD50I/O整型只读画面设计不追求花哨重点是让操作工一眼看懂。我的主画面布局是这样的顶部是设备名称和当前时间中间用矩形块表示装料仓、小车、卸料仓小车位置用两个指示灯模拟装料位指示灯亮表示小车在左侧卸料位指示灯亮表示小车在右侧。小车下方标出装料阀和卸料阀状态绿色表示打开灰色表示关闭。底部放“自动启动”、“停止”、“复位”三个按钮以及当前模式显示。右侧留出报警窗口和运行趋势曲线。按钮实现方式组态王画面上的“自动启动”按钮用“按下时”动画连接输入离散变量“自动启动按钮”为1“弹起时”输入为0。这里注意PLC程序里0.00是瞬时信号所以组态王按下瞬间给1、弹起给0正好模拟物理按钮的脉冲。4.3 数据采集、报警与趋势曲线上位机监控的价值在于记录。用组态王做报警和趋势主要是设置“报警组”和“实时趋势曲线”。报警可以针对装料超时、卸料超时、左行超程、右行超程等PLC内部故障位W0.60到W0.63定义。组态王里对这4个I/O离散变量启用报警报警文本写清楚原因比如“装料超时请检查料仓或料位计”。严重级别可以分高、中、低这样控制室报警时能快速分级响应。趋势曲线建议采集两组数据小车位置状态用装料位信号和卸料位信号模拟成数值显示装料/卸料累计次数用PLC内部的计数器CNT值通过MOV指令传送到D100组态王读取D100后画成历史曲线能直观看到每个班次的生产节拍。组态王和PLC的通讯失败时画面上的数据会显示“#”同时组态王会产生设备通讯失败报警。处理方式一般是先ping PLC的IP地址若ping不通查网线和PLC端口若ping通但组态王连不上要检查Fins_TCP驱动中的单元号、端口号是否和PLC一致还有防火墙是否拦截了9600端口。这里有个小技巧把组态王所在电脑的防火墙临时关闭测试如果通了就在防火墙里放行组态王进程和9600端口而不是长期关闭防火墙。5. 调试过程、常见问题与排查技巧5.1 联机调试步骤程序写好后先在CX-Programmer里做离线仿真把自动循环流程模拟一遍。仿真能发现逻辑错误比如状态位没有复位、互锁条件写错、启动脉冲DIFU用错等。接着做空载调试断开电机主回路只让PLC输出到接触器线圈手动点动左右行确认输出点动作方向正确再给传感器模拟信号检查各输入点在PLC监视窗口里是否都能正确变化。空载没问题后接上电机但先让小车手动低速点动走完全程确认两个限位开关的位置。空载确认后再切到自动模式做空车循环观察小车在装料位是否真的停住、装料阀是否打开、卸料位停位是否准确。空车循环连续跑10次以上没有异常再带物料试运行。我调试时发现最常见的问题不是程序逻辑而是传感器位置没调好。装料位接近开关离小车停靠点太近小车还没完全停稳就触发了导致装料阀提前打开或者卸料位开关安装角度偏了小车每次都压不住导致设备一直等卸料完成信号触发超时报警。手动调试时我推荐组态王和CX-Programmer同时打开PLC程序里加一个“手动速度选择”开关用小变频器多段速功能手动模式下速度降到20%自动模式恢复正常速度。这样既能快速验证每个限位又不至于小车冲过头。5.2 常见问题速查表结合现场实际操作把最容易被问到的几个问题整理成表格方便对照排查故障现象可能原因排查步骤解决办法PLC无法启动自动循环模式开关没打到自动看组态王模式显示切换到自动档自动启动按钮没反应启动信号脉冲太短看PLC监视窗口0.00是否有瞬间ON组态王按钮按下时间设为0.3秒或PLC内用SET保持小车到装料位不停到位信号没来查0.03输入点是否亮调整接近开关距离确保小车停靠时能稳定触发小车左右行都动不了超程限位被压住查0.05/0.06状态是否被复位手动把小车拖回行程内或检查限位开关机械卡滞装料阀和卸料阀同时开程序状态位错乱查W0.10、W0.11、W0.12状态检查互锁触点确认两个输出前都串了对方常闭组态王显示变量为“#”通讯失败ping PLC IP查看9600端口检查网线、PLC端口配置、组态王驱动参数组态王创建协议组件失败驱动安装不完整或被杀毒拦截以管理员身份运行组态王重新安装驱动或临时退出安全软件后再安装小车到位后仍轻微滑行停车减速不够观察停车位置偏差自动模式增加减速点提前0.5米减速或加装制动器继电器频繁吸合噪声大输出点抖动用万用表测输出点电压是否稳定PLC输出端并联RC吸收回路或改用固态继电器超时报警误报传感器灵敏度下降检查传感器表面是否有粉尘覆盖定期清洁接近开关探头调整灵敏度旋钮5.3 几处值得注意的细节调试过程中有一些很细节但特别影响体验的点专门记一下。第一欧姆龙CP1H的输入点不要全部接到同一个COM上实际项目里为了布线方便经常分两组COM但要注意传感器漏型/源型接法必须统一。我见过一批设备接线工把NPN接近开关接到了源型输入的公共端上结果信号怎么都不进PLC查了很久才发现接法不一致。第二组态王和PLC的地址映射容易被忽略尤其是DM区。数据寄存器D区在组态王里对应地址是D100但在PLC里实际写指令时要注意MOV指令的目标地址如果是D100组态王读取没问题如果你在PLC里用了DM100组态王对应地址就变成了“D100”没区别。但如果你用了H区组态王要写H0.00不要写成“HR0.00”这个细节很容易在驱动文档里搞混。第三自动装卸料小车的机械限位是最容易被生产部门改动的部分。经常会出现设备用了一段时间后工人嫌小车位置不准调整了限位支架导致互锁逻辑里的硬限位和到位开关位置发生冲突。这种事最好的解决办法是在PLC程序里记录每次到位的偏差脉冲数如果用的是带编码器的小车还可以直接比较编码器累计值和限位位置是否匹配偏差超过阈值就报警。没有编码器时至少要在维护说明里写清楚调整限位后必须在控制柜贴上新的标定记录否则程序不用改但传感器逻辑可能出现先后顺序问题。第四手动/自动切换开关要选用带“中间断开”的三位旋钮这样切换时不会出现由于开关触点接触不良导致PLC同时读到两个模式的信号。我在程序里对1.09做了滤波连续读取10个扫描周期都稳定为同一电平后才认为模式切换完成避免现场振动引起的误切换。第五报警消除按钮不要简单地接成PLC输入复位所有故障点。最好是报警在组态王里确认PLC内部故障位只有在真正的故障条件消失后才能复位。比如装料超时故障如果料位计一直没信号就算按复位故障位也会立刻再次置位。这样设计是为了防止操作工在没处理故障时反复按复位掩盖问题。这套项目整体做下来给我最深的感受是程序本身写起来不复杂真正花时间的是把每一个反馈信号、每一种异常情况都想清楚然后用互锁和超时把它们兜住。组态王画面做得再好看如果底层信号不可靠照样会误报漏报。所以建议各位在做类似项目时先花半天时间把I/O表、时序图、故障清单全部列出来再动笔写梯图后面调试能省一大半时间。
返回列表