Filtado de una señal analógica mediante un Add-On
En el artículo anterior se intento dar una posible solución del siguiente ejercicio considerando que la programación la estabamos realizando en un S7-300/400/1200, hoy veremos como resolverlo utilizando el RSLogix 5000.
Ejercicio:
Se trata de realizar un FB (Add-On en Rockwell) que filtre una señal de entrada analógica de tipo WORD de la siguiente manera:
-Se activará el byte de marcas cíclicas por hardware y se elegirá el bit de marcas que permita un muestreo de la señal analógica de 1s (Con el RSLogix 5000 no tenemos esta opción con lo cual nosotros generaremos la señal cada segundo)
-El FB deberá tener una entrada de tipo BOOL (que será el bit de ciclo mencionado en el punto anterior) y una entrada de tipo WORD
(correspondiente a la señal analógica que se pretende muestrear)
-El FB tendrá una salida (de tipo REAL) que corresponderá, en cada instante de muestreo, a la media de la muestra actual capturada de la señal analógica junto con sus tres muestras anteriores. Todas ellas deberán irse almacenando en el DB de instancia asociado al FB. Por otro lado, se utilizarán las variables
temporales necesarias.
-El resultado que proporciona el FB (la media indicada) podrá declararse como salida o como variable estática.
Con el RSLogix 5000 tenemos la opción de crear nuestras propias funciones y reutilizarlas, para la creación de una nueva, en el directorio Add-On -> New Add-On Instruction
Introducimos el nombre que va a tener, un comentario, lenguaje de programación y por defecto aparece seleccionado el combo Box Open Definition, que nos abrira una nueva ventana donde definir las variables que vamos a utilizar.
Se nos ha abierto el siguiente asistente, donde navegando por los diferentes menus, haremos la configuración.
Lo primero que vamos a definir, serán las variables de entrada y salida, especificando el tipo de dato a utilizar en el menu de Parameters
En el menu Local Tags, definiremos las variables que utilizaremos en la programación de nuestra función y que no son variables de entrada ni salida, haciendo una comparación con Siemens, seria equivalente a los datos estáticos. Una vez definidos si pulsamos sobre el botón Logic, se nos abrira una nueva ventana donde insertar nuestro código (El tipo de datos de sumatorio es REAL, para que en el resultado se aprecien correctamente los decimales)
Como estoy reutilizando el código del ejercicio anterior, hay que hacer unas pequeñas modificaciónes, pero el código en si, es el mismo, incluso un poco mas simplificadado, ya que no hace falta las funciones que utilizabamos para las conversion de datos, para una mejor visualización pulsa en la imagen.
Ya podemos utilizar nuestra función, pero antes de ello, definimos una nueva variable en nuestro Program Tags, y especificamos que sea del tipo de nuestra función.
La variable que se nos crea, es del tipo estructura con los datos definidos, accedemos a sus diferentes campos con el nombre de la variable (Estructura) "." seguido del campo que nos interese.
Para la utilización de la función creamos una subrutina, donde le pasamos los valores de entrada a nuestra funcion, seguido de la función y obtenemos los resultados al final
Y por último hacemos la llamada desde el programa principal a las diferentes subrutinas y comprobamos su funcionamiento que es correcto.
Un Saludo
Escrito por Jose Manuel Luque / Técnico en Automatización Industrial
Mi Web PLC-HMI-SCADAS