Ejercicio Bit Shift

Siempre hay muchas maneras de realizar tareas en la programación, pero una revisión rápida de las instrucciones de cambio de bits de Allen Bradley seguramente les señalará como una herramienta ideal para usar en este proceso en particular. En la simulación de línea de botella, nos enfrentamos a la detección y seguimiento de unos pocos detalles booleanos que tienen que ver con las botellas que entran en la línea. Se proporcionan sensores para detectar la presencia de una nueva botella, el tamaño de la botella y si la botella está completamente intacta. Esencialmente 3 estados booleanos que describen las propiedades de cada botella que entra en la línea. Si analizamos las diversas maneras en que podemos procesar estas botellas, rápidamente se hará evidente que tendremos amplia información para tomar tales decisiones, asumiendo que lo seguimos.



Una única instrucción BSR o BSL puede utilizarse para rastrear un único estado booleano (0 o 1) que a su vez puede describir una propiedad única de un producto. En el ejercicio inicial se le pedirá que rastree los 3 valores booleanos que describen cada botella que entra en nuestra línea de proceso. Los estados booleanos se denominarán "Exists", "Large" y "Broken" y estos estados deben ser rastreados por usted, utilizando 3 instrucciones BSL (bit shift left). Se puede argumentar que "Exists" no necesitan ser rastreados (= correctos), ya que las botellas entran continuamente en la línea, y por lo tanto deben existir. Incluso utilizaremos este hecho para esbozar nuestras instrucciones BSL y causar un cambio de nuestra información rastreada. Más tarde, cuando usted comienza a desviar las botellas rotas a la chatarra sin embargo, ya no existirán. Estas botellas que faltan podrían detectarse después de que se hayan eliminado usando el estado "Broken", pero por ahora quiero que rastree los 3 estados usando 3 matrices de bits independientes.
..........

Ejercicio # 1 - Seguimiento de las botellas
Cree un programa que permita al operador iniciar y detener el proceso utilizando los interruptores disponibles en el panel. Cuando el proceso se está ejecutando, el transportador principal debe estar energizado, y las botellas deben entrar y salir continuamente de la línea. Para estos ejercicios, por favor utilice los bits de la palabra B3: 0 si y cuando se requieren bits individuales como banderas, etc.
Utilizando LS1 (Exists), strobe 3 instrucciones BSL para cambiar 3 matrices de bits independientes que consta de dos palabras de 16 bits cada una. Utilice los archivos # B3: 2, # B3: 4 y # B3: 6 para este propósito. Al restringirle a estos archivos en particular en la tabla binaria, será mucho más fácil para usted, y su instructor para supervisar lo que está sucediendo con su programa mediante la visualización de la tabla de datos.



Pruebe su programa y utilice el monitor de pantalla de la tabla de datos, tome nota de cómo los bits que representan "Exist", "Large" y "Broken" se están desplazando dentro de sus matrices de bits apropiadas. Es posible que deba disminuir la velocidad de exploración con el control deslizante en el panel del PLC para ver claramente esta actividad. Si su programa está funcionando correctamente, ahora debe tener un medio para determinar las propiedades asociadas con cada botella que pasa por la línea de embotellado.
..........

Ejercicio # 2 - Utilización de los datos booleanos

Si prestó atención a los bits que se desplazan a lo largo de cada matriz de bits, es probable que haya notado que hay un desfase entre cada uno de estos 3 arrays. Esto se debe al hecho de que los 3 interruptores de límite se encuentran exactamente 2 anchos de botella aparte. Con el fin de utilizar LS1 para estrobo los datos de los 3 interruptores al mismo tiempo, este espaciamiento es en realidad crítico, y debe ser un múltiplo exacto de una botella de ancho. El número de anchos de botella a su vez determina la compensación que encontramos dentro de nuestras matrices.

No podemos compensar fácilmente este desplazamiento cuando se utiliza una instrucción BSL ya que los datos del conmutador siempre se cargan en el bit 0 de la matriz. Puede haber formas de superar esto, pero para estos ejercicios será su responsabilidad compensar estas compensaciones. Tendrá que ajustar para esto siempre que emplee cualquiera de estos bits para determinar las propiedades de una botella en particular.



