Crear Function Block en Control Builder Plus
En la práctica anterior vimos como crear un proyecto en Control Builder con un simple ejemplo, en está voy a explicar como crear una Función y a su vez una que ya la habia realizado para un PLC Siemens, Allen Bradley, Schneider Y Omron y que puedes ver en el foro de InfoPLC y aqui
Partimos que ya tenemos creado nuestro proyecto y añadimos un nuevo Objeto del tipo Function Block en el lenguaje que nos interese, en este caso Lenguaje estructurado ST
Nuestra Funtion Block es como se muestra, y lo que hace es ir adquiriendo valores y haciendo la media de los registros para intentar evitar fluctuaciones que puedan haber, esta función puede servir de guia y adaptar según las necesidades
Una vez finalizada la Función, ya podemos compilarla y comprobar lo posibles errores, si todo es correcto, ya podemos instanciar nuestra función, para ello hay que crear una nueva variable y declararla del tipo de la función, tal y como se observa con la declaración de la variable filtro, otro ejemplo seria la utilización de la función flanco positivo, declaramos edge del tipo R_TRIG
Una vez declaradas las variables ya podemos insertarlas y el ejemplo seria así:
Una vez mas, antes de simular nuestra función, compilamos todo lo que hemos realizado y ya podemos simular
El proceso para iniciar la simulación lo vimos como mencione en la practica anterior, con lo cual lo omitimos y pasamos a forzar valores y ver el funcionamiento, este es correcto según lo deseado
Para esta práctica contamos con la colaboración de Fermín, el cual ha modificado la función según sus necesidades, aunque con el mismo cometido y me ha facilitado las siguientes imagenes del funcionamiento de la misma. Muchas Gracias!!!
En las siguientes imagenes la podemos observar en funcionamiento y en la gráfica se observa una estabilidad considerable
Y una imagen del Sinoptico, donde esta remarcado los valores obtenidos en mA que es el resultado obtenido de la función
El Código de la función es el siguiente:
IF IN_1=0 THEN
IN_1:= IN;
IN_2:= IN;
IN_3:= IN;
IN_4:= IN;
IN_5:= IN;
IN_6:= IN;
IN_7:= IN;
IN_8:= IN;
END_IF
OUT:= (IN + IN_1 + IN_2+ IN_3+ IN_4+ IN_5 + IN_6+ IN_7+ IN_8)/9;
IN_8:=IN_7;
IN_7:=IN_6;
IN_6:=IN_5;
IN_5:=IN_4;
IN_4:=IN_3;
IN_3:=IN_2;
IN_2:=IN_1;
IN_1:=IN;
27 de Enero del 2013