Está en la página 1de 9

C1-Paletizado, despaletizado y

transporte con carretilla
Descripcion del problema
https://www.youtube.com/watch?time_continue=2&v=ub-0D87FCrI&feature=emb_title

Queremos paletizar un número determinado de Items en un Rack(Combiner), transportar el Rack


a un determinado punto mediante una carretilla (Vehicle), despaletizar los Items del Rack
(Separator)y que estos sean consumidos (Sink), y finalmente volver a transportar el Rack vacio
al punto inicial mediante la misma carretilla (vehicle).

Pasos a seguir
1. Abrimos SIMIO y creamos un modelo proyecto (New Proyect)

2. Introducimos dos ModelEntity y cambiamos su nombre (doble click encima del nombre ó si
clickamos encima del objeto, veremos a mano derecha un panel de propiedades: Properties
>> General >> Name) a Item y Rack.

3. También podemos cambiar la apariencia de los Entitys. Click sobre el objeto, en la barra
superior seleccionamos Symbols y en Proyect Symbols tenemos un desplegable donde podemos
seleccionar una apariencia diferente. En Library/Other seleccionamos Pallet3.

4. Introducimos dos Sources y cambiamos su nombre a SourceItem y SourceRack

5. En las propiedades de los Sources asignamos respectivamente el correspondiente Entity


(Properties >> Arrival Logic >> Entity Type).

6. Si queremos que existan un número limitado de Racks, hacemos click en el SourceRack y


cambiamos a 3 el Maximum Arrivals (Properties >> Stopping Conditions >> Maximum
Arrivals)

7. A continuación añadimos un Combiner. El combiner tiene dos entradas: Parent Input (donde
conectaremos el  SourceRack) y el Member Input (donde conectaremos el SourceItem)

8. Conectamos los Sources con el combiner mediante TimePaths. En la librería de la derecha


podemos encontrar el TimePath. Hacemos Click en él y en el output del Source, a conticuación
clickamos en el Input correspondiente del Combiner. Otra forma de conectar nodos más corta es,
manteniendo pulsado Shift y Control, hacer click en el Input y a continuación en el Output y
finalmente seleccionando el tipo de conector que deseamos.
9. Si queremos combinar por ejemplo 10 Items con un Rack cambiaremos la cantidad de lote en
el Combiner (Properties >> Matching Logic >> Batch Quantity)

10. Introducimos un Separator y lo conectamos mediante un Time Path con el Combiner en la


dirección del flujo de materiales.

11. Introducimos un Vehicle y lo renombramos como Carretilla. Podemos cambiar su aspecto


visual seleccionando el simobolo “Pallet Jack” (ver paso 2). Por ultimo Properties >> Routing
Logic >> Initial Node (Home) v Output@Combiner1

12.          Hacemos click en el nodo de salida del combiner “Output@Combiner1” y nos


dirigimos a Properties >> Transport Logic >> Ride On Transporter y seleccionamos True.
Podemos observar que el programa nos da un error pues no tenemos seleccionado un transporter.
Properties >> Transport Logic >> Transporter Name  y seleccionamos Carretilla del desplegable.

13. Añadimos un Sink y conectamos el Member Output del Separator con el.

14. Para que la carretilla vuelva al punto inicial con el rack vacio, Conectamos mediante un
TimePath el Parent Output del Separator con el Parent Input del Combiner. Podemos dar la
forma poligonal deseada al TimePath haciendo click en el background entre el Input y el Output.

15. Seleccionamos el Parent Output del Separator y realizamos la misma operación que el paso
11 para asignarle la carretilla Properties >> Transport Logic >> Ride On Transporter >> True. .
Properties >> Transport Logic >> Transporter Name  >> Carretilla

16. Por último para cerrar el ciclo de la carretilla deberemos unir con unTimePath el Input y el
Parent Output del Separator, así como el Parent Input y el Output del Combiner.

17. Ya podemos poner en marcha la simulación dándole al botón Run (triangulo verde apuntando
a la derecha) justo en la parte superior derecha del programa. También lo podemos hacer con F5
C2-Despaletizado, Consumo de Items y
Retorno del rack
Descripcion del problema
https://www.youtube.com/watch?v=zg3Z7s-PtcY&feature=emb_title

A la llegada del rack con productos (5 por rack) al punto de consumo, los operarios de la línea
van sacando del rack los productos conforme los van necesitando para montarlos en la línea. Por
lo tanto hasta que el rack no esté completamente vacío, este no podrá ser devuelto a su punto
inicial.