Modifique su programa para que todas las botellas grandes se desvíen al transportador inferior situado en el lado derecho de la simulación. Esto se debe lograr utilizando el bit apropiado en la matriz de bits "Grande" para invocar la transferencia. Además, asegúrese de que las botellas no se dañen en el proceso.
Si tiene éxito en completar lo anterior, debe estar bien preparado para hacer frente a la tarea de desviar las botellas rotas a la chatarra
..........

Ejercicio # 3 - Boxeo de las botellas rotas

Para añadir un poco de interés a la simulación, he decidido tener que moler las botellas rotas que de vez en cuando vienen por la línea. Por supuesto, es su responsabilidad asegurarse de que el vidrio molido se coloca en cajas, y de traer nuevas cajas en su lugar según sea necesario.

El costo de proporcionar cajas de cartón puede ser significativo con el tiempo. Por esta razón es esencial que llene cada caja a su capacidad máxima, y ​​hacerlo sin derrames. Dado que una botella pequeña sólo produce 2/3 de vidrio molido como una botella grande, tendrá que ajustar para esta diferencia en la lógica del programa.
Al crear la lógica para este ejercicio, puede encontrar que se enfrenta a inicializar variables o borrar contadores, etc. cada vez que edita y luego reinicia su programa. Sólo para hacer un poco más fácil encontrar esta lógica, le pediría que agregue el siguiente renglón a la parte superior de su programa.


No hay ningún sentido acumular su programa con la lógica que sólo se ejecuta una vez cada vez que se ejecuta, por lo que por favor coloque esta lógica en una subrutina donde está fuera del camino, pero fácilmente ubicado.
Una vez que haya llegado a una solución para el problema de chatarra, entonces ahora está entrando en el tramo de casa.
..........

Ejercicio # 4 - Rellenar y tapar las botellas

No hay muchos detalles que necesitan ser explicados acerca de la operación de llenado. La activación del solenoide del tubo de llenado O: 2/6 hará que el tubo de llenado se extienda y entre en el frasco posicionado. A continuación, debe hacer una elección de descargar una cantidad grande o pequeña de producto en la botella utilizando el solenoide de carga adecuado O: 2/7 u O: 2/8. Una vez más, los datos booleanos contenidos en las matrices de bits se utilizarán para determinar la acción correcta que se va a tomar.



El control de la estación de tapa de la botella debe ser sólo una cuestión de tapar cada botella que viene junto. El solenoide de la espiga de tapa O: 2/9 debe estar energizado para extender el émbolo, pero no es necesario ajustar el tamaño de la botella con este equipo de tapado en particular. Intentar tapar una botella que no existe causará poco daño, pero es un desperdicio de gorras, además de añadir al desorden en el piso de la planta. Debido a lo anterior, asegúrese de que sólo tapa las botellas que realmente existen.
Dejaré temas como cuándo parar y comenzar la línea a usted. Tenga en cuenta, sin embargo, que queremos mantener el más alto nivel de producción posible con el equipo a nuestra disposición.
Una vez que las operaciones de llenado y tapado funcionen con la máxima eficiencia, podemos pasar al trabajo de mantener al operador completamente informado de los detalles de producción.
..........

Ejercicio # 5 - Seguimiento de los números de producción

El panel de control del operador ha sido equipado con cuatro unidades de visualización LED de cuatro dígitos que fueron incluidas de modo que el operador pueda ver fácilmente los recuentos de producción actuales, etc ... Con el fin de reducir el número de señales de salida del PLC necesarias para controlar estas muchas pantallas, se decidió multiplexar las cuatro unidades de visualización, y se seleccionaron 4 unidades de visualización de cuatro dígitos fabricadas con pestillos incorporados para este propósito ...
Las 16 entradas de datos de cada unidad de pantalla cuádruple fueron conectadas a un bus de datos de 16 bits compartido, y estas líneas de datos compartidas se encadenaron a una tarjeta de salida de 16 bits dirigida como O: 4 ... Cuatro salidas de repuesto de la tarjeta O: 2 se cablearon entonces para controlar la línea de estroboscopio (activación de bloqueo) de cada unidad de pantalla cuádruple individual; una salida para cada una de las 4 unidades de pantalla cuádruple ...
Para ver un diagrama de cableado, además de obtener más información sobre las pantallas de 7 segmentos de multiplexación, seleccione el siguiente enlace:




Las pantallas multiplexadas se pueden escribir individualmente colocando la representación BCD del número que se mostrará en la tarjeta de salida O: 4, y luego activar la línea de habilitación de bloqueo apropiada de baja a alta y luego volver a baja de nuevo ... Los datos se permite entrar y pasar a través de los pestillos integrados de la unidad de visualización seleccionada cuando la línea de habilitación de retención se toma alta y los datos se bloquean o se congelan efectivamente cuando la línea de habilitación de retención se toma baja ... Una vez más bajo los cambios en las líneas de entrada de datos serán ignorados y la pantalla continuará mostrando la representación numérica de los datos retenidos en los pestillos ... La pantalla continuará mostrando los mismos números hasta que se vuelva a activar la habilitación del pestillo o la potencia está perdido...
Su tarea, si acepta esta asignación, es actualizar las pantallas multiplexadas con los totales corrientes de las botellas grandes y pequeñas producidas, las botellas desechadas y las cajas llenas. La velocidad a la que se llevan a cabo las actualizaciones debe ser lo suficientemente alta como para que los conteos individuales no se salten, pero no tanto como para cargar el PLC innecesariamente.

Esta tarea particular de actualizar las pantallas de LED se presta bien a la modularización, e idealmente debería ejecutarse en una subrutina. Incluso si llama a esta subrutina incondicionalmente cada exploración, todavía hay beneficios para este enfoque. Colocar esta lógica donde estará fuera del camino, pero fácilmente accesible puede hacer para un programa mucho menos desordenado, y más fácil de leer.



La tarea de escribir la subrutina será dejada a usted, y hay muchos métodos que pueden ser empleados para realizar la tarea. Una posibilidad es emplear un temporizador auto-reajustado y luego escribir en cada unidad de visualización en un intervalo de tiempo único pero regular. Puede enviar primero los datos BCD deseados a la tarjeta O: 4 y activar la activación de bloqueo de la pantalla seleccionada en la misma tiempo ... Siga esto deshabilitando la habilitación del mismo bloqueo en el siguiente intervalo de tiempo de base y, a continuación, se establecería para repetir la misma secuencia para la siguiente unidad de visualización ... Si utiliza un temporizador, recuerde que la subrutina necesitan ser llamados incondicionalmente (como se muestra arriba) en cada exploración, para que un temporizador ubicado en la subrutina sea actualizado correctamente
Una vez que haya completado lo anterior, todo lo que debe dejarse es manejar los detalles. Permitir al operador establecer el recuento de botellas a procesar podría ser una característica que vale la pena implementar. Revisar su programa y asegurarse de que está claramente documentado es una necesidad. La adición de algo nuevo como el seguimiento del tiempo de ejecución del equipo es una opción.
..........

Ejercicio # 6 (Opcional!) - Sólo una pequeña modificación
En la introducción a esta serie de ejercicios para la línea de la botella, declaré que "siempre hay numerosas maneras de realizar tareas en la programación". Para probar que la declaración era correcta, ahora voy a pedirle que modifique su programa para que las instrucciones BSR (bit shift right) se usen en lugar de BSL. Al mismo tiempo, también quiero que se limite a la utilización de sólo 2 arrays de bits para el seguimiento de las propiedades de la botella.

Si sólo se usan las matrices de bits "Grandes" y "Rotos", todavía debe ser capaz de determinar si existe una botella examinando la propiedad "Rotada" de la botella. Por supuesto, esto supone que la botella rota ha sido desviada a la chatarra, y por lo tanto ya no existe.
Mientras esté realizando las modificaciones necesarias, revise cuidadosamente la documentación de AB para la instrucción BSR y vea si puede encontrar una forma de eliminar el offset que teníamos en las matrices de bits anteriores.
..........

..........

Comentarios

Lo más leído del Blog

Explicación del Estado de la CPU y errores de LED Siemens S7 300

Instrucciones de Bit

Introducción al PLC