Thanks @araujopaulo. I will try it out.
I set an attribute booked to control if the station is empty or not. It seems to work, but now I don't know why the worker takes only one part of the batch of Station 6. Later the whole batch.
The exit control checks for each part if the RemainingTime is less than the threshold. It's always true, only at the end it changes and the worker is taking one part. The rest of the batch rests in the station. See my attached model. Any idea?
Why are you using a user attribute instead of <OBJECT>.empty? Any special reason?
The logic works for Stations and ParallelProcs, take a look at the attached model (Frame_ExitControl_ParallelProc). You have different processing times in your Station6, perhaps your Dwell Time is not sufficient to hold the worker there until the next parts are ready to leave. Trying to find the "correct" value would be tricky. You may perform some studies to get a reasonable value. For example, I have this case:
So, if I set a high dwell time, it will work. If I set a low or zero dwell time, it will work as well. But, which case would be better? Or, which case fits your requirement (batch size)? Let's observe the attribute StatAvgExitInterval of the Drain with an ExperimentManager. Running 100 experiments we will have an idea of a time that would work as our dwell time.
This is a simple case, of course, you would have different things interfering in your process. If I want the worker to carry 4 parts at once, my dwell time should be at least 1min21 * 4. However, this situation would not guarantee that your worker will carry 4 parts. Therefore, you need to control it using methods to broker your worker manually. It is not difficult, but you will need some extra lines of code.
Your logic would get a bit complex. For example, your worker should wait for 6 parts, let's say that your dwell time is 10:00. Then, you already have 4 parts but there are only 2 minutes to the end of the shift, what should the worker do? Delivery the 4 parts? wait until the 6th parts even if the shift is done? It is nice to have all these details before modeling because you may save developing time.
Anyway, try to test different dwell times to check if this is the problem. I've tried to run your model but a got an error about MU destination. Also, it is possible to set a formula to the dwell time, perhaps it would help you in some way.
Hi @araujopaulo ,
thank you really much for your explanations and your model. It helps me to understand the system much more better.
I tried different dwell times, but that didn't change the situation.
I put the booked attribute, because it was easier for me to change the status of the station after the parts left. Thats also the reason why the error appears. If all parts are on the station the station is booked, than the first part moves to NextStation and Station 6 gets booked = false.
In reality all parts are processed in the same time (total proc time 7:52:00), that means if the shift ends the worker should stop working and not wait. If I would do it more complex I could say he should wait if there are only 5 min left and then move them. But maybe it's better to take the easiest solution.
I also tried to use a for loop, but then I get a problem to find the nextStation because everytime the method runs it counts 1 plus (Schritt). This attribute is used to find the nextStation in the working schedule.
I think the problem is, that the method which checks the status of the shift/pause is called for every part and maybe it should only be called after all parts are processed or for the whole batch and not for every single part.
I hope you got what I mean ;-
Another idea for you if I understand correctly your situation. If:
In reality all parts are processed in the same time (total proc time 7:52:00)
You would simplify your model to use the same logic. Inside the parallelstation a single part could represent an entire batch. Also, if you need the units after this process you can create them when the main part arrives at the worker. For example, I am using a new worker with an Empty observer in this new example. The capacity of the worker is changed dynamically to guarantee that the worker will only carry a single batch per travel. There is a user attribute called batch in the Entity object.
sorry for answering so late, but I haven't been working for a few days. I tried your idea but it didn't work. I also recognized, that if the parts enter station 6, it is only written, that the station is set up for one part (s. picture). Maybe thats why he only takes one part??? Or isn't there any other possibility to call the Exit control for the whole batch? The next problem is that I can't open the buffer of station 5 anymore, because I also have to modify station 5, so that it runs with the sam logic of the exit control, but it's not so important at the moment.
I tried your idea but it didn't work.
What didn't work?
I also recognized, that if the parts enter station 6, it is only written, that the station is set up for one part (s. picture).
That will be a limitation of the ParallelProc to your situation. Although it has a lot of places, setup will occur to the entire station. You won't treat the setup time individually to its positions. If this factor is crucial for you, I guess you will need to find another way to model it.
Maybe thats why he only takes one part??? Or isn't there any other possibility to call the Exit control for the whole batch?
I would guess that this is not the problem. The exit control will be triggered by any part that tries to leave the station. In the last idea, one part represented a whole batch. Therefore, the triggering of the method was fine.
I think you will need to rethink your model as you have tried different approaches with no success. Unfortunately, that is quite normal to happen.
@araujopaulo thanks for your advices. I think I will try out some oppotunities and rethink my model.
What didn't work?
The same problem as before, the worker only took one part. And I also add to stopuntil the worker isn't unplanned, but then the same problem, he takes one part, and after he moved the first part, he takes the whole batch.
Thank you for you help !!!!