What is the best way to prepare a machine for a specific MU at the beginning of the simulation?
I have already looked through the examples but couldn´t find something suitable for my needs.
Every MU has different setup-times but the machines are already setup for the first incoming MU.
I tried to simply set the setup time to 0 with this code:
is strName:String; do strName := @.Name; if ?.statWorkingTime < 60 then ?.SetupTime := 0; -- ?.isSetupFor := TableFile[3,1]; ?.procTime := ~.MUs["ProcTime",strName]; elseif ?.statWorkingTime >= 60 then ?.procTime := ~.MUs["ProcTime",strName]; ?.SetupTime := ~.Mus["SetupTime",strName]; end; end;
But of course this doesn´t setup the machine for the next entity of the same MU.
SingleProc.isSetupfor can´t be changed as far as I see.
So I think I´m completely wrong with this approach.
How else could I solve this problem?
Solved! Go to Solution.
you can use the method 'setupFor' to set up the machine for a specific MU.
You can also set the setup time to formula and then enter your code in the setup time field.
Another option you might want to consider is the setup only when empty option.
Maybe it was too late yesterday and it is too early today, but I don´t seem to get it.
Very sorry to ask again.
Basically my goal is to avoid the machine waiting time at the beginning of the simulation.
The first entity of the first MU is working but all other entities of the same MU shouldn´t call for
the worker to set the machine up.
This is what I tried and failed:
- Setup only when empty
- After 10 parts before next part
The sequence of the MUs is about to change, so I need a generic solution that simply avoids setup times for the very first 'order' at the machine
In this case the orders with the delivery time = 0
The problem might be that setupFor doesn't do a setup if setup time if 0, because this means that there is not setup needed.
So you can set it to a very small number. If you don't want the worker to appear just turn importers off before using setupFor and turn it on again afterwards.
Also be aware that if you turn on setup after x parts, this will be done even when the part type doesn't change. It's not clear to me if you want to have this behavior.
Thank you. Looks like that was the problem.
For future reference, this code seems to work for now:
is strName:String; do strName := @.Name; if ?.statWorkingTime < 60 then ?.ImporterActive := false; ?.SetupTime := 1; ?.SetupFor(@); ?.procTime := ~.MUs["ProcTime",strName]; elseif ?.statWorkingTime >= 60 then ?.ImporterActive := true; ?.procTime := ~.MUs["ProcTime",strName]; ?.SetupTime := ~.Mus["SetupTime",strName]; end; end;