Por otro lado, cuando quede 1 solo Ítem en el rack, del almacén deberá salir el siguiente rack
para que así el operario no espere.

Pasos a seguir
La simulación constará de los siguientes elementos:

Entities
 Item
 Rack
Sources
 SourceRack
 SourceItem
Combiner
 Combiner1
Separator
 Combiner2
Servers
 Almacén
 EsperaRack
 PuntoUsoItems
Sink
 SinkItem
Se ha subdividido el problema en dos partes:

A) El Rack no puede retornar hasta que se hayan cogido todos los ítems para su uso. Es
decir, hasta que la cola de PuntoUsoItems sea nula.
Para ello modificaremos la capacidad de EsperaRack. Será 1 cuando queramos que salga el
Rack, y 0 cuando queramos que espere.

1. Creamos un process llamado AbreEsperaRack. Añadimos un step Assign y seleccionamos la


variable de capacidad de EsperaRack (Properties >> Basic Logic  >>State Variable Name
>>EsperaRack.CurrentCapacity) y le asignamos el valor 1 (Properties àNew Value à 1).
2. Creamos un process llamado CierraEsperaRack. Añadimos un step Assign y seleccionamos la
variable de capacidad de EsperaRack (Properties >> Basic Logic  >> State Variable Name
>> EsperaRack.CurrentCapacity) y le asignamos el valor 0 (Properties >> New Value >> 0).

3. En la pantalla Definitions creamos un Monitor y lo llamamos DisparaVaciadoRack (Properties


à General à Name à DisparaVaciadoRack).

 a)      Modificamos el tipo de monitor a CrossingStateChange (Properties >>Basic Logic


>> Monitor Type >>CrossingStateChange).
 b)      Seleccionamos la variable a monitorizar (Properties >> Basic Logic >> State Variable
Name >> PuntoUsoItem.AllocationQueue), es decir, el valor de actual de la cola de PuntoUsoItem.
 c)       Cambiamos el valor umbral a 1 (Properties >> Basic Logic >> Threshold Value >> 1), es
decir, cuando el valor de la variable monitorizada “cruce” 1, el monitor disparara el proceso
asociado.
 d)      Cambiamos la “dirección de cruce” a negativa (Properties à Basic Logic >> Crossing
Direction à Negative), es decir, cuando cruze el valor umbral en sentido negativo, por ejemplo, 3,
2, 1, 0. Destacar que el monitor disparará el proceso asociado cuando “cruce” el valor umbral, no
cuando el estado de la variable sea igual al umbral. Es decir, se disparará cuando el valor de la
variable sea menor que uno, PuntoUsoItem.AllocationQueue  < 1.
 e)      Finalmente seleccionamos el proceso a disparar (Properties >> Advanced Options >> On
Event Process >> AbreEsperaRack).
4. Para disparar el proceso CierraEsperaRack no usaremos un monitor, si no que lo haremos con
un Add-On Process. Hacemos click en EsperaRack (Properties à Add-On Process Triggers à
Entered à CierreEsperaRack). En definitiva, cuando el rack entre en el proceso la capacidad de
EsperaRack sera 0, por tanto, hasta que no se dispare el monitor DisparaVaciadoRack, no podrá
ser procesado ningún Rack.
5. Para evitar un posible problema de ceros cambiaremos el tiempo de viaje del TimePath que va
desde Separator1 hasta PuntoUsoItems (Properties >> Travel Logic >> Travel Time).
6. Ahora deberemos cambiar la capacidad inicial de EsperaRack a 0 (Properties >> Process
Logic >> Initial capacity >> 0).
7. Por último cambiaremos el tiempo de proceso de EsperaRack a 0 (Properties >>Process Logic
>> Processing Time >> 0).
B) Solo saldrá un Rack el almacén cuando quede 1 Ítem en el Rack. Es decir, cuado la cola
de PuntoUsoItems sea 1.
Para ello modificaremos la capacidad de Almacén. Será 1 cuando queramos que salga el Rack, y
0 cuando queramos que espere.

1. Creamos un process llamado AbreAlmacen. Añadimos un step Assign y seleccionamos la


