ARTICLE DETAIL

资讯详情

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

五工位装卸料小车PLC控制系统设计:S7-200与组态王仿真联调实战

五工位装卸料小车PLC控制系统设计:S7-200与组态王仿真联调实战 做自动化项目最怕的就是纸上谈兵尤其是五工位装卸料小车这种典型的系统牵扯到PLC控制逻辑、电气回路设计、上位机监控画面三块内容哪一块没协调好都会在联调时翻车。前阵子我完整做了一套五工位装卸料小车的控制演示系统控制核心用的是S7-200 PLC上位机监控画面用组态王6.53做仿真运行整套电气原理图和梯形图逻辑都反复跑过了。这篇就把这个项目从头到尾拆一遍包括PLC的I/O分配、电气原理图里正反转互锁和保护环节怎么设计、组态王6.53仿真运行时的变量关联和动画连接、以及联调时最常踩的坑给正在做同类课题或者课程设计的你一份可以直接照搬的参考。1. 项目概述与整体思路1.1 五工位装卸料小车到底在干什么先把这个系统的工作场景说清楚。一条直线轨道上停着一台小车轨道旁边按顺序分布着五个工位每个工位都有对应的装卸料点。现场的实际工艺一般是这样的1号工位是原料上料站2到4号工位是中间工序设备5号工位是成品下料站。小车的工作就是根据指令从当前位置跑到指定工位到位后执行装料或卸料动作然后再根据下一道指令去下一个工位或者自动回原点待命。控制任务拆开来看其实只有三块第一是位置判断小车在哪个工位、要去哪个工位第二是运动控制电机正转小车前进、反转小车后退到位就停第三是装卸料执行到位后驱动电磁阀或者气缸完成装料和卸料并给出到位信号。这类项目在教学和实际小规模生产线里出现频率极高因为它把PLC最基本的输入输出、行程开关定位、正反转互锁、电机启停这些知识点全串起来了。而且相比那些只写梯形图不上位机的课题多了组态王6.53仿真运行这层整个系统的完整度会高出一大截答辩或者项目汇报的时候也更有说服力。1.2 为什么选 S7-200 PLC 加组态王 6.53这个选型组合放到今天看确实有点年代感但恰恰是很多院校实验室和中小型改造项目的标配。S7-200虽然已经是老平台但稳定、教程多、PLC调试软件好用而且它的PPI通信协议非常简单组态王6.53有原生驱动两边一配就能握手。做五工位小车这种规模的控制S7-200的数字量点数完全够用成本也压得下来。组态王6.53这边最大的优势是上手快、自带图库和动画连接功能做小车移动这种模拟量动画不算复杂。它支持脚本命令语言可以把小车的运行逻辑直接放在上位机里跑这样在没有真实PLC和电机的情况下照样可以把整个系统的演示流程走一遍这就是标题里说的仿真运行。我自己的建议是如果条件允许优先用组态王连真实S7-200跑这才是完整的联调如果只有电脑那就做纯画面仿真重点演示工艺动作和操作流程两种模式后面的章节都会讲到。2. PLC控制方案与电气原理图分析2.1 I/O点分配与地址规划做任何PLC项目第一步永远是分配地址这一步做得好后面梯形图编程和组态王变量定义都会顺很多。我给这套五工位小车系统规划的I/O表如下后面所有程序分析和变量关联都以这张表为准。地址信号名称说明类型I0.0SB1启动按钮常开数字量输入I0.1SB2停止按钮常闭数字量输入I0.2SQ11号工位行程开关数字量输入I0.3SQ22号工位行程开关数字量输入I0.4SQ33号工位行程开关数字量输入I0.5SQ44号工位行程开关数字量输入I0.6SQ55号工位行程开关数字量输入I0.7SQ0原点减速开关可选数字量输入Q0.0KM1小车正转前进接触器线圈数字量输出Q0.1KM2小车反转后退接触器线圈数字量输出Q0.2YV1装料电磁阀数字量输出Q0.3YV2卸料电磁阀数字量输出Q0.4HL1运行指示灯数字量输出Q0.5HL2故障指示灯数字量输出这里有几个点要特别说明。停在哪个工位就是哪个行程开关压合所以PLC不需要连续的位置传感器只需要这几个点位的开关量信号简单、可靠、成本低。停止按钮我选的是常闭接法这样一旦线路断线或者按钮被按下去PLC输入信号消失程序能立刻识别为停止命令比常开接法安全得多。2.2 控制逻辑与梯形图设计思路清楚了地址看梯形图就好理解了。整个控制逻辑我分成三个程序段来说。第一段是启动与停止。 按一下启动按钮I0.0用置位指令SET把M0.0工作标志位置1输出Q0.4运行指示灯点亮。按I0.1或者检测到故障时用复位指令RST把M0.0复位所有输出全部停。这里注意一下按钮动作是瞬时信号不能直接驱动输出必须先转换成PLC内部的保持型标志位这是PLC编程最基础也是最容易被忽略的点。第二段是小车运动控制。 假设当前小车在1号工位组态王下发指令去3号工位。PLC内部先用一个传送指令把目标工位号3存到内部寄存器VB10再把当前工位号1存到VB11。程序里做比较VB11小于VB10时置位Q0.0正转小车前进VB11大于VB10时置位Q0.1反转小车后退VB11等于VB10时两个输出都复位小车停止置位M0.1到位标志。当小车碰到3号工位的行程开关I0.4时把当前工位号更新为3同时复位运动输出。这样写的好处是逻辑清晰尤其是小车可能需要往返动作时正反转判断和到位更新全部分开调试时看状态表一目了然。第三段是装卸料执行逻辑。 到位标志M0.1置位后延时0.5秒等小车完全停稳然后输出Q0.2装料电磁阀保持5秒后复位。装料完成再输出Q0.3卸料电磁阀保持5秒。延时用定时器TON实现S7-200的TON时间基准参数要设好我习惯用100ms时基0.5秒就写定时值55秒就写定时值50。最后所有动作完成复位M0.1继续等待下一条指令。2.3 电气原理图的关键环节电气原理图这块必须重点说因为很多人只会写梯形图一让画主电路和控制电路就懵。这套系统的电气原理图主要分三部分主电路、控制电路、PLC外围接线。主电路是电机的动力回路。三相电源经过电源总开关QS到熔断器FU1做短路保护再到正转接触器KM1和反转接触器KM2两个接触器输出端要换相再经过热继电器FR接到三相异步电机M。KM1和KM2必须做双重互锁电气上KM1线圈回路串KM2的常闭触点KM2线圈回路串KM1的常闭触点这样即使其中一个接触器卡死不释放另一个也绝对吸合不了能防止相间短路。控制电路这块因为电机功率一般不大我用的是220V控制回路。控制电源经过熔断器FU2送到热继电器FR的常闭触点再送到停止按钮SB2常闭然后进启动按钮SB1常开和接触器KM1线圈的回路。启动按钮并联KM1的常开辅助触点做自锁按一下启动按钮KM1吸合常开触点闭合维持线圈供电。这就是常规的启保停电路。注意KM1和KM2的辅助常闭要交叉串到对方的线圈回路里这就是电气互锁的实物实现。PLC外围接线单独看。S7-200的数字量输入端1M公共端接法有源型和漏型之分我的做法是24V电源负极接1M按钮和行程开关一端接24V正极另一端接对应的输入点这属于源型接法S7-200默认支持。输出端Q0.0到Q0.5是晶体管输出带载能力有限不能直接驱动接触器和电磁阀线圈所以我每个输出点都接了一个中间继电器KA再由中间继电器的触点去控制接触器线圈。线圈两端要并联RC吸收器或者续流二极管不然断电瞬间的反电动势容易把PLC输出点打坏这个细节很多人吃过亏。3. 组态王6.53仿真运行全流程3.1 环境准备与通信配置组态王6.53是相对老的软件我第一次装的时候在Win10系统上折腾了很久才跑起来这里把经验说清楚。组态王6.53建议用Windows XP或者Windows 7 32位环境如果只有Win10 64位最好用虚拟机装个Win7来跑否则画面编辑可能正常但运行系统一启动就报错或者驱动加载失败。安装完成后第一次打开工程会提示加密狗用的学习版就选普通单机版模式。新建工程后第一步是配置设备。在工程浏览器左侧选择设备双击新建设备驱动列表里找到西门子分类选S7-200(PPI)。通信参数默认波特率9600、8数据位、1停止位、偶校验跟S7-200编程软件的PPI设置保持一致。如果用的是USB转串口线一定要先在设备管理器里确认虚拟COM口号默认是COM3或者COM4你实际是多少就填多少。设备地址填1或者2跟PLC系统块里的站地址对应。配置完设备记得做一件事在文件菜单里选择切换运行系统进入运行系统后按CtrlAltW打开通信状态窗口如果你点了启动按钮而通信状态显示异常多半是COM口不对返回工程浏览器检查一遍。3.2 变量定义与动画连接组态王里所有画面上能动的东西背后必须有变量。变量分为I/O变量和内存变量两种I/O变量直接关联PLC的地址画面上的启动按钮按下写入的就是I0.0对应的位内存变量只在组态王内部起作用比如小车位置模拟量。我给这个项目定义了这样一组核心变量变量名类型关联用途V_QBI/O离散Q0.0正转输出状态V_FBI/O离散Q0.1反转输出状态V_I0_0I/O离散I0.0启动按钮V_I0_1I/O离散I0.1停止按钮V_MBQI/O离散I0.43号工位行程开关V_CAR_POS内存整型无小车当前位置模拟量V_TARGET内存整型无目标工位号V_RUN内存离散无运行标志定义变量时每定义一个都要填好连接对象就是刚才配好的PLC设备。I/O离散变量的初始值选0内存整型变量范围可以设成0到100存的是工位号1到5。注意变量名的命名规范中文可以但不要有空格和特殊符号不然在命令语言里会报错。动画连接是画面能动的关键。我画面上小车是一个矩形块选中它右键属性在动画连接里双击水平移动。水平移动的表达式填V_CAR_POS这是数据源移动距离的像素范围根据你画的轨道长度来确定。比如轨道是500像素五个工位等距那小车从1号工位到5号工位就是移动400像素这个换算关系后面仿真调试时要手动对好。3.3 画面设计与命令语言实现画面设计我直接说结论。轨道用一条粗线段表示五个工位的位置分别在轨道的100、200、300、400、500像素处每个工位画一个圆点加文字标签工位1到工位5。小车是一个矩形块宽度50像素初始位置放在工位1处。工位下面放两个指示灯红色和绿色颜色变化连接变量V_RUN和故障标志。最右边放启动停止目标工位设置三个按钮。按钮的弹起时命令语言里写这样的脚本选择按下时和弹起时两种事件要注意时序我一般用弹起时来触发动作避免按钮按住不放导致脚本重复执行// 目标工位选择按钮组1按下后把目标工位设为1 V_TARGET 1; // 启动按钮弹起后触发 V_RUN 1;小车移动的逻辑我放在运行系统的应用程序命令语言里选择启动时和周期执行两种方式周期时间设100毫秒这样小车移动起来有动画渐变效果而不是瞬移// 小车移动模拟脚本每100ms执行一次 if (V_RUN 1 V_CAR_POS V_TARGET) { V_CAR_POS V_CAR_POS 1; } if (V_RUN 1 V_CAR_POS V_TARGET) { V_CAR_POS V_CAR_POS - 1; } // 到位判断 if (V_CAR_POS V_TARGET V_RUN 1) { V_RUN 0; // 此处可以补充装卸料动作的变量置位 }这套脚本的意思很简单运行标志为1时小车位置每100毫秒向目标工位逼近1像素。脚本里的V_CAR_POS既是驱动画面移动的变量又模拟了PLC里的当前工位号所以画面上的小车位置和系统状态始终保持一致。如果连了真实PLC这部分就由真实的限位开关信号来更新脚本就可以只保留画面逻辑不参与控制判断。3.4 仿真运行的两种模式组态王6.53仿真运行其实有两种玩法你要根据手上有没有真实PLC来决定用哪一种。第一种是纯画面仿真也是我上面这套脚本方案。所有控制逻辑都用内存变量和命令语言模拟PLC地址变量不参与或者只做显示。这种模式对硬件零依赖很适合课程演示和方案验证把组态王运行系统一打开点一下启动按钮小车就沿着轨道一格一格地跑指示状态也跟着变。但缺点很明显命令语言写的逻辑跟真实PLC程序是两套必须保证两边的逻辑一致否则后期联调时问题很多。第二种是PLC联机仿真。S7-200真实运行梯形图组态王作为上位机实时采集PLC的点位。这时候画面上的V_CAR_POS就不能用内存变量模拟了要改成I/O变量关联一个真实的PLC寄存器地址比如VW10由PLC程序实时更新。启动按钮和停止按钮也改为I/O离散变量按下按钮直接写PLC的M区。这样画面只是显示状态控制判断全部由PLC完成这才是真正的仿真加联调。我的建议是两种模式都做一遍先用纯画面仿真把动画效果和操作流程调顺再把关键变量改成I/O关联真实PLC一套方案两套演示稳妥。4. 联调过程、常见问题与排查记录4.1 联调前的检查清单把电气接线和软件配置都做完之后别急着上电先按下面的清单过一遍能省掉后面大量的排查时间。第一检查主电路和控制电路的接线确认KM1和KM2主触点出线端确实有换相两个接触器的辅助常闭互锁点要串联正确。第二用万用表蜂鸣档量一下PLC输入端和公共端之间按钮没有按下时通断关系对不对尤其要确认停止按钮常闭点的接线没有短路。第三单独给PLC供电用编程软件监控I/O状态手动按压每个行程开关确认I0.2到I0.6都能正确翻转。第四在组态王运行系统里打开通信状态窗口确认与PLC的通信一直没有中断。第五电机和机械部分先空转测试不要带着负载跑防止程序逻辑错误导致小车冲出去撞坏工位设备。这套检查清单看着基础但我在现场见过太多因为少做一步就周末加班的例子。尤其是常闭停止按钮接成常开这种低级错误上电前量一下完全能发现。4.2 五个高频故障的排查思路把这个项目运行中实际遇到过的问题整理成一张速查表遇到类似情况可以直接对着排查。故障现象可能原因排查与处理组态王通信状态显示异常COM口号错误、PPI参数不一致、USB转串口驱动不稳定设备管理器确认COM号检查波特率9600更换质量好的USB转串口线画面小车不动作命令语言未勾选周期执行或变量类型不匹配检查应用程序命令语言的周期时间设了没变量名有没有拼写错误小车到位后电机不停PLC里到位复位逻辑未执行或限位开关没被压到监控I0.4状态检查机械安装位置行程开关撞块是否可靠压合一启动KM1和KM2同时吸合电气互锁接线错了或接触器辅助触点接错断开电源用万用表检查KM1线圈回路是否串入KM2常闭程序里也要加互锁组态王画面卡顿命令语言写了死循环或周期太短周期执行时间设为100ms以上脚本里禁止while(1)自旋等待4.3 避坑心得老软件项目的实用经验组态王6.53这类老软件配合老PLC平台项目能跑通但过程中积累的经验比教程里写的要多得多。我挑几个最实用的说。第一像素坐标和实际位置的换算一定要在工程搭建初期就算清楚。多加一个工位或者把轨道画长了后面所有动画连接都要重新调。我自己是先在纸上画一个表格列出工位数、轨道像素总长、每工位像素间距再回去画画面一次到位。第二命令语言脚本里不要写长延时和死循环。组态王运行系统的脚本是事件驱动加周期扫描不是多线程你在脚本里写while大循环等待整个界面直接假死点哪儿都没反应。所有延时效果都靠周期执行变量递增来实现。第三S7-200的M区和V区地址不要跟组态王变量地址冲突。比如PLC程序用了VB10做目标工位组态王里又定义了一个VW10变量两边写入时机不同步就会出现画面显示目标工位是3实际PLC里是2的诡异现象。地址规划要两边同步最好做个地址映射表贴在工程目录下。第四如果遇到组态王6.53在Win10上装上不识别加密锁不要硬刚直接在虚拟机里装Win7二十几分钟搞定省得浪费时间。这类老组态软件在虚拟机运行时偶尔会有鼠标漂移的问题在虚拟机设置里把显示适配器改为兼容模式就能缓解。最后说点个人体会。做五工位装卸料小车这套系统最值钱的不是某个具体功能怎么实现而是把电气原理图的硬逻辑、PLC程序的软逻辑、上位机画面的交互逻辑三者对齐这件事。很多时候梯形图写好了电气原理图也画好了但是组态王变量没对上一联调全乱。先在上位机里把纯画面仿真跑顺再接入真实PLC这个思路我后面做其他项目也沿用得很好。这套控制逻辑和电气设计思路完全可以迁移到小型AGV或者移动机器人上换成STM32做两轮差速控制的时候位置检测、运动决策、上位机监控这三层架构也是一样的只是执行机构从接触器电机变成了驱动器和直流电机罢了。顺着这个思路往下走你会发现这类控制系统的万变不离其宗。
返回列表