Jump to content
  • Sign in to follow this  

    Tia Portal – Diferentes instancias de llamada a un bloque de funciones

       (0 reviews)

    xiangjinjiao

    En un artículo anterior, analizamos qué es un bloque de funciones FB, cómo funciona en un programa de PLC y cómo crear y utilizar uno. En este artículo, hablaremos sobre las instancias de bloques de datos de diferentes tipos de bloques de funciones en Siemens Tia Portal y cuándo utilizar cada tipo.

    Contenido:

    • ¿Qué es un bloque de funciones FB?
    • Diferentes opciones de instancias de datos.
    • Instancia única.
    • Instancia de parámetro.
    • Instancia múltiple.

    ¿Qué es un bloque de funciones?

    Un bloque de funciones o FB es simplemente un bloque que contiene lógica de código. Utiliza este FB para lograr una funcionalidad específica a través de los fragmentos de código escritos en su interior.

    Al llamar a un bloque de funciones en su código, se le solicitará que asigne un bloque de datos también llamado instancia de datos para asociarlo con este FB, para guardar los valores de los parámetros del FB. No todos los parámetros dentro de un FB se guardan en la instancia de datos, pero llegaremos a eso más adelante.

    Al llamar a un bloque de función, tiene 3 opciones diferentes para asociar una instancia de bloque de datos con esta llamada de función. Estas diferentes opciones dependerán de dónde esté llamando a su FB.

    En pocas palabras, un FB de bloque de función es básicamente un FC de función con una base de datos de bloque de datos dedicada, este bloque de datos se utiliza para almacenar los valores de los parámetros del bloque de función.

    Diferentes opciones para instancias de datos

    Tenemos 3 opciones diferentes para una instancia de datos de un bloque de función, estas opciones son:

    • Instancia única.
    • Instancia de parámetro.
    • Instancia múltiple.

    Las tres instancias de datos de llamada diferentes provienen de los 3 métodos de llamada diferentes:

    • Puede llamar a un FB de bloque de función dentro del OB1 principal, lo que le dará la opción de:
    • Instancia única.
    • Puede llamar al bloque de función FB dentro de una función FC, lo que le dará dos opciones:
    • Instancia única
    • Instancia de parámetro
    • Puede llamar al bloque de función dentro de otro bloque de función, lo que le dará las tres opciones disponibles para crear una instancia de datos
    • Instancia única
    • Instancia de parámetro
    • Varias instancias

    Instancia de datos única

    Primero, comencemos por crear un bloque de función FB, como mencionamos antes, creamos un bloque de función haciendo clic en agregar un nuevo bloque y eligiendo el tipo de bloque que queremos. Vea la imagen 1.

    150-1.gif

    Imagen 1: creación de un bloque de función FB

    Ahora, llamemos al FB reutilizable que creamos dentro de nuestro OB1 principal. Vea la imagen 2.

    150-2.gif

    Imagen 2: llamada al FB dentro del OB1 principal

    Como puede ver en la imagen anterior, al llamar a un FB dentro del OB1 principal, se le solicitará que asigne una instancia de datos para asociarla con esta llamada de FB. En este caso, habrá solo una opción, que es la instancia única.

    Después de elegir una opción de instancia única, se creará un bloque de datos y se asociará con la llamada FB. Ver imagen 3.

    150-3.gif

    Imagen 3: instancia única creada

    La instancia única creada se utilizará para almacenar los valores de algunos de los parámetros FB. Como las entradas, salidas, In Out y parámetros estáticos.

    No se almacenarán otros parámetros del FB, como la temperatura y las constantes. Ver imágenes 4 y 5.

    150-4.gif

    Imagen 4: los datos se guardan dentro de la instancia de datos

    150-5.gif

    Imagen 5: los datos se guardan desde el FB a la instancia de datos.

    Ahora, creemos una lógica simple dentro del FB para ayudarnos a comprender mejor las instancias de datos. Esta lógica agregará un valor constante de 15 a una variable estática y luego moverá el resultado a la salida. Consulte la imagen 6.

    150-6.gif

    Imagen 6: Cree una lógica simple

    Ahora, vuelva al OB1 principal y observe cómo está ahora su llamada FB. Consulte la imagen 7.

    150-7.gif

    Imagen 7: Actualice la llamada FB después de cada cambio

    Cualquier cambio que realice en la lógica dentro del FB, dará como resultado la necesidad de actualizar la llamada del bloque de función, de modo que se puedan aplicar los cambios que realizó.

    Puede actualizar la llamada del bloque haciendo clic derecho en la llamada FB y presionando la opción de actualización de llamada del bloque o recompilando su código PLC. Consulte la imagen 8.

    150-8.gif

    Imagen 8: Actualización de la llamada FB

    Después de actualizar la llamada del bloque, los cambios que realizó en el código FB se aplicarán y emplearán en la llamada del bloque. Como puede ver en la imagen 9.

    El FB ahora espera que se proporcione una señal de entrada de tipo bool y el FB dará una salida de tipo int.

    150-9.gif

    Imagen 9: las entradas y salidas ahora están asociadas con la llamada del FB

    Simulemos nuestro código y veamos cómo se comportará el PLC. Vea la siguiente animación que muestra una simulación simple de la lógica del PLC hasta ahora.

    spacer.png

    Como puede ver en la animación, siempre que la señal de inicio sea VERDADERA, la función se ejecutará y la salida seguirá cambiando. Y una vez que la señal de inicio ya no esté disponible, la salida permanecerá en el último valor registrado.

    El uso de la instancia de datos aquí es que los valores de la variable estática y la variable de salida se guardan dentro de la instancia única, por lo que cuando la señal de inicio regrese nuevamente, la función continuará desde los últimos valores registrados.

    Nota muy importante

    Nunca debe utilizar la misma instancia única para dos llamadas diferentes de un FB. Vea la siguiente animación.

    spacer.png

    Como puede ver en la animación, tenemos dos llamadas FB diferentes, pero ambas llamadas están asociadas con la misma instancia única, por lo que incluso cuando la señal start2 era FALSE, el valor Output2 estaba cambiando con Output1.

    Como esperaría, el cambio en la instancia de datos de la primera llamada también se verá afectado en la segunda llamada porque tienen el mismo bloque de memoria. Vea la imagen 10.

    150-12.gif

    Imagen 10: Nunca utilice la misma instancia de datos con diferentes llamadas FB

    Si utilizó la misma instancia de datos con diferentes llamadas FB, entonces su bloque de función ya no es reutilizable. Incluso si los parámetros de entrada/salida son diferentes para cada llamada FB diferente. Como viste en el último video (animación), ambas llamadas tuvieron los mismos resultados, aunque la segunda llamada ni siquiera tiene una señal de entrada de habilitación.

    Otra nota muy importante

    Dijimos antes que si llamas a tu FB desde un FC de nivel superior, tendrás dos opciones para la instancia de datos asociada; estas opciones son la instancia única y la instancia de parámetro. Consulta la imagen 11.

    150-13.gif

    Imagen 11: uso de una sola instancia con un FB llamado desde un FC

    Si eso sucediera y llamas a un FB dentro de un FC, nunca deberías usar una sola instancia para tus FB. Para saber por qué, consulta la imagen 12

    150-14.gif

    Imagen 12: llamar al FC de nivel superior más de una vez

    Como ves en la imagen 12, cuando llamas al FC de nivel superior en tu lógica más de una vez, no se te pedirá que asignes un bloque de datos, porque los FC no necesitan uno.

    Pero sabes que hay un FB llamado dentro del FC, este FB tiene una única instancia asociada a él. Entonces, ahora las 3 llamadas FC tienen la misma instancia de datos para la llamada FB. Entonces, tu función FC ya no es reutilizable.

    ¿Qué hacer? La mejor opción para cuando necesitas llamar a un FB dentro de un FC es usar la instancia de parámetro.

    Instancia de parámetro

    Como dijimos antes, si llamaste a un FB dentro de un FC, no deberías elegir la única instancia, sino que la instancia de parámetro es mejor para tus propósitos de reutilización.

    Una instancia de parámetro guardará la instancia de datos del FB llamado en el área In Out de la interfaz del bloque FC. Permitiéndote ingresar una nueva instancia de datos para cada llamada FC. Vea las imágenes 13 y 14.

    150-15.gif

    Imagen 13: Asignar una instancia de parámetro al llamar a un FB dentro de un FC

    150-16.gif

    Imagen 14: Cada llamada a un FC necesitará una nueva instancia de datos

    Como puede ver en la imagen anterior, siempre que llame al FC dentro de su programa, solicitará una instancia de datos para el FB reutilizable dentro del FC.

    Pero, al usar este método, tendrá que crear la instancia de datos usted mismo. Vea la imagen 15.

    150-17.gif

    Imagen 15: Crear una nueva instancia de datos

    Para crear una nueva instancia de datos, haga lo mismo que para crear un FC o un FB, pero esta vez elija la opción DB. Y asegúrese de seleccionar el tipo de DB para que sea el mismo que el FB llamado.

    Ahora, su FC se puede reutilizar tantas veces como desee, solo tiene que crear una instancia para cada llamada. Consulte la imagen 16.

    150-18.gif

    Imagen 16: Asignar la base de datos a la llamada FC

    Base de datos de instancias múltiples

    Una base de datos de instancias múltiples simplemente significa que la base de datos del FB llamado se almacenará dentro de la base de datos del FB de llamada de nivel superior. Esta opción solo está disponible si llama a un FB desde otro FB.

    Vamos a crear otro FB para usarlo como un FB de nivel superior.

    Después de crear este HigherLevelFB, llámelo desde el OB1 principal y, por supuesto, la única opción de llamada será una sola instancia como se mostró antes. Consulte la imagen 17.

    150-19.gif

    Imagen 17: Llame al HigherLevelFB desde el OB1 principal

    Ahora, llame al ReutilizableFB desde el HigherLevelFB y elija la opción Multiinstancia. Consulte la imagen 18.

    150-20.gif

    Imagen 18: Asignar una base de datos de múltiples instancias

    Cuando elija la opción de múltiples instancias, la base de datos creada se almacenará dentro de los parámetros estáticos del FB que realiza la llamada. Consulte la imagen 19.

    150-21.gif

    Imagen 19: Las instancias se guardan dentro de los parámetros estáticos

    Puede llamar al FB reutilizable muchas veces; cada vez que lo llame, la instancia múltiple se almacenará dentro del parámetro estático. Consulte la imagen 20.

    150-22.gif

    Imagen 20: Llamar al FB reutilizable muchas veces

    Como puede ver, la instancia de datos del FB de nivel inferior se guardará dentro de la instancia de datos del FB de nivel superior. Es mejor para una mejor estructura del programa y una lógica fácil de leer.

    Conclusión

    La creación de bloques de funciones dentro de su código requerirá asociar un bloque de datos con cada llamada al FB que realice en su lógica. Este bloque de datos o también llamado instancia de datos tiene diferentes opciones según el tipo de bloque que esté llamando a tu FB.

    Ten cuidado al elegir el tipo de instancia de datos, ya que algunas opciones pueden no ser adecuadas para tu caso como mostramos anteriormente. Y a veces esto puede generar problemas en tu lógica y tu función ya no podrá reutilizarse.

    El uso de múltiples instancias puede ayudar a organizar mejor la estructura de su programa, ya que todos los FB llamados almacenarán sus bases de datos dentro del FB llamador principal.

    Sign in to follow this  


    User Feedback

    Recommended Comments

    There are no comments to display.



    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

Apply for friendship links:WhatsApp or E-mail: admin@plchmis.com
×
×
  • Create New...