DGT:一起来探索Plant Simulation奥秘吧
为了实现立体仓库的客户化应用。 Plant Simulation中为我们的用户提供了一个免费的HBW(High Bay Warehouse)高架货物立体仓库,用于模拟我们工厂中的常用的物流仓储设施。我们需要通过在库管理界面中勾选HBW这个标准库对象来启用它。
这个库对象一共有三个组件,分别对应巷道堆垛机及仓库,库位寻址控制及WMS(Warehouse ManagementSystem)库管系统,如图,这三个是需要成套使用的,即每个库组件都需要拖一个到你的建模窗口以实现对立体仓库的调用。
不过,既然是免费的,那么其功能就会受到一定的限制。在库管理的界面下,仅仅实现了一些非常简单的入库及出库策略。
那么在我们实际使用的过程中,如果对于一个库管理有比较复杂的逻辑,我们如何去实现呢?有人说:"我们都是自己重新做一个立体仓库来实现的"。"世界是懒人创造的",为了尽量利用已有的成果,做了一些研究,接下来为你揭秘。
首先我们来看看在这个物料进入立体仓库的过程中究竟发生了什么事情。建一个如下图的立体仓库模型,保证它能够正确运行。你会看到物料是按照系统默认的策略在仓库里面摆放,经过一段时间,物料会自动从库中出来,整个过程,WMS在后台帮你进行了堆垛机的调度和控制。
关键的控制信息就在于功能界面那个绿色的M(用户化程序),名叫userSetTarget,是它实现了对物料存储的调度。在这个里面我们可以自定义编写程序,接下来我们打开来看看里面有什么。里面只有一句程序,root.WMS.placeIntoStock,让WMS决定,将一个物料放入到立体仓库里面去。那我们要进行个性化改造,就可以从这里入手了。
来看看placeIntoStock是如何工作的,按住alt键,双击WMS,居然打开了WMS,这里面的设置完全地向你敞开,没加密,全可见,全可改!
那么我们找到placeIntoStock,有这么一句程序
这个就是我们需要的控制了,Racklane是哪个巷道,Side是哪一边,Column是哪一列,Row是哪一行,只需要改成你要的就可以了。如果你还想写个WMS的控制算法,那就将getFreePlace重写好了。