do you think it is possible to simulate something in Visual Components with the standard warehouse component?
Maybe in connection with the Translational Axis?
The only important thing is the movement of the individual shelves.
Wow, exactly as I imagined it.
But I don’t think I would have come to this conclusion
How does the warehouse know that 3, 5 or 6 items need to be moved at once to clear the exact route?
Thank you so much
In the Feeder, I already choose in which stack the product is going to be transported, by assigning a number to the product as a Product Property (there is a Product Property Filter in the Stack’s processes). I then sent this Stack number as a signal.
On the other side, I have a process for each Translational Axis waiting for this signal. Instead of waiting for a specific value (“Condition”), they are storing the signal’s value and if it’s smaller than their stack number, they move. (That part could probably be quite easily integrated in a Python script to have fewer processes, but that was a quick try.)
The problem is that the Buffer statement is active from the start of the simulation, and once it’s active, it stays active until you stop the simulation. It means that when you press on Start, it will immediately start requesting products with the ResourceLocation already defined, and it’s not programmed so that it changes afterwards.
On one side, it happens that the ResourceLocation is already at the correct position, so that’s not a problem, on the other side, the position where the resource should be doesn’t match the ResourceLocation when you start the simulation.
Fortunately, there is an easy way to solve it without having to change the whole programm of this statement/component. And as I’m in a good mood, I’m going to share it!
→ As explained, the problem comes from the ProcessBuffer statement starting to request products from the start of the simulation. So we just want to wait until the rack is at the correct position to begin the ProcessBuffer statement.
For that you can either use a PropertyCondition statement, and wait for its TransationalAxis to be at the correct position (be aware that it awaits a Real value → 2500 won’t work, but 2500.0 will)
That’s just needed when the ResourceLocation isn’t correct at the begining, so in my example, for the racks 2, 4, 6 and 8.
Note that you can also attach these racks to the adjacent rack. That way you need less TranslationalAxis and less processes, as they will move together anyway.
thank you very much for the detailed answer, I now understand where the problem is.
However, I have the feeling that the start position is not reset for resource location on the 2nd run.
I have now added the property condiiton to all shelves 2 - 4 - 6 - 8 - 10, which are on the left side and therefore have a wrong start position, it looks better now, but it still doesn’t work perfectly.
I think the position would have to be updated every time, or have I done something else wrong.
It seems that the property “CurrentDistance” is reset when the simulation starts and not when the simulation is reset. That’s why it’s not always working. It would be possible to modify the script of this component to make it reset on the simulation reset, or to find another property to use.
Otherwise you can use the WaitSignal method. I forgot to take into account the time needed for the racks to move, so you might want to add a WaitSignal (for example when the TransationalAxis finished moving) or a Delay:
thank you very much, but it still doesn’t work 100% I think this has to do with the ProcessBuffer stopping and the WaitSignals not being retriggered.
Here is a screenshot.
Can you maybe share your file, then I can compare where the error could be.
I have done everything as described, including attaching the respective double racks to the Axis.