[西门子] 多楼层电梯控制案例

[复制链接]
查看82328 | 回复0 | 2024-7-19 15:11:25 | 显示全部楼层 |阅读模式
多楼层电梯简易控制案例。

假设有一个楼层电梯控制,电梯停在任意楼层位置,当按下楼层呼叫按钮后,电梯自动运动至呼叫楼层位置停止,当无人按楼层呼叫按钮时,停在最后呼叫的楼层位置等待。如下图所示:



PS:暂时忽略多人同时按呼叫按钮的情况,旨在设计编程思路扩展。

分析:
1. 三菱PLC实现:

首先是每个楼层的呼叫按钮,每个按钮对应一个输入信号,每个楼层的停止位置需要一个位置开关,电梯的上升、下降需要2个输出信号,这样我们就可以得出I/O分配表:

楼层按钮1-8对应:X0-X7或I0.0-I0.7;

楼层位置限位开关1-8对应:X10-X17或I1.0-I1.7;

电梯上升:Y0(Q0.0);

电梯下降:Y1(Q0.1);

当按按钮时,电梯需要知道是哪个楼层的按钮被按下,那么我们就可以采用赋值的方式,当一楼按钮按下时就将D20赋值1,依次类推,如下图所示:



依照同样的方式,需要将楼层位置限位信号也赋值给数据寄存器,依次赋值,如下图所示:



那么此时,我们就可以通过比较两个数据的大小来判断按下呼叫按钮的楼层与楼梯停留的楼层之间的关系,依此来判断电梯应该上升或下降,如下图所示:



为了简化编程,我们就可以通过组合的方式处理数据,如下图所示:



数据处理方式相同,这样我们就会发现,到电梯停留在高楼层时,在低楼层按呼叫按钮,D30中的数值就大于D20中的数据,通过M10-M12辅助继电器的状态,就可输出控制电梯下降。

此时,我们想到PLC中有一个编码译码指令ENCO,那么程序也可以通过如下编写实现控制需要,下图所示:



关于编码译码指令的用法,可参考之前译码编码指令。
2. 西门子PLC实现
在西门子PLC中利用同样的思路可编程实现控制需求。

下面以西门子PLC编写程序:



将每个呼叫按钮对应的楼层号存入数据寄存器中,每个楼层的位置信号也存入数据寄存器中,然后进行比较两个数据的大小决定电梯上升或下降。

简化程序后,将楼层的按钮以字节的方式存入数据寄存器中,同样将楼层到位位置信号也存入数据寄存器中,如下图所示:



编写后的实际程序,如下图所示:



然后进行对比两个数据大小,决定电梯的升降动作



这样就可以利用简单的程序实现控制需求,而且西门子PLC中同样有编码译码指令,可自行编写程序测试效果,也可如前文提到的文章链接查看编码译码使用方法。

由以上事例,编程实现控制的方式有很多种,在满足需求的情况下,程序越少就越简洁。

思路扩展:以上事例编程,未考虑同时多人按按钮呼叫电梯情况,那么要考虑进去改如何修改逻辑呢?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则