question

Howard avatar image
0 Likes"
Howard asked Jeanette F commented

Process Flow Global Table Lookup

There are a few things that I want to accomplish.

  1. Move box item from one queue to another based on the global table destination.
  2. Processor looks up setup and process time from the global table values.
  3. The number of boxes by product types in the sources can be updated to different quantities.
  4. The number of processors connected to the queue can be different quantities.

1712590677798.png


There are some issues that I encountered:

1.The token is not reading the destination from global table correctly. How to enable a "drop sample icon" so I can pick the queue that I want?

1712590579956.png

1712590657975.png

2. The operator1 is picking up the box item while processor is running and not completed yet.

3. Queue 1 send 2 box items to Processor 1 and Processor 2 but only one box is move to the next destination.

1712591090035.png


globaltabledemo[hr] 20240408.fsm

FlexSim 24.0.2
global tableprocesss flowerrormessage
· 1
5 |100000

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

Jeanette F avatar image Jeanette F ♦♦ commented ·

Hi @Howard, was one of Howard's or Kavika F's answers helpful? If so, please click the "Accept" button at the bottom of the one that best answers your question. Or if you still have questions, add a comment and we'll continue the conversation.

If we haven't heard back from you within 3 business days we'll auto-accept an answer, but you can always comment back to reopen your question.

0 Likes 0 ·

1 Answer

Kavika F avatar image
0 Likes"
Kavika F answered Kavika F commented

Hey @Howard, firstly, if you want the setup and process time of your processors to be determined by a variable value, you can't use "token.SetupTime" since the Processor doesn't know what "token" is. An alternative is to do a Global Table Lookup based on the item's type (if they have different types) or the "If Item Label Value Changes" option for when the label value changes -- then you can setup different processing times.

Concerning your Global Table, if you want a pointer cell value, you need to assign that cell to have that type of data.

1712596691730.png

If you right-click on the cell, you can assign it that type of data. You can highlight all the cells you want and mass-edit them like this. Then you'll get the dropper to select the object you want.

Another way is to do "Model.find(token.Destination)" to do a lookup on the string you have saved in the table. This will return a pointer to that object that you can store on another label.


1712596691730.png (36.5 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.

Howard avatar image Howard commented ·

@Kavika F

globaltabledemo[hr] 20240408.fsm

Hi Kavika,

I was able to fix the Destination by setting the cell type to pointer. If I want to use the alternate method, where do I put the "Model.find(token.Destination)" ?

I am trying to route the box to the right destination first so I remove the process time lookup for now.

It is showing error when I tried to run now. How do I troubleshoot it? The error happened when the operator1 unload the first box onto the Queue1.


1712598667766.png


0 Likes 0 ·
Kavika F avatar image Kavika F ♦ Howard commented ·

@Howard, I would suggest refactoring your model to not use the GlobalTable as a sequence of events because they may not happen in the order you're expecting. For example, don't have scheduled events for the Operator to move finished objects off the Processor to "QueueOut". Instead, just have output connections from Processors to QueueOut and have the Operator as the guy in charge of moving them there through 3D logic -- that way you don't have to worry about it not happening in that order in the sequence.

1712869373092.png

The "Output" section of a Processor's quick properties:

1712869398873.png

Now let's look at the Process Flow. I don't suggest going through the Global Table row by row when you are also waiting for (and expected) boxes to appear before a specific time. Instead, you can make an Event-Triggered Source to make a token when an item enters QueueIn. You can then assign that entering item the label "token.Item" instead of trying to find it every time.

1712869557559.png

You can still use the "row" label, but instead we can keep it on the ProcessFlow itself and increment it when each item becomes available. That way we don't have possible overlaps.

1712869667973.png

In doing so, we can also get the Setup and Process times off the Global Table and put them on the item in the 3D space. That way the Processor can actually read the item's setup and process time.

1712869718752.png

And the Processor's quick properties:

1712869735244.png

Hope this helps.

globaltabledemohr-20240408_2.fsm

0 Likes 0 ·
Howard avatar image Howard commented ·

@Jeanette F

globaltabledemo[hr] [GlobalList] 20240409 V0.fsm

Hi Jeanette,

I have included a list to pull the box instead of just pull the box directly from the queueIn but it's not pulling the token properly it looks like. (see attached)


0 Likes 0 ·