简介:西门子PLC四层电梯控制系统课程设计PDF,面向工业自动化学习者与PLC初学者,系统梳理PLC基本概念、分类、特点及控制优越性,并以四层电梯为案例,从总体设计方案、硬件选型、输入输出分配与软件调试流程展开说明。资源为单个PDF文档,体积约921KB,内含摘要、绪论、PLC控制系统设计、硬件选择、程序调试等章节,适合作为电气自动化或机电类课程设计的参考模板。目前已有618人学习下载,是一份兼具理论讲解与工程实践的入门资料。读者可从中了解基于西门子PLC的电梯运行控制、门控与报警逻辑的设计思路,包括轿厢呼叫、楼层指示等功能的实现方法,可为此类项目开发提供直接借鉴。
1. 西门子PLC四层电梯:一份课设PDF里藏着的完整控制链路
拿到这份课设PDF时,我先翻的不是梯形图,而是I/O分配表和内部寄存器表。四层电梯控制这块,硬件选型和地址分配定下来,梯形图只是把既定逻辑“翻译”成PLC语言而已。这份西门子PLC四层电梯资料完整走了一遍从控制需求拆解、PLC选型、I/O点数估算到CPU224配EM223扩展、路径记忆继电器、梯形图实现和调试的流程,正好覆盖课设和毕设里最常见的一整套动作。适合三类人:正在做电梯控制类课设的学生、想快速搭一套S7-200四层电梯逻辑的开发者、手里有实验台想对着地址表核对接线的人。坦率说,它的梯形图可读性一般,最值钱的是中间那一层——M0.0到M3.2的路径记忆和M10.0到M10.7的呼梯保持位,把这一层看懂,整份资源才算吃透。
2. 硬件选型与I/O分配:CPU224 + EM223 怎么凑够 27 个点
拿到这类课设,最容易犯的错是上来就写梯形图。电梯控制的核心矛盾从来不是“怎么写”,而是“哪些信号要进PLC、哪些动作要出来、中间逻辑用什么寄存器过渡”。先把控制需求拆清楚,硬件选型才有依据。
2.1 从控制需求倒推硬件选型
这份资料在3.2节列了八条功能要求,基本决定了I/O规模:
- 行车方向由内选信号决定,顺向优先执行;
- 行车途中遇呼梯信号时,顺向截车,反向不截车;
- 内选、外呼信号具有记忆功能,执行后解除;
- 到层自动开门、延时关门,停层时可手动开门或关门;
- 行车时不能手动开门,门开时电梯不允许运行;
- 电梯有效运行时间超过8秒,发出超时报警并停车;
- 无内外呼梯信号时,电梯自动返回第一层待命;
- 开始运行时,轿厢不在第一层会自动返回。
对照这八条数一下输入:4个行程开关(一至四层到位检测)、4个内呼按钮、6个外呼按钮(一层外呼、二层上、三层上、四层下、二层下、三层下)、1个手动关门按钮,合计15个输入点。输出侧:上行、下行、上行显示、下行显示、开门指示、保持指示、关门指示、报警显示,再加上楼层显示的4位BCD码输出,合计12个输出点。总需求17个I/O点以上,实际上输入输出加起来要27个点。
资料选的方案是CPU224加一块EM223。CPU224自带14点输入、10点输出,输入明显不够;EM223提供8点输入、8点输出,拼起来是22点输入、18点输出,盖住15入12出的需求还有差不多两成余量。课设里这个余量不是浪费,后面调试要临时加信号、改地址,余量就是后悔药。选型时还有一个隐藏理由:CPU224自带两个通信口、扩展能力也够,比小型的CPU221划算得多。
2.2 I/O分配表逐行解读
原资料的I/O分配表是整份PDF里最值得先抄到笔记本上的东西,下面按S7-200的寻址习惯拆开看。
| 输入地址 | 信号含义 | 输出地址 | 信号含义 |
|---|---|---|---|
| I0.0 | 一层行程开关 | Q0.0 | 电梯上行 |
| I0.1 | 二层行程开关 | Q0.1 | 电梯下行 |
| I0.2 | 三层行程开关 | Q0.2 | 上行显示 |
| I0.3 | 四层行程开关 | Q0.3 | 下行显示 |
| I0.4 | 一层内呼 | Q0.4 | 开门指示 |
| I0.5 | 二层内呼 | Q0.5 | 保持指示 |
| I0.6 | 三层内呼 | Q0.6 | 关门指示 |
| I0.7 | 四层内呼 | Q0.7 | 报警显示 |
| I1.0 | 手动关门 | Q2.0 | 楼层显示BCD位0 |
| I2.0 | 一层外呼 | Q2.1 | 楼层显示BCD位1 |
| I2.1 | 二层上外呼 | Q2.2 | 楼层显示BCD位2 |
| I2.2 | 三层上外呼 | Q2.3 | 楼层显示BCD位3 |
| I2.3 | 四层下外呼 | ||
| I2.4 | 二层下外呼 | ||
| I2.5 | 三层下外呼 |
这里有个新手必踩的地址规则:CPU224本体的输入是I0.0到I0.7、I1.0到I1.5,输出是Q0.0到Q0.7、Q1.0到Q1.1。挂在CPU右侧的第一块扩展模块,输入地址从I2.0开始编号,输出从Q2.0开始编号。所以你看外呼按钮全部落在I2.x,楼层显示全部落在Q2.x,这不是随手的安排,而是S7-200扩展模块地址自动顺延的结果。有人画接线图时想当然地把扩展输入编成I1.6、I1.7,结果程序一跑数据全不对,就是没搞懂这条规则。
分配表里还有个细节值得夸一笔:一层外呼只有一个,四层下外呼只有一个;二层、三层既有上外呼又有下外呼。这是按实际物理场景设计的——一层不会有人呼下行,四层不会有人呼上行,省下两个输入点。课设里能做到这层考虑,说明原作者是真对着电梯使用场景思考过的。
2.3 数码管显示与译码电路
楼层显示用的是共阳极数码管,输出端Q2.0到Q2.3送的是BCD码,中间经过一块译码电路转成七段码。我一般会提醒学生:共阳极数码管公共端接+24V,段选信号要低电平才点亮,所以译码输出和数码管之间必须配合好。如果实验台上拿到的数码管是共阴极,接法完全反过来,显示就是乱的。
译码电路本质上把4位二进制翻译成数码管段码,CPU这边只需要管Q2.0到Q2.3四个点输出0到4的BCD码。比如电梯在一层,输出001,译码后数码管显示1;在四层,输出100,显示4。这样做的好处是节省输出点,如果直接用7段码,4层就要7x4个输出点,成本划不来。接线图上那一排电阻是限流用的,别省,不然数码管段码电流太大,容易拉垮输出点。
3. 内部寄存器分配:把 M0.0-M3.2 读成路径记忆,比看梯形图有用
原PDF的第四章给了几十页梯形图,说实话照着抄意义不大,容易越抄越晕。真正把这套程序讲明白的,是第三章那一张内部寄存器分配表。我拆这份资料花时间最多的地方就在这张表上。
3.1 为什么必须用M寄存器
直接拿I/O点写逻辑不行吗?这个问题几乎每个做课设的人都问过。四层电梯虽然楼层少,但运行路径组合非常多:一层到二层、一层到三层、一层到四层、二层到三层、二层到四层、三层到四层,反向还有四到三、四到二、四到一、三到二、三到一、二到一,再加上途中截车的组合路径,二十多种情况。如果这些状态直接用Q输出点来记忆,程序里全是互锁和自锁,改一处逻辑要牵连七八个网络。
M寄存器是PLC内部位存储器,不占物理I/O,就是干这个用的。S7-200的M区容量不小,资料里把M地址分成三块:M0.0到M3.2管运行路径,M10.0到M10.7管呼梯保持,M20.0和M20.1管报警和归位。这种分层正是梯形图能写下去的前提。你可以把M寄存器理解成PLC内部的草稿纸——算复杂逻辑的时候先在草稿纸上把事情记下来,最后再决定怎么驱动输出。
3.2 路径记忆寄存器到底记了什么
把寄存器分配表按路径重新分组看,逻辑会清晰很多:
| 寄存器范围 | 作用 | 代表含义 |
|---|---|---|
| M0.0 | 初始化 | 上电复位标志 |
| M0.1 | 开始信号 | 有运行任务产生 |
| M0.2-M0.4 | 一层出发路径 | 一层到二层/三层/四层 |
| M0.6-M0.7 | 二层出发路径 | 二层到三层/四层 |
| M1.0-M1.2 | 三层出发路径 | 三层到四层及相关 |
| M1.3-M1.5 | 四层下行路径 | 四层到三层/二层/一层 |
| M1.6-M3.2 | 组合路径 | 多段运行及截车路径 |
| M10.0-M10.7 | 呼梯保持位 | 正向/反向外呼记忆 |
| M20.0 | 报警设置 | 超时报警使能 |
| M20.1 | 开始归位 | 自动返回一层请求 |
这里要注意,原资料的命名并不统一:M0.2叫“一层到二层”,M0.5叫“二层先到四层”,M1.1叫“三先到四”,M3.0叫“三先到一”,M3.1叫“再到四”。光看名字很容易懵,我的读法是全部当成“路径”而不是“楼层状态”。M0.2表示电梯正执行从一层到二层的路径;M1.6表示从二层出发先到四层、再反向回一层的完整任务。这么理解,梯形图里那些成串的置位和复位就有了解释。
另一个细节:组合路径位占了M1.6到M3.2一大片地址,里面反复出现“截车”。比如M2.1写的是“二到三到四截车”,M2.7是“四到三到二截车”。所谓截车,就是电梯运行途中响应顺向呼梯信号,在目标路径上插入一个中间停靠。这个动作不是简单地把终点改掉,而是“原终点不变、沿途多停一次”,所以才需要单独一组寄存器来记忆半路插入的任务。
3.3 M10.0-M10.7保持位与外呼记忆
原资料3.2节里写着“内选信号、外呼信号具有记忆功能,执行后解除”,这句话在梯形图里的落地就靠M10.0到M10.7。外呼按钮是瞬动开关,人手按一下可能只有几十毫秒,而PLC一个扫描周期在毫秒级。如果程序刚好错过那个扫描周期,按钮信号就丢了,电梯根本没“看见”呼梯。
解决办法是先把事件锁存下来。以二层上行外呼为例:I2.1接通后立即置位M10.1,表示“二层有人要上行”这个事件被记住了。后面路径判断逻辑只读M10.1,不直接读I2.1,这样哪怕按钮已经松开,信号也不会丢。等电梯真正到达二层并开门后,再复位M10.1,完成“执行后解除”。M10.0到M10.3是正向保持位,M10.4到M10.7是反向保持位,正好对应四个楼层。把“事件发生”和“事件响应”分到两套地址上,调试时查起来非常快——电梯不响应呼梯,先看对应的M10.x有没有置位,一眼就能定位问题在前级还是后级。
3.4 定时器与计数器:参数怎么设
资料里用到的定时器和计数器不多,我整理成表:
| 编号 | 功能 | 参考设定 |
|---|---|---|
| T37 | 延时2秒定时 | T37基时10ms,PT设为200 |
| T38 | 门控时间开关1 | 开门保持延时,约3-5秒 |
| T39 | 门控时间开关2 | 关门延时,约3-5秒 |
| T40 | 报警时间设置 | 超时报警,按8秒反推PT |
| C1 | 当前位置计数 | 用行程开关上升沿计数 |
T37的用途是启动时序缓冲。电梯从得到运行指令到真正输出上行之间,加一个2秒延时,避免按钮抖动和信号竞争造成误动作。T38和T39管门控:到站开门后保持一段时间,然后自动关门。这两个时间参数不需要太精确,课设实验台通常给3到5秒比较合理,太短乘客来不及进出,太长影响运行效率。T40是报警定时器,对应“电梯有效运行时间小于8秒”那条要求。如果从启动到平层超过8秒还停不下来,就要置位M20.0、输出Q0.7报警并停车。做法是给T40设定一个8秒的TON定时,超时后切断运行输出。
C1这个计数器容易被人忽略。它配合行程开关的上升沿来记忆当前位置,比如从一层向上运行,每过一个行程开关C1加1;从四层向下,每过一个行程开关C1减1。归位逻辑要知道“轿厢现在在哪层”,不能只靠I0.0到I0.3的瞬时状态,因为电梯可能在运行中、经过某层但没停,瞬间信号不可靠。用C1累计的位置信息在“自动返回一层”和“开始归位”逻辑里是核心依据。
4. 软件实现与梯形图拆解:顺向截车、反向不截车是怎么写成逻辑的
硬件的地址和中间变量都定好了,梯形图的写法就顺理成章。这一章讲程序结构的拆解,重点看两条:一是顺向截车怎么落地,二是反向不截车怎么拦住。
4.1 梯形图为主,流程先立住
S7-200的编程软件支持梯形图、指令表和SFC,课设选梯形图是主流,因为直观、好接线、老师也好审。但梯形图之前得先有流程,原资料给的流程图虽然简单,信息量够:先初始化复位、电梯回到一层,然后判断上行呼叫、下行呼叫,对应执行上行或下行。
初始化网络: 复位 M0.0-M3.2 复位 M10.0-M10.7 复位 Q0.0-Q0.7 置位 M20.1(归位请求) 主逻辑: 若 M20.1=1 且 当前位置不等于一层: 输出 Q0.1(下行) 直到 I0.0 接通,复位 M20.1 若有 M10.0-M10.7 任一保持位置位: 按当前路径位生成 Q0.0/Q0.1 输出 到站后置位 Q0.4(开门) 若所有保持位都复位: 延时后自动生成回一层路径这段是行为模型,不是能直接下载的源码,但它把梯形图要干的活压缩成了三件事:归位、响应呼梯、自动待命。注意初始化网络里复位和置位的顺序,M20.1要在最后置位,否则归位请求会被复位掉,电梯动都不动。原资料的流程图里“初始复位—电梯回到一层”是连在一起的两个框,梯形图里如果写成从上到下先复位M20.1再置位M0.1,极容易出现第一周期就把启动信号清了的情况。
4.2 顺向截车:一个STL片段看明白置位逻辑
顺向截车是四层电梯课设的灵魂。我按这份资料的地址表,还原一个最简的STL片段演示“一层到二层”路径是怎么生成的。注意这是常见写法的示意,原PDF没有逐网络给出STL,但结构和地址是能对上的:
// 上行顺向截车:电梯在一层,二层有上行呼梯,生成“一层到二层”路径 LD I2.1 // 二层上行外呼按钮 A M10.1 // 二层保持位已置位,按钮短信号被锁存 A M0.1 // 运行许可信号有效 AN M0.2 // 还没在一层到二层路径上 AN M0.4 // 没被“一层到四层”更远路径占用 AN Q0.1 // 不在下行状态 S M0.2, 1 // 置位“一层到二层”路径寄存器 S Q0.0, 1 // 输出电梯上行逐行解释:LD把I2.1当成条件起点;A M10.1确保外呼按钮之前已经被保持位锁存过,避免短信号漏扫;A M0.1要求系统处于允许运行的状态。两个AN是关键:AN M0.2防止路径重复置位,AN M0.4确保更远的目标路径没有占据执行权——如果M0.4(一层到四层)已经置位,说明这次任务的终点是四层,不是二层,二层只是途经层,要不要停由截车逻辑另外判断,而不是重新生成一个终点为二层的路径。最后的AN Q0.1是方向互锁,上行路径绝不能在电梯下行时置位。S指令置位后,M0.2和Q0.0会保持接通,直到后续网络用R指令复位。
4.3 反向不截车与“劫车”的真相
为什么反向不截车?假设电梯正在从一层去四层的路上,三层有人按下行呼梯。如果三层停了,乘客进电梯后要去低楼层,和当前运行方向完全相反。这时响应呼梯不但不顺路,还要让电梯先完成上行再掉头下行,路径被打乱,运行时间反而更长。所以标准的集选控制策略是:方向不一致的呼梯只记忆、不响应,等电梯真正转入下行方向后再处理。
实现手法并不复杂。上行逻辑里串联Q0.0常开和Q0.1常闭,下行逻辑里反过来串联Q0.1常开和Q0.0常闭。方向输出一旦建立,反向的路径位根本没有置位条件。三层下行呼梯的保持位M10.6虽然在执行上行任务期间一直置位,但它对应的“四层到三层反向”路径位不会在上行状态下产生。等电梯完成任务回到一层,方向变为下行后,M10.6才参与路径判断,电梯才会开去三层接人。
这里要给原资料澄清一个字:寄存器表里多处写着“劫车”,其实是“截车”的笔误。截车在电梯控制里是专业说法,不是抢车的意思,我把这块逻辑理顺之后发现,它的思路和教科书上集选控制是完全一致的。课上讨论时有人问“劫车是不是就是非法截停”,我说不是,这就是顺向途中响应呼梯的缩写。这种错别字在课程设计PDF里很常见,读的时候要结合功能描述去理解,别被字面带偏。
5. 调试避坑与常见问题:仿真过不等于上电能用
课设最常见的翻车现场:程序在仿真软件里逻辑全对,一接上实验台就各种妖蛾子。这一章把我在类似项目上踩过的和帮别人排查过的坑集中写一写,每一条都是“现象—原因—解决”。
5.1 仿真能跑、实物不动:初始化竞争
现象:程序下载后电梯停在原地,怎么按呼梯都没反应,监控软件里看M0.1始终是0。
原因:SM0.1是S7-200的上电初始化脉冲,只在第一个扫描周期接通一次。如果初始化网络先复位了M0.1,紧接着又置位M0.1,看起来没问题;但初始化网络后面还有一个“开始信号产生”网络,它会和初始化抢同一个周期的执行顺序。扫描顺序靠前时,M0.1刚置位就被后面的复位清掉;扫描顺序靠后时,M0.1又可能在复位之前被置位。两种结果取决于网络排列,表现出来就是电梯“死”在那里。
解决:把所有运行逻辑的允许条件统一接一个“初始化完成位”,比如M0.0。初始化网络先复位M0.0,全部复位动作做完后,最后一个网络置位M0.0。路径判断、归位判断、呼梯响应全部串联M0.0常开,确保初始化没完成前任何动作都不执行。我一般还会在下载后先强制M0.0看电梯是否能动,能分清是初始化问题还是外设问题。
5.2 顺向截车不响应:外呼按钮短信号被漏扫
现象:按住二层上行外呼,电梯从一层启动经过二层时没停,直接继续往上走。
原因:按钮按下的时间太短,PLC扫描时没采到I2.1,或者采到了但程序里没有先置位M10.1,路径判断网络里读不到保持位,整个截车事件就像没发生过。仿真软件里常见做法是把按钮手动置位保持接通,掩盖了这个问题;实物按钮一松,信号就消失。
解决:所有外呼、内呼输入先经过一个独立的“信号锁存网络”,只要按钮有上升沿就置位对应的M10.x保持位,路径逻辑一律只读M10.x,不直接读I2.x。执行完截车动作后,在开门到位网络里复位对应的保持位。调试时可以通过监控表强制置位M10.1,看路径位M0.2是否建立,这样能把问题快速压缩到“锁存没做”还是“执行没做”。
5.3 数码管显示乱跳:共阳极接成了共阴极
现象:楼层显示时而正常、时而出错,显示0、显示8、显示F都出现过,按呼梯后显示内容完全对不上实际楼层。
原因:接线或选件上共阳极和共阴极搞混了。共阳极数码管公共端接+24V,段码低电平有效;如果实验台实际配的是共阴极,公共端得接0V,段码高电平有效。电路接反后,译码输出和数码管段码逻辑相反,显示必然是乱的。另外Q2.0到Q2.3送的是BCD码,如果译码电路输入端A到D和这四个输出的线序接错,也会出现数字错位。
解决:拿万用表量数码管公共端对地电压,判断是共阳极还是共阴极;再逐根核对Q2.0到Q2.3与译码器输入的对应关系。S7-200扩展模块的输出地址从Q2.0开始,不是顺延Q1.2,地址表一定对着Micro/WIN里的I/O配置看一遍再接线。我给学生的建议是:上电前先用强制输出功能让Q2.0到Q2.3分别置位,数码管显示有规律变化,说明输出和译码正常,再讨论逻辑。
5.4 超时报警误触发:定时器复位条件放错了地方
现象:电梯明明在正常运行,T40隔十几秒就报警,甚至刚启动就报警停车,Q0.7亮得莫名其妙。
原因:T40是TON定时器,它的复位条件如果只放在“到达最终目标楼层”的网络里,中途经过其它楼层时就一直在计时。电梯从一层到四层再加上开关门,整套动作很容易超过8秒;中途还有可能停靠截车楼层,累计时间更久。T40一直在走,走到设定位就置位报警。
解决:把T40的复位条件改为“电梯运行中每经过一个行程开关就复位一次”。具体做法是I0.0到I0.3的上升沿并联后驱动一个对T40的R复位。超时报警是兜底保护,不是速度考核,它的关注点是两个平层信号之间是否卡死。如果实验台传动慢,可以把PT值放宽到15秒,先保证正常流程不误报,再逐步收紧。报警后要加一个手动复位按钮或让M20.1重新置位,否则停了就再也走不了。
5.5 运行中能开门:门控和方向输出没互锁
现象:电梯运行中按手动关门或外部开门信号,门能打开,看起来非常吓人。
原因:开门输出Q0.4和关门输出Q0.6之间做了互锁,但没和方向输出Q0.0、Q0.1做互锁。也就是说,运行时门控逻辑完全不知道电梯在动,Q0.4的置位条件里没有去检查是否正在上行或下行。
解决:在Q0.4的置位网络里串联Q0.0和Q0.1的常闭触点,电梯运行中强制切断开门条件;同时在电梯启动网络里串联门锁反馈和门开状态互锁。双向都要做,运行中禁止开门,门开时禁止运行。这个互锁不只是课设要求,更是安全底线,实验台上虽然只是演示,代码里也必须体现。写完检查一下QT0.4网络里有没有“Q0.0常闭AND Q0.1常闭”,缺一个都不行。
6. 进阶:用状态转移表重新组织这套逻辑,把“能跑”变成“能改”
如果你只是想把课设交上去,前面的内容够用了;但如果你后面想做五层、六层电梯,或者把课设改成比赛项目,这套靠堆路径寄存器的方式很快就会失控。我建议拿到这份PDF后做一次重构练习:把所有路径位整理成一张状态转移表,哪怕不改程序,脑子里也会清晰很多。
6.1 把路径位整理成状态转移表
| 当前楼层 | 目标楼层 | 方向 | 对应路径位 | 中途可能截车层 |
|---|---|---|---|---|
| 一层 | 二层/三层/四层 | 上行 | M0.2/M0.3/M0.4 | 二层/三层 |
| 二层 | 三层/四层 | 上行 | M0.6/M0.7 | 三层 |
| 二层 | 一层 | 下行 | M1.3 | 无 |
| 三层 | 四层 | 上行 | M1.0 | 无 |
| 四层 | 三层/二层/一层 | 下行 | M1.5/M1.4/M1.3 | 三层/二层 |
| 多层 | 先到中间层再继续 | 截车 | M2.1/M2.7等 | — |
这样一看就明白,路径寄存器本质上就是“当前楼层+目标楼层+方向”的组合编码。截车路径是把原路径拆成两段——先到截车层,再到原目标层。梯形图里的置位和复位,就是在这些状态之间跳转。
6.2 用“目标减当前”直接算方向,替代堆叠状态位
// 结构化文本思路,S7-200里可用比较指令实现 IF 目标楼层 > 当前楼层 THEN Q0.0 := TRUE; // 上行 Q0.1 := FALSE; ELSIF 目标楼层 < 当前楼层 THEN Q0.0 := FALSE; Q0.1 := TRUE; // 下行 ELSE Q0.0 := FALSE; Q0.1 := FALSE; Q0.4 := TRUE; // 到站开门 END_IF这套思路的价值在于:加楼层时不用再为每条路径单独分配M寄存器,只要维护好“目标楼层”变量,方向和截车判断都能靠比较自动算出来。从那以后我每次拆这类课程设计,都强制自己先画一张状态转移表再碰梯形图,这习惯帮我避开了好几次“调一晚上发现只是地址表抄错”的悲剧。希望帮到你。
本文还有配套的精品资源,点击获取