variable de capacidad de Almacen (Properties >> Basic Logic  >> State Variable Name
>> Almacen.CurrentCapacity) y le asignamos el valor 1 (Properties >> New Value à 1).
2. Creamos un process llamado CierraAlmacen. Añadimos un step Assign y seleccionamos la
variable de capacidad de Almacen (Properties >> Basic Logic  >> State Variable Name
>> Almacen.CurrentCapacity) y le asignamos el valor 0 (Properties àNew Value >> 0).
3. En la pantalla Definitions creamos un Monitor y lo llamamos DisparaAlmacen (Properties >>
General >> Name >> DisparaAlmacen).
 a)       Modificamos el tipo de monitor a CrossingStateChange (Properties >> Basic Logic
>> Monitor Type >> CrossingStateChange).
 b)      Seleccionamos la variable a monitorizar (Properties >> Basic Logic >> State Variable
Name >> PuntoUsoItem.AllocationQueue), es decir, el valor de actual de la cola de PuntoUsoItem.
 c)      Cambiamos el valor umbral a 2 (Properties >> Basic Logic >> Threshold Value >> 1), es
decir, cuando el valor de la variable monitorizada “cruce” 2, el monitor disparara el proceso
asociado.
 d)        Cambiamos la “dirección de cruce” a negativa (Properties >> Basic Logic >> Crossing
Direction >> Negative), es decir, cuando cruze el valor umbral en sentido negativo, por ejemplo, 3,
2, 1. Destacar que el monitor disparará el proceso asociado cuando “cruce” el valor umbral, no
cuando el estado de la variable sea igual al umbral. Es decir, se disparará cuando el valor de la
variable sea menor que uno, PuntoUsoItem.AllocationQueue  < 2.
 e)        Finalmente seleccionamos el proceso a disparar (Properties >> Advanced Options >> On
Event Process >> AbreAlmacen).
4. Para disparar el proceso CierraAlmacen no usaremos un monitor, si no que lo haremos con un
Add-On Process. Hacemos click en Almacen (Properties >> Add-On Process Triggers >> Exited
>> CierreAlmacen). En definitiva, cuando el rack abandone el proceso la capacidad del Almacen
sera 0, por tanto, hasta que no se dispare el monitor DisparaAlmacen, no podrá ser procesado
ningún Rack.
5. Por último cambiaremos el tiempo de proceso del Almacen a 0 (Properties >> Process Logic
>> Processing Time à 0).
Con fin de poder observar mejor la simulación cambiaremos el tiempo de proceso de
PuntoUsoItem a 1 (Properties >> Process Logic >> Processing Time >> 1).

Y para finalizar limitaremos la salida de Racks a 3. Hacemos click en SourceRack (Properties >>
Stopping Conditions >> Maximum Arrivals >> 3).

Ya podemos correr el modelo y observar que se cumplen las restricciones impuestas.

C3-Uso de Networks
Descripción del problema
https://www.youtube.com/watch?v=7osLxp2hTR4&feature=emb_title
Existen dos tipos de ítems (P1 y P2) y disponemos de 5 servers en nuestro modelo
(Server1, Server2, Server3, ServerP1, ServerP2 y Almacén). También existe un Sink y dos
Sources (Source1 y Source2) que producen P1 y P2 respectivamente. Todas las
conexiones entre los objetos se realizarán mediante TimePaths.

A continuación se adjunta una tabla donde vemos qué tipo de Ítems pueden procesar cada
uno de los Servers.

Server P1 P2

Server1 SI SI

Server2 SI SI

Server3 SI SI

ServerP1 SI NO

ServerP2 NO SI

Almacén SI SI

La secuencia que siguen los Ítems es la siguiente:

1. Tanto P1 como P2 se procesan en el Server1


2. A continuación el P1 se dirige al ServerP1 y el P2 al ServerP2
3. Una vez procesados en sus respectivos Servers, se dirigen al Almacén (tiempo de
proceso 0)
4. Desde el Almacén los dos Ítems pueden dirigirse indistintamente al Server2 o al
Server3
5. Tanto del server2 y el Server3 los Ítems se dirigen a un Sink

Pasos a seguir

1. Nos dirigimos a Definitions y creamos dos nuevos Networks (Network1 y Network2).


2. A continuación, asignamos el Network1 al Ítem P1 (Properties à Initial Network à
Network1) y el Network2 al P2
3. Ahora debemos añadir los TimePaths a sus respectivos Networks (Clik derecho
encima del Path à Add to Network à Network…). Resaltar que un mismo TimePath
puede tener asignado uno o más Networks.
4. Podemos visualizar los Networks en el menú de la parte superior del programa
(View à View Networks à Network…)
5. Para clarificar esta asignación haremos uso de la siguiente tabla:

