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
|
|||
|
|||
What is the maximum output of the model in 10 hours?
Hi,all
What is the maximum output of the model in 10 hours? 1> There are four station(A,B,C,D) and one operator, the distance is AB=BC=CD=DA=1metre, AC=BD=1.5metre (AB=BA, CD=DC,etc.) the max. speed of operator is 1m/s,acceleration/deceleration=1, capacity is 1. Operaotr is standing at station A at the begining. 2> All four stations need operator to setup, and the setup time for each station is the same 1 seconds the process time for each station is also the same 3 seconds(no need operator for processing) 3> The process is starting from station A to B, then B to C and last C to D.Each station maximum content is 1.No operator transport the product from one station to another. |
#2
|
|||
|
|||
Hi,
I assumed an operator sequence of D->C->B->A and with two seconds to travel between which gives a cycle time of 12 seconds between finished items so 300/hr. To confirm that in the model I've changed the 'Pick Operator' code as the default doesn't allow the operator to decelerate, so the time between stations under steady state was 1.5 seconds instead of 2. Adding the -1 to the travel task makes its 'endspeed' zero (while omitting it or setting it to zero would make its endspeed the maxspeed of the task executer). Code:
treenode current = ownerobject(c); treenode item = parnode(1); int trigger = parval(2); /**Custom pick & task sequence*/ /** \nDispatcher: */ treenode operator = /**/centerobject(current,1)/**/; if (trigger==1){ //could have used PICK_OPERATOR_SETUP here int preempt=PREEMPT_NOT; if (getvarnum(current,"preemptprocessoperators")) preempt=PREEMPT_ONLY; treenode ts=createemptytasksequence(operator,getvarnum(current,"processoperatorpriority"),preempt); stopobject(current, STATE_WAITING_FOR_OPERATOR); inserttask(ts,TASKTYPE_TRAVEL,current,NULL,-1); inserttask(ts,TASKTYPE_STOPREQUESTFINISH, current); inserttask(ts,TASKTYPE_UTILIZE,item, current); dispatchtasksequence(ts); } else{ // could have tested for trigger==PICK_OPERATOR_SETUP_RELEASE here freeoperators(operator,item); } return -1; The code gets called when the operator is requested AND released (by returning -1). The trigger variable lets you know which event is the trigger. I've assumed the steady state operator sequence is counterclockwise and so have put priorities to refect that (update: these are redundant it will naturally get into this pattern). I've assumed the floor is flat so the diagonal distance is 1.412m (which is sqrt(2)). Last edited by Jason Lightfoot; 05-15-2010 at 05:03 AM. |
The Following User Says Thank You to Jason Lightfoot For This Useful Post: | ||
john mic (05-19-2010) |
Thread | Thread Starter | Forum | Replies | Last Post |
Problem with Send to Output Port | Joe Allen | Q&A | 3 | 05-14-2009 02:38 PM |
Print information into output console (Debugging) | Tom David | Q&A | 11 | 09-04-2008 03:46 AM |
Output high volume data | Liu Bin | Q&A | 8 | 06-16-2008 09:18 AM |
Problem with Processor Output | avinash | Q&A | 2 | 03-26-2008 09:19 AM |