Indexado de un arreglo en Studio 5000

Hola amigo, espero estés bien, esta vez te compartiré la técnica para el indexado de un arreglo en Studio 5000.

En ocasiones es necesario extraer información de un arreglo pero por lo regular son muchos los registros y la lógica puede pasar a ser muy extensa.

Para lograr una programación más limpia y compacta, es mejor utilizar un ciclo para el indexado de un arreglo.

Este tipo de lógica es muy común, sobre todo cuando son arreglos de 30, 100, 7000 o incluso más elementos.

En estos casos se puede hacer uso del poder de procesamiento del PLC para que en menos de un segundo haga todo este procedimiento sin necesidad de una programación extensa.

Como es costumbre, te explicare esta técnica mediante un ejemplo que acabo de resolver en mi trabajo.

El problema: indexado de un arreglo

Si llevas tiempo siguiendo mi trabajo, recordarás que en las celdas donde trabajo hay una lógica que captura las partes rechazadas ya sea por sello mal colocado, soldadura defectuosa o falta de alguna pieza en el ensamble.

Hace tiempo programe una pantalla en el HMI que permite revisar cada una de las últimas 49 partes rechazadas, su razón y fecha exacta.

El día de hoy me di cuenta que es necesario capturar la cantidad de piezas rechazadas del presente día y mostrarlas en un indicador.

Al lograr lo anterior, cualquier supervisor o compañero de mantenimiento podría revisar de forma rápida la pantalla y saber si es necesario alguna acción correctiva.

Acordamos que más de 10 piezas rechazadas en un solo día merece la pena investigar las causas.

Análisis de datos

Para empezar a desarrollar la lógica es necesario entender que tenemos actualmente en el programa.

La información de cada parte rechazada se captura en un arreglo de 49 posiciones donde en cada registro se almacena el motivo del rechazo, el año, el mes, el día, la hora, el minuto y el segundo.

En este caso no nos interesa el motivo del rechazo solo la existencia del mismo.

Ademas, en cuanto a la fecha solo nos interesa el día, ya que necesitamos calcular la cantidad de rechazos del presente día.

En otras palabras solo necesitamos conocer el día, por ejemplo para el registro 15 sería la tag Prod_HistoryDB[15].Date.Day.

Solo necesitaríamos comparar el día del rechazo de cada una de las piezas con el del día actual, el cual esta en la tag WallClock.Day.

Análisis de la lógica

A continuación analizaremos la lógica que implemente para resolver el problema mostrado.

Es importante hacer estos pasos ya que existe la posibilidad de mandar a falla el PLC si el conteo supera el tamaño total del arreglo.

Ciclo para el conteo

Lo primero que se tiene que hacer para lograr la captura de todos los elementos del arreglo es hacer un ciclo del 0 al 42.

indexado de un arreglo

En la imagen anterior pueden observar que hay un ADD, donde durante cada escaneo del PLC sumará un 1 a la tag RejectAux1.

La linea anterior muestra un MOV, el cual mueve 0 a la tag RejectAux1 solo cuando esta es mayor a 49.

En otras palabras el valor de RejectAux1 esta circulando del 0 al 49 de forma cíclica.

Sumatoria

Ahora hay que agregar el indexado del arreglo y generar la sumatoria que nos de la cantidad de partes rechazadas.

Ahora podemos observar como el número entre corchetes para la tag Prod_History ya no es una constante sino la tag RejectAux1.

Esto significa que va a comparar todos los valores en Day de cada registro con el día actual o WallClock.Day.

Cada que dicha comparación sea verdadera la tag TodayRejects va a aumentar en 1.

Para evitar que siga aumentando el número y solo sume los correspondientes a un ciclo del 0 al 49, se agrega un MOV para mover un 0 al mismo tiempo que el ciclo empieza de nuevo.

Captura del valor para la HMI

Si recuerdas, esta lógica se desarrolló para ser mostrado el resultado en una HMI, lo cual significa que actualmente se estaría mostrando cada uno de los números de la sumatoria (1, 2, 3, 4, 5… hasta el número de partes rechazadas).

Para evitar esto, en vez de utilizar el valor del sumador TodayRejects agregue una tag que guardará el resultado que se mostrará en la HMI.

Por lo que la lógica final quedaría de la siguiente manera.

indexado de un arreglo

En esta última imagen se muestra como solo el valor final es copiado a la tag TodayRejectsHMI, misma que se utilizó para mostrar el resultado en la HMI.

Conclusiones sobre el indexado de un arreglo

Como podrás ver hay muchas maneras de utilizar a nuestro favor el escaneo del PLC, tal como lo hicimos en mi artículo anterior, Contador por escaneo para un Robot MH.

Sin embargo, en esta técnica en especial hay que tener mucho cuidado, ya que si el número, por ejemplo, de la tag RejectAux1 es mayor al número máximo de registro del arreglo, el PLC se ira a falla, lo cual se vuelve un problema algo complicado cuando la linea es grande.

Por ello te invito a que hagas algunas prácticas en simuladores donde utilices estas técnicas y así sea menos probable que tengas problemas como un PLC en falla.

Espero te haya gustado esta técnica que te he compartido y cuéntame por favor en los comentarios si tienes pensado implementar esta técnica y si ya lo has hecho, comparte tu experiencia.

En mi caso te puedo decir que la primera vez que lo implemente en planta me equivoque por un número y mande el PLC a falla, me puse bastante nervioso pero afortunadamente puede arreglarlo rápido.

Por cierto, ¿cómo te pareció este artículo? si aprendiste algo nuevo, no dudes en compartirlo.

Recuerda que si deseas aprender a Programar PLC como todo un experto, suscribete hoy a mi Programa Premium y obtén acceso instantáneo a todo mi material el cual incluye una sería de prácticas que te llevaran de la mano hasta alcanzar tus objetivos en Programación de PLC.

Saludos y mucho éxito!


Hola, soy Germán Madrid

Inscribete a mi curso de PLC HOY, es totalmente GRATIS!!

ACERCA DE GERMAN MADRID

Programador e instructor de PLC.

Programador e instructor de PLC. Ayudo a estudiantes, técnicos e ingenieros a alcanzar su máximo potencial para así poder aplicar como programador de PLC en la empresa que deseen.

Ofrezco capacitación online mediante prácticas basadas en sistemas y problemas reales de la Industria Automotriz. Utilizo simuladores de PLC por lo cual solo necesitarás una computadora e Internet para completar cualquiera de mis cursos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *