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 |
|
Downloads |
Q&A Using Flexsim and building models |
#1
|
||||
|
||||
One driver, two forklifts, multiple queues - is coordinated ts the only solution?
Ladies and Gentlemen,
I am looking at a situation where I have two source ->processor -> sink sequences and a forklift assigned to each, but only one operator to operate each forklift on the on-demand basis. The straightforward solution is the coordinated task sequence from the tutorial but I really hope to come up a more elegant one for two reasons: 1) I have multiple queues and I really do not want to create copies of the same task sequences for each queue or even a call to the external function. 2) Ideally I would like to have this arrangement reusable. So herein lie my questions: Is it possible to delegate the creation of the custom task sequence to the dispatcher, get the source/destination data from the dispatched task sequence in the dispatcher's OnReceiveTaskSequence and create a new custom task sequence from there? Is it possible to encapsulate this functionality in a "special kind of forklift" so it can be dropped into the model, connected to the operator and will start acting like a normal forklift that works only when there is someone available to drive it? Thank you! Vadim |
#2
|
|||
|
|||
Hello Vadim,
Is there a reason to use two forklifts with one operator in your model in stead of just one operator that is connected to both lines? This would probably be the simplest solution, but might not be sufficient. There are two ways to reuse a personalized forklift: add it to a userlibrary after you have added all the functionality. Or use a module to add a modified forklift. Esther |
#3
|
||||
|
||||
To be honest I don't see your problem:
Quote:
Why does this interfere with a coordinated tasksequence? Again put your object in a userlibrary to reuse them, or put the complete constellation in a visual tool container and store that container in a user library If you don't want to use coordinated tasksequence you can use a normal tasksequence and send it to the forklift truck with a sendmessage to itself and after that a utilize task. On the sendmessage you create a normal tasksequence for an operator with a freeoperators task. So the operator has a queue of tasksequence with forklift trucks that need him and the forklift cann't operate till an operator has reported itself. In the operator tasksequence you can even move it into the forklift. Don't forget the utilize the operator when he is at the forklift. But to be honest, this is a coordinated tasksequence so why bothering with doing all the things yourself when the program can do it for you! |
#4
|
||||
|
||||
Everybody, thanks for the speedy response!
I decided to start with a coordinated task sequence and then see if I can package it for reuse (I am a noob). I sort of struggled with it on my own until I figured out how to delegate the creation of the task sequence by sending a message from all queues to the dispatcher, and the rest was relatively easy. Now that I got the easy part figured out, here are the challenges that I have not overcome yet: 1) Boarding and exiting the forklift takes time. How do I make my driver stay in the cabin if the next task involves the same forklift, but exit if the next task involves walking to the other one. Exiting and reentering would cause an undesirable delay. 1a) How do I make operator go to another location if all the queues are idle, but stay in the cabin if they are not? Again, I am looking for some kind of generic solution. I suspect that the answer involves dispatcher sending itself a delayed message but not sure what to do if the message arrives and the next task has already started. 2) How do I disconnect the operator from the forklift without just ending the tasksequence and making it disconnect automagically if the next task requires a different forklift? The only way to make the operator exit the cabin that I found is by inserting TASKTYPE_MOVEOBJECT to model() which teleports the operator to (0, 0, 0). Calling setloc() has resulted in some really weird behavior. I can make the operator walk back to the forklift, but that does not make sense. 3) The way I implemented it, queues depend on the dispatcher being connected to center port one and forklifts to center port two. Is there a way to discover what is connected to which port and act accordingly without hardcoding port numbers? Thank you! Vadim |
#6
|
||||
|
||||
For points 1 and 2 I think you should take a look at callsubtasks. Then in the subtask determine if you do nothing or walk back to the central point.
Using the setloc should work so maybe there is something else that makes it behave weird. For point 3 you can use classobject to determine what object is connected to what port. Or you can check if a certain variable is present or not. |
Tags |
coordinated task sequence, dispatcher, forklift, operator, transporter |
Thread | Thread Starter | Forum | Replies | Last Post |
Sketchup driver failure | David Chan | Installation | 7 | 02-07-2011 09:27 AM |
Specifying ODBC driver for PostgresSQL | Nischith Kashyap | Q&A | 2 | 01-19-2011 10:09 AM |
Coordinated Tasksequences | Nico Zahn | Q&A | 1 | 11-26-2010 04:43 AM |
THIS IS A CHALLENGE! tasksequence question regarding one forklift and 20 queues | DilAmaya | Q&A | 1 | 09-13-2009 09:44 PM |
Is there any simple solution to support batch mean method in flexsim? | qin tian | Q&A | 1 | 02-29-2008 01:19 PM |