cancel
Showing results for 
Search instead for 
Did you mean: 

Assembly and dismantle - Control using attributes.

Creator
Creator

Hi, I made a post a couple of days ago.

 

Since then I have specified my questions a bit more.

I've made a simple example model of which I shall try to explain the purpose with.

 

I try to create a flow with both big and small batches with varying sizes and products.

Typical batch size to buffers ~150

Typical batch size from buffers ~20

 

I try to control this assemble/dismantle using the attributes of the order.

Guidance through flow control could be managed with MU'names i guess.

 

 

I want to Assemble an order (container) with the correct amount of incoming material (regular entities, with the names Product-A to Product-E)

The reason I want to assemble the correct orders is because I know the process times for the whole batch (calculated via excel)

 

This normally would not be a problem, but in my case I have so many combinations of products in different volumes ~200 attributes.

 

So have a look at the model in the image and I will explain my thinking later.

 

Example_line.PNG

The first assembly station will batch together a large order.

 

The whole batch will be milled and transferred to the buffers.

 

Flow control using MU names (Product_A -> Buff_A)

 

The batch gets dismantled and the carrier goes to the sink, and the separate products roll in to their buffers.

 

Small orders will be assembled with the correct amount of correct product type in the same manner as the first assembly station.

 

So now to my question, do you know a neat way to control the different steps I need to model?

I don't know how to setup proper tables and methods for controlling this.

 

If you want you can see the attached model.

 

Best regards - Lindback

8 REPLIES

Betreff: Assembly and dismantle - Control using attributes.

Hello Lindback,

is a "big" order always made up of only one product (A...E), or can it be a mix? For the small orders, if it would be a mix, you would have one buffer for each product, right? At the moment there's only Buffers A+B, but you have 6 products. If you need to mix quantities of A...E in the big orders, you will need a source for each product type before the assembly station.

Change the attributes of the Assembly_Big like this (will be similar for the Assembly_Small), and ensure that the Source "Big_Orders" is the first entrance, then Source_A is the 2nd, Source_B the 3rd, etc.:

grafik.png

Then insert a method and set it as EntranceCtrl before actions:

grafik.png

I would recommend inserting a table-object and prepare it like this (note: the last column must be updated for each order individually):

grafik.png

You need some system to know how many pieces of each product you have in a given order, then you can write the method:

-- update the number of required pieces per product for this order:
t_AssemblyList_Big["Number", "Product_A"]	:= xx
t_AssemblyList_Big["Number", "Product_B"]	:= xx
t_AssemblyList_Big["Number", "Product_C"]	:= xx
t_AssemblyList_Big["Number", "Product_D"]	:= xx
t_AssemblyList_Big["Number", "Product_E"]	:= xx

-- apply to the AssemblyStation
Assembly_Big_order.AssemblyList	:= t_AssemblyList_Big.copy({"Predecessor", 0}..{"Number", *})

