Cómo crear una Función FB Step 7 para poder controlar varios elementos de la instalación que tienen datos similares y, por tanto, solamente vamos a definir esos datos una sola vez en la Función FB para después compartirlos para los demás dispositivos.
Qué ventajas tiene la Función FB Step 7.
Como hemos comentado, el objetivo será definir la función FB de manera que esos mismos datos sean compartidos por todos los elementos de la instalación. Por ejemplo, para el control de varios motores con marcha paro para los motores, donde tendrán en común la marcha, la parada, la entrada de parada de emergencia, los disyuntores, etc… todos estos datos son comunes y por tanto solo los vamos a crear una vez en una sola Función FB Step 7 y así utilizarla tantas veces como queramos en el proyecto.
Cómo crear un FB Step 7.
El primer paso es en el administrador Simatic, donde, con el botón derecho escogeremos la opción de “Insertar nuevo objeto” y seleccionaremos el “Bloque de Función”, esto es, un FB.
A continuación, le daremos nombre a nuestra nueva Función, determinando que debe nombrarse como FB + un número que todavía no esté utilizado, tal y como se utiliza en la creación de un FC normal. Además, le añadimos un nombre simbólico que será el que nos haga reconocer nuestra Función cuando vayamos a buscarla.
Una vez creada, pasamos a definir los datos que se van a utilizar dentro del FB. En nuestro caso, por ejemplo, vamos a introducir varios controles para el motor, como, por ejemplo, varias características del motor, como las revoluciones, tipo de tensión, tipo de motor, horas de funcionamiento., etc…
Para ello, declaramos unas variables como “STAT”. Dentro del Interface de la FB seleccionamos la pestaña “STAT” y definiremos el nombre y el tipo de datos que queremos crear. En nuestro caso vamos a generar varias variables de tipo INT.
Puedes ver un ejemplo con la utilización de Funciones FB para control de varios motores en un documento de esta web:
Puedes encontrar más información sobre el control de la Función FB, e insertar entradas y salidas a la Función en el siguiente Link que enlaza a otro documento de esta web:
Después de generar las variables de nuestro FB, pasamos a utilizar la Función FB en nuestro programa. Para ello, en el OB1 hacemos una llamada al FB, seleccionando la función desde el árbol izquierdo del Simatic, dentro del Ob1:
Nos mostrará unos interrogantes encima de la función FB. Esto significa que le debemos asociar un DB de datos al que queremos que llame cada vez que se vaya a ejecutar esta función. Por ejemplo, vamos a crear un Db1 que representará los datos de nuestro motor 1. Al ponerle el nombre DB1, automáticamente nos preguntará si queremos añadirlo, como muestra la imagen:
Si ahora necesitamos controlar otro nuevo motor, debemos volver a llamar al FB, pero en lugar de indicar que se asocie con el DB1, debe de llamar a otro DB de datos diferente. Es decir, el DB1 serán los datos del motor 1 y ahora el nuevo DB2 serán los datos del motor 2.
Ahora simplemente debemos abrir los dos DB de datos para introducir los datos diferentes en cada uno de los motores. Estos datos diferentes serán utilizados en el interior del FB cada vez que lo llamamos en el OB1, dependiendo de si se llama al FB con el DB1 o con el DB2.
A estos los llamamos DB de instancia, cuya instancia es el FB al que va asociado. Ahora, colocamos los valores de cada uno de los motores, como por ejemplo los que siguen:
Puedes encontrar más información sobre el control de la Función FB, e insertar entradas y salidas a la Función en el siguiente Link que enlaza a otro documento de esta web:
Ahora, comprobamos online lo que hemos aplicado. En el OB1, nos colocamos sobre la llamada del FB1 con los datos del DB1, con lo cual, saltará a una ventana donde mostrará el interior del FB y los datos utilizados serán los que tenga el DB1. Hemos introducido una comparación simple, para comprobar que ha cogido los datos correctos. Según la imagen anterior, los rpm del DB1 eran de 2200, y hacemos una comparación, en la que si el rpm es igual a 1200 (1200 son los rpm del DB2) se activaría una marca.
Puedes ver un ejemplo con la utilización de Funciones FB para control de varios motores en un documento de esta web: