question

wei-ting L avatar image
0 Likes"
wei-ting L asked wei-ting L commented

How to show each batch's information in a rack?

So I have been working on a simulation and I have a few modifications I would like to achieve. Any advise and suggestions would be helpful.

I use both process flow and 3-D model to simulate my CPU manufacturing plant. There are two product lines. One is a standard product line, one is a custom product line. The combiner combines item based on the incoming order information. For example, this order wants 20 qty, so an operator will grab 20 qty of material and combiner this with the order info, making them a finished batch. Next order wants 50......and on so.

I was able to assign labels ("time" and "type") to tokens. Tokens can represent order information in the process flow.

1. Right now my custom combiner process both custom cpus and standard cpus, it sends cpus to inventory racks depends on the item type. I was able to achieve this logic by only changing my combine mode to "pack". ("Batch" mode does not work). So right now the "CurContent" number shown on my rack is the number of batches processed, it is not the total qty of cpu. My question is, is there a way to see how many qty is in each pack/batch that got stored in the rack? Like an Excel table showing that a particular batch contains how many qty of cpus, and that is a standard/custom order. Is there a way to track the order info in the rack?

2.

I was able to assign "time" and "type" labels to a token, but I want to export the token's data, is there a way to do it? So I can analyze the queue time for each token. Again, is there a way to export this data in an excel sheet? My "time" label on each token is actually called "Durchlaufzeit_In" and "Durchlaufzeit_Out".

3.

My "WIP by Type" dashboard is not working as the way I wanted. can anyone help to see what I can do?. This question is similar to question 1. I want to keep track of the number of standard vs custom orders have been processed through my custom combiners. But it is not showing.

4.

I want to achieve a dynamic process time based on batch sizes. For example, a batch of 0~60 qty should have a process time of 0.05, and a batch of 60~120 should have a process time of 0.1. An expert mentioned that I should use the "for loops" of process time depends on BatchSize. I tried to understand it, but I could not figure it out, can someone help me with that ? I know the logic is to write a code, but I do not know the parameter and names used in the code. He said the below is just an example code that should be used in the combiner process time script. Can anyone help me with this?

int i_BatchSize = item.BatchSize;

if(i_BatchSize <= 100)
{
	return 0.07;
}
else
{
	if(i_BatchSize <= 150)
	{
		return 0.12;
	}
}

I have encountered the above situation, and I would like to receive any help and suggestions to further build my model. Strongly appreciate any advice! I 've also attached my model here.10-16-20181.fsm

FlexSim 18.2.2
combinerrackprocess time
10.png (165.7 KiB)
20.png (99.4 KiB)
30.png (103.7 KiB)
10-16-20181.fsm (164.4 KiB)
· 3
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Sebastian Hemmann avatar image Sebastian Hemmann commented ·

4. I´m not sure if you are not understanding the code at all. Thought you are familiar with coding!? So I´ll comment it a little bit for you. Maybe this gives you the glue:

int i_BatchSize = item.BatchSize; //Take the Value from the Label "BatchSize" stored on the item and write it to a local variable called "i_BatchSize" that is an integer

if(i_BatchSize <= 100) //if this value is smaller or exact 100 do the statement(s) within the next brakets
{
	return 0.07; //returns the processtime
}
else //if the value is higher than 100 do the statement(s) in the next brakets
{
	if(i_BatchSize <= 150) // if the value is smaller or exact 150  
	{
		return 0.12;//returns the processtime
	}
}

But as I read your text, your Batch Sizes changed since the last question!? So please think again about the solution with Process Flow, sending your tokens to different decide activities and giving it the right processtime on a label that later on only is transfered to the pallet and the Processor/Combiner just takes the number of a label. This could look like:

This is nearly the same, the code does, but if you understood Processflow, you don´t have to code ;-)

0 Likes 0 ·
pf-example.jpg (31.6 KiB)
wei-ting L avatar image wei-ting L Sebastian Hemmann commented ·

Hi Sebastian,

Yes, I understand the code, but the problem is that when I implemented it into the custom code, the process time does not work like the way the code says. I was trying to implement the code instead of using process flow because I have reached my limit of objects in Process Flow.

But when I check the actual process time by exporting the data from the dashboard, the process time is constantly 45 mints. My setup time is 45 mints, but not my process time. Can you help me with this?

0 Likes 0 ·
100.png (45.2 KiB)
50.png (15.0 KiB)
Sebastian Hemmann avatar image Sebastian Hemmann wei-ting L commented ·

From what point to what other point in your model are you measuring this time? Maybe you just can share your model?

For me it looks as if the "Processtime" is Zero and what you see in your Table (and/or Dashboard) is only the Setuptime of 45 minutes. With the code you have implemented this could happen if your BatchSize is higher than 150! Because you did not set a value for this case.

0 Likes 0 ·

1 Answer

Sebastian Hemmann avatar image
0 Likes"
Sebastian Hemmann answered wei-ting L commented

Hi,

1. I again see some different ways:

First: You can use the OnEntry Trigger of the Rack to write information to a global Table. So just create a global Table in the Toolbox. In the OnEntry Trigger is a Pickoption that creates a new line in this Global Table and adds information.

Second: You could just use the token in your Process Flow, that represents the Batch. Let´s say you push it on a list and add the BatchSize label to the list, than you can see all stuff in this List. You also can use a Zone in Process Flow to get such data. But this you would be a little more advanced stuff. Or you only use the token to write information to a global Table (use "custom code" activity where you find the pick option like in the trigger -> see the rest of my First idea).

Third (more advanced): If you just want the results, you also can add a Statistic Collector in the Toolbox and make it listen to the OnEntry Event of the Rack. On the second Tab you than only have to set, what data you want to write to the stats collector table. This you would do, if the information has to be shown later in Dashboards.

2. The Global Table would be the right solution for this question, too.

3. One first Problem I see is, that not all pallets have a label called Type! So the information is not always available.

· 6
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

wei-ting L avatar image wei-ting L commented ·

Hi Sebastian,

Thanks for the advice, I was able to achieve your solution of #2, seeing each token's labels. But this information is only good for viewing token's information. It is the pallet that goes through combiners. I also want the process time information for each batch, and this could be only done in the 3D model. (I've reach my limit of the number of objects allowed in process flow).

Not all pallets have a label called Type, so I also assigned a label on custom pallet called Type to custom order using process flow. But something weird happens. My custom combiner is pushing all the batches to standard inventory. It seems like the model is not reading my custom pallet's label "Type". Can you help me with this? I think my dashboard (WIP vs Type) problem is also because of this, right?

0 Likes 0 ·
wei-ting L avatar image wei-ting L commented ·

Hi Sebastian,

I was able to add labels ("Type", "time in", "time out", and "queue time") to each token and keep track of the timing for each token, but something unexpected happens and I do not know which part of the process flow went wrong, Can you help me to check it?

Remember the logic for my custom combiner is to process custom orders first whenever possible. If there is no custom order at the time, it can process the standard order. But my data shows me that my custom order's queue time increases as model time increase, which is not logical because my custom order should be processed first whenever possible. I am expecting my queue time for the custom order to be really low. Can you help me to see my model?

My model here:10-16-20181.fsm

0 Likes 0 ·
10-16-20181.fsm (170.5 KiB)
200.png (184.2 KiB)
Sebastian Hemmann avatar image Sebastian Hemmann wei-ting L commented ·

Maybe it is another topic that doesn´t have effect to your problem. But if I open your model, I´m getting FlexSim Errors in the compiler console because you did script something wrong.

Later I´m getting Warnings in the System Console, that you are sending pallets from a combiner, that are looking for a specific label!?

Your Table does not reset (erase all rows) automatically.

Are you sure, you´ve shared your last working model?

The problem you are showing, for me, look like there are to many orders for the combiner to handle. Or better said, the Table shows right, that the number of waiting Tokens (pallets) is never getting down to Zero in a simulation run. Did I understand you right, that this behavior is not, what you are looking for?

1 Like 1 ·
schreibfehler.jpg (51.3 KiB)
wei-ting L avatar image wei-ting L Sebastian Hemmann commented ·

Thanks for catching the error, I fixed the double "" signs around batch size setup time. Yes, I am also receiving the system console error. " time: 1.209604 exception: FlexScript exception: Label property Type retrieved on /custom cpu combiner/Pallet1. Label does not exist. at MODEL:/custom cpu combiner>variables/sendtoport"

Do you know what does this error means? Does that mean there is no "Type" in my pattlet 1, so the system does not know which rack to send? Is this the problem why my custom order's queue time is weird?

Yes there are many orders to handle, but since my custom combiner is prioritizing to process custom order first, I should expect my custom order's (type=2, order) queue time to be very low. But the data is not showing this behavior. Also, is there a way to reset my table (erase all rows) automatically?

I understand the number of token is not decreasing to 0, this is expected because each day there are about 20 tokens(orders) added, and my machines are not fast enough to process it. But I do not expect the queue time for my custom order to be increased over time since those orders (custom cpu orders) should be processed first by my custom combiner.

This is my latest working model. 10/21/2018.

(ignore the attached file name)

10-16-20181.fsm

0 Likes 0 ·
10-16-20181.fsm (80.9 KiB)
999.png (28.6 KiB)
Show more comments