That should be all (of course you'll need to know for each order how many pieces of each product it needs, and insert these numbers for the xx in the method-code).

Regards,
Alex

____________________________________________________________
Alex Dilg, Consultant at SimPlan AG (www.SimPlan.de)
This post was good and/or helpful to you? Please provide some Kudos, thank you!

Betreff: Assembly and dismantle - Control using attributes.

Creator
Creator

Hi Alex, thank you for your reply!

 

Yes, in my example there are only two buffers, but it was just an example to show what I wanted to do. Need five later for each product A to E.

 

Neither the "Big-orders" nor the "Small-orders" will contain mixed products.

 

Later I want to have the "Small-orders" as the experimental parameter or input to a experiment manager.

Change the orders of these small orders and see how the rest of the production follows.

 

Later when I get the logic to work I want to make the buffers A...E act like an reorder-point system. So when the buffers reaches a specific "low" value I want to generate a new "Big-order" that fills the buffer again.

 

 

Betreff: Assembly and dismantle - Control using attributes.

Hello Lindback,

ok, but I would still stick with the approach of having separate buffers/sources for each product, also for the big-order-assembly, this makes it very easy to create orders of any size and combination with the AssemblyList, and you can use exactly the same mechanism for small and big orders.

I've seen that the name of your orders defines the product and quantity, so you can adjust the EntranceCtrl of the Assembly_Big_Order like this:

var sProduct	: string
var iQuantity	: integer

-- parse the order-name to get the quantities, format like this: "ac80", 
--	where "a" is the product, "c" the cycletime mode, and "80" the quantity.
-- 	Orders always contain 1 product-type only!

-- get product type and quantity
sProduct	:= toUpper(copy(@.name, 1, 1))
iQuantity	:= str_to_num(copy(@.name, 3, 1000))

-- reset quantities for all products
t_AssemblyList_Big.initialize({"Number", 1}..{"Number", *}, 0)

-- update the number of required pieces per product for this order:
t_AssemblyList_Big["Number", to_str("Product_", sProduct)]	:= iQuantity

-- apply to the AssemblyStation
Assembly_Big_order.AssemblyList	:= t_AssemblyList_Big.copy({"Predecessor", 0}..{"Number", *})

Now for each order, the required quantity of all other products is set to zero, and for the product of this order the quantity is read from the order name. This works like a charme Smiley Happy

Regards,
Alex

 

____________________________________________________________
Alex Dilg, Consultant at SimPlan AG (www.SimPlan.de)
This post was good and/or helpful to you? Please provide some Kudos, thank you!

Betreff: Assembly and dismantle - Control using attributes.

Creator
Creator

Hello again Alex!

 

Thank you for your help, haven't still tried to implement your proposals, but(!) I realised that since I am trying to create a re-order point system, the order quantities from "Big-orders" will always be constant. Stupid me.. Man Very Happy

 

I think that this will make my model simpler in the end. What do you think of this model layout? (No logic controls in place yet)

 

Lager_modell.PNG

 

Now i "just" have to get the assembly process correct for "small orders" since the "big orders" allways will be constant.

 

Your codes you sent in your previous reply might do the trick for the "small-orders" also, or was that only for the big orders?

 

And then again? Do you know a smart way to call for a new "Big-order" when the current stock in the buffers reaches a specific value?

 

Best and kindest regards

// Lindback

Betreff: Assembly and dismantle - Control using attributes.

Hey Lindback,

The layout looks good to me, and the code I sent in the earlier replies will work just fine for the small-orders Smiley Happy

Two ideas for solving the re-order point and creating big-orders

  1. One BigOrder-Source for each product, lock its exit; whenever you need another order of that type open the exit and let one order out, then lock the exit again (--> ExitCtrl rear)
  2. Only one Buffer for all products as source-replacement; whenever you need another order of a product, you just call a method like this: m_CreateBigOrder("A", 120) and use the following code for the method m_CreateBigOrder:
param pProduct : string, pQuantity : integer

var oOrderMU	: object

-- create one big-order of this product with X parts --> encode the name accordingly
oOrderMU		:= .MUs.Order.create(Buffer_BigOrders) 
oOrderMU.name	:= to_str(pProduct, "c", pQuantity)

The 2nd approach is better, I think, and you have to use a bit of programming/SimTalk in each case, anyway.

You could also look at the Kanban-Library, but I've never used it so I won't be helpful in that case anymore Smiley Wink

Regards,
Alex

____________________________________________________________
Alex Dilg, Consultant at SimPlan AG (www.SimPlan.de)
This post was good and/or helpful to you? Please provide some Kudos, thank you!

Betreff: Assembly and dismantle - Control using attributes.

Creator
Creator

Hi Alex!

 

So suppose that I use the second approach with only one product buffer,

 

Do I get the same analytical abilities as I get with five buffers?

One of my outputs will be "mean time in buffer" for the different products. Some products is predicted to have long mean time in buffer and some of them short.

 

Again, thanks again for your help. I appreciate it very much!

 

Best regards // Lindback

Betreff: Assembly and dismantle - Control using attributes.

Hello Lindback,

I only meant to replace the Source_Big_Orders with a Buffer-Object for creating the big-orders, not for the small orders (there I would stick to your layout with 5 buffers, one for each product, so also have "mean time in buffer" for each product); what you are interested in is the time a big-order spent in Rear_end_buffer, which you would still have as statistics. So I only suggest replacing the Source-object with a more flexible approach.

I hope that helps to clarify...? Smiley Happy

Regards,
Alex

____________________________________________________________
Alex Dilg, Consultant at SimPlan AG (www.SimPlan.de)
This post was good and/or helpful to you? Please provide some Kudos, thank you!

Betreff: Assembly and dismantle - Control using attributes.

Creator
Creator

Hi Alex,

 

Yes now I get it! (At least the main layout Man Happy)

 

I am going to try your approach now and see how far I get.

 

Best regards // Lindback