factoryio虚拟工厂之智能仓储(简易)

使用西门子仿真和factoryio(虚拟工厂)进行连接,编写智能仓储程序,使其能够自动上料摆放在仓储位置。


前言

为了更好的学习PLC(这里以1200为例),在本文主要讲解一下factoryio(虚拟工厂)中的应用场景——智能仓储。

这里将博途v16和factoryio仿真连接运行,是简易版的智能仓储以及思路!


一、思路

如图所示,这是智能仓储的场景:

大致分为3部分,1.传送带,在这里主要将料通过传送带送至前方为气叉搬运做准备;2.气叉部分,这里主要将料抬起,按照指定的位置放置料;3.仓储部分,料存放的位置。

左侧是智能仓储大概的I/0变量,在文件驱动部分分配好。

 


二、完成效果

 这里效果是简易版并不完整(可以运两个料),提供的主要是一个思路,后面还需要改进。

9ed22f8242d74d54b574b589575cf47b.gif


三.实现传送带功能 (fc1)

 1.传送带部分

 在这一部分主要实现传送带上料,但是当有料到达前面传感器位置时,要及时停下,等待气叉搬运,搬运起来后继续上料到前面位置。

看图:735c8ad9204a405d967ec04904072276.jpg

 在上料位置有一个传感器,中间是传送带电机,最前面还有一个传感器。

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(码垛部分),程序如下:


总结

到这里,智能仓储(简易)就写完了!整体的思路还是比较清晰地,不管写什么重要的是思路。这里功能并没用完全实现,每个坐标的位置都要写。如果按照这里的把功能写完整,程序量非常的大,所以本文只是一个思路和方向。

如果要实现完整功能,让数组下标可变,不再用固定的数组下标,那么程序就可以完美运行并且会简洁很多,在后面我会写出来!

就目前来看,功能还有许多地方需要完善和改进!
 

  • 19
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

'...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值