question

Suhas H2 avatar image
0 Likes"
Suhas H2 asked tannerp edited

Pull system using racks and queues

Hi,

I am modelling a system,where the queue will pull the parts from the racks based on the requirement. The parts are transported from the racks to the queue using the transporter.test-model.fsm . i want to control it with coding. Kindly help me with this.

FlexSim 19.1.0
transporterrackspull requirement
test-model.fsm (38.9 KiB)
5 |100000

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

1 Answer

tannerp avatar image
0 Likes"
tannerp answered tannerp edited

Hi @Suhas H2,

I recommend reviewing the FlexSim tutorials in the User Manual. This is a basic functionality in the software that you will learn in the tutorials, along with many other basic FlexSim skills. Your model already appears to have the behavior you described, but I'm assuming you'd like to have some sorting or other behavior. I took the liberty of adding logic that sorts items by their Type into 5 different queues. Types 1-3 are in Queue1, Types 4-6 are in Queue2, Types 7-9 are in Queue3, etc.

Please provide a more specific question if this does not provide what you're hoping.

rack-test-model.fsm


rack-test-model.fsm (41.1 KiB)
· 9
5 |100000

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

Suhas H2 avatar image Suhas H2 commented ·

Hi @tanner.p

Thanks for the reply.

Actually I have bigger layout than the one i have attached here test-model-update1.fsm. I have 50+ racks in my layout and about 5 tugger trains delivering it to the more than 70 queue like shown here. So I want to control the parts moving out of racks.This parts should get pulled by the queues. I have about 600 item types. So using connections and port by case will make it more difficult. All the items getting created will go to all the queues based on the consumption rate at the queue's.

Any suggestions?

test-model-update1.fsm

0 Likes 0 ·
tannerp avatar image tannerp Suhas H2 commented ·

Hi @Suhas H2,

I have two suggestions that would make this process much easier to set up. Both are effective, but you may find one to be more favorable.

1) Use a Global Table to identify the queue that each item type should be sent to. In this setup, you will have a table that looks like the image below. Using the table, the Assign Labels Activity will look up the queue based on item Type (row number) to see where the item should be sent.

2) Use an Item List to push and pull the items by item type. To do this, the rack will push items to a list and then you can pull from that list using the queues themselves or Process Flow logic. The important part of this method is that the items are made available on a list and can be pulled based on their "Type" label.

I've created an example of these methods using your initial model. The "Table Rack" object uses a Global Table lookup to sort the items and the "List Rack" uses a list and a basic Process Flow sequence to sort the items. You can use the logic demonstrated here on a larger scale to include as many racks and queues as you'd like. To make things easier, you can also use the default AGV Process Flow for controlling the AGVs in your model, as I assume there will be more than one.

Example: racks-sorting.fsm

1 Like 1 ·
racks-sorting.fsm (63.0 KiB)
type-on-list.png (36.5 KiB)
Suhas H2 avatar image Suhas H2 tannerp commented ·

Hi @tanner.p

Thanks for the suggestion.

I am going ahead with the list pull method. But i am stuck with the following error, can you help me fix this up. This error is occurring when the tugger is loading the part from the rack.

time: 405.102460 exception: Exception Caught in AGVData::buildTravelRoute object: /AGVNetwork>variables/agvs/_3110
time: 405.102460 exception: Exception Caught in TaskExecuter::beginTask(treenode task) object: /_3110
time: 405.102460 exception: Exception Caught in TaskExecuter::finishTask(treenode task) object: /_3110
time: 405.102460 exception: Exception Caught in TaskExecuter::beginTask(treenode task) object: /_3110
time: 405.102460 exception: Exception Caught in TaskExecuter::finishTask(treenode task) object: /_3110
time: 405.102460 exception: Exception Caught in TaskExecuter::beginTask(treenode task) object: /_3110
time: 405.102460 exception: Exception Caught in TaskExecuter::finishTask(treenode task) object: /_3110
time: 405.102460 exception: Exception Caught in TaskExecuter::onTimerEvent(treenode involved, int code, char *datastr) object: /_3110
time: 405.102460 exception: Exception Caught in TaskExecuter::onTimerEvent(treenode involved, int code, char *datastr) object: /_3110
time: 405.102460 exception: Exception Caught in ObjectFunction248__project_library_FlexSimObject_behaviour_eventfunctions_OnTimerEvent object: /_3110 i: /_3110>variables/activetasksequence/ts22/task2 class: /_3110
time: 405.102460 exception: Exception caught in TreeNode::receivemessage()
time: 405.102460 exception: Exception caught in Executive::processeventinlist(). Throwing.
time: 405.102460 exception: Exception caught in Executive::steptotime(). Throwing.
time: 405.102460 exception: Exception caught in Executive::tick(). Throwing.
time: 405.102460 exception: int runthemessageloop() #4
exception: Executive::instance.tick();
time: 405.102460 exception: int runthemessageloop() #6
0 Likes 0 ·
Show more comments