Skip to main content

Implementar una interfaz

Implementar una interfaz

La implementación de interfaces se basa en el concepto de programación orientada a objetos. También puede usar bloques de funciones diferentes pero similares de la misma manera a través de interfaces comunes.

Un bloque de funciones que implementa una interfaz debe contener todos los métodos y propiedades que se definen en esta interfaz (métodos de interfaz y propiedades de interfaz). Esto significa: El nombre, las entradas y las salidas del método o propiedad respectiva deben ser exactamente iguales.

Cuando crea un nuevo módulo de función que implementa una interfaz, agrega CODESYS ingresa automáticamente todos los métodos y propiedades de esta interfaz debajo del nuevo módulo de función en el árbol.

Importante

Después de eso, si agrega más métodos a la interfaz, agrega CODESYS estos métodos no se agregan automáticamente a los módulos de funciones relevantes. Para la actualización debe usar explícitamente el comando implementar interfaces escoger.

En el caso de bloques de función derivados, debe asegurarse de que los métodos o propiedades que se adoptaron por "herencia" de una interfaz reciban la implementación deseada o se eliminen si se va a utilizar la implementación en la base. Recibirá los mensajes de error o advertencias de traducción correspondientes, provocados por los atributos de pragma insertados automáticamente. Consulte la página de ayuda del comando. implementar interfaces.

Importante

  • Debe asignar la interfaz de un bloque de funciones a una variable del tipo de una interfaz antes de que se pueda llamar a un método a través de la variable.

  • Una variable del tipo de interfaz es siempre una referencia de la instancia de bloque de funciones asignada.

Una variable de tipo de interfaz es una referencia a instancias de bloques de funciones. Dicha variable puede hacer referencia a cualquier bloque de funciones que implemente la interfaz. Si no se ha realizado ninguna asignación a la variable, entonces la variable contiene el valor en modo en línea 0.

ejemplo 30. ejemplos

La interfaz I1 contiene el método GetName.

METHOD GetName : STRING

Los bloques de funciones A y B cada uno implementa la interfaz I1:

FUNCTION_BLOCK A IMPLEMENTS I1
FUNCTION_BLOCK B IMPLEMENTS I1

Por lo tanto, ambos módulos de función deben tener un método con el nombre GetName y el tipo de retorno STRING Contiene. De lo contrario, el compilador informa de un error.

Una función contiene la declaración de una variable del tipo interfaz. I1.

FUNCTION DeliverName : STRING
VAR_INPUT
    l_i : I1;
END_VAR

Bloques de función que la interfaz I1 implemento, se puede asignar a esta variable de entrada.

Ejemplos de llamadas a funciones:

DeliverName(l_i := A_instance); // call with instance of type A
DeliverName(l_i := B_instance); // call with instance of type B

Llamando al método de interfaz:

En este caso, depende del tipo real de l_i de si la aplicación A.GetName o B.GetName llamadas

DeliverName := l_i.GetName();


Implementación de una interfaz en un nuevo módulo de función

Requisito: El proyecto actualmente abierto tiene al menos un objeto de interfaz.

  1. Seleccione Solicitud en el árbol de dispositivos y seleccione el comando de menú Proyecto → Agregar objeto → POU.

    El diálogo Añadir POU se abre

  2. Introduzca un nombre para el nuevo módulo de funciones en el campo de entrada Apellido uno, por ejemplo POU_Im.

  3. Escoger módulo de funciones.

  4. Escoger implementado y haga clic en el botón _cds_icon_input_assistent.png.

  5. En el asistente de entrada, elija de la categoría interfaces la interfaz por ejemplo ITF1 y haga clic OK.

  6. Para agregar otra interfaz, haga clic nuevamente _cds_icon_input_assistent.png y seleccione otra interfaz.

  7. Opcionalmente puedes tener uno modificador de acceso para el nuevo módulo de función de la lista de selección.

  8. Elija de la lista desplegable lenguaje de implementación por ejemplo Texto estructurado (ST) fuera.

  9. haga clic en añadir.

    CODESYS agrega el bloque de función POU_Ex en el árbol de dispositivos y se abre el editor. La primera línea dice:

    FUNCTION_BLOCK POU_Im IMPLEMENTS ITF1

    La interfaz y sus métodos y propiedades ahora se insertan en el árbol de dispositivos debajo del bloque de funciones y ahora puede ingresar el código del programa en la parte de implementación de la interfaz y sus métodos.

Implementación de una interfaz en un bloque de funciones existente

Requisito: El proyecto actualmente abierto tiene un bloque de función, por ejemplo POU_Im y al menos un objeto de interfaz, por ejemplo ITF1.

  1. Haga doble clic en la POU en el árbol de dispositivos POU_Ex(FB).

    Se abre el editor de la POU.

  2. Expandir la entrada de la fila superior existente FUNCTION_BLOCK POU_Im Con IMPLEMENTS ITF1.

    El bloque de funciones POU_Im implementa la interfaz ITF1.