Your SlideShare is downloading. ×
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Task Sequences
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Task Sequences

2,801

Published on

Para programar secuencias de tareas, es recomendable que primero domine los temas de Task Executer.

Para programar secuencias de tareas, es recomendable que primero domine los temas de Task Executer.

Published in: Education, Technology, Travel
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,801
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. SIMULACIÓN SECUENCIAS DE TAREAS (TASK SEQUENCES)
  • 2. ÁRBOL DE LA FAMILIA FLEXSIM
  • 3. TASK EXECUTERS
  • 4. TASK SEQUENCES
    • Un task sequence es una serie de tareas que ejecuta en secuencia un TaskExecuter .
    • Además de ser una serie de tareas, cada Task Sequence tiene un valor de prioridad que define la importancia de esta secuencia con respecto a otras.
    • También cuenta con un valor para adelantarse , indicando si una la necesidad de una determinada secuencia causará que otras secuencias se detengan de forma que la primera pueda terminarse antes.
    P P Tarea 1 Tarea 2 Tarea 3 Tarea 4 … P P Priority Value (Valor de prioridad) Preempt Value (Valor para adelantarse)
  • 5. TASK SEQUENCES
    • Todos los recursos fijos (Fixed Resources) tienen un mecanismo predeterminado para crear Task Sequences que mueven los flowitems desde ellos mismos hacia la siguiente estación.
    Cuando seleccionamos “Use Transport” en la pestaña “Flow” de cualquier objeto fijo, estamos creando un task sequence
  • 6. TASK SEQUENCES
    • La siguente secuencia se genera cuando se selecciona “Use Transport” en una pestaña Flow:
    • 1. Viaje hacia el objeto fijo que actualmente tiene al flowitem
    • 2. Cargue el flowitem contenido en ese objeto
    • 3. Romper secuencia (Break)
    • 4. Viaje hacia el objeto destino
    • 5. Descargue el objeto
    P P Viaje Cargue Break Viaje Descargue
  • 7. TASK SEQUENCES
    • Las tareas tipo break le dicen al TaskExecuter que revise si hay en ese instante alguna otra secuencia de tareas que pueda hacer junto con ésta.
    • Por ejemplo: si un Transporter tiene dos flowitems que lo estén esperando para que los recoja de la misma ubicación, y este tiene la capacidad de cargar dos o más flowitems, entonces este Transporter tiene dos Task Sequences por hacer.
    Break
  • 8. TASK SEQUENCES
    • En cualquier momento de la simulación, un TaskExecuter puede tener UNA secuencia activa, y al mismo tiempo UNA COLA de secuencias esperando.
    El Dispacther NO EJECUTA secuencia de tareas. Solo administra la cola y reparte las tareas de esa cola en los TE conectados a sus puertos de salida
  • 9. TASK SEQUENCES
    • Para crear secuencias de tareas personalizadas, se pueden usar tres simples comandos:
      • createemptytasksequence()
      • inserttask()
      • dispatchtasksequence()
  • 10. createemptytasksequence()
    • Crea una Task Sequence sin tareas en la cola de un Dispatcher. Una vez creada la TS, deben agregarse tareas usando inserttask().
    • createemptytasksequence( taskexecuter,priority,preempting )
    • Parámetros:
    • taskexecuter . Es el objeto que ejecutará la secuencia de tareas. Puede ser un Dispatcher o un TaskExecuter.
    • priority . Valor asignado por el usuario a la prioridad de esta secuencia de tareas.
    • preempting . Valor asignado a la capacidad de esta secuencia de adelantarse a otras.
  • 11. TASK SEQUENCE PREEMPTING (ADELANTARSE)
    • Cada Task Sequence tiene un valor de adelanto (PREEMPT).
    • Este se usa para retirar a un TaskExecuter de su tarea actual, para usarlo en otra operación más importante.
    • Si por ejemplo, la responsabilidad más importante del operador A es reparar máquinas; cuando no hay máquinas por reparar, debe transportar materiales dentro del modelo.
    • Si una máquina se descompone, dejará de hacer cualquier cosa que esté haciendo para ir a reparar esa máquina, en vez de terminar su operación de transporte.
    • Para hacer esto, es necesario usar una Task Sequence de adelanto (Preempt).
  • 12. TASK SEQUENCE PREEMPTING (ADELANTARSE)
    • Para crear una secuencia de tareas capaz de adelantarse, se debe especificar un valor distinto de cero en el último parámetro del comando createemptytasksequence() .
    • createemptytasksequence(operador, 0, PREEMPT_ONLY);
  • 13. TASK SEQUENCE PREEMPTING (ADELANTARSE)
    • Existen 4 valores posibles para adelantarse:
    • 0 – PREEMPT_NOT: La tarea no se adelanta
    • 1 – PREEMPT_ONLY: El TaskExecuter deja de hacer la operación actual y procede a ejecutar la que tiene este valor de preempt. Al terminar, regresa a terminar la tarea que dejó inconclusa, la cual había pasado al primer lugar de la cola de tareas.
    • 2- PREEMPT_AND_ABORT_ACTIVE: El Task Executer detiene la operación que se encontraba haciendo y la “destruye”, de forma que jamás regresa el TE a terminar esta operación.
    • 3 – PREEMPT_AND_ABORT_ALL: El TE deja de hacer la operación actual y destruye todas las secuencias de esta Task Sequence de forma definitiva.
  • 14. TASK SEQUENCE PREEMPTING (ADELANTARSE)
    • Si un TE está realizando una TS 1 con preempt (=ya se adelantó), y recibe el llamado de otra TS 2 que también tiene preempt, entonces usará el valor de “priority” de las TS para decidir cuál adelantar.
    • Si priority de TS 1 < priority de TS 2 , TE deja de hacer TS 1 y pasa a hacer TS 2 .
    • Si priority de TS 1 ≥ priority de TS 2 , TE continuará haciendo TS 1 y TS 2 se irá a la cola de tareas igual que cualquier otra secuencia de tareas.
    Si sucede el caso de la segunda viñeta, la TS 2 pasa a la cola de tareas igual que si fuera cualquier TS sin preempt . Si desea que TS 2 pase a los primeros lugares de la cola de tareas, entonces dé a TS 2 un peso más grande en su priority con respecto a las demás tareas de la cola; o bien tome en cuenta el preempt en la queue strategy (la cual no es parte de este tema) .
  • 15. Inserttask()
    • Inserta una tarea de algún Task Type especificado a una Task Sequence especificada. Dependiendo del tipo de Task Type, los parámetros restantes tendrán siginificados distintos.
    • inserttask( tasksequence,tasktype,involved1,involved2,Var1,Var2,Var3, Var4 )
    • Parámetros:
    • tasksequence . Nombre del Task Sequence al que se añadirá esta nueva tarea.
    • Tasktype . Tipo de Task Type al que pertenece la nueva tarea que estamos agregando.
    • Involved1, Involved2, var1, var2, var3 y var4 . Sus valores dependen del tipo de Task Type, refiérase al Manual o a algún resumen de Task Types disponibles.
  • 16. dispatchtasksequence()
    • Le dice al Dispatcher o al Task Executer en qué TaskSequence debe basarse para hacer sus tareas. Se supone que ya esta TS fue creada previamente con createemptytasksequece() y se le han agregado tareas con inserttask()
    • dispatchtasksequence( nombre de la Task Sequence )
    • Parámetros:
    • Task Sequence . Es el nombre de la variable treenode a la que llama a la Task Sequence.
  • 17. Control de un TaskExecuter treenode montacargas = centerobject(current, 1); treenode origen = centerobject(current, 2); treenode destino = centerobject(current, 3); treenode item = first(origin); treenode ts = createemptytasksequence(montacargas, 0, 0); inserttask(ts, TASKTYPE_TRAVEL, origen, NULL); inserttask(ts, TASKTYPE_FRLOAD, item, origen); inserttask(ts, TASKTYPE_TRAVEL, destino, NULL); inserttask(ts, TASKTYPE_FRUNLOAD, item, destino); dispatchtasksequence(ts);
  • 18. Tipos de Tareas (Task) TASKTYPE_LOAD: flowitem, pickup TASKTYPE_FRLOAD: flowitem, pickup, [outputport] TASKTYPE_UNLOAD: flowitem, dropoff TASKTYPE_FRUNLOAD: flowitem, dropoff, [inputport] TASKTYPE_UTILIZE: involved, station, [state] TASKTYPE_STOPREQUESTFINISH: stoppedobject, NULL TASKTYPE_TRAVEL: destination, NULL TASKTYPE_TRAVELTOLOC: NULL, NULL,xloc,yloc,zloc, [endspeed] TASKTYPE_TRAVELRELATIVE: NULL, NULL,xloc,yloc,zloc, [endspeed] TASKTYPE_BREAK: NULL, NULL TASKTYPE_DELAY: NULL, NULL, delaytime, [state] TASKTYPE_SENDMESSAGE: receiver, NULL, [param1 ,param2,param3] TASKTYPE_MOVEOBJECT: flowitem, container, [port] TASKTYPE_DESTROYOBJECT: object, NULL Parámetros Cafés son requeridos, parámetros [Grises] son opcionales. ** utiliza profiletasksequence(ts) para enviar una descripción detallada al Output Console.

×