factoryio虚拟工厂之智能仓储(完整)

本篇文章承接上文(factoryio虚拟工厂之智能仓储(简易版))链接:http://t.csdn.cn/j8ehE


前言

在上文中我们编写了智能仓储的一部分(只能运送少个料),本文我们将智能仓储功能完成并完善。


一、数组下标

我们在之前编写程序时,曾创建数据块(DB1)用来存放x轴和z轴的起始值,例如第一个x轴起始值1.42,第一个z轴起始值是0.7,然后第二个x,z,第三个....以此类推,直到所有的起始值。

编写时也是按照这个来写的,但是程序量过于大,并且不好实现。

其实前面编写时就可以发现,放料过程主要就是x,z轴起始值的传入,仓库的第一个放料位置就是第一个x,z起始值,第二个放料位置就是第二个起始值,每一个数组下标不可变。

那么我们只需要将数组的下标变成一个变量,然后每次加一,问题就迎刃而解!

如图:这里应该都可以理解了! 

 


二、程序的修改

1.fc1(传送带部分)

当上图理解了之后,那么程序就简单了许多!程序只要稍加修改就可以了!

 如图在这里,画圈的位置做了修改其他地方不变。上面初始化对x,z轴变量进行复位,当左气叉伸出到位时,使x轴变量递增加1,为后面托盘定位做准备!

 

2.fc2(码垛部分)

在这里划线的地方做出了修改,主要是将固定的数组下标改为变量,x轴变量每次递增加1,就会找到相对应的数组下标的起始值。进行定位。

 在右伸出气叉的缩回部分是定时器定时来完成(之前是固定的下标值),因为数组下标是变量,所以使用定时器来完成。

在后面回原点部分也是使用的定时器来完成归零。

3.目前效果

如图:目前来看,程序可以完成第一排的装料工作,但当第9个料装完回到原点之后,因为没有另一排的坐标,托盘到这就无法再装料了。为了继续工作,这里我们要给他更新坐标。 

 

4.更新变量值

目前来看,当第一排排完后,x变量从1递增到9,回到原点后是10,所以我们可以用x变量的值来当条件。当x变量大于9的时候,代表仓库的一排已经完成,要进行下一排的装料了。

那么我们将x变量传成1(继续递增,让他进行第二排),z变量进行递增加1(上升到第2排的高度),进行装料。 


三.程序完善 

1.对变量更新 

 

2.仓库装满后停止 

这里要清楚,托盘取料放料主要是根据料到位的信号来完成的,当6排完成后,我们将传送带断掉就可以停止了。 

 


四.完整效果和程序以及故障

1.效果:

 

2.完整程序:

 FC1(传送带部分)

程序如下:

FC2(码垛部分) 

代码如下:

 3.出现的故障

1.当运送到第5排第7个放料位时,托盘在0.7高度左伸出气叉,并且没有将料托起(然后手动强制,才继续运行) 。

2.当运送完成后,托盘应回到原点位置(这里没有回到原点)。


 

 五.注意事项!!!

 1.打开智能仓储场景后,周围的围栏和控制柜先去掉,防止遮挡视角。

 2.在编写时要注意,变量(i/o)要一致。

 3.如果程序错误,压缩小范围去查找。

 4.在factorio测试效果的时候要断电再通电!(试验前先stop,然后run,再进行测试)

主要是程序中有sr(置位复位)指令,防止一直带电。

 5.在运行时,最好一直在打开状态,不要最小化!(因为一旦不看,总是冒出一些奇怪的问题,比如突然不动了)

 

 


总结

以上就是今天的内容:智能仓储(完整版)!

这里还有一些小问题,从效果图可以看出,但具体的完成思路是好的,程序只做参考,具体还是要根据自己想法和思路来写!

目前这些问题我还没有解决办法,如果有好的方法可以在评论区说一下。

感谢!

  • 5
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

'...

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

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

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

打赏作者

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

抵扣说明:

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

余额充值