question

Adrian M avatar image
0 Likes"
Adrian M asked Adrian M commented

How to Load, Process, then Unload per each station?

Hello,

I'd like to have my operator load the object then unload the object onto the station and process the object. Once the object has been processed, I would like the same operator who loaded, processed, and unloaded the object onto the station to load the object and unload the object onto the queue.

All these steps need to be completed with the same operator:

1. Load

2. Unload

3. Use Processor and complete the Process Time defined (while being used the state needs to indicate processing and when it is not used the state needs to indicate idle or equivalent)

4. Load

5. Unload onto the queue

Operator Load Process and Unload.fsm

FlexSim 23.0.2
logicprocesstimeprocess
5 |100000

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

1 Answer

Regan Blackett avatar image
1 Like"
Regan Blackett answered Adrian M commented

If I am understanding the behavior you want correctly, I would treat the whole process of traveling, loading, unloading, and processing as one complete task sequence rather than trying to break it up into multiple task sequences as you are now. I think you can also do away with the List to keep track of your items, as the Batch activity can do that for you instead. This might help reduce some of the complexity.

Changes I would make:

  1. Uncheck the Processors’ Use Operator(s) check boxes. We can handle this part of the process in the Task Sequence created by Process Flow.
  2. Remove the List and all ‘Push to List’ activities from Process Flow and the Toolbox. No need to have the Queues or Processors do any Pushing, you could set ‘Send to Port’ properties to ‘First Available’ instead.
  3. Remove the Dispatcher object.
  4. In your Resource, set the ‘Reference’ to the Operators’ Group.
  5. In your Event Triggered Source set the ‘Operation’ column to ‘assign’ on the row for the ‘Entering Item’ and choose a label name, like ‘item’.
  6. In your Batch activity click the ‘+’ button under the label aggregation options, set the ‘From Label’ to the label assigned in the Event Triggered Source and set the ‘To Label’ to something else like ‘itemArray’. This will put a reference to the items carried by each token of the batch into an array on the token that results from the activity.
  7. In your Create TS activity, set the ‘Wait for Finish State’ to ‘utilize’ (optional, only if you need State data to be represented in a nice way for your outputs).
  8. In your Run Subflow activities, click the ‘+’ button at the bottom of its properties to add a label to the Child tokens. Call the label something like ‘Rank’ and then from the ‘Value’ drop down menu choose ‘creationRank’. This will preserve which child is which in the subflows.
  9. For your Load and Unload tasks use the expression ‘token.itemArray[token.Rank]’ for the ‘Item’ property. This will allow you to reference a unique item in the Array of items created by the Batch activity.
  10. Remove the all the ‘Finish TS’, ‘Release’, and ‘Acquire’ activities after the subflows.
  11. Remove the Batch activities going forward.
  12. I think you can also do away with the Queues between each processor, you may as well let the Operator take the items directly to the next Processor. Align your Task Sequence activities with Load/Unload destinations to do so.

Keep the ‘Finish TS’ and ‘Release’ activity after your last subflow, and that should be it.

This approach should work fine if the Processing time is meant to be for the whole of the Batch rather than individual flowitems. Remember that the Process time event will be evaluated for each individual flowitem that arrives, so if you put a distribution in for the Process Time, some of the timing of the Process Flow activities could be affected.

· 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.

Adrian M avatar image Adrian M commented ·

Regan, I followed your steps, but it didn't quite get me what I wanted. However, the instructions you provided gave me the guidance I needed to execute the model as I intended.

Here are a couple of things I did that was not in accordance with your steps:

1. I broke it up within multiple task sequences.

2. I kept the queues in place as I would like to know how long the items are waiting in queue for.

3. Implemented Acquire Resources and Release Resources in the areas where the operator was needed and where they can be released. Without this, the operator would remain stuck within the first task it was assigned to.

4. Not sure if the Travel was needed within the first process, but having them did not seem to affect the logic in anyway even when I did not have Travel in other processes.

This model and its logic will help me with implementing the same practice into a more complicated model I'm working on.

Thank you for your support.

Updated Operator Load Process and Unload.fsm

0 Likes 0 ·