Desde Hasta Network1 Network2

Source1 Server1 SI NO

Source2 Server1 NO SI

Server1 ServerP1 SI NO

Server1 ServerP2 NO SI

ServerP1 Almacén SI NO

ServerP2 Almacén NO SI

Almacén Server2 SI SI

Almacén Server3 SI SI

Server2 Sink SI SI

Server3 Sink SI SI

    6. Una vez asignados los TimePaths a los Networks ya podemos correr el modelo y        
verificar si funciona según lo deseado.

C4- Numero constante de Entities en


el Modelo
https://www.youtube.com/watch?v=XlI4qpsAwjw&feature=emb_title

Descripción del problema


Se desea que siempre existan 3 Entitys en un modelo. Es decir, que cuando un Entity se destruya
en el Sink aparezca otro nuevo en el Source.

El objetivo del problema es poder tener siempre aprovisionados puntos virtuales demandados.

Un ejemplo real de esta aplicación podría ser un proceso en el que se paletizan determinados
productos, pero que nunca habrá interrupción del proceso por falta de palets, porque siempre se
dispondrá de palets en almacén.

Pasos a seguir
1. Se introduce en el modelo un Source, un Server y un Sink y se une mediante Timepaths.
2. Se modifica el modo de llegada del Source1 a basado en evento, es decir, el Source
generará Items cuando ocurra un evento especifico
3. Se introduce el número inicial de de Entities en el sistema como 3
4. Se introduce el evento que dispara la creación de entities: Input@Sink1.Entered. Es decir,
cuando un entity entra al Sink

C5-Ascensor
https://www.youtube.com/watch?v=1-7vJ0DHklw&feature=emb_title
Descripción del problema
El Ascensor encargado de bajar los racks llenos y posteriormente subir los vacios,
necesariamente tiene que transportar 2 racks, es decir, no puede subir/bajar con un solo rack o sin
ninguno.
Arquitectura del modelo
El ascensor se reprentará como 2 partes independientes, una para la subida, y otra para la bajada.
Cada una de estas partes tendrá un Combiner, un Separator y un Source

Así, como se puede observar en la imagen, el ascensor estaría representado por: VirtualSource1,
Combiner1, Separator1, VirtualSink1, VirtualSource2, Combiner2, Separator2, VirtualSink2.

El proceso VaciadoRacks modeliza el proceso mediante el cual se vacian los racks antes de que
lleguen al ascensor para ser subidos.

SourceRacks se encarga de generar Racks que van al ascensor, así como SinkRacks se encarga
de destruir los racks del sistema.

Las conexiones se realizarán con TimePaths según muestra la imagen superior.

Pasos a seguir
1. Los tiempos de proceso de los Separators, asi como de los TimePaths que conectan los
Combiner y los Separators han de ser 0, asi conseguimos que el tiempo de subida o bajada
del ascensor sea el introducido en el Combiner correspondiente.
2. El tiempo de bajada del ascensor será el process time del Combiner1, así como el tiempo
de bajada será el process time del Combiner2. En este caso se le ha asignado a ambos 1
minuto.
3. Como se requiere que el ascensor transporte de dos en dos los racks se ha cambiado el
tamaño de lote de los Combiners a 2.
4. Para implementar la lógica del ascensor se crearan dos procesos que modificarán las
capacidades de los Combiners para así bloquear/desbloquear la subida o la bajada.
5. El primer Process se llamará AcivarSubida y contiene dos Assign Steps. El Assign
llamado CierraBajada pone a 0 la capacidad del Combiner1 y el assign AbreSubida pone a
1 la capacidad del Combiner2. En definitiva este proceso, bloquea la bajada y habilita la
subida.
6. El process ActivarBajada contiene otros dos Assign Steps. CierraSubida se encarga de
poner a 0 la capacidad del Combiner1, y AbreBajada pone a 1 la capacidad del Combiner
2. Así, este proceso, bloquea la subida y habilita la bajada.
7. Una vez creados estos dos procesos, procedemos a asignarlos a sus respectivos Add-On
Process Triggers.
8. AcivarSubida estará implantado en el Add-On Process Triggers Member Exited del
Separator1.
9. ActivarBajada estará implantado en el Add-On Process Triggers Member Exited del
Separator2.

También podría gustarte