使用西门子仿真和factoryio(虚拟工厂)进行连接,编写智能仓储程序,使其能够自动上料摆放在仓储位置。
文章目录
目录
前言
为了更好的学习PLC(这里以1200为例),在本文主要讲解一下factoryio(虚拟工厂)中的应用场景——智能仓储。
这里将博途v16和factoryio仿真连接运行,是简易版的智能仓储以及思路!
一、思路
如图所示,这是智能仓储的场景:
大致分为3部分,1.传送带,在这里主要将料通过传送带送至前方为气叉搬运做准备;2.气叉部分,这里主要将料抬起,按照指定的位置放置料;3.仓储部分,料存放的位置。
左侧是智能仓储大概的I/0变量,在文件驱动部分分配好。
二、完成效果
这里效果是简易版并不完整(可以运两个料),提供的主要是一个思路,后面还需要改进。
三.实现传送带功能 (fc1)
1.传送带部分
在这一部分主要实现传送带上料,但是当有料到达前面传感器位置时,要及时停下,等待气叉搬运,搬运起来后继续上料到前面位置。
看图:
在上料位置有一个传感器,中间是传送带电机,最前面还有一个传感器。
2.传送带程序
根据上面的大致要求,可以写出相应的程序,
如下:
对应的传送带效果:
3.讲解
在这一部分,根据上图(程序)要注意,这里放料传感器是npn型,所以这里用常闭。另外要注意这里使用sr置位然后计时5s,在这期间第一个传送带运行,当过了2s以后,第二个传送带运行,将料运至前面,当到达前面限位(传感器)传送带1,2停止运行,传送带部分完成。
四.实现气叉运料
1.气叉部分
如图可以看到,气叉部分主要有两个伸出气叉,和两个伸出气叉到位,以及一个原点位置。
2.气叉程序
根据上图要求,写出相应程序
如下:
3.效果图
可以将料托起然后上升回到原点
4.讲解
在第二步,气叉部分,接收一个料到位传感器信号,然后以这个信号接一个sr(置位复位)来控制气叉左伸出。那么如何将料抬起来呢!这里要知道仓储有x轴和y轴,x轴控制托盘的移动,z轴控制托盘的上升和下降。这里当左气叉伸出到位后,用一个上升沿来进行一个加法运算,z轴坐标标志(实际值)加上0.7(上升的高度),然后给z轴坐标(设定值)。上升到0.7高度之后,再以x轴坐标标志(实际值)和z轴坐标标志(实际值)为信号来控制气叉的缩回。
但是当运行后我们发现z轴坐标标志(实际值)到不了0.7这个高度值,而是0.69946左右,这就导致条件不满足,气叉无法缩回。所以我们要将实际值进行转换,使他取整,来达到预期值(0.7)
在第二步程序部分就将z轴实际值进行转换,先乘100——取整变成70——将数值整型变为浮点型——再除100——得到0.7。 相同的原理,x轴的实际值也进行转换。
五.实现码垛部分 (fc2)
1.码垛部分
如图所示,这是存放料的地方,一共有6×9个位置。
2.码垛程序
这里码垛程序主要实现定位,将料运送至指定位置(这里程序只能运一个料)
另外我们需要在fc1中写一个上电初始化 ,保证程序重新开始!
初始化:
放置一个料程序:如图
3.效果图
4.讲解
在fc1中,我们完成了传送带的上料部分和 气叉抬起料到原点部分。这里着重说一下如何将料放置货架位置上,首先每个货架位都是一个坐标,只要输入相应的坐标值,托盘就能运送到相应的位置。然后新建一个数据块(DB),用来存放每个货架的坐标。在建数据块时要将数据块的优化关掉,编译出现偏移量,在后面起始值填入相应的数值就OK了!
如图:
在DB存入相应的坐标后,下面就在fc2中接着前面的写,当x轴z轴分别是0.0和0.7时,左伸出气叉收回,根据程序我们使用这两个条件,气叉缩回后传入第一个x轴z轴的坐标进行定位。
当气叉回到原点后将mw100加1,当mw100=1时,将第一个x 轴坐标和z轴坐标的坐标值传到x轴和z轴的设定值中,然后让托盘运行到相应位置,当到位后,右气叉伸出,用伸出到位信号让托盘下降,将料放上去,这里是将z轴实际值减0.3放入设定值内。
放好料之后,用当前x轴z轴位置复位右伸出气叉,使其缩回,缩回之后延时1~2s让气叉回到原点,最后将x,z轴设定值传送变成0,托盘回到原点。
六.整体程序(简易版)
FC_1(传送带部分) ,程序如下:
FC_2(码垛部分),程序如下:
总结
到这里,智能仓储(简易)就写完了!整体的思路还是比较清晰地,不管写什么重要的是思路。这里功能并没用完全实现,每个坐标的位置都要写。如果按照这里的把功能写完整,程序量非常的大,所以本文只是一个思路和方向。
如果要实现完整功能,让数组下标可变,不再用固定的数组下标,那么程序就可以完美运行并且会简洁很多,在后面我会写出来!
就目前来看,功能还有许多地方需要完善和改进!