ATTENTIONThis FlexSim Community Forum is read-only. Please post any new questions, ideas, or discussions to our new community (we call it Answers) at https://answers.flexsim.com/. Our new Question & Answer site brings a modern, mobile-friendly interface and more focus on getting answers quickly. There are a few differences between how our new Q&A community works vs. a classic, threaded-conversation-style forum like the one below, so be sure to read our Answers Best Practices. |
flexsim.com |
#1
|
|||
|
|||
Tasksequence by using global table
Hello everyone,
In the model in the appendix you will see two seperate sources. Source A produces three different items (no.1, no.2 & no.3). Source B also produces three different items (no.1 no.2 & no.3). Itemtype 1 from source A should always be combined with itemtype 1 from source B, for itemtype 2 and 3 holds the same. In the model you will see a crane that is responsible for the transport of both types of items to the combiners. The order in which the crane has to transport the items is as follows: At a given point in time, the crane should supply the combiners (named combiner I, II & III) by matching the items from source A and source B. The crane should transport item 1 from source A to the combiner I and should also immediately pick up item 1 from source B and bring that to the same combiner. This is the same for the other items (the crane should transport item 2 from source A to combiner II and transport item 2 from source B to combiner II as well). What I need is to executed the tasks by using the following table (also see global table65 in the model) . On time 0 the crane should load combiner 2, next on time 500 the crane should load combiner 1..etc. The crane always transports corresponding items from both sources to their respective combiner. Time Load Combiner nr. 0 2 500 1 1000 3 1500 2 2000 1 2500 3 3000 2 What happens now is that the crane transports item 1 from source A to combiner I, then transports item 2 from source A (again) to combiner II, and item 3 from source A to combiner III, before moving on to source B, transporting the items in a similar fashion to the combiners. And the time that the crane performs the task is not regulated. I have already matched the source numbers to the combiners, but I still need to know how I used the global table for capturing the tasksequence of the crane. How can I solve this problem? |
#2
|
||||
|
||||
It looks like your tasksequences simply have the wrong priorities or are generated in the wrong order.
I haven't checked your model but why don't you create the complete tasksequence in 1 go? So your tasksequence should look like: Pick A Drop A Pick B Drop B and only then start with a new tasksequence. |
#3
|
|||
|
|||
You could consider controlling the creation of the standard tasksequences. OnReset close the input of all combiners and a create delayed message to open the input of the "first" combiner based on your table values. Each time a message is received, a new delayed message is created to openinput of the "next" combiner in the table. I would use a single object OnMessage as a "central brain" to perform this routine, and it would be center connected to the combiners for easy referencing. Don't forget to closeinput OnEntry of the combiners when port==2.
Note that this controls the order that jobs are released, the crane's properties still determine how long each transport and load/unload takes. If the crane is far to slow this approach will fail, but at least then you will know that the crane cannot meet your schedule requirements. |
#5
|
||||
|
||||
What if you get another source which creates the containers for combiners (connection to Input Port1 of the Combiners). In the Source you can use your global table as Arrival Scheddule. If the Container arrived the combiner, crane gets the information what items of what queue are required. Purely don´t got enough time for tryout, but think this should work.
__________________
Hemmi |
The Following User Says Thank You to Sebastian Hemmann For This Useful Post: | ||
Kris Geisberger (04-20-2011) |
#8
|
||||
|
||||
Hi Sebastian,
to convince the taskexecuter (asrs-vehicle) to fetch the next item to a combiner is a process of two steps. First give the tasksequences from Queues 4,5 and 6 a higher priority, e.g. 100. Second give flexsim and the taskexecuter some program runtime not simulation-time, to do different events instead of doing the next tasksequence out of the tasksequencequeue. This can be done by adding a further task to the last executed tasksequence in the Onload-Trigger of the Taskexecuter. treenode ts = gettasksequence(current,0); // get pointer to active TS inserttask(ts,TASKTYPE_DELAY,NULL,NULL,0,60); // do something useless Now one of the queues 4,5 or 6 has the runtime to dispatch a standard tasksequence with a high priority to the Taskexecuter, which will be executed as the next tasksequence, because of its higher priority. For the experts of you: a useless task of the type TASKTYPE_TAG or TASKTYPE_BREAK hasn't the same effect as the delaytask, even if the delaytime is 0. Jörg |
Thread | Thread Starter | Forum | Replies | Last Post |
Sending GUI number to Global Table | Albert Munoz | Q&A | 2 | 10-18-2010 10:59 AM |
Global Table string value | Congshi Wang | Q&A | 1 | 05-24-2010 07:38 AM |
Set Arrival Sequence on reset with global table | Patrick Cap | Q&A | 5 | 04-08-2009 11:12 PM |
Can I make a column of a global table to type table? | qin tian | Q&A | 0 | 10-01-2008 09:27 PM |
Global Table Number Precision | Sung Kim | Tips and Tricks | 8 | 03-27-2008 04:25 PM |