question

Craig DIckson avatar image
0 Likes"
Craig DIckson asked anthony.johnson edited

Power and free - how to determine if a dog is occupied

I am modeling a bomb-bay sorter, sort of like a tilt tray except the bottom drops out. Power and free works well for this. The one challenge I have is that the sorter can handle larger items that require 2 carriers. The "large items get even dogs" catch dog code almost works for this, except that

1. A large item can't get an even dog if there is already an item on the next (odd) dog

2. Once a large item is on an even dog, no item can get on the next (odd) dog

To do this I need a way to see whether or not the dog ahead of or behind the current dog is occupied -- or more generally to see the status of any dog at any time. Is there a way to do this directly, without writing lots of code to track every dog all the time?


FlexSim 22.1.1
power and free conveyorcatch dog
· 3
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Kari Payton avatar image Kari Payton commented ·
@Craig DIckson do you have an example model?
0 Likes 0 ·
Felix Möhlmann avatar image Felix Möhlmann commented ·
Could you provide some more details about how the items are fed to the conveyor. Because as I currently see it, isn't this more an issue of preventing larger items to enter the conveyor altogether instead of the catch condition?.

In which case, the entry spacing of the conveyor or some form of area restriction could be used.

0 Likes 0 ·
Craig DIckson avatar image Craig DIckson Felix Möhlmann commented ·

@Felix Möhlmann Here is a video of what I am modeling. Eurosort You will notice that some items cover both the near and far part of the sorter tray, while others cover only the front or the back. I modeled each half tray as one dog on the P&F, but then the larger items take up two dogs.

The alternative to having larger items "own" two dogs would be to let two smaller items own one dog. (note that the smaller items are sorted to different places).


0 Likes 0 ·
Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered Craig DIckson commented

So my assumption would be that the "large" items don't actually physically extend over the second dog, because in that case the entry spacing on the conveyor should not let them onto the conveyor anyway.

Currently I have two ideas how this could be modelled:

The first would be to indeed track which dog is carrying what type of item (none, small, large) and have the catch condition check the previous/next dog each time. If you connect the conveyors to a motor (which I would recommend anyway to use the "Sync dog positions" option, the total number of dogs in the system can be calculated by dividing the total length found in the motor's tree by the dog interval. Then have an array with that many entries, each one representing a dog. These two things are done in the reset trigger of the motor, which also holds the array on a label.

The catch condition on the conveyors can then reference the motor's label and check the adjacent dogs if necessary.

1651215323014.pngconveyor-dog-status-test.fsm

The second idea would be to use one dog per tray and fill the conveyor with carrier items that represent the trays. These would stay on the conveyor and items would be loaded into them instead of directly onto the conveyor. Loading would thus have to happen through decision points or stations. These would note when a carrier items arrives and could then check if it has space for the next item in a connected queue.

I haven't build an example model for the second idea, but I hope the concept is clear.

Edit:

Added example for system with carrier items (uses pallets because of their inherent placement logic)

conveyor-carrier-items-test.fsm


· 3
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Jason Lightfoot avatar image Jason Lightfoot ♦ commented ·
I tried the first option too, and found that if you have multiple entry points you can't guarantee a dog will be empty since the item can get shuffled to the next dog during the 'free' part of 'power and free' - corrupting you array/map. I would recommend the second of Felix's options.
0 Likes 0 ·
Felix Möhlmann avatar image Felix Möhlmann Jason Lightfoot ♦ commented ·
Since the modeled system doesn't actually utilize the "free" part, since it only uses the dogs to enforce item spacing, I believe setting the conveyor to be non-accumulating should fix this, since the items can then only enter the conveyor if they catch a dog.

At least in my test model that worked so far, although I haven't tested this extensively.

1 Like 1 ·
Craig DIckson avatar image Craig DIckson commented ·
Thanks @Felix Möhlmann You pretty much confirmed what I suspected. I was hoping to avoid either option, but your descriptions and samples will be very helpful. (Especially regarding using a motor to sync them - I had wrestled with getting the lengths just right.)
0 Likes 0 ·
anthony.johnson avatar image
0 Likes"
anthony.johnson answered anthony.johnson edited

Hey Craig,

I know I'm a little late to the punch here, but I've got a solution that I think will work here for a bomb bay sorter. It uses several different things together to get the needed functionality:

1. I made the conveyor non-accumulating. A non-accumulating conveyor with fixed interval movement won't let items onto the conveyor at all unless there is a dog to grab it. This prevents the standard chain bumping you get when you put an item onto a standard power-and-free.

2. Since I made the conveyor non-accumulating, any side transfers onto the conveyor must transfer the items onto it in 0 time or else the conveyor will be forced to stop while the item transfers on. So I went to the Transfer Type of any side transfers, and made it transfer in 0 time onto the conveyor.

3. I gave the conveyor a repeating dog interval sequence of 0.6, 0.01. This means you're going to have two dogs that are right close to each other.

4. I use the standard Large Items Get Even Dogs option. This means that "larger" items will always have to take the 'leading' dog of the two dogs that are close together.

5. I set the stop, moving and entry spacing on the conveyor to 0.02 * item size.

6. For each item, before it enters the conveyor, I set its conveyor forward size to be > 0.5 if I want it to take up two slots, i.e. be a 'large' item, and < 0.5 if I want it to take up only one slot.

7. As part of the dog catch condition, I store off the dog number. Then when the item enters (conveyor OnEntry) I translate it horizontally based on its dog num, so smaller items will be placed in the right spot.

The trick is that, if the item's forward size is > 0.5, then its stop/move/entry spacing will be > 0.01, which will take it over the next near dog so that next dog cannot catch anything. Unfortunately you have to fudge the conveyor-forward size of the item, while in real life it's the transverse size of the item that determines it. But if you need the conveyor-forward size of the item to be arbitrary visually, you can still mess with shape offsets, etc.

Hope this helps

BombBaySorter.fsm


bombbaysorter.fsm (40.1 KiB)
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.