domingo, 24 de marzo de 2013

Almacén automatizado II

El proyecto de almacén automatizado utiliza una placa de control Imagina basada en un PICAXE 20M2. Para editar el programa de control se puede hacer en BASIC desde el Programing Editor de PICAXE, con Scratch (S4A) o con LabVIEW. Aquí se muestra la programación con Scratch.

El programa del almacén incluye el proceso de lectura del código de barras y la colocación del paquete en la casilla correspondiente de la estantería de 3 x 3 casillas. Todo se inicia cuando presionamos el "Sensor Digital 2" (Pulsador S2). A partir de aquí comienza la animación del paquete, arrastrado por la cinta transportadora en la pantalla del ordenador, y la placa "Imagina" se prepara para que sus dos sensores de infrarrojos CNY70 (Analog3 y Analog5) lean el código de barras. Una vez leido el código de barras el programa le asigna valor a las variables "x" e "y" y con estos valores coloca el paquete en la casilla correspondiente.

Las diferentes imágenes utilizadas en el programa de Scratch son las siguientes:

El escenario incluye el casillero de la estantería, la base y las guías del carro que se mueve en horizontal, ademas de los dos trozos de cinta de la cinta transportadora.

La placa "Imagina" está representada por el siguiente dibujo, y también se mantiene fija.

Las dos ruedas que giran para simular el movimiento de la cinta transportadora tienen este aspecto:

El carro horizontal lleva acoplada la columna sobre la que se desplaza, en vertical, la pinza que recoge y deja los paquetes en su lugar.

La pinza se desplaza en vertical sobre la columna unida al carro horizontal.

Este es el paquete:

Pasaremos ahora a describir el programa, comenzando por el correspondiente a la placa "Imagina".

Al iniciar el programa (Bandera verde) se posiciona el dibujo correspondiente a la placa "Imagina", se paran los dos motores, se ponen a cero todas las variables y se inicia un bucle a la espera de que se pulse el pulsador S2. Una vez pulsado S2 se inician los subprogramas "S2" y "linea1".

Con el subprograma "linea1" comienza la lectura del código de barras. Dentro de un bucle "por siempre" se espera primero a que los dos sensores "Analog3" y "Analog5" detecten un espacio en blanco del inicio del código de barras y después a que uno de los dos sensores detecten negro. "Analog3" representa la referencia de posición y "Analog5" el valor del código. Si los dos detectan negro (Valor 1), se asigna el valor 2 a la variable "x", sino se le asigna el valor 0. Una vez leida la primera linea se inicia el subprograma "linea2" y se para el subprograma "linea1".

El subprograma "linea2" lee la segunda linea del código de barras, que corresponde al segundo dígito binario que asigna valor a la variable "x", que indica la coordenada necesaria para situar el paquete en la casilla correspondiente de la estantería. El modo de proceder es similar al del subprograma "linea1", salvo que el valor que añade a la variable "x", en caso que se detecte linea negra es 1. Al finalizar la lectura de la linea se inicia el subprograma "linea3" y se para el subprograma "linea2".

El subprograma "linea3" lee la tercera linea del código de barras, que corresponde al primer dígito binario de la variable "y". Si el sensor "Analog5" detecta negro se le asignará un valor 2 a la variable "y" y sino un 0. Una vez leida la tercera linea se inicia el subprograma "linea4" y se detiene el subprograma "linea3".

El subprograma "linea4" lee la cuarta linea del código de barras que corresponde al segundo dígito binario de la variable "y" y le suma un 1 si el sensor detecta negro. Después de leer la linea le asigna el valor 1 a la variable "s" para dejar constancia de que ya se ha leído el código de barras y se puede proceder a colocar el paquete en su sitio. A continuación se detiene el subprograma "linea4".

Las dos ruedas de la cinta transportadora tienen aspectos y programas similares, salvo por lo que respecta a las coordenadas de la posición que ocupan. A continuación se muestra el programa de la "Rueda1".

Al iniciarse el programa, con la bandera verde, se sitúa el dibujo en las coordenadas correspondientes. El subprograma "S2" hace girar la rueda hasta que el valor de la variable "t" es 1. El valor 1 de esta variable informa de que el paquete ha llegado al final de la cinta transportadora.

A continuación se puede ver el programa de la "Rueda2".

A continuación se muestra el programa correspondiente al carro.

Al iniciarse el programa, con la bandera verde, se posiciona el dibujo en sus coordenadas de inicio, correspondientes al lugar en que debe recoger el paquete, en la cinta transportadora. El subprograma "S2" también posiciona el dibujo en sus coordenadas de inicio. El subprograma "colocar" lleva el carro horizontal hasta la casilla inferior derecha, que la tomaremos como inicio de coordenadas. El subprograma "coordenadas" desplaza el carro hacia la izquierda tantos espacios, en el casillero de la estantería, como corresponda al valor de la variable "x" menos uno.

A continuación se muestra el programa de la "pinza".

El programa de la "pinza" es similar al del "carro", salvo que en este el subprograma "coordenadas" también desplaza el dibujo hacia arriba tantas casillas como sea el valor de la variable "y" menos uno.

A continuación se inicia el programa correspondiente al "paquete".

Al iniciar el programa, con la bandera verde, se esconde el dibujo del paquete. Al iniciar el subprograma "S2" se muestra el paquete en las coordenadas de inicio, a la derecha de la cinta transportadora, se le hace avanzar hasta el final de la cinta, se fija el valor de la variable "t" a 1 para informar de que el paquete ha llegado al final de la cinta y se inicia el subprograma "colocar".

El subprograma "colocar" desplaza el paquete hasta la casilla inferior derecha de la estantería, siguiendo el movimiento del "carro" y la "pinza". A continuación comprueba que el valor de la variable "s", que indica que el código de barras ya se ha leído, y la variable "t", que indica que el paquete ha llegado al final de la cinta transportadora, valen uno, y si es así inicia el subprograma "coordenadas" y detiene el subprograma "colocar".

El subprograma "coordenadas" del "paquete" es similar al subprograma "coordenadas" de la "pinza" y desplaza el dibujo del "paquete" hasta su casilla en la estantería.

A continuación se puede ver un vídeo con todo el proceso de lectura del código de barras y la colocación del paquete en su casilla correspondiente. Se ha utilizado un paquete con un código negro-blanco-negro-blanco, correspondiente a los dígitos binarios 1010, que corresponden a valores 2 para las dos variables "x" e "y".

No hay comentarios: