Unfortunately, I cannot attach my model but I have tried to explain the problem as good as I can.
The parts from the source are generated randomly and I want to create lots from these 4 Line elements.
The lot size for blue and pink parts should be 6 units, and for green and orange be 4 units(Could not use Flow Control with sequence cyclical because I want to be able to change these sizes).
I tried to create observers for numMU for all the lines, but then all lines try to push parts to the SingleProc and the sequence is disturbed.
Then, I tried to create a pull control based on a counter, but got stuck.
Any help is appreciated.
P.S. I found a similar post, but it uses the flow control which doesn't help me.
Solved! Go to Solution.
You can monitor / control the
filling level / lot size per line through an exit method (source)
and open /close the line exit to release the lot to the singleProc.
I tried this method and works out well for the most part.
My current methods look like the following
Exit Control of Source:
@.move if Line.ExitLocked and Line1.ExitLocked and Line11.ExitLocked and Line111.ExitLocked if Line111.numMU > largeMotorLot Line111.ExitLocked := false elseif Line11.numMU > largeMotorLot Line11.ExitLocked := false elseif Line1.numMU > smallMotorLot Line1.ExitLocked := false elseif Line.numMU > smallMotorLot Line.ExitLocked := false end end
Exit Control of all Line elements:
@.move counter += 1 var currLotSize : integer switch ?.Name case "Line", "Line1" currLotSize := smallMotorLot -- 6 case "Line11", "Line111" currLotSize := largeMotorLot -- 4 end if counter = currLotSize waituntil @.Location = SingleProc ?.ExitLocked := true counter := 0 end
Can you suggest a way so that no consecutive lots are of the same type? That is, if a lot was taken from Line111, the next one shouldn't be taken from the same line, (unless nothing else is available).
P.S. : I am basically trying to create a Heijunka flow.
One way could be to wrap the if conditions of the exit control into a loop
for var i:=1 to l.dim
if L.numMU >= motorLot and L /= lastLine
if j > 0 then
L(j).ExitLocked := false
If none is found, then you have to check if the LastLine meets the >= motorLot condition