Table - Advanced Transporter Connection

All topics specific to modeling questions in Enterprise Dynamics
Post Reply
TFVBST
Posts: 6
Joined: Monday 26 March, 2018 - 14:47

Table - Advanced Transporter Connection

Post by TFVBST »

Hello Forum,

As mentioned in another post of mine, I'm currently working on my thesis. I want to show the difference in picking time when the warehouse lay-out changes and when zone picking is introduced. I already did the theory work on this and I want the simulations to substantiate my findings.

I want to simulate 4 warehouses with these restrictions:
The advanced transporter is able to transport 1 item at once, an order can consist of multiple items. I want to use the same Pick Order list for each alternative in order to be able to compare the changes in picking time. I want 2 advanced transporters to go through the Pick Order list.

I want to simulate the following:

1) a current situation (so I'm able to compare)
2) situation 1: Warehouse racks are rotated 90 degrees (reducing traveling distance)
3) situation 2: current situation with 2 pick zones (1 advanced transporter is responsible for 1 zone, a 3rd employee is combining the Picking orders from the different zones)
4) situation 3: rotated warehouse racks (situation 1) with 2 pick zones (1 advanced transporter is responsible for 1 zone, a 3rd employee is combining the Picking orders from the different zones (if necessary))

After going through the available posts on the forum, I found a model that is basically doing what I would like to see for my model, for at least the current situation and situation 1 (but only uses 1 advanced transporter):

viewtopic.php?f=7&t=769&hilit=modelling ... ion+centre

I have very little ED experience. I went through the tutorial and the first start in 4DScript in order to make sense of the code used in the example I found. This did not help.

What I don't understand (among other things :?) is how the Table or "Picklist" (in the model I found) communicates with the transporter, so the transporter knows what Order to work through and where to go in the warehouse.

I hope the forum can help me.

Kind regards,

Tim
User avatar
HarryBunnik
Posts: 362
Joined: Monday 07 February, 2011 - 11:22

Re: Table - Advanced Transporter Connection

Post by HarryBunnik »

Ha Tim,

In case of the model you linked to, the AT is called when a certain amount of products are created by the source (based on the order table). This code is standing on the "trigger on exit".

On the initialize atom, global references are created which allows us to be able to easily refer to the AT throughout the model (since you want in the end 2 AT's, you'll need 2 global references and 2 links from the initialize atom to the central channel (or information channel) of the AT's. Also, the destination is defined here.

The number of products the AT has to pick is defined on the Trigger on Entry, where a check is done based on the information in the Order table.

On the On Exit Trigger is then the code standing that is defining the behaviour of the AT when unloading the products.

I hope this gives you some handles.

Regards,

Harry
TFVBST
Posts: 6
Joined: Monday 26 March, 2018 - 14:47

Re: Table - Advanced Transporter Connection

Post by TFVBST »

Hello Harry,

Thanks for your response and your explaination regarding the triggers. I've been analyzing them in order to understand the working of the model, and I think I get what you are saying.

What I don't understand, and is basically my main problem, is how to refer to the table (Orders) and the different columns in the model I've linked in my post.

The code in the "trigger on exit" of the source for example. It says here:

Code: Select all

do( dim([Komm_auftrag], vbvalue, cell(Komm_Row,1,refOrders)), CreateEvent ...
The Komm_auftrag and Komm_Row references are custom for this specific model, I believe.

How do I create my own references, for my own tables? I can't seem to find the creations of these labels/references in the "example" model I've linked.

Kind regards,

Tim
User avatar
HarryBunnik
Posts: 362
Joined: Monday 07 February, 2011 - 11:22

Re: Table - Advanced Transporter Connection

Post by HarryBunnik »

Ha Tim,

Making a reference to a table is relatively easy since you can check the box that you want to create an "alias". That is then automatically creating a reference (a concatenation starting with "ref" and than the name of your table) that you can use throughout your model.

In other cases than a table, you'll have to create a global variable on the initialize and link that (using a channel connection which is connected to the central channel). An example of this you can find in the model we talked about earlier.

This is indeed something similar to what you've spotted in the code that you've copied.

Here the "Dim" is the code needed to create a global variable, in this case the "Komm_auftrag" (of the type vbValue, instead of vbAtom which you have to use when you're refering to an atom), which is then filled with the value coming from "cell(Komm_row, 1, refOrders)".

in this code the refOrders is the alias or global reference of the table named Orders. (You could make the remark that creating the global variable here, is not the best location. Better would be to create it on the initialize atom and only update it at this trigger).

Regards,

Harry
TFVBST
Posts: 6
Joined: Monday 26 March, 2018 - 14:47

Re: Table - Advanced Transporter Connection

Post by TFVBST »

Hello Harry,

Thanks for your quick response.

I have a few more questions regarding my simulations.

1) I'm trying to use the offset functions on the AT. But I cannot get it to work.

Code: Select all

label([column],c {or i})
or

Code: Select all

label([column],in(2 {or 3} ,c))
Does not seem to work or result in any differences in my simulations. Is this function even usable without not disabeling the "load automatically" function on the AT?

2) Is there a way to disable columns/rows/cells in the table of a Warehouse atom? So that products do not get placed there?

Kind regards,

Tim
User avatar
HarryBunnik
Posts: 362
Joined: Monday 07 February, 2011 - 11:22

Re: Table - Advanced Transporter Connection

Post by HarryBunnik »

Hello Tim,

1) At which point are you placing the labels on the product? Because to make this work, these labels need to be there. If you look at the example model (Transport\AdvancedTransporter PickAndPlace1.mod) you can see that on the On Exit Trigger of the Source there some code written that places on each product (i = involved atom, in this case, the product leaving the source which is causing the exit trigger to be triggered).

2) When you are using labels to place the products in the correct place, you need to take that into account at that position. This is also done in this example.

What you perhaps can do is create a table, corresponding in size to your warehouse. Here you can indicate, using a -1 one if the value you have assigned is not available. If that is the case you have to re-assign the product, using a different (random?) location.

Also, you can use such a table to indicate that certain sections of the rack are reserved for a specific product (indicating an ID) and use that to further pinpoint your product placement.

Regards,

Harry
TFVBST
Posts: 6
Joined: Monday 26 March, 2018 - 14:47

Re: Table - Advanced Transporter Connection

Post by TFVBST »

Dear Harry,

Thanks for your help so far.

I'm still having troubles getting the offset on the AT to work. I've added a simple model.

On creation of the products (source exit) I'm assigining a [column] label. In the offset (x) tab of the AT I'm referring to this label. But it does not work.

What am I doing wrong? I really don't know.

Tim
Attachments
Offset test.mod
(43.78 KiB) Downloaded 189 times
User avatar
HarryBunnik
Posts: 362
Joined: Monday 07 February, 2011 - 11:22

Re: Table - Advanced Transporter Connection

Post by HarryBunnik »

Ha Tim,

You have to try to read the label that defines the offset from the product. And you are doing that by placing the code: label([column],in(2,c)) on the Advanced Transporter(AT).

But if you look at the channels of the AT (Press Ctrl+R to show the channels and then right-click on any of the channels (Red circles or the central yellow circle) you get an overview of the channels and how they are connected) you can see that In(2, c) is referring to the Warehouse (At the moment the AT is in Pick-Up modus, when it is bringing away products it is connected with its drop off point (Sink in your case).

And you want to refer to the product (since that is where the label is). Since you're always picking up the first product in the warehouse, you want to refer to the product. So that would be:

First(in(2,c))

So label([column],in(2,c)) turns into => label([column],First(in(2,c)))

and then I think you're done.

Good luck!

Harry
Post Reply