question

Guillaume V avatar image
1 Like"
Guillaume V asked Claire Krupp commented

[Process Flow] Delay respecting a time table.

Hello everyone, I write my question as I had very quick response last time I asked something:

I am creating a process flow that represents my manufacturing process.
I use delay operations to represent a process step.
I would like my delay operations to respect a timetable that I created so that the delay operations would stop during the night.

How would you do what I'm trying to achieve?

FlexSim 19.0.0
process flowflexsim 19.0.0time tabledelaytimetable
· 2
5 |100000

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

Eric M avatar image Eric M commented ·

Hi @Guillaume V, the "date time source" in process flow could be something you could try. This allows you to set a time schedule for when tokens are created meaning you could stop them at night. Would something like that work for what you're trying to do or am I misunderstanding in some way?

0 Likes 0 ·
Ben Wilson avatar image Ben Wilson ♦♦ commented ·

Hi @Guillaume V, was Allister Wilson's answer helpful? If so, please click the red "Accept" button at the bottom of their answer. Or if you still have questions, add a comment and we'll continue the conversation.

If we haven't heard back from you within 3 business days we'll auto-accept an answer, but you can always unaccept and comment back to reopen your question.

0 Likes 0 ·

1 Answer

Allister Wilson avatar image
1 Like"
Allister Wilson answered Claire Krupp commented

Here are 2 ways to do what you want.

The easier way: using a processor.

Add a processor to your model.
Attach it to the time table so it is stopped during the night.
Instead of using a delay in process flow, move the item into the processor then wait for its OnProcessFinish event.

If your delay times aren't all the same, you could write the desired time to a label on the item before moving it into the processor, the processor could then read that label in its Process Time field.

The harder way: using token preemption.

It's also possible to pause tokens and resume them later.

First, read the section on token preemption in the manual : Preemption.

To make things easier, you'll probably want a single Delay activity for all the different delays you want to be able to preempt, so use a single subflow which is run everywhere you currently have a Delay.
This is so you can easily get a list of all the tokens you want to preempt by looking at a single activity.

The logic is then :

  • detect the time table's OnDown event
  • get all the tokens in your single Delay activity
  • save their context
  • release them to an inert activity so they stop doing anything
  • wait for the time table's OnResume event
  • restore your tokens' context.

The structure would look something like this mockup :


1620809589318.png (37.6 KiB)
· 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.

Guillaume V avatar image Guillaume V commented ·

Hi @Allister Wilson thank you very much for your reply.

For the easier way, what if I have 3 processors where my object can go? (I have 3 identical cells where the task can be executed)
My "OnProcessFinish" requires a processor to be selected but I do not know which processor will be used for my object. It can be any of those 3 processors. How would you configure the "OnProcessFinish" so that regardless which processor is used, the token is able to continue my process flow as soon as the processor that has been selected finishes its process?

0 Likes 0 ·
Allister Wilson avatar image Allister Wilson Guillaume V commented ·

My previous suggestion would only require 1 processor, assuming your logic in process flow was already setup to limit the number of simultaneous operations using the resources you showed.

But to answer your question, it looks like your processors draw from a queue and then release to another queue. Why not just wait for the product to enter the queue instead of waiting for the processor to finish?

If for some reason that isn't viable, you can add the processors to a group and listen to the group's OnProcessFinish event.

0 Likes 0 ·
Claire Krupp avatar image Claire Krupp Allister Wilson commented ·

@Allister Wilson Thank you for the "easier" suggestion you gave here. I had Preemption of the tokens working OK in my model, but there were still some tokens getting through at the wrong times. When I switched to using a processor everything works SO much better! Brilliant!

0 Likes 0 ·