【应用】1200PLC实现三层电梯模拟控制
使用西门子1200PLC和虚拟工厂仿真实现三层电梯的模拟控制
文章目录
目录
文章目录
前言
一、编程前的准备
1.博图
2.虚拟工厂
二、电梯控制要求
1.实验原理
2.具体控制要求
3.I/O分配
4.在虚拟工厂布置场景和变量
三、编写思路
四、编写程序
1.单个按钮对电梯的控制
1.初始化块
2.电梯开门关门
3.外部和内部按钮
4.电梯上升和下降
5.到达楼层
6.触发开门关门
7.效果
8.小结
2.多个内部按钮的控制
1.外部和内部按钮
2.内部按钮多重控制
3.电梯在1层执行1 2 3
4.电梯在1层执行 2 1 3
5.电梯在1层执行3 2 1
6.效果
7.小结
3.多个外部按钮的控制
1.外部1层(第5第6控制要求)
2.外部3层(控制要求:第7第8)
3.到这里外部按钮的部分就完成了,但是控制要求还没完:
4.互锁
5.控制
6.小结
4.程序完善 (指示灯)
1. 外部内部指示灯
2.上升下降指示灯
3.楼层指示灯
五、完整程序
1.主程序
编辑 2.fc块
1.初始化
2.外部内部呼叫按钮
编辑 3.上升下降
4.按钮指示灯
6.到达楼层
7.内部按钮多重控制
8.外部按钮控制
9.开门关门
总结
前言
在前面几篇笔记中写过一些PLC实现的应用案例,像传送带,自动装料系统模拟等等,这些都比较简单一些,属于小型控制案例,这篇文章所要实现的三层电梯主要是用1200和factoryio进行模拟仿真来实现的一个中小型应用案例,和前面相比难度会大大不同,来接着向下看吧!
一、编程前的准备
为了控制效果可见,这里使用博图和factoryio(虚拟工厂)这两个软件进行编写并调试。
在虚拟工厂里没有直接的电梯模型,但是有一个非常相似的虚拟设备——升降机!和电梯的运动原理一样,都是上升和下降;在编程之前要在博图创建好项目(注意:一定是仿真项目,带有驱动的)并且在虚拟工厂中建好升降机的场景;然后定义变量并上传的博图变量中!
1.博图
创建博图项目时,一定要导入虚拟工厂的工程模板(虚拟工厂的驱动),否则无法和虚拟工厂进行仿真连接。
2.虚拟工厂
在虚拟工厂创建一个场景,里面的东西主要就是:升降机、电梯外部的按钮和内部按钮、限位等;根据电梯的控制要求进行添加,然后和博图连接上。大概是这样:
二、电梯控制要求
1.实验原理
2.具体控制要求
(11)当轿厢分别停在1、2、3层时,若先按S1,接着按S2,然后再按S3,则轿厢按照所按的先后顺序分别到达1、2、3层。(延时1s开门,再延时2s关门)
(12)当轿厢分别停在1、2、3层时,若先按S2,接着按S1,然后再按S3,则轿厢按照所按的先后顺序分别到达2、1、3层。(延时1s开门,再延时2s关门)
(13)当轿厢分别停在1、2、3层时,若先按S3,接着按S2,然后再按S1,则轿厢按照所按的先后顺序分别到达3、2、1层。(延时1s开门,再延时2s关门)
3.I/O分配
输入 | 输出 | ||||
---|---|---|---|---|---|
名称 | 作用 | 地址 | 名称 | 作用 | 地址 |
SQ1 | 1层停靠限位 | I0.1 | UP | 电梯上升 | Q0.0 |
SQ2 | 2层停靠限位 | I0.2 | DOWN | 电梯下降 | Q0.1 |
SQ3 | 3层停靠限位 | I0.3 | L4 | 电梯上升指示灯 | Q0.2 |
SU1 | 外部1层上升按钮 | I0.4 | L5 | 电梯下降指示灯 | Q0.3 |
SU2 | 外部2层上升按钮 | I0.5 | OPEN | 电梯开门 | Q0.4 |
SD2 | 外部2层下降按钮 | I0.6 | CLOSE | 电梯关门 | Q0.5 |
SD3 | 外部3层下降按钮 | I0.7 | L1 | 电梯到一层指示灯 | Q0.6 |
S1 | 电梯内1层按钮 | I1.0 | L2 | 电梯到二层指示灯 | Q0.7 |
S2 | 电梯内2层按钮 | I1.1 | L3 | 电梯到三层指示灯 | Q1.0 |
S3 | 电梯内3层按钮 | I1.2 | L6 | 外部1层上升指示灯 | Q1.1 |
SB1 | 启动按钮 | I1.3 | L7 | 外部2层上升指示灯 | Q1.2 |
L8 | 外部2层下降指示灯 | Q1.3 | |||
L9 | 外部3层下降指示灯 | Q1.4 | |||
L10 | 电梯内1层指示灯 | Q1.5 | |||
L11 | 电梯内2层指示灯 | Q1.6 | |||
L12 | 电梯内3层指示灯 | Q1.7 |
4.在虚拟工厂布置场景和变量
根据控制要求和I/O分配,我们将虚拟工厂的场景布置好并定义一下变量:场景需要1个升降机,3个限位传感器,3个3色灯,8个按钮(7个内部和外部,1个启动)。将这些组合在一起拼成1个模拟电梯;然后将英文的名称改为变量表中的名称,方便使用和确认。
将场景中的各个部件的英文名改成中文的(连点两下就可以更改了) ,然后再文件---驱动中选择最后一个模拟仿真(S7-PLCSIM)。
在虚拟PLC中将变量拖拽上去。
最后就是将变量导出到文件夹,然后再博图中导入就OK了。
点击右下角导出:
然后在博图变量表中导入刚刚的文件夹:步骤如下
OK,最后再将博图仿真和虚拟工厂连接上,前期的工作就完成了!下面就是编写思路和程序啦!
三、编写思路
看过控制要求后,理一下思路;实验原理主要是这个电梯的大致运行要求,在具体控制里面是要实现的控制要求;如果不太好理解,可以想象一下平时坐的电梯:在外面选择上升或下降,然后电梯到达你所在的楼层,然后电梯开门关门,最后在电梯里面选择所要到达的楼层,电梯上升或下降到达目的地,OK!下图可以参考一下:
我们再看一下具体控制要求可以发现:1、2、3、4是要求电梯可以在3层之间任意呼叫;5、6、7、8、9、10这几步是要求电梯在2个外部或内部按钮同时按下或先后按下,进行相应的动作;11、12、13是电梯内按钮都按下,电梯进行什么样的动作。
四、编写程序
当这样分析过之后,可以简单划分为3个部分:单个按钮对电梯的简单控制,多个内部按钮的控制,多个外部按钮的控制。
1.单个按钮对电梯的控制
好的先看一下要求:
开始时,按下 启动按钮 使轿厢停靠在 1 层,当有外呼电梯信号 时,轿厢响应该外呼信号到达该楼层,延时 1S 打开轿厢门,再延时 2S 后自动关闭轿厢门, 内选需要到达的楼层,到达楼层后延时 1S 开门。
1.按下启动按钮后,电梯轿厢到一层;这里可以是一个初始化的动作,按下之后接通一层限位,当离开限位之后断开,电梯就停在一层限位。
2.不管是外呼还是内呼电梯都要相应并到达楼层,然后开门关门;我们可以看到每次到达楼层都要开门关门,那每次都要写开门关门,会很麻烦。这里我们可以将开门关门程序写到一个fc块中每次只要调用一下就可以了,非常方便!
3. 然后就是外部和内部的按钮,既然都能呼叫电梯,放在一起就可以;但是题目要求每一层都可以呼叫,那按下按钮之后,就分三种情况:1层,2层,3层。这里我们也做一个块。
4.然后就是电梯的上升和下降了。
5.最后就是当到达指定的楼层之后,触发开门关门就OK了。
理通之后,我们建立5个块:
1.初始化块
在块里面将初始化程序写进去,置位中继1,接通电梯上升(中继2是后面要用的,这里不用管),到达限位后复位掉,让电梯到一层的指示灯亮。
2.电梯开门关门
电梯开门关门 ,这里使用定时器1,延时1s开门,然后2s之后断开电梯开门,接通电梯关门,然后计时2s,时间到后断开一下中继10(这里数据块传送是后面用的,这里不需要)。
3.外部和内部按钮
外部和内部的按钮呼叫,这里按下按钮后判断电梯在哪一层,然后传不同的数给数据块,让电梯上升或下降;这里电梯在2层或3层的时候为什么传相同的数呢?因为无论在2层还是3层按下1层按钮后都要回到1层,是相同的;下面的3层按钮也是一样的,不管在电梯1层还是2层按下按钮后都到达3层停。
4.电梯上升和下降
在呼叫按钮那里,根据每种情况,我们都给数据块传了相应的数,用比较指令来接通上升和下降就可以了,到达指定楼层限位后停止上升和下降,然后开门关门就OK了。(这里使用电梯开门关门的常闭,是为了避免开关门时电梯上升或下降)
5.到达楼层
到达楼层之后,传相应的数字给数据块 ,来让电梯开门关门;最后不要忘记给数据块清零(否则就只能按一次)。
6.触发开门关门
根据到达楼层传的数来触发开门关门。
7.效果
时长原因,这里是1层到2层效果;将上面程序写好可以实现外部内部按钮控制电梯到指定楼层;电梯左侧是每楼的上升和下降按钮呼叫,右侧是电梯内部的楼层选择按钮,左边三色灯的绿灯表示正在开门,红灯表示正在关门。
8.小结
这一部分实现不是特别的难,上面的程序只是我自己的一个思路,使用传送和比较指令来实现功能,不过都是使用的fc块来写的,然后拿来用,最后写完的话fc块会比较多;当然也可以直接使用线圈和直接写程序或者其他的方法,只要功能实现都是可以的!
2.多个内部按钮的控制
实现上面程序,我们就完成了具体要求的1,2,3,4条,用内外部按钮让电梯进行上升下降。
下面我们实现具体要求的11,12,13条:
(11)当轿厢分别停在1、2、3层时,若先按S1,接着按S2,然后再按S3,则轿厢按照所按的先后顺序分别到达1、2、3层。(延时1s开门,再延时2s关门)
(12)当轿厢分别停在1、2、3层时,若先按S2,接着按S1,然后再按S3,则轿厢按照所按的先后顺序分别到达2、1、3层。(延时1s开门,再延时2s关门)
(13)当轿厢分别停在1、2、3层时,若先按S3,接着按S2,然后再按S1,则轿厢按照所按的先后顺序分别到达3、2、1层。(延时1s开门,再延时2s关门)
这里我们以电梯在1层为例:分别按电梯内的123按钮,或者213按钮,或者321按钮,电梯按照先后顺序到达相应的楼层,2层3层也是123,213,321.
那么只要完成其中一层的控制,二层三层依葫芦画瓢就可以啦!
我是这么想的:
1.在1层的时候按123这三个,在没有写程序时电梯会在1层开门关门,然后上升到2层停止,只有3层没有执行,也就是说只要在电梯到2层开门关门后,再传一个数给相应的数据块,让他执行去3层就OK了。
2.在1层时按213这3个按钮,如果没写其他程序,电梯只会到2层开门关门,后面不会执行。那我们只要在到2层限位开门关门之后,传1个去1层的数值,到1层之后,再传1个去3层的数值,就可以了。
3.按321这3个的话和上面相同,到达第一个,传第二个,到第二个传第三个。
(但是这里要注意不能和前面的呼叫按钮重复,因为这个控制里面需要相应的数值。)
这里我们建一个多个内部按钮控制的块和电梯1层,2层,3层的块,(以及外部内部按钮的块,要再加一些控制):
1.外部和内部按钮
这里前面的3个程序段不变,在后边又增加了一些;增加了3个电梯内按钮的上升沿;触发3个按钮会给数据块789传入数值,代表这3个按钮 被按下;同时下面给数据块151617传的数是为了确定第一个被按下的按钮,执行第一个按钮对应的楼层,然后再执行后面的按钮对应的楼层。这样会有按钮按下的条件,再用条件来控制电梯就可以了。
2.内部按钮多重控制
这里我们用上面按钮触发的3个条件:数据块7 8 9,接通相对应的楼层;这里的mw90,95,也是按钮按下时传的数,如果电梯在1层,我们按下这3个按钮,接通第一个将1传送给数据块11(下面的置位和复位是3层相互互锁,避免冲突)。
3.电梯在1层执行1 2 3
当数据块11和数据块15等于1的时候(数据块15是用来判断是不是电梯内1层按钮先按下),mw90,95是2层和3层按下时传的数值;当条件满足,先将去3层的数据块4传0,然后等电梯到达2层,并且开门关门之后,传1给数据块4,让电梯上3层;(数据块20==0是判断是否关门完毕)。 最后到达楼层,将所用到的数据都清零。
好的,写到这里电梯在1层时执行1 2 3 层就完成了;那2 1 3和3 2 1怎么写呢!来接着往下看:
4.电梯在1层执行 2 1 3
前面这里没有再使用数据块11了,而是用了一个中继15的常开,为什么呢!因为电梯在1层时,按下电梯内按钮2 1 3 那么电梯会首先上升到2层,那么在上升时电梯就不在1层停靠限位了;如果用数据块11就无法接通了;所以在上面我们用mw95和电梯上升指示灯为信号来接通程序。
首先还是将去1层和2层的数据块传0,等待电梯到达2层停靠限位开门关门之后,再让电梯去1层,到一层停靠限位后,再去3层。
5.电梯在1层执行3 2 1
这一个和上面基本相同,只要改一下数据块和楼层数据块就可以了。
到这里,电梯在1层时,让电梯实现1 2 3 ,2 1 3 , 3 2 1 的控制就完成了!那么电梯在2 层3 层的控制就和这相同,只要稍微修改一下就可以了。
6.效果
按下启动按钮,电梯到1层 ,然后依次按下1 2 3 电梯先开门关门,然后到2层开门关门,最后到达3层。
7.小结
这里我们第2个大的控制要求就完成了!不管在哪一层,按下随意的3个连续按钮(1 2 3 ,2 1 3 ,3 2 1),都可以按照先后顺序来执行上升或下降。稍微总结一下,这里的控制程序不是特别的好,稍微有些乱,不方便更改和阅读;但是目前来说我没有特别好的程序,好在控制要求可以实现!如果大家有好的思路或者程序可以写评论区或者私信!
3.多个外部按钮的控制
下面来实现两个外部(内部)同时按或先后按的具体控制要求:
(5)当轿厢停于 1 层时,若按 SU2 或 S2,同时按 SD3 或 S3,则轿厢上升至 2 层(延时 1S 开门,再延时 2S 关门)暂停 5S,继续上升至 3 层停,延时 1S 开门,再延时 2S 关门。(6)当轿厢停于 1 层时,若按 SD2,同时按 SD3 或 S3,则轿厢上升至 3 层(延时1S 开门,再延时 2S 关门)暂停 5S,转而下降至 2 层停,延时 1S 开门,再延时 2S 关门。(7)当轿厢停于 3 层时,若按 SD2 或 S2,同时按 SU1 或 S1,则轿厢下降至 2 层(延时 1S 开门,再延时 2S 关门)暂停 5S,继续下降至 1 层停,延时 1S 开门,再延时 2S 关门。(8)当轿厢停于 3 层时,若按 SU2,同时按 SU1 或 S1,则轿厢下降至 1 层(延时1S 开门,再延时 2S 关门)暂停 5S,转而上升至 2 层停,延时 1S 开门,再延时 2S 关门。(9)当轿厢停于 2 层时,若先按 SD3 或 S3,接着按 SU1 或 S1,则轿厢上升至 3 层停,延时 1S 开门,再延时 2S 关门。(10)当轿厢停于 2 层时,若先按 SU1 或 S1,接着按 SD3 或 S3,则轿厢下降至 1层停,延时 1S 开门,再延时 2S 关门。
5,6,7,8这四条要求都是同时按下,9,10这两条在前面已经实现了,在2层时只相应先按下的按钮,上升或下降。
1.在1层时,同时按下SU2 SD3(或S2 S3)也就是外部2层上升和3层下降,或者电梯内的2层3层按钮 ;要求电梯先到2层开门关门后暂停5s再去3层。
然后如果同时按SD2 SD3,外部2层下降和3层下降,就先去3层,暂停5s然后下降去2层。
2.在3层时,也是两个按钮同时按下,然后先执行再执行。
这里的思路和内部的基本相同,两个按钮同时按下,传1个数;当等于这个数时,就执行先后操作。我们还建立fc块来给它封装一下,直接调用就好了。
1.外部1层(第5第6控制要求)
这里就比较简单一些,在一层限位时 按下相对应的按钮,传数给数据块;然后根据控制要求的先后顺序,先传0然后再传对应数值,让电梯运行。(这里的手动是模拟实现同时按下的效果,用了一个M点)
2.外部3层(控制要求:第7第8)
结构思路和上面的一样。
3.到这里外部按钮的部分就完成了,但是控制要求还没完:
电梯上升途中只响应上升呼叫,下降途中 只响应下降呼叫,任何反方向的呼叫均无效。例如,电梯停在一层,在三层轿厢外呼叫时, 电梯响应呼叫(从一层运行到三层),若电梯在没到达二层时,在二层外呼叫上升,电梯经 二层停后继续上升到三层;如若电梯在没到达二层时,在二层外呼叫下降,电梯到达三层后 下降途径二层再停止。
在实验原理中:要求,上升时不能下降,下降时不能上升;并且还有一个控制要求。
1.第一个我们只要在上升下降时加上互锁就可以了。
2.第二关键点就在“是否到达2层”,我想到的还是这两个按钮按之后,传值,然后判断是否在2层;是就执行要求,不是就不执行。
4.互锁
在这里用上升下降的常闭,来进行互锁;并且还用了开门关门的互锁,防止电梯在开门关门时进行上升下降,这里需要注意。
5.控制
这里用2层上升和下降的上升沿来传1个数值;
当两个按钮按下后,为了保证在2层之前,加上了2层3层的限位;如果在2层之前触发2层上升按钮,就先到达2层,然后再去3层。
如果先按2层下降再按3层下降,则先去3层,然后去2层。
6.小结
这一部分写完,最后1个大的要求就完成了。控制要求实现不是太难,但是需要相应的条件,如果没有就自己创造条件!
4.程序完善 (指示灯)
3个主要控制要求完成后,就剩一些收尾工作了;指示灯的控制要求:
L1、L2、L3 为楼层指示灯,L4、L5为电梯上升下降指示灯,L6、L7、L8、L9为电梯外部按钮指示灯,L10、L11、L12为电梯内部按钮指示灯,UP、DOWN 为轿厢上升、下降指示,OPEN、 CLOSE 为轿厢开门、关门指示。
1.楼层指示灯:到达每层限位后让线圈得电,离开后灭。
2.电梯外部按钮指示灯:按下外部楼层按钮的时候置位线圈,到达限位开门关门后将线圈复位。
3.电梯内部按钮指示灯:和外部实现相同。
4.电梯上升下降指示灯:电梯上升下降时接上线圈,停止时灭掉。
5.开门关门指示灯:在开门关门线圈外再加指示灯就可以了。
1. 外部内部指示灯
2.上升下降指示灯
3.楼层指示灯
五、完整程序
1.主程序
每次上电的时候,都将所有的数组和线圈复位,这里用首次脉冲循环来触发。
2.fc块
1.初始化
2.外部内部呼叫按钮
3.上升下降
4.按钮指示灯
6.到达楼层
7.内部按钮多重控制
电梯1层:
电梯2层:
电梯3层:
8.外部按钮控制
外部1层:
外部3层:
9.开门关门
总结
以上就是本文的全部内容了,将这个3层模拟电梯整体过了一遍;从主程序一直到fc块,这里我所用的大多都是传送和比较指令,题目的思路不复杂,但是要把它们整体连接起来还是用难度的。这里用了很多fc块,然后主程序调用;感觉还有很多可以改进的地方的,比如内部按钮的多个控制还有外部的,和上面的控制要求。这里还是给一个整体的思路,具体编写要根据自身的方法;这里程序只做参考使用。如果程序或者思路有问题,可以说一下,交流一下;另外3层电梯不止只用这1种方法,只要能实现功能都可以!
【应用】1200PLC实现三层电梯模拟控制相关推荐
- 【SCL】for循环指令的应用三层电梯模拟控制
使用scl编写三层电梯模拟控制,并学习for循环指令的应用. 文章目录 目录 文章目录 前言 1.指令学习 2.循环传值 3.嵌套调用 4.冒泡排序 1.排序 2.优化 二.三层电梯模拟控制 1.控制 ...
- 【单片机毕业设计】【mcuclub-jj-002】基于单片机的三层电梯的设计
最近设计了一个项目基于单片机的三层电梯系统,与大家分享一下: 一.基本介绍 项目名:三层电梯 项目编号:mcuclub-jj-002 单片机类型:STC89C52 具体功能: 1.通过3个楼层键和两个 ...
- 基于单片机的三层电梯设计
设计简介: 本设计是基于单片机的三层电梯设计,主要实现以下功能: ①可实现通过内机按键和外机按键控制电梯到达楼层 ②可实现通过一个四相步进电机控制电梯升降,另一个四相步进电机控制电梯开关门 ③可实现通 ...
- 在plc中用c语言实现电梯控制程序,三菱FX2N PLC电梯运行控制程序设计
一. 项目所需设备.工具.材料 该项目训练所需设备根据学校实训条件,可以按照控制装置示意图制作模型或电梯模型.表17-1为采用实训模板所需设备.材料表. 表17-1实训所需设备.材料.工具表 二.项目 ...
- 数据结构电梯模拟 100梯1000层 不限梯数
电梯模拟 不限电梯数 不限楼层数 100梯1000层!源码见文末 电梯模拟 实验要求 设计思路 设计要求 设计实现 类和对象 模拟方法 有限状态机 电梯调度优化 综合 输出展示 源码 电梯模拟 实验要 ...
- 基于单片机的电梯(四层)控制系统设计
博主福利:100G+电子设计学习资源包! http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5 ...
- 你能帮我写出三层电梯的PLC程序吗
对不起,我不能为您编写完整的PLC程序,但我可以给您一些指导和建议. 控制三层电梯的PLC程序通常需要考虑以下因素: 电梯的运动:需要考虑电梯的上升和下降,以及当电梯停止在某一层时的处理. 按钮的操作 ...
- 交互系统的构建之(二)Linux下鼠标和键盘的模拟控制
交互系统的构建之(二)Linux下鼠标和键盘的模拟控制 zouxy09@qq.com http://blog.csdn.net/zouxy09 交互系统的构建之(一)http://blog.csdn. ...
- 三菱四节传送带控制梯形图_基于三菱FX—2N系列PLC的四节传送带模拟控制设计...
龙源期刊网 http://www.qikan.com.cn 基于三菱 FX - 2N 系列 PLC 的四节传送带 模拟控制设计 作者:侯芳 李子都 来源:<无线互联科技> 2018 年第 ...
最新文章
- 从零点五开始用Unity做半个2D战棋小游戏(八)
- 关于Chrome支持http header最大长度限制的讨论
- ThoughtWorks技术雷达专区
- Minimal Square CodeForces - 1360A(简单思维和图形判断)
- 计算机中管理用户数据的单位是,文件_操作系统管理用户数据的单位是______。...
- 尝试使用Bouml创建用例图
- 光阴似箭——绿巨人NVIDIA显卡发展简史回顾
- arm linux gcc交叉编译,arm-linux-gcc交叉编译器安装
- 苹果iOS苹果公司的手机用户都有权索赔
- 非科班研究生转码-零基础学java笔记总结复习(1)
- Nexus下载失败解决方案
- 天堂2私服架设技术教程
- 学习笔记——直流电机调速器
- Mac系统如何安装Eclipse并搭建Android开发环境
- Xposed框架原理深入研究
- 2000坐标系和WGS84的关系
- 卫星追踪利器 OpenATS简介
- 亲自动手从源码 构建 Groovy 2.3.8 发布包
- MAC中文版 FCPX V10.6.5 专属视频剪辑后期工具及其插件安装使用教程
- 利用stm32高级定时器的重复计数实现输出精确个数的pwm波