question

Mike avatar image
0 Likes"
Mike asked Felix Möhlmann commented

Repair Station unable to replace part


Hi,

I am having problems while I am trying to simulate a repair station where faulty part (parts) need to be removed and replaced with the good one. In the model, a pallet containing 4 numbers of boxes flow down along the conveyor. It stops at the station1, straightconveyor3 where operator will check and replace the faulty box from the pallet. The number of faulty part can be randomly vary from 1 to 3. I want operator will remove the random number of faulty part from the pallet then place all faulty parts (boxes) onto the queue2 and take the good parts from Queue1 and replace onto the pallet in same pattern of how 4 boxes are placed originally.

If there are more than 1 faulty boxes to be removed and replaced, operator should carry out the job one at a time. Remove one box and replace with one box and so on.

Could someone help me with this. Thanks a lot.


Part Replacement.fsm

repair-station.png


FlexSim 23.1.1
repair station unable to replace part
repair-station.png (346.2 KiB)
· 1
5 |100000

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

Mike avatar image Mike commented ·

Managed to remove one box from the pallet and replace one box but not into the original position.

So the things that I don't know how to do are

1. Random number of faulty boxes to be removed

2. Replace with the same number of good boxes from Queue1 into the original position onto the pallet.

Thanks a lot.

Part Replacement_Ver2.fsm

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

To randomize the number of replaced boxes I'd move the replacement operation into a subflow which gets run a random number of times.

The default stacking logic of the pallet places items based on the position of the item that entered previously. Apart from editing this logic, the simplest way of getting the positions correct is to move all items off the pallet and then back on.

With this in mind I first get an array of the items on the pallet. Then I decide which of those will be replaced. Currently the logic first determines the number of items that will be replaced (0 to 4) and then which ones that will be (both uniformly distributed). Instead you might replace each item with an individual probability or by some other random distribution.

As the items get replaced in the subflow I update the item array so I can use it to move all items off/onto the pallet at once.

part-replacement-ver2-fm.fsm


· 4
5 |100000

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

Mike avatar image Mike commented ·

Hi Mr. Felix,

Is "curRank" a keyword? what does it mean? Thanks a lot.

currank.png



0 Likes 0 ·
currank.png (20.2 KiB)
Felix Möhlmann avatar image Felix Möhlmann Mike commented ·
It is a label I write to the token in the Run Sub Flow activity. The main token has an array label that contains the ranks of the items that should be replaced, for example [1, 3, 4]. Each of the child tokens that run through the subflow is assigned one of these numbers as the curRank label. This then represents the index of the respective item inside the items array label. (For example 'token.items[3]' -> load the third item)
1 Like 1 ·
Mike avatar image Mike Felix Möhlmann commented ·
One more question please. How can I make item.subnodes[1] as an exception which never needs to be replaced? I mean that the first box is never needed to be replaced.
0 Likes 0 ·
Show more comments
Joerg Vogel avatar image
0 Likes"
Joerg Vogel answered Mike commented

Before I remove a faulty part , I would store the location of it in a label at the operator and set the replacing item location in Unload Event (Trigger). If you want to remove all faulty parts first, then you can store the location in an label array.

· 1
5 |100000

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

Mike avatar image Mike commented ·
@Joerg Vogel

One issue here is we cannot use the same operator for the job. We need to look for another available operator to cover the break if the first operator goes for break. If your proposed solution still work in this situation? If that so, would you mind to help me modify so that I can learn alternative solution? Thanks a lot. Joerg.

0 Likes 0 ·