Cancel
Showing results for 
Search instead for 
Did you mean: 

Kanban-System

Pioneer
Pioneer

Hello, 

 

I would like to implement the following Kanban-System in my simulation. 

Kanban.PNG

 

I looked into the Kanban-Tools from Plant Simulation, but I'm not so sure about them as I can't see their codes. 

 

The logic basically is that when ParallelProc 1 pulls MUs from the supermarket, kanbans cards tell the transporter 3 ( respectively a buffer to simplify it) to pull the same amount of MUs from the supermarket 2.

 

Does anyone have any ideas to help me to get started?

 

Thank you,

David 

 

 

 

22 REPLIES

Re: Kanban-System

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor
to get started look e.g. here:
http://www.bangsow.de/detail_en.php?id=722
Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Kanban-System

Pioneer
Pioneer

Hello Steffen,

 

Thank you, I looked into it.

I think I partly got it and can make use of it in my case, namely using a similar code in the exit control of the supermarket/buffer to create kanban cards. It should have the same effect as if kanban cards get triggered by the pull control of SingleProc 1, shouldn't it?

 

However, I have a couple of questions to see if I understood your simulation correctly:

1.)How does the table cl look like? Do you get the information "partName" from there or where does it come from? (c.p. code of the "init" method)

2.)Source.OnExit (see annotations in the code)

 

is
	part:string;
	found:boolean;
	bin:object;
	cl:table;
do
	cl.create;
	finalStorage.contentsList(cl);

1.) Do you create Kanban orders based on the table sequence?
--create KANBAN orders sequNumber:=sequNumber+1; part:=sequence[1,sequNumber];

2.) Once you created an order (source --> drain), do you want to check for the part in your storage first? Thus,
if you find it a Kanban card gets removed from the bin and moved to the kanbanBuffer?
What if I don't want to move the bin/part, but would like to let the next SingleProc pull that part instead?
--look for the part in the bins in the finalStorage cl.setCursor(1,1); found:=cl.findAttr("partName",part); if found then bin:=cl[cl.cursorX,1]; --remove the KANBAN bin.pe(1,1).cont.move(kanbanBuffer); --move the bin to the drain bin.move(PartDrain); --update the inventory inventory[1,part]:=inventory[1,part]-1; else debug; end; end;

 

My problem is that I don't want to move/push the bin, but let the next SingleProc in line pull the bin/MU.

Would you be son kind to help me with that?

 

Thank you!
Regards,

David

Re: Kanban-System

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

the easiest way in this case would be to create one MU on the singleProc at the sart of the simulation (init-method); you should also create a certain fill-level in the buffers.

You can use the exitcontrol rear to pull the next part from the buffer. Here you can also separate the Kanban from the part.

 

 

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Kanban-System

Pioneer
Pioneer

Hello Steffen,

 

Unfortunately, I get an error each time I try to implement your example of the Kanban system in my model.

The example works fine though.

 

fehler_unbekannter bezeichner.PNG

 

I use Plant Simulation version 12 (research license). 

Do you have any idea why it isn't working? 

 

Thank you,
David

Re: Kanban-System

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor
have a closer look into my example (user defined attributes of the elements), you need to define an user defined attribute "partName" (string) in the bin class
Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Kanban-System

Pioneer
Pioneer

Thank you.

I indeed missed that part.

 

Nonetheless, I run into another problem now which I don't know how to solve at this moment.

fehler2.PNG

 

I also attached my version of it. Thank you for your help!
David

 

Re: Kanban-System

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor
there is not enough capacity in your buffers e.g. Supermarkt_barbeitung , the creation Fails and so the variables becomes void; increase the capacity, so that the inittial stock fits in
Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Kanban-System

Pioneer
Pioneer

I could have thought of that. Thank you.

 

Nevertheless, I run into a new problem, because I also use a pull-control.

At first, everything works as it's supposed to be. But after the first parts were pulled and moved to the Kanban_Puffer, an error occurs due to the "Bearbeitung" pulling another MU.

 

The problem could also occur because when the Kanban is removed in the exit control, it tries to do it at the same bin every time (*.BEs.bin:2)

 

void.PNG

 

I hope it makes sense what I tried to explain. However, I also attached the model.

Thank you

Re: Kanban-System

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

your init-method is wrong, the bins in the production-buffer are empty

try this as init-method

is
	i,k:integer;
	bin,part:object;
	kanban:object;
do
	--create filled bins in the finalStorage
	--reserve the place 1,1 for the kanban card --> pe
	for i:=1 to initialInventory.yDim loop
		--create Bins
		for k:=1 to initialInventory[1,i] loop
			bin:=.Bes.bin.create(Supermarkt_Bearbeitung);			
			bin.xDim:=data[4,initialInventory[0,i]]+1;
			bin.partName:=initialInventory[0,i];
			--first create the kanbancard
			kanban:=.BEs.Kanban.create(bin);
			kanban.partName:=initialInventory[0,i];
			kanban.quantity:=data[4,initialInventory[0,i]];
			while bin.full=false loop
				.BEs.extendPath(initialInventory[0,i]).create(bin);
			end;
			
			bin:=.Bes.bin.create(Supermarkt_Montage);
			bin.xDim:=data[4,initialInventory[0,i]]+1;
			bin.partName:=initialInventory[0,i];
			--first create the kanbancard
			kanban:=.BEs.Kanban.create(bin);
			kanban.partName:=initialInventory[0,i];
			kanban.quantity:=data[4,initialInventory[0,i]];
			while bin.full=false loop
				.BEs.extendPath(initialInventory[0,i]).create(bin);
			end;
			
		next;
		--actualize the inventory table of the warehouse
		Bestand[1,initialInventory[0,i]]:=initialInventory[1,i];
		
	next;
	
end;

in your exit-control (rear) Supermarkt-montage  you need only to remove the kanban-cards from the bins:

 

 

@.pe(1,1).cont.move(Kanban_Puffer2); 

 

to use a pull control in bearbeitung is absolutely wrong. The production should be triggered by the kanban cards in kanban-buffer2 (no cards, no production!!). If there is a kanban card, wait for free capacity, move one bin in direction bearbeitung; you need to change in this case the kanban cards: send the kanban card from the bin to Kanban_buffer1 and move the card from Kanban_puffer2 to the bin (you need it later again). All this you should do in the exit control of kanban_buffer2 (so you dont need an exit control in supermarkt bearbeitung).

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net