资讯详情

资讯详情

S7-200 PLC与组态王在3x3升降横移式立体车库中的应用

一套3x3升降横移式自动化立体车库真正落地的时候核心其实就三件事一台S7-200 PLC管逻辑一套组态王做监控再加一堆限位开关和传感器保命。很多人觉得立体车库难点在机械结构实际做下来才发现难点全在控制逻辑和现场调试上。这篇文章我按一个实际可复现的项目来复盘3列3层的车架底层和中层车板能横移顶层车板只做升降留一个空位作为周转位有效车位8个。内容包括I/O点规划、PLC程序怎么写、组态王画面怎么做、PPI通信怎么调通以及最后现场会踩的那些坑。适合自动化专业的学生做课程设计也适合搞非标设备的工程师、物业电气维护人员参考。1. 为什么是3x3升降横移先把控制需求看清楚1.1 升降横移式车库的机械逻辑升降横移式是目前中小型立体车库里最常见的一种。它的工作原理可以理解成华容道一个框架分成多列多层车板既能横向移动也能垂直升降但必须有一个空位作为周转空间其他车板才能动起来。我做的这套是3列3层也就是三列、三层总共有9个车位框架但实际可用的只有8个因为必须空出一个位置。底层的3个车板只负责横移车辆可以直接开进去中层的3个车板既能横移也能升降顶层的3个车板主要做升降动作在某些设计中也可以横移但为了简化机械和程序我这边把顶层横移省掉了。存取车的思路是这样的如果车停在底层直接开进开出就行不用动任何机构。如果要取中层或顶层的车就要先把目标车位正下方的车板横移开腾出垂直通道然后让目标车板降到底层空位车主开走车再把车板升回去、横移归位。1.2 从机械动作反推控制系统的任务清单把上面这套机械动作翻译成控制需求就清晰多了。控制系统必须干这么几件事第一记住车位状态也就是每个车位有没有车空位目前在哪个位置。第二识别车主的目标车位判断这个车位能不能直接存取如果不能要生成一串横移动作。第三按顺序执行升降和横移每一步都要等到限位到位才能进行下一步。第四任何异常情况都要能停下来报警并保证人员安全。举个例子。空位在底层三号位车主取的是三层二号位。那么控制过程大致是这样先判断底层二号位有没有车如果有车就把它横移到空位处等底层二号位空出来三层二号位开始下降降到地面后车主取车取完车三层二号位升回原位刚才移走的车板再横移回原位。这套动作听起来简单但放到PLC里做顺序控制每一步都要有严格的到位信号和互锁条件。1.3 控制难点集中在哪互锁、调度与安全实际编程时最花时间的不是动作本身而是互锁和安全逻辑。互锁包括几个层面同一台横移电机的正转和反转绝对不能同时得电否则就是相间短路升降动作进行时横移动作必须被禁止同一个区域里也不允许有两台电机同时动作。这些互锁既要在PLC程序里写还要在接触器主回路里做硬件互锁双保险。调度逻辑的难点在于3x3的布局虽然车位不多但空位的位置会随着存取动作不断变化。程序必须随时知道空位在哪里不然就会出现所有车板都堵死、哪个都动不了的死锁情况。至于安全立体车库是有人车交互的设备底下有人或者有车的时候上层车板绝对不能掉下来。防坠钩、光电保护、超时检测、急停回路这些不是可选项是必须项。2. S7-200的I/O规划与硬件接线先算清点数账2.1 数一数系统到底要多少个输入输出点做控制系统的第一步不是写程序而是算点数。一个3x3升降横移车库输入输出点比想象中要多。我按前面的机械方案先列一遍输入部分大概是这样车位占位检测8个车位每个装一个光电或接近传感器用来判断有没有车8点。横移限位底层和中层各有3套横移车板每套装左、右两个限位开关6套×212点。升降限位3套升降机构每套装上限位和下限位6点。安全保护底层出入口的光电开关、光幕或者雷达预留4~6点。操作面板模式选择、急停、上升、下降、横移左、横移右、存车确认、取车确认、复位约10点。这样算下来输入点大约需要40点。输出部分横移电机6套车板每套需要正转、反转两个输出点12点。升降电机3套每套正转反转6点。报警蜂鸣器、三层指示灯、防坠电磁铁等预留4~6点。输出点大约22点。这个规模不算大但也绝对不是一个CPU224能轻松扛下来的。2.2 S7-200机型选择与扩展模块组合S7-200系列里常见的CPU型号有221、222、224、224XP、226。它们的数字量I/O能力差别很大选型时我看了两套方案。一套是CPU224加两块数字量扩展模块另一套是直接用CPU226加一块扩展模块。最后选了CPU226加EM223的组合理由是CPU226自带24个输入和16个输出已经能覆盖大部分点再加一块EM223输入输出都有富余。后面调试的时候想加什么信号都不用拆线这个余量非常值钱。多说一句S7-200这个系列现在已经不是新项目的主流选择了但存量设备改造、课程设计和教学项目里仍然大量存在而且组态王对它的支持非常成熟通信调试资料也多。做技改项目碰到它完全不用慌。2.3 接线图里的安全习惯常闭急停、接触器互锁点数算清楚了接线的时候有几个习惯必须要养成。急停按钮一定要用常闭触点接到PLC输入端而不是用常开。逻辑上常闭触点断开才表示急停动作这意味着急停回路断线、接触不良等故障也会被当成急停触发系统会主动停机而不是失效。常开接法最大的问题是线断了系统也不知道急停形同虚设。PLC的输出端不建议直接驱动接触器线圈。24V的PLC输出点去驱动380V接触器线圈无论是电压等级还是浪涌电流都不合适。正确做法是PLC输出先驱动中间继电器中间继电器的触点再去控制接触器线圈。这样既隔离了强电和弱电也延长了PLC输出点的寿命。接触器主回路必须做硬件互锁。比如横移电机的正转接触器和反转接触器KM1和KM2的辅助常闭触点要串到对方的线圈回路里防止两个接触器同时吸合。这一点即使PLC程序里写了互锁也绝对不能省。安全回路方面我习惯把急停、热继电器常闭、防坠限位这些关键信号串成一条安全链接到PLC的一个专用输入点。任何一个安全条件不满足整个系统都不能动作。3. 组态王画面和变量让立体车库看得见3.1 先搭画面再绑变量组态王在这个项目里的角色是给物业值班人员和车主提供一个人机界面。画面不需要花哨但必须直观。我搭的画面分两个主页面。第一个是车库俯视图画一个3列3层的矩形框架每个车位用一个载车板图形表示。有车的时候车位上显示一辆车的图形或者填充成深色空位就显示浅色。车板横移的时候图形在画面上跟着左右移动升降的时候图形跟着上下移动。这样车主一眼就能看到自己的车在哪一层、哪个位置。第二页是运行状态页。上面有每台横移电机和升降电机的运行指示灯、当前空位所在的列、正在执行的动作、当前的故障报警。这个页面主要是给维护人员看方便排查问题。动画连接是组态王的核心操作。载车板图形的水平移动和垂直移动属性分别绑到PLC里对应的电机运行标志变量上车位有车没车用填充颜色属性绑定占位检测变量。这些绑定做完画面就活了。3.2 变量管理与地址映射组态王和PLC通信本质是变量的地址映射。组态王里的变量分为内存变量和I/O变量内存变量只在组态王内部用I/O变量才是真正和PLC交换数据的。地址映射要提前规划清楚。我给PLC程序预留了几个固定的变量区然后把这些地址在组态王里一一对应。比如车牌占位信号PLC里是I0.0到I2.7之类的输入点组态王里就建对应的I/O离散变量寄存器地址直接写I0.0。空位在哪个列我用PLC里的VW110这个字来记录组态王里建一个I/O整型变量寄存器地址写V110。这里有个容易犯迷糊的地方S7-200的V区地址和组态王的寄存器写法有时候会差一个字节。后面我会专门说这个坑。3.3 操作权限与报警界面画面不只是显示还要能操作。组态王支持用户权限管理我建了两级权限操作员只能点存车、取车按钮管理员可以修改参数、复位报警、查看历史报表。存取车界面上操作员输入目标车位号点击存车或取车组态王把这个命令写到PLC的一个M区变量里PLC收到指令后开始执行调度动作。执行过程中画面上实时显示当前空位位置和正在动作的车板动作完成后再显示完成状态。报警窗口必须要做。我配置了这几类报警电机动作超时、限位信号丢失、急停被按下、光电保护触发。报警出现时值班室画面弹窗提示同时蜂鸣器响PLC侧也会切断当前动作必须人工复位才能重新运行。4. PLC程序的核心逻辑存取流程怎么变成梯形图4.1 把一次取车动作拆成可编程的步骤PLC程序我采用的是状态机思路这是一个非常实用的小型非标设备编程方法。整个系统有几种状态空闲、调度中、升降中、横移中、故障停止。用VW100这个字来存当前状态程序的主体就是根据状态去触发对应的动作。以取三层某个车位为例流程拆成这样第一步操作员发来取车指令PLC先检查目标车位是否有车、当前空位在哪一列。第二步如果目标列正下方有车板挡着PLC生成一个横移腾位的临时动作表把挡路的车板依次横移到空位处。第三步目标车位开始下降降到下限位后防坠装置解除提示车主取车。第四步车主把车开走占位检测信号消失PLC确认车辆离开。第五步目标车板升回上位被移开的车板横移归位系统回到空闲状态。这里每走一步都要等上一步的到位信号满足不能靠延时去估。所有动作都靠限位开关或者传感器信号来确认完成这是立体车库程序最基本的可靠性要求。4.2 动作序列的几种实现方式实现动作序列我试过两种方式。一种是顺序步进法用一组M位变量表示当前执行到第几步每完成一步复位当前步、置位下一步。这种方式逻辑很直观梯形图写起来就像翻卡片维护人员也容易看懂。缺点是如果动作表很长程序会比较占空间。另一种是动作表指针法。把每个动作编码存放在V区的连续空间里每条动作记录包括执行机构编号、方向、目标限位等信息。程序用一个指针指向当前动作每完成一条指针加一指向下一条。这种方式更灵活尤其适合调度逻辑复杂的情况。我在这个项目里最后用了顺序步进法。因为3x3的调度动作虽然有变化但最大动作数也就那么几步提前用M位把各个步骤列出来反而更容易排查。如果将来要做5列甚至更大规模的库我才会换动作表指针法。4.3 关键逻辑段互锁与到位判断梯形图里互锁怎么体现要看一个核心网络比如底层二号车板向右横移Network 1 底层二号车板向右横移 M0.1 M0.2 I0.4 Q0.3 横移启动 左移互锁 右到位限位未触发 横移正转 ------| |----------|/|------------|/|----------------( )M0.1是横移启动标志M0.2是左移互锁标志I0.4是右到位限位Q0.3是横移电机正转输出。也就是说只有启动了横移、反向没在动作、右限位又没有触发的条件下电机才会正转。到位判断要防止信号抖动。限位开关在车板到位前后会有抖动直接用常开触点做判断可能导致程序误认为多次动作。我习惯在程序里用上升沿信号来锁存到位状态到位信号稳定后再置位完成标志。延时保护也不能少。比如某次横移动作正常5秒能到位我设置了10秒的超时定时器用T37这类定时器做。如果10秒内限位还没触发程序立刻置位故障位、断开所有输出、启动蜂鸣器。这个超时保护在现场调试时救了我好几次。5. PPI通信与组态王对接从收不到数据到刷新正常5.1 组态王与S7-200的设备配置组态王和S7-200之间最常见的通信方式是PPI协议。组态王做设备配置的时候驱动要选S7-200的PPI驱动然后新建一个逻辑设备。通信参数的设置需要注意S7-200的默认站地址一般是2波特率常见9600数据位8偶校验停止位1。这些参数必须和PLC里的设置完全一致差一个都不行。还要注意串口资源。如果电脑用的是USB转串口线先到设备管理器里确认一下转换出来的COM口号别被它默认的数字误导。组态王里选择的COM口必须和实际一致。配置完成后先别急着进画面打开组态王的设备测试功能对着PLC随便读一个变量比如读VW110看能不能读到数据。这一步先确认通信链路是通的再去做画面绑定。5.2 最容易碰到的几个通信怪问题调试PPI通信的时候常见问题翻来覆去就那么几个。COM口被占用是最典型的。组态王开发系统、其他串口调试工具同时占用了同一个COM口设备就连接不上。关掉无关软件或者在设备管理器里换一个空闲COM口能解决大半问题。波特率和校验不一致的问题也很隐蔽。很多时候PLC侧用的是9600 8 E 1但组态王里不小心选成了9600 8 N 1现象就是设备状态时好时坏偶尔能连上一刷新就断。我建议把所有通信参数做成一张表PLC侧和组态王侧逐项核对。RS485的A、B线接反也见过不少。PC/PPI电缆的接头看起来都一样但插到PLC的通信口上A/B顺序错了就是收不到数据。遇到通信完全不通的情况先把A、B线互换试一次成本最低。5.3 通信地址映射验证技巧通信通了不等于地址映射一定对。我推荐一个最直接的验证方法在PLC程序里把VW110这个字强制写成一个固定值比如123然后在组态王里建一个文本显示VW110的值。如果显示123说明读地址对了如果显示的是乱码或者奇怪的大数那就要考虑字节顺序问题。S7-200的V区字数据在组态王里读出来高字节和低字节有时是反的。比如PLC里VW110存的123组态王读出来可能是31488那就把寄存器地址改成V111或者调整数据类型再试一次。这个问题没有统一规律只能实测确认。还有一个常见的低级错误把离散变量和整型变量混用。I0.0明明是离散量组态王里却不小心建成了IO整型结果整个画面扫描错误所有数据都刷新不出来。变量类型必须和PLC地址的实际数据类型一致建变量的时候就要选对。6. 现场调试与安全保护从能转到敢用6.1 先单机调再联调立体车库调到能用和调到敢让车主天天用是两回事。我的调试顺序是严格分阶段的。第一阶段是机械和限位的初调。车板装好后先手动掰动限位开关确认PLC能读到对应的输入信号同时检查每个限位安装位置是否合适保证机械到位时能可靠触发。第二阶段是单电机点动。每台横移电机、升降电机单独手动正反转确认电机转向、接触器动作、限位方向都对得上。第三阶段是单机空载联动也就是不放车执行完整的存取流程看动作顺序是否正确。第四阶段才用配重或实车做带载测试观察升降电机电流、制动距离、车板停位精度。跳步是大忌。有好几次我图快机械限位还没校准就直接联动结果车板横移到一半就被卡住还好有急停才没弄坏东西。6.2 那些年调试中踩过的坑现场调试问题千奇百怪说几个有代表性的。限位开关压不到位最隐蔽。车板机械上明明到位了但限位挡块和开关感应面差了几毫米导致PLC死活收不到到位信号。后来我用激光水平仪重新画了安装线调整了挡块位置才解决。所有限位开关装完后必须逐个用手动触发的方式验证不能只看机械对齐。光电传感器被干扰也遇到过。底层出入口的光电开关装在室外午后阳光斜射进来造成误触发系统频繁报警停车。加装遮阳罩后问题消失。如果红外对射型光电在室外用还要定期清洁镜片不然灰尘积累会导致灵敏度下降。横移超时经常发生在冬天。润滑脂在低温下变稠横移速度变慢明明机械没问题但PLC判定超时停机。解决方案是换低温润滑脂同时把超时时间从固定值改成现场可调整留出一点余量。组态王画面刷新慢的问题通常不是画面问题而是通信问询周期太长。把组态王设备的通信周期从默认值调到100毫秒左右数据刷新就流畅了。调得太短也没必要反而会增大PLC通信负担。6.3 出车安全是底线最后说安全这部分永远是底线。我在这套系统里做了五层保护第一层是PLC程序互锁正反转互锁、升降横移互锁。第二层是接触器硬件互锁防止程序跑飞。第三层是限位硬保护升降上限位、下限位、横移左右限位全部接入。第四层是急停回路急停按下后PLC输出和主回路全部切断。第五层是防坠装置载车板到位后防坠钩先扣合人员再进入取车时防坠钩必须确认打开后才能执行升降动作。防坠这个环节我要多说一句。升降横移式车库最大的危险就是车板意外坠落。除了机械防坠钩PLC程序里在升降动作执行前必须检查防坠信号升降到位后也要先确认防坠钩扣合才允许打开车门提示车主。很多初学者只关注电机动没动忽略了防坠逻辑这是绝对不行的。维护这块也别偷懒。我建议每个月做一次限位开关和光电头的检查每个季度测一次电机运行电流并做好记录电流异常往往是轴承、链条或者制动器有问题的最早信号。真要说这套系统给我最大的教训就是把安全回路放在首位这句话不是口号而是用一次差点出事的调试换来的。当时在测试升降动作时因为防坠信号接线松动车板刚到地面就开始上升幸好急停就在旁边不然后果不堪设想。后来我把防坠信号改成了常闭接入线断即报警再没出过同类问题。如果让我重新选一次硬件我可能会直接用S7-200 SMART加组态王走Modbus TCP省去串口线的种种麻烦。但就存量设备改造和课程设计而言S7-200加组态王这套组合依然是一个成本低、资料多、逻辑清晰的好选择。3x3这个规模刚刚好能把调度、互锁、通信、安全全部走一遍做透了再上更大的库心里就有底了。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →