上周老张在车间折腾S7-200 PLC控制的六层电梯,几个通宵下来总算摸清了门道。今天咱们就掰开揉碎了说说这套电梯控制系统的门道,先从最实在的IO分配聊起,然后顺着程序逻辑、调试踩坑一路讲到底。
这篇内容不是什么教科书式讲解,就是车间里真刀真枪干出来的经验。六层电梯看着只是个小型控制系统,可它的逻辑复杂程度比红绿灯、恒压供水这类入门项目高出两个量级:要处理随机呼梯、方向调度、平层停车、开关门联动、门锁保护,还有一堆安全回路。正在做相关项目、准备毕业设计,或者从电工转PLC想找个进阶项目的朋友,这篇应该能给你省下不少弯路。
1. 开工前先想明白:六层电梯控制到底要解决什么问题
1.1 这项目看着不大,门道不少
先说结论:六层电梯最核心的不是编程技巧,而是需求分解和IO规划。很多人一上来就打开编程软件开始写梯形图,写了一半发现输入点不够用、某个信号地址跟接线图对不上、程序里方向互锁漏了,然后整个推倒重来。老张第一版就是这么废掉的。
电梯控制跟顺序控制完全不一样。举例说,包装线、机床那种是"动作A完成接着动作B",时间轴是固定的;电梯呢?外呼按钮是谁先按的、轿厢在几层、当前是上行还是下行、中间楼层有没有同向呼叫——全部是随机事件,控制器必须实时判断和响应。所以项目第一步不是写程序,而是把控制需求一条条列出来,再去映射IO点。
六层电梯的控制需求,列下来至少有这些:
- 轿厢内选层:1到6楼选层按钮,共6个
- 厅外召唤:1到5楼上行召唤5个,2到6楼下行召唤5个,共10个
- 楼层位置检测:每层需要装感应开关,共6个
- 开关门控制:开门继电器、关门继电器,再加门到位检测
- 门锁保护:所有层门门锁和轿门门锁信号
- 上下极限保护:井道顶部和底部各一个限位
- 运行方向控制:上行接触器、下行接触器,必须双重互锁
- 楼层显示与方向指示:轿厢内外都要看到
- 检修模式、急停、超载保护、到站提示音
数一数就知道,单单输入点就直奔30个以上去了,加上输出点,整套系统四五十个点位很正常。这不是一个"单片机加几个继电器"就能轻轻松松转起来的东西。
1.2 功能需求先列清单,再谈选PLC
把需求转化成IO点,是选PLC型号的前提。我当时给老张的建议是:先别管具体用哪个型号,先把每一个功能落实到"需要几个输入、几个输出",列一张草表。
举个例子,"顺向截梯"这个功能——电梯上行时只响应上方向呼梯,下行呼梯只登记不响应——它决定了每层楼必须把上行呼梯和下行呼梯分开接,不能共用一个按钮一个输入点。如果你当初没想清楚,把上呼下呼并到一个IO里,后面程序里方向调度就没法做。这就是IO分配和功能设计强绑定的典型场景。
按常规做法,输入点可以分成三大类:
- 呼梯类:轿内选层6点、厅外上行5点、厅外下行5点,共16点
- 位置类:每层感应开关6点,加上开门到位、关门到位各1点,共8点
- 安全类:上下极限各1点、门锁回路1点、急停1点、检修1点、超载1点、光幕或安全触板1点,共7点上下
这三类加起来大概31个输入。输出侧则是上行接触器、下行接触器、开门继电器、关门继电器、抱闸释放、楼层指示灯、方向灯、到站钟、运行指示,总共16个点左右。所以一套六层电梯的基本IO规模就是约30入16出。
为什么要把安全类信号单独分一组?因为它们在程序里的处理优先级最高:急停、极限、门锁一断,不管什么运行状态都要立即停车或者禁止起动。这个分组习惯后面编程序时很有用,地址连续,逻辑写起来也顺。
1.3 选S7-200的型号和扩展模块,怎么估算点数
IO数量摸清了,选型就简单了。S7-200这个平台虽然现在算老一代,但存量设备多、资料全、指令简洁,拿来学习或者改造旧设备依然很合适。
S7-200常见的CPU型号有221、222、224、224XP、226几个档次。点数差异是选型第一指标:
- CPU221:6入4出,规模太小,电梯想都别想
- CPU222:8入6出,做红绿灯、小设备可以,电梯不够
- CPU224:14入10出,勉强能覆盖核心信号,但要扩一堆模块
- CPU224XP:14入10出,多了两个模拟量输入和一个模拟量输出,电梯用不上模拟量的话优势不大
- CPU226:24入16出,这是六层电梯的最小舒适区
按前面估算的31入16出,CPU226板载就有24入16出,再加一块扩展模块补输入缺口就够了。老张这次用的是CPU226配一块EM223数字量混合模块(16入16出),点数冗余比较多,后面临时加信号也不慌。
提示:选型时一定留余量,至少多留10%~20%的IO点。项目调试过程中几乎一定会冒出新需求:光幕要加一路、检修急停要分开、甲方说楼层显示改数码管……没有备用点,就得换PLC或加模块,非常被动。
顺便提一句S7-200 SMART。它是S7-200的升级替代品,编程软件用STEP 7-MicroWIN SMART,梯形图指令大体兼容但不完全一样,SMART的点数更灵活、以太网口标配。如果你手头是SMART,这篇文章的思路流程照样可以参考,只是具体的地址分配和部分指令书写要对号入座。
2. IO分配:先把控制系统的"神经地图"画出来
2.1 输入信号:三类各司其职
IO分配是整套系统的地基,地基建歪了,后面程序、接线、调试全跟着歪。我把输入信号按照功能重新梳理一遍,顺便说说每一路信号背后要注意的事情。
呼梯按钮类是整个系统里数量最多的输入。轿内选层1到6楼接I0.0到I0.5,厅外上呼按楼层接I0.6之后,厅外下呼接I1.3之后。这里有个关键逻辑:呼梯按钮不是按一下就完事的,程序里必须做自保持(或者说"登记"),让PLC记住"有人呼过梯",后面才能真正实现顺向截梯。所以按钮只负责给PLC一个脉冲,登记状态要用程序里的置位指令来保持。
楼层感应类是电梯"眼睛"。六层电梯最稳妥的定位方式,是在井道每层安装接近开关或隔磁感应器,轿厢上装感应挡板,电梯经过哪一层就触发哪一层的感应点。这种方式比编码器测距简单可靠得多,成本也低,车间货梯足够用。对应的就是I2.0到I2.5共6个点位。
这里有个容易忽略的细节:楼层感应触发后,程序要判断电梯是上行经过还是下行经过,分别更新当前楼层数据。如果这个判断写反了,电梯明明是往上走,楼层显示却往下跳,那就是真要通宵查逻辑了。
安全类输入是整套系统里优先级最高的。急停按钮、上下极限开关、门锁回路、检修开关、超载信号,这些信号的处理逻辑和普通按钮完全不同——它们不是"触发一个动作",而是"随时切断一切动作"。很多初学者把它们当普通输入处理,程序里写成一排常开触点,出了问题才发现优先级完全不对。
2.2 输出信号:动作、显示一个不少
输出侧的分配相比输入要直观一些,但也有自己的讲究。
运行输出核心就是上行接触器和下行接触器。这两个输出在程序里必须互锁:任何时候只能有一个得电。光有程序互锁还不够,接触器本身还得有机械互锁,否则万一接触器触点粘连或者PLC输出点故障,两个接触器同时吸合,轻则烧保险,重则出安全事故。这是电梯控制里"双保险"的典型场景,任何时候都不能省。
门控输出是开门继电器和关门继电器。开门要等电梯完全停稳、平层到位;关门要考虑光幕、安全触板是否被挡住;门没关到位时程序绝对不能允许行车。这个逻辑看起来简单,实际调试时最容易出问题的地方就在门和运行的联动上。
显示类输出也是IO分配的大头:每层一个楼层指示灯占了6个点,上行指示和下行指示各1个点,到站钟1个点。如果想用两位数码管显示楼层,可以用7个Q点驱动段码,也可以选带译码的显示模块来省点位。老张这个项目图省事,直接每层装了一个LED灯排,轿厢内外看楼层一目了然。
2.3 一张实用的IO分配表
下面是老张这套系统最终定下来的IO分配方案,照着接线、写程序都可以。地址的编排原则是:同类信号放一起,备用点留在每组末尾。
| 地址 | 信号名称 | 说明 |
|---|---|---|
| I0.0 | 一层内选按钮 | 轿厢内选层 |
| I0.1 | 二层内选按钮 | 同上 |
| I0.2 | 三层内选按钮 | 同上 |
| I0.3 | 四层内选按钮 | 同上 |
| I0.4 | 五层内选按钮 | 同上 |
| I0.5 | 六层内选按钮 | 同上 |
| I0.6 | 一层上呼按钮 | 厅外召唤 |
| I0.7 | 二层上呼按钮 | 厅外召唤 |
| I1.0 | 三层上呼按钮 | 厅外召唤 |
| I1.1 | 四层上呼按钮 | 厅外召唤 |
| I1.2 | 五层上呼按钮 | 厅外召唤 |
| I1.3 | 二层下呼按钮 | 厅外召唤 |
| I1.4 | 三层下呼按钮 | 厅外召唤 |
| I1.5 | 四层下呼按钮 | 厅外召唤 |
| I1.6 | 五层下呼按钮 | 厅外召唤 |
| I1.7 | 六层下呼按钮 | 厅外召唤 |
| I2.0 | 一层位置感应 | 井道接近开关 |
| I2.1 | 二层位置感应 | 同上 |
| I2.2 | 三层位置感应 | 同上 |
| I2.3 | 四层位置感应 | 同上 |
| I2.4 | 五层位置感应 | 同上 |
| I2.5 | 六层位置感应 | 同上 |
| I2.6 | 开门到位 | 门控反馈 |
| I2.7 | 关门到位 | 门控反馈 |
| I3.0 | 上极限开关 | 井道顶部限位 |
| I3.1 | 下极限开关 | 井道底部限位 |
| I3.2 | 门锁回路 | 各层门锁+轿门锁串联 |
| I3.3 | 急停按钮 | 机房+轿厢急停 |
| I3.4 | 检修开关 | 检修/自动切换 |
| I3.5 | 超载开关 | 超载保护 |
| I3.6 | 光幕/安全触板 | 防夹人 |
| I3.7 | 备用 | 预留 |
| 地址 | 信号名称 | 说明 |
|---|---|---|
| Q0.0 | 上行接触器 | 必须硬件互锁 |
| Q0.1 | 下行接触器 | 必须硬件互锁 |
| Q0.2 | 开门继电器 | 平层停稳后动作 |
| Q0.3 | 关门继电器 | 延时关闭 |
| Q0.4 | 抱闸释放 | 与运行输出联动 |
| Q0.5 | 一层楼层指示 | 楼层LED |
| Q0.6 | 二层楼层指示 | 楼层LED |
| Q0.7 | 三层楼层指示 | 楼层LED |
| Q1.0 | 四层楼层指示 | 楼层LED |
| Q1.1 | 五层楼层指示 | 楼层LED |
| Q1.2 | 六层楼层指示 | 楼层LED |
| Q1.3 | 上行方向指示 | 箭头灯 |
| Q1.4 | 下行方向指示 | 箭头灯 |
| Q1.5 | 到站钟/运行指示 | 蜂鸣器和灯 |
| Q1.6 | 备用 | 预留 |
| Q1.7 | 备用 | 预留 |
输入一共用到了I0.0到I3.7这32个点,实际使用了31个,带1个备用;CPU226板载是I0.0到I2.7共24点,I3.0到I3.7来自扩展模块。输出用到Q0.0到Q1.7共16个点,刚好CPU226的板载输出数量覆盖,用了14个,留了2个备用。
2.4 IO分配的五个讲究
把地址填进表格谁都会,但分配得好不好,直接关系到后面调试顺不顺。我总结五个实操讲究,都是踩过坑换来的。
第一,地址分组要连续。输入里的呼梯按钮、位置感应、安全信号各自占一段,输出里的接触器、显示、门控也各自集中。这样写程序的时候,一眼扫过去就知道哪些一段是干什么的,查线查逻辑都方便。最忌讳的就是东一个西一个乱塞。
第二,备用点要"分布"不要"扎堆"。最好每组信号末尾都留几个备用点。调试中如果发现需要临时加一个信号,比如光幕要改两路、超载要加第二路,就能就近找一个空地址,不用重新改一大片地址。我这边在I3.7留了一个,Q1.6和Q1.7留了两个,事实证明都派上了用场。
第三,急停、极限这类安全信号,接线和程序逻辑要想清楚。最常见的设计是安全回路里用常闭触点串联:一路正常,PLC输入点收到的是高电平;一旦急停或越界,回路断开,输入变低电平,程序立即停车。这种"失电停车"设计的好处是断线、断电、按钮故障都会被识别成停止信号,不会带病运行。但要注意,程序里这些点必须按常闭逻辑来写,很多人接线用常闭、程序却按常开写,结果一上电就保护,查半天。
第四,输入公共端和传感器类型必须匹配。S7-200的数字量输入分漏型和源型两种接法,取决于公共端1M、2M怎么接。如果你在井道里装的是NPN型接近开关,公共端接法跟PNP型的完全相反,接错了最典型的现象是输入指示灯死活不亮。装之前一定翻一下PLC手册,确认传感器类型和公共端极性,这一步能省一整天的排查时间。
第五,继电器输出点不要直连大功率负载。S7-200继电器输出触点容量不大,驱动接触器线圈这种感性负载时,最好还是通过中间继电器过渡一下。不是说PLC输出直接接接触器一定不行,但感性负载通断时会有反电动势和电弧,触点寿命掉得飞快。正规做法是PLC输出点先接中间继电器,再由中间继电器触点去驱动接触器线圈,同时在感性负载两端并联阻容吸收,这套组合拳打下来,输出点几乎不会坏。
3. 程序逻辑:从楼层定位到顺向截梯
3.1 楼层位置是怎么算出来的
IO分配做完,程序就可以开始搭了。第一步是让PLC知道电梯现在在哪一层,所有后续的判断都要基于这个"当前楼层"。
我的做法是用一个数据寄存器保存当前楼层号。比如用VB10,1到6的数值对应一到六层。电梯上行过程中,碰到几层的感应开关,就把VB10赋成几;下行同理去刷新。
这里有一个关键细节:刷新楼层数据的条件必须包含运行方向判断。电梯上行时经过三层,感应开关触发,VB10赋值3;如果电梯下行经过三层,同样触发感应开关,同样赋值3。看起来结果一样,为什么还要区分方向?因为感应开关是一个物理点,它有触发宽度,电梯慢速通过时可能会反复触发几次。如果方向判断和滤波处理没做好,刷新逻辑就会乱跳,楼层显示可能从三层直接跳到五层再跳回四层,平层停车的位置跟着全错。
楼层显示在程序里就是一组比较传送指令:VB10等于1,点亮Q0.5;等于2,点亮Q0.6;依次类推。哪层亮哪层,就是个真值表,没有什么技术含量,但调试时最容易发现"楼层显示跟实际楼层对不上"的问题,根源往往就是VB10被错误刷新了。
3.2 呼梯登记与消号,看似简单实则坑多
呼梯信号处理的核心是"登记"和"消号"。
登记用置位指令做。比如轿厢里有人按了3层按钮,输入I0.2给一个脉冲,程序里用S置位指令把M0.2置成1。为什么用置位而不用普通输出线圈?因为普通线圈的输出状态每扫描周期都要靠前面的条件重新刷新一次,按钮按完松手,输入条件没了,线圈就复位了,呼叫也就丢了。置位指令相当于一个"记忆开关",你按一下它就一直保持,直到程序里用复位指令把它清掉。
消号的条件要非常小心。电梯到达三层并开门到位,这时候才能清除三层的呼叫登记。但注意:如果电梯是上行方向到达三层的,只能消除三层的内选登记和三层上行呼梯登记;三层如果同时有下行呼梯,这个信号不能消,因为它不是本方向服务的目标,电梯换向后下行经过三层时才会消掉。
我把每个呼梯信号都安排了一个独立的M区地址,比如M0.0对应一层内选,M1.0对应一层上呼,M2.0对应二层下呼。这样程序里每个消号条件都是独立的,不会互相干扰。如果你用一个V字节的低4位存多个呼叫信号,节省了存储空间但是逻辑复杂,真没必要省这点。
按钮去抖也是不能省的一步。机械按钮按下瞬间会有抖动,PLC扫描很快,一个按钮按下去可能会被识别成"多次按下"。好在登记用的是置位指令,多次按也就置位一次,问题不大。但如果你的程序用了普通线圈,就必须加个几十到几百毫秒的延时或滤波,否则呼叫信号会忽有忽无。
3.3 顺向截梯与方向切换,电梯调度核心
电梯最核心的调度原则是:只响应顺向呼梯,反向呼梯只登记不响应。
举个例子,电梯当前在三层,正在上行。四层有人按了上呼,六层轿厢内有人选了六层,这时候电梯运行到四层应该停,接上四层的人,然后继续上行去六层。但假设四层有人按下呼,电梯是不会在四层停的,因为四层的下行呼梯和自己当前的上行方向相反,这叫反向呼梯。正确的动作是:电梯继续上行,把轿厢内六层等上行的需求处理完,然后换向下行,再回到四层响应下呼。
这个逻辑在程序里怎么落地?最直观的是逐层扫描判断:
- 电梯上行时,每一层感应开关触发后,检查该层是否有上行呼梯登记或内选登记
- 有,就停车、开门、消号
- 没有,继续上行
- 上行过程经过某层时,只检查"该层是否有本向上行呼梯",不检查下行呼梯
当上行方向没有任务了,程序要判断是否需要换向:检查所有下行呼梯和轿厢内选信号,如果存在低于当前层或者剩余的下行方向的呼叫,就进入下行状态。
这里还有一个运行效率的小问题:是每一层都停(逐层应答),还是只停有信号的层?车间六层货梯,楼层不多,用逐层应答最简单可靠,最多六层嘛,迟不了几秒。高层建筑电梯会用到"最远反向折返"这类优化策略,但在S7-200六层项目里完全没必要,把程序复杂度做高了,调试反而容易出问题。
方向切换的另一条铁律是互锁。上行状态和下行状态在任何时刻都不能同时成立,程序里除了接触器互锁之外,内部状态位也要互锁。老张第一次调试踩过这个坑:下行过程中有一个反向呼梯触发条件没屏蔽,导致上行状态同时被置位,两个接触器全吸合了,还好输入端有热继电器和快速熔断器,不然主回路就危险了。
3.4 开关门、门锁和安全回路,一个都不能省
电梯运行安全,一半在方向互锁,另一半在门系统。
开门条件必须同时满足三个:电梯停稳(方向状态清空)、已经平层(当前楼层感应触发)、没有关门继电器保持。门开到位后,程序要等待乘客进出,关门动作不能立刻执行。老张的方案是开门到位后启动一个定时器,延时8秒钟自动关门。这个延时长短可以调,车间货梯人多,调长一点;人少,6秒都够。
关门过程中,光幕或安全触板信号一触发,必须马上停止关门并重新开门,防止夹人。有的系统还会加"关门超时报警"——连续三次关门被挡住,就停在那等人工干预,不再反复关门夹人。六层货梯没有这个也运转得起来,但加了之后更稳。
门锁回路是电梯能不能运行的先决条件。IO分配里我们看到I3.2是门锁回路,它的接线方式是:每一层层门门锁、轿门门锁,全部串联起来,所有门都关好的时候,整个回路才接通。所以我给PLC的输入信号叫"门锁正常",门全关好为1,任何一道门没关好为0。
程序逻辑上,这个条件最狠的地方在于:电梯起动前要检查门锁,运行中门锁一旦断开,必须立即停车。有的初学者只在起动条件里加门锁,忘了在运行保持条件里也加上,结果电梯一走起来,门锁断开也不管,还继续跑,这是非常危险的事故隐患。
检修模式的处理也值得一提。检修开关拨到检修挡后,程序要封锁所有呼梯登记和自动运行功能,只能通过检修按钮点动上行或点动下行。关门、开门也必须由检修工手动控制。这个模式不是为了方便,是为了让维修人员能安全地进入井道和轿顶作业,优先级应该高于一切自动逻辑。
4. 调试实录:从模拟到上电,几次通宵踩出的经验
4.1 没井道的时候,先在桌面上把逻辑跑通
六层电梯的程序调试不能等到现场井道装好了再做。现场装好再调,一是不安全,二是电梯在轨道上反复来回跑,对设备本身就是损耗。老张的做法是先在车间办公桌上搭了一个"模拟操作台"。
模拟台做法很简单:找一块木板,把IO分配表里的所有输入点都接上开关或按钮,所有输出点接上指示灯。一层内选、二层内选、上呼、下呼、位置感应、门锁、急停、检修,每个输入都单独对应一个开关;上行接触器、下行接触器、开门、关门、楼层指示灯,每个输出对应一个灯泡或LED。这样PLC的所有程序逻辑,都可以在桌面上完整跑一遍。
模拟调试的核心是"按真实电梯的流程走一遍剧本"。比如:把电梯当前楼层设成1层,模拟有人按了4层内选,程序应该让上行接触器有输出,这时候手动把2层、3层、4层的位置感应依次接通,观察电梯是不是只停4层;再比如模拟到5层有个上呼,三层有个下呼,电梯上行时应该跳过三层不停,到顶层后换向下行再停三层。
这种桌面模拟虽然不能替代真实的井道联调,但它能把调度逻辑的错误提前消灭掉。我见过太多项目直接上井道调试,程序里方向切换逻辑错了,电梯在上行过程中突然换向,折腾一整天找不出原因,最后还是回到模拟台上几分钟就复现了。逻辑层面的问题,永远先在台面上解决。
4.2 通电调试:电气互锁、信号抖动这些坑
桌面模拟通过后,就进入现场接线和通电调试。这一步才是真正考验人的地方,老张几个通宵基本都耗在这里。
第一个让我印象深刻的坑是输入指示灯不亮。现场接线全部完成后,把急停、检修、门锁这些信号逐一短接确认,结果发现I3.2门锁回路信号死活没有。量了24V电源、查了公共端、量了触点,都没问题,最后发现是扩展模块的地址理解错了——CPU226本体的输入地址到I2.7结束,I3.0之后是扩展模块的地址,接线的人把门锁线接到了扩展模块的某一个端子,但PLC上看到的却是另一个地址。这种"地址错位"的问题在扩展模块上是重灾区,接完线一定要对着IO分配表逐点核对,别信眼睛,要信万用表。
第二个坑是位置感应信号抖动。电梯在低速运行的时候,感应开关在接近感应挡板的过程会有一段临界区,信号可能快速通断几次。如果不处理,楼层数据会被错误刷新成相邻楼层,然后电梯在错误的楼层停车开门。这个问题的解决办法有两层:硬件上,感应开关要选带延时输出的型号,或者感应挡板装得宽一点;程序上,对位置信号做滤波处理,比如确认信号持续了50毫秒才认为是有效触发。两层都上了,问题才彻底消失。
第三个坑是方向接触器同时吸合。程序已经写了互锁逻辑,硬件也装了机械互锁,怎么还会同时吸合?后来检查发现,是程序里"上行状态"和"下行状态"两个内部继电器在特定条件下同时置位了,虽然输出互锁逻辑挡住了一个,但程序逻辑本身已经错了。这提醒我:互锁不能只做在输出端,内部状态位从一开始就要保证互斥。相当于程序内部要设一道逻辑防火墙,输出端再设一道硬件防火墙,出了问题才能快速定位。
4.3 常用故障速查表
把调试期间遇到的典型问题整理成一张表,以后无论是自己再调项目还是帮别人查故障,都很有参考价值。
| 故障现象 | 可能原因 | 排查方向 |
|---|---|---|
| 输入指示灯不亮 | 公共端接错、传感器类型不匹配、扩展模块地址错位 | 先量24V电压,再查公共端极性,最后用万用表直逼传感器输出 |
| 楼层显示乱跳 | 位置感应信号抖动、刷新逻辑方向判断错误 | 加滤波、检查上行/下行刷新条件 |
| 电梯到站不停 | 平层感应没有到位、停车条件缺门锁或方向状态 | 查感应安装位置,查程序停车条件组合 |
| 呼梯登记后消不掉 | 消号条件和开门信号配合错误 | 检查开门到位I2.6是否确实触发,检查消号程序中楼层比较值 |
| 上下行同时吸合 | 程序内部状态互锁缺失、接触器机械互锁损坏 | CPU强制单步检查内部继电器状态,检查硬件联锁 |
| 按了呼梯按钮没反应 | 按钮去抖时间过长、输入地址分配错误 | 量输入点动作状态,核对IO分配表 |
| 关门后无法起动 | 门锁回路未接通、关门到位信号没到 | 逐层检查门锁串联开关,检查关门到位I2.7 |
| PLC能下载但运行后不动作 | 模式开关在STOP、程序逻辑条件缺首轮上电标志 | 查RUN/STOP拨杆,查首扫描周期初始化逻辑 |
| 到站后不开门 | 平层信号有问题、开门条件没满足 | 查当前楼层VB10值,查运行状态复位是否完成 |
| 自动运行一切正常但检修模式动不了 | 检修开关信号常闭常开接反、检修优先级逻辑没生效 | 查I3.4输入状态,检查检修切换内部继电器 |
还有个小经验:现场调不到的故障,很多时候能在"断电重启"后复现才算真复现。电梯控制系统里,有些问题只在特定的运行路径和时序组合下才会冒出来,不是每次都能触发。调的时候一定记录当时的运行状态:电梯在几层、什么方向、哪些呼梯登记了,这些信息是排查逻辑Bug的第一手线索。
5. 这套电梯系统的后续空间
5.1 要不要上SCADA或者数字孪生
项目快收尾的时候,有人问老张要不要给这套电梯配个SCADA,搞个数字孪生大屏,显得高大上。我的看法是:先分清需求再花钱。
SCADA的价值在于远程监控、历史数据、趋势分析和集中管理。如果这个电梯只是车间里运货用,旁边一个小触摸屏显示楼层和运行状态就够了,真没必要上一套SCADA。如果想做教学演示或者给参观的人看,那另说。
S7-200和上位机通信,常用的路子就是用Modbus RTU协议,S7-200有现成的Modbus从站库可以调用,通过编程口接一个RS485转USB或者直接接触摸屏就能把数据读出来。真要接SCADA,数据点无非是当前楼层、运行方向、呼梯登记状态、门锁状态、故障标志这些,用Modbus地址映射出来,上位机组态软件直接采集就行。
数字孪生看着炫,本质就是把现场PLC的状态实时映射到一个3D模型上。对六层电梯这种逻辑型设备,真没什么必要,调试阶段用我之前说的桌面模拟台,效果一模一样,还不用建模。数字孪生适合复杂产线、需要预演和优化的场合,别拿它给简单项目加戏。
5.2 AI能不能帮着写PLC程序
这个还真试过。老张拿一段"楼层位置刷新"的逻辑去问AI能生成什么代码,生成的梯形图结构大体对,甚至主动提出了方向判断和防抖处理,作为参考没问题。但你让它直接从零写一套带安全联锁的电梯程序,它给的版本普遍缺少安全优先级概念,门锁、急停、极限的优先级处理逻辑往往不完善。
我的态度是:AI可以当助手,不能当设计者。IO分配表这种东西最好还是人肉排,因为里面都是现场经验——哪一类信号放哪段、备用点留几个、极性怎么处理,AI看不到实际工况。程序的大框架、安全联锁设计、调度逻辑,这些也必须是工程师自己的判断。AI生成的小模块可以让懂的人审查后使用,省一点敲键盘的时间,但签字负责的人还是你。
5.3 如果改用S7-200 SMART、变频器或步进电机,改动大不大
很多朋友问过换成S7-200 SMART行不行。答案是可以,但别想着无脑迁移。
S7-200和S7-200 SMART在梯形图指令上大部分兼容,但有差异:SMART的地址编址方式、通信指令、程序块结构都有自己的一套,尤其是以太网口是标配,编程下载方便很多。如果你原来的程序是用Micro/WIN写的,转成STEP 7-MicroWIN SMART之后,地址I/Q/M/V基本能对应,但指令不兼容的地方要一个个检查。IO分配表是通用的,换平台时可以直接拿过来用,这也再次说明IO分配这个基础工作做扎实了,后面换什么平台都省心。
驱动方案上,老张这次用的是接触器控制曳引电机的起停,电梯运行速度靠机械减速和接触器通断来凑合。如果想要更平滑的速度曲线,把接触器方案换成变频器驱动,PLC输出点控制变频器的启动/停止,再接一路模拟量或者多段速信号来控制频率,程序里加"减速点、平层点"的逻辑,舒适度会明显提升。至于步进电机,它适合精准定位的小型设备,用在电梯这种大负载、长行程场合并不合适——不过利用S7-200的高速脉冲输出做步进控制,本身是一个很经典的PLC进阶技能储备。
陪老张熬了这几个通宵,我最大的体会是:搞PLC项目,程序是表象,IO分配和安全逻辑才是骨架。花一个晚上把IO分配表打磨好,现场调试能省三天;把安全联锁当成最高优先级的"铁律"来写程序,后面就不会在事故边缘疯狂试探。老张事后说了一句很到位的话:一个项目收尾时,你最先翻出来看的图纸一定是IO分配表,它上面每一个地址背后都是一根实实在在的线,那才是整个系统的命脉。