西门子S7-1200六层电梯PLC控制系统设计与调试全解析
六层电梯这个项目我做过不止一次。第一次是在学校的实训台把仿真程序调通了就觉得“我行了”后来到现场接真机才发现自己写的程序连单层直驶都没法稳定跑完。回头反思问题不出在梯形图语法而出在我压根没把电梯当成一台“有状态、有安全级别、有实时约束”的设备来设计。这篇就把用西门子S7-1200搭六层电梯控制系统的完整思路拆开讲——硬件I/O怎么数、调度算法怎么写、TIA Portal里程序怎么组织、安全回路的底线放在哪以及从仿真到实机的那些坑。适合正在做课设、毕设的电气自动化学生也适合刚接手小型电梯项目、想把这套控制逻辑彻底理清的一线工程师。1. 电梯不是“按几楼停几楼”那么简单——先拆解系统的本质1.1 从一次完整运行看电梯到底要处理多少信息很多人第一次接触电梯控制第一反应是“有按钮就响应到了就开门”真上手写程序才发现根本不是这么回事。一台六层电梯每次正常运行至少要经历轿厢内选层登记、厅外呼梯登记、运行方向判定、启动加速、高速运行、减速爬行、平层停车、开门、关门、再次判定方向这是一整个闭环状态流不是一个“IF楼层目标 THEN停”的简单逻辑。把状态流拆开看系统需要同时处理三类数据。第一类是输入信号。轿厢内的6个选层按钮、每层厅外的上/下呼梯按钮首层只有上呼、顶层只有下呼中间层上下各一个、每层的平层感应开关、门锁闭合信号、上下极限开关、安全回路信号、变频器故障与运行反馈。这些是PLC判断“电梯现在在哪里、乘客想去哪里、系统是否允许运行”的依据。第二类是输出控制。方向接触器控制电机正反转、变频器多段速选择控制加减速、开门关门继电器控制门机系统、楼层指示灯和方向指示灯反馈给乘客。第三类是内部状态。当前楼层位置、当前运行方向、内呼登记表、外呼登记表、开门保持计时、故障保持标志。这些不占物理I/O但它们是整个调度逻辑的核心也是最容易写乱的地方。电梯控制的难点从来不在“点动一个电机”而在“多个请求同时到达时按什么规则响应怎么不丢信号、不冲突、不反复启停”。这就是调度算法要解决的事。1.2 S7-1200在六层电梯项目里到底值在哪选S7-1200很多人第一反应是“它比S7-200 SMART贵比S7-300便宜”但这只是表面。真正使用起来S7-1200在这个项目里有几个不可替代的优势。一是I/O扩展灵活。六层电梯的I/O点大概在三四十点左右用CPU 1214C自带14DI/10DO再加一两个信号板或SM系列扩展模块就够了导轨占用小、接线集中不需要上S7-300那种机架结构。二是和博途TIA深度集成。电梯控制必然要配HMI做监控和调试S7-1200和HMI在同一个博途工程里组态变量共享、画面绑定非常顺手不用像老平台那样两边来回导变量表。三是本体集成以太网口。无论是做仿真联调、HMI通讯还是后面扩展上位机数据采集一个网口全搞定了。这点在实际项目里非常省事不需要额外买通讯模块。四是高速计数器支持。如果后续想加编码器做精确平层和楼层位置测量S7-1200本体支持高速计数不需要另外配计数模块。当然如果现场预算非常紧张、I/O点又少S7-200 SMART也能做。但考虑到程序的扩展性、调试便利性和后面讲到的群控、上位机通讯扩展S7-1200的综合成本其实更低。2. 数清楚每一个I/O点别在画图阶段就埋雷2.1 输入侧清单按钮、限位、平层、门锁一个都不能少我把一个真实六层电梯项目用到的输入点整理成了清单硬件配置就以CPU 1214C DC/DC/DC为例DI总需求在28到30左右。规划I/O时宁可多留备用点也不要抠到刚好够否则现场稍微加一个信号就得动接线和硬件配置表。输入信号明细信号名称数量说明轿厢内选层按钮61F-6F每个按钮登记对应的内呼厅外上呼按钮51F-5F首层无上呼顶层无上呼厅外下呼按钮52F-6F首层无下呼顶层无下呼平层感应/楼层位置信号6每层一个门区感应开关轿厢门闭合反馈1轿门电气联锁触点厅门闭合反馈1所有厅门串联后的门锁信号开门按钮1轿厢操作盘关门按钮1轿厢操作盘安全回路信号1急停、超速、断绳保护等串联后输入上极限/下极限开关2井道顶底极限位变频器故障输出1变频器报警常闭/常开触点变频器运行反馈1可选用于确认接触器吸合后变频器确实输出合计约30个DI点。需要注意的是平层感应开关如果采用永磁感应器每个楼层装一个只能指示“轿厢是否在本楼层门区”不能反映轿厢在两个楼层之间的位置。如果后续要求更平滑的减速曲线和精确平层需要升级为旋转编码器高速计数器的方式那I/O点可以省掉一部分但程序复杂度会上升。2.2 输出侧分配方向、门机、指示都在抢DO点输出信号明细信号名称数量说明上行接触器1电机正转/电梯上行下行接触器1电机反转/电梯下行变频器高速/低速信号2多段速选择例如高速48Hz/爬行15Hz开门继电器1门机开门动作关门继电器1门机关门动作层楼指示灯6轿厢内/厅外楼层显示简化用每层一个灯上行/下行方向指示灯2可选蜂鸣器/到站钟1可选轿厢到站提醒DO需求在12到14个左右。CPU 1214C本体自带10个DO刚好略紧建议加一个SM 1223 8DI/8DO的混合扩展模块输入输出同时补足。如果现场指示系统用的是数字显示板楼层指示直接用数字量BCD码或者通讯输出还能再省6个DO。2.3 硬件配置选型和接线时容易被忽略的细节我建议的硬件组合CPU 1214C DC/DC/DC SM 1223 DI8/DO8 一台0.75~2.2kW的矢量变频器电机根据实际载重选择。这个组合在成本、安装空间和扩展性上比较均衡。接线时有三个细节要特别注意。第一门锁回路必须串联。所有厅门门锁触点串联起来形成一条完整的厅门闭合信号任何一个厅门没关好整个信号就断开。这是电梯行业的硬规定也是安全底线不能图省事并联。第二安全回路单独进PLC不跟普通的限位信号混在一起。急停、安全钳、限速器这些串联成一个独立的安全输入点。PLC收到安全回路断开信号后必须立即封锁所有方向输出而不是只报个警。第三变压器的隔离和接地。输入电源建议用隔离变压器PLC工作地和动力设备的接地要分开布置否则变频器一启动PLC输入信号容易被干扰出假信号后面调试会非常痛苦。3. 调度算法六层电梯的“大脑”是怎么运转的3.1 三个核心数据区位置、方向、呼梯登记表调度算法在PLC里的落地本质是维护三块数据。当前楼层变量用一个整数变量CurrentFloor表示电梯当前位于哪一层平层感应开关触发时刷新这个值。电梯在运行过程中这个值保持为“最后经过的平层楼层”可以用于方向判断。呼梯登记表一组布尔变量例如L1Call、L2Call……L6Call以及UpCall_1、UpCall_2、DownCall_2……DownCall_6。按钮按下时置位对应保持位电梯满足消号条件时复位。用保持位而不是直接用按钮输入点的原因是按钮按下的时间很短如果不保持等电梯到了那层信号早没了。运行方向变量用一个枚举或整数变量Direction表示当前状态上行、下行、停止。这个变量是程序的“主轴”所有调度判断都围绕它展开。3.2 顺向截梯规则电梯为什么“不听话”电梯调度里最重要的原则是顺向优先截梯反向只登记不响应。这句话很简短但决定了整个程序的方向判断逻辑。举个例子电梯现在在3楼正在上行去5楼这时2楼有人按了上呼4楼也有人按了上呼。电梯的响应顺序应该是先停4楼上人再停5楼然后向下停3楼之后再向下找下呼。这就是顺向截梯——运行方向上的楼层呼叫优先响应到达最高响应楼层后如果没有更高请求自动换向。但这里有个极易犯的错2楼的上呼虽然登记了电梯上行时却“不理它”直到下行经过2楼时才会响应。很多初学者程序里把2楼上呼写成“一登记就立刻叫电梯”结果电梯在上行途中突然换向原地折腾这在真实电梯里属于逻辑混乱也是安全大忌。程序实现顺向截梯的核心就一句话设一个“最高响应楼层”和“最低响应楼层”的判断。电梯上行时扫描当前楼层以上的所有登记位如果有任何一个置位就继续上行如果没有就检查是否有方向相反的呼梯决定是否换向。下行时同理。3.3 消号时机与边界条件程序Bug重灾区呼梯登记位什么时候复位这个时机不对电梯就会“到了楼层不开门”或者“门开一下就又走”。内呼消号轿厢到达目标楼层且平层信号有效时复位该层内呼登记位。注意要在停车、开门之前复位不能等开完门再消号否则会造成“电梯明明停了但内呼灯还亮着然后又重新启动”的假故障。外呼消号电梯到达该楼层并停车开门且方向与呼梯方向一致时复位对应方向的外呼登记位。上行顺向截梯到达某层后消号该层的上呼下行时消号下呼。同层两个外呼都亮的情况下电梯只停一次两个方向的外呼都应该在这次停车中处理掉。边界条件有两个容易漏一个是顶层和底层首层只有上呼、顶层只有下呼方向判断时不能越界访问不存在的楼层另一个是电梯停在6楼如果同时有4楼内呼、1楼下呼、3楼下呼程序必须先往下运行通过比较“当前楼层和所有登记楼层的最大值/最小值”来决定第一站去哪而不是机械地“从上往下扫一遍”。建议在TIA Portal里把方向判定逻辑单独拉出来用临时变量存储“最高响应楼层”和“最低响应楼层”每一步都明确比较然后用一个集中输出判断当前是否应该继续运行。这种写法比散落的比较指令清晰得多也方便后面加第二台电梯并联调度。4. TIA Portal里的程序结构把逻辑拆成能维护的零件4.1 OB规划OB1、OB100、OB35各干各的在博途TIA Portal里建工程程序结构不能一锅炖。我习惯按OB分配任务。OB1是主循环所有电梯逻辑的主框架都挂在OB1里。但它只负责调用不写具体算法相当于一栋楼的楼层索引。OB100是启动初始化组织块。上电时给当前楼层变量赋初值把呼梯登记表全部复位方向变量置为停止。如果不做这步PLC停电再上电后变量可能是保持区里的老值电梯会不知道自己在哪极容易出危险。OB35是周期中断组织块默认可以按10ms到100ms任意设定。电梯控制里我习惯把20ms定时中断给它用来做平层信号的滤波检测、超时保护这些对时间敏感的逻辑。注意OB35的执行时间必须远小于中断周期所以里面不能放耗时的数据处理。4.2 FB、FC的职责边界电梯逻辑拆件程序可维护性高低看功能块的划分是否清晰。我建议按下面几个功能块来组织。FB_Running_Direction运行方向判断输入当前楼层、内呼登记表、外呼登记表、当前方向输出方向使能信号。这是核心调度块逻辑上对应第3章讲的规则。FB_Call_Register呼梯登记与消号扫描按钮输入信号置位/复位登记位。内呼和外呼各做一个或合并做。FB_Speed_Output速度与接触器输出根据方向使能信号和目标楼层差值输出上行/下行接触器、变频器多段速信号。低速爬行时给爬行速度平层到位时给零速。FB_Door_Control门控输出开门、关门信号处理开门保持时间、光幕/安全触板信号如果有、关门超时。FB_Alarm_Monitor报警与故障汇总安全回路、门锁、变频器故障、超时信号统一管理故障保持标志和复位逻辑。这里特别说一下“多重背景”的使用场景。在S7-1200里FB可以调用另一个已经编辑好的FB并在自己的静态变量区生成对应的背景数据块这就是多重背景。比如我想做两台电梯并联在一台S7-1200里控制两套设备就可以新建一个FB_Multi_Elevator在其中两次调用FB_Running_Direction各自拥有独立的数据区互不干扰。不需要为了第二台电梯复制一份整个程序。4.3 方向判断和停靠逻辑的等效梯形图逻辑拆解很多初学者卡在“方向判断怎么写”上。这里给出一个可以照抄思路的简化逻辑用文字描述等效梯形图结构。上行继续运行的条件当前方向为上行且最高响应楼层大于当前楼层。// 等效逻辑 Up_Continue (Direction 上行) AND (当前楼层的任一层存在内呼或相应外呼在上方)程序实现时传统做法是“抬轿子”式地扫描用循环或一组比较指令把当前楼层以上所有的内呼和外呼全部作比较只要有任何一个登记位置位就把更高楼层标志置位输出“上行继续”。下行方向同理。停靠条件当前方向为上行当前楼层的内呼登记置位或当前楼层的上呼登记置位且平层信号有效则停车。到达停靠楼层后先消号再开门。还有一个细节容易踩坑输出竞争问题。PLC扫描周期内如果先输出“上行”后输出“停车断开”需要保证停车信号的优先级更高。建议用中间变量暂存所有输出需求最后一并输出到物理输出点避免在程序中途位置直接写Q点导致同一周期内Q点被多次赋值最终结果和预期不一致。5. 安全回路这套系统里不能全靠程序“兜底”5.1 硬回路是底线PLC联锁只能算第二道防线电梯控制最忌讳“一切交给程序”。PLC死机、扫描周期异常、输出模块故障的时候如果没有任何物理层面的保护电梯就是失控状态。所以系统必须要有独立的硬安全回路不经过PLC直接切断主接触器安全回路的得电链路。标准的接法是把急停按钮、限速器开关、安全钳联动开关、上下极限开关、轿内检修开关这些常闭触点串联形成一个硬安全回路。只要任何一个开关动作安全继电器掉电主接触器线圈断电电机无法运转。这个回路不受PLC输出控制是断电优先的“硬逻辑”。5.2 上下行接触器互锁一个不能省的电气连锁PLC程序里必须有软互锁——上行输出和下行输出不能同时为1。但PLC程序也可能因为干扰、位翻转等异常同时置位两个输出。因此硬件接线上必须加电气互锁上行接触器线圈回路串下行接触器的常闭触点下行接触器线圈回路串上行接触器的常闭触点。动作上接触器本身也有机械联锁三管齐下才能保证电机不会出现“同时正反转”的情况。另外一个容易被忽略的点是接触器的实际触点状态反馈。程序里最好不仅依赖“我发出了上行命令”还要通过变频器运行反馈判断设备是否真的运行了。如果发出上行命令后5秒还没有运行反馈应该进入故障状态封锁所有输出。5.3 PLC内部软保护与变频器参数设置软保护方面至少要实现下面几项启动条件必须包含安全回路闭合、门锁闭合、无故障保持、方向明确。运行过程中如果安全回路或门锁断开立即封锁方向输出和高速输出触发故障保持位。故障保持位只能手动复位不允许自动恢复。复位按钮接在轿厢操作盘或控制柜上。车门未关的启动保护关门信号发出后设定超时比如20秒超时门锁仍未闭合立即停止关门并报警。变频器参数按电梯工况设置时有几个重点值参数建议值说明最大频率50Hz额定速度对应频率加速时间1.5~2.5s避免启动过冲减速时间2.0~3.0s配合爬行段距离多段速145~48Hz高速运行段多段速28~15Hz平层爬行段停止方式按减速曲线停机配合抱闸延时抱闸的时序尤其得注意。电梯的机械抱闸必须在电机输出转矩建立之后再打开否则会溜车停车时先停电机再抱闸不能抱闸先机械夹住而电机还在输出。这个时序一般通过变频器输出继电器和抱闸接触器在硬件层面联调完成PLC只控制启停方向不会去直接控制抱闸。调试时只要有条件一定要把抱闸延时和变频器启停曲线实测一遍别迷信参数手册。6. 从PLCSIM仿真到真机联调我最想让你避开的几个坑6.1 仿真模式的局限性时序感是完全失真的PLCSIM能验证逻辑正确性但永远模拟不了真机的物理时序。在仿真器里你给一个按钮后立刻给平层信号程序会乐呵呵地跑过去真机上变频器从0Hz加速到48Hz再减速进爬行需要好几秒。如果程序里没有处理“运行中必须经过中间楼层”“平层信号必须持续有效”这类时间约束仿真全通过到现场就乱套。我的建议是仿真阶段仍然把平层信号设计成“脉冲触发后锁存”而不是直接依赖平层信号的持续电平。这样仿真和真机行为差异会小很多。6.2 平层信号抖动、输入滤波和“假楼层”问题现场最常遇到的一个故障是电梯运行到楼层之间时平层信号因为感应开关扰动误触发了一下PLC误以为到了某层结果后续层楼显示混乱。这种问题必须在三个方面同时处理。第一使用S7-1200输入通道的硬件滤波。在设备组态中每个数字量输入点都可以设置输入滤波时间比如0.1ms到20ms电梯平层信号建议设到6.4ms以上过滤掉短暂的干扰脉冲。第二在程序里做软件去抖。可以用OB35每20ms扫描一次平层信号要求连续3个周期60ms都是有效状态才认为真正进入门区。这样又滤掉一部分干扰。第三不要直接使用平层信号作为楼层刷新源的唯一判断。最好通过方向变量原楼层计算上行时离开原楼层后每经过一个门区就新楼层1下行则反之。这样即使某个平层开关偶尔误触发也不会导致楼层跳变。6.3 HMI联调与接地布线问题用博途TIA写一个HMI画面把楼层显示、呼梯记录、方向指示、报警列表放上去联调起来非常直观。但你真去现场调试时最先遇到的往往不是程序问题而是通讯和干扰。S7-1200和HMI走以太网注意网线必须用屏蔽双绞线并且屏蔽层单端接地。现场没有条件的至少保证网线远离变频器输出电缆和主回路动力电缆间距最好大于30厘米做不到的话穿金属管屏蔽。还有一个我调试时踩过很深的坑变频器启动瞬间PLC模拟量/开关量误动作。明明程序逻辑没问题变频器一启动输入点信号就开始乱闪。排查下来是控制柜内部布线太乱动力线和信号线走同一线槽。后来把动力线单独走线、输入信号改用屏蔽电缆误动作彻底消失。电缆敷设的事现场一定要提前规划别等问题冒出来再去查非常耗时。7. 六层只是起点并联群控、精确平层与上位机数据的扩展路径7.1 两台电梯并联网的调度思路六层电梯单台做通了下一步很多人就想做并联群控。S7-1200做两台电梯并联网有两种常见方案。方案一是一台CPU同时控制两台电梯用多重背景功能实例化两套控制块共享同一个外呼数据区。调度逻辑变为外呼登记后由调度判断模块决定将它分配给1号梯还是2号梯判断规则通常是谁离得近、顺向优先。逻辑不算简单但整体都在一个CPU里不存在通讯一致性问题。方案二是两台CPU各控制一台以太网相互通讯通过S7通讯或Put/Get指令共享外呼数据。这个方案灵活后续可以扩展到更多台但要注意通讯故障时的降级处理——网络断了以后每台电梯要能独立运行不能出现所有电梯一起瘫痪的情况。并联调度的调度规则本身不复杂复杂的是“避免两台电梯去抢同一个外呼”。我的习惯是在共享数据区里给每个外呼加一个“已被分配”标志第一台电梯读取时发现未分配就登记并标记自己另一台发现已被分配就不再响应。7.2 编码器加高速计数器实现精确平层如果项目要求更高的舒服度和精确平层可以在曳引机尾部加旋转编码器利用S7-1200高速计数器实时计算轿厢位置而不是只依赖每层的平层感应开关。这样做的优势是电梯可以在距离目标楼层还有几百毫米时就开始爬行减速而不是到了门区才急停。实现思路是每层门区感应开关作为绝对位置校准点编码器脉冲数作为相对位置程序里跑一个“位置实时跟踪函数”。高速计数器可以用HSC1等通道组态成计数模式每个扫描周期读取当前计数值和门区校准点比较得到当前位置。速度控制和换速点计算都基于这个位置值。这个方案会显著增加程序复杂度PID和速度设定也需要反复调但对做工程项目的工程师来说这是一条必经之路。小型六层项目可能不需要但公共建筑的电梯要求很明显。7.3 向C#上位机、OPC UA方向扩展S7-1200从固件V4.0以上支持做OPC UA服务器可以直接对接Kepware、WinCC、自研C#上位机等把电梯的楼层、方向、呼梯状态、故障记录全部读出去。如果做智慧建筑系统这部分几乎是标配。对于学C#或者组态软件的人这个项目是一个很好的通讯练习场景先用PLC把数据准备好然后通过S7协议或OPC UA读上来做实时监控页面、历史数据记录和故障报警统计。第4章提到程序结构要注重模块化正是因为后面做数据对接时你会发现每个变量对应哪个功能块、哪个数据块清清楚楚写上位机的时候效率高得多。最后说点个人体会。电梯控制系统做完最大的收获不是学会了怎么写梯形图而是理解了“程序只是整套设备里的一个零件”。硬件互锁、安全回路、变频器参数、布线工艺和PLC逻辑是同等重要的一环任何一个环节有短板整台电梯都没法稳定交付。六层电梯这个体量刚好压得住复杂调度又不会大到让人绝望非常适合作为PLC项目练手的分水岭。如果你正在做这个项目我建议你在仿真跑通之后一定想尽办法找机会去真机现场调一次哪怕只是在旁边看老师傅改参数那种“程序逻辑和物理世界相互验证”的感觉是纯模拟环境完全给不了的。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →