Skip to main content

Implementar una interfaz

La implementación de interfaces se basa en el concepto de programación orientada a objetos. Al usar interfaces compartidas, puede implementar bloques de funciones diferentes pero similares de manera similar

Un bloque de funciones que implementa una interfaz debe implementar su propio código para todos los métodos y atributos definidos en esta interfaz.

Al definir un nuevo bloque de funciones que implementa una interfaz, los métodos y atributos de esta interfaz se insertan automáticamente debajo del nuevo bloque de funciones en el árbol de objetos. Sin embargo, no todos se insertan métodos y atributos, pero solo aquellos que son necesarios para una compilación sin errores.

Si agrega más métodos a una interfaz más adelante, estos métodos son no automáticamente incluido en la declaración de los bloques de funciones que implementan la interfaz. Para actualizar la implementación allí, debe llamar al Interfaz de implementación comando. Para anular métodos individuales, seleccione el Agregar objetoMétodo comando. El cuadro de diálogo se abre con una lista de todos los métodos anulables. Para hacer una selección, haga clic en Nombre cuadro de lista.

En el caso de bloques de funciones derivados, debe asegurarse de que los métodos o propiedades, que se heredan de una interfaz, a través de EXTENDS, se implementan correctamente. Cuando no se proporciona ninguna implementación personalizada, el bloque de funciones utiliza automáticamente la implementación básica del bloque de funciones superior o uno relacionado

Para obtener más información, consulte lo siguiente: Actualización de una interfaz, Método

Uso de variables de interfaz

Importante

Una instancia de bloque de funciones con una interfaz compatible con el tipo debe asignarse a una variable definida como tipo Interfaz. Puede llamar a métodos a través de esta variable solo después de esto.

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

ejemplo 29. Ejemplo

Una variable de interfaz sirve como referencia a una instancia de bloque de funciones. Puede hacer referencia a cualquier instancia que implemente esta interfaz. La instancia específica asignada puede variar en tiempo de ejecución. Hasta la primera asignación, la variable contiene el valor 0.

La interfaz I1 contiene el método GetName.

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

METHOD GetName : STRING
FUNCTION_BLOCK A IMPLEMENTS I1
FUNCTION_BLOCK B IMPLEMENTS I1

Ambos bloques de funciones pueden incluir un método denominado GetName y el tipo de devolución STRING.

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 que está abierto actualmente tiene al menos un objeto de interfaz.

  1. En el árbol de dispositivos, seleccione Aplicación objete y haga clic en ProyectoAñadir objetoPOU comando de menú.

    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. Selecciona el tipo Bloque de funciones.

  4. Haga clic en Implementa atribuya y haga clic en el _cds_icon_input_assistent.png botón.

  5. En el Asistente de entrada, seleccione la Interfaces categoría y luego, por ejemplo, la interfaz ITF1. Después de eso, haz clic OK.

  6. Si desea insertar otra interfaz, haga clic _cds_icon_input_assistent.png otra vez. A continuación, seleccione la interfaz deseada.

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

  8. Haga una selección del Lenguaje de implementación cuadro de lista (ejemplo: Texto estructurado (ST).

  9. haga clic en añadir.

    CODESYS añade el POU_ex bloque de funciones con las interfaces con el árbol de dispositivos y abre el editor.

    La primera línea contiene el texto:

    FUNCTION_BLOCK POU_Im IMPLEMENTS ITF1

    La interfaz y sus métodos y atributos ahora se insertan en el árbol de dispositivos, debajo del bloque de funciones. Ahora puede introducir 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 funciones (ejemplo: Pou_im) y al menos un objeto de interfaz (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.

Actualización de una interfaz

Si agrega más métodos y propiedades a una interfaz ya definida más adelante, los bloques de funciones que implementan esta interfaz son no automáticamente extendido para incluir los nuevos métodos. Debe actualizar manualmente los bloques de funciones que deberían tener una implementación de interfaz.

Para ello, seleccione Implemente las interfaces comando para insertar los nuevos objetos.

Para obtener más información, consulte lo siguiente: Implementar interfaces

Métodos supremos

En escenarios con IMPLEMENTS (interfaces) y EXTENDS (herencia), es posible que los métodos que ya se han declarado en la interfaz deban volver a implementarse en bloques de funciones derivados para adaptarlos o anularlos.

Para anular métodos individuales, seleccione la Agregar objetoMétodo comando. El cuadro de diálogo se abre con una lista de todos los métodos reemplazables para que pueda seleccionar el método deseado que debería tener su propia implementación. Esto se añadirá y podrá complementar la implementación

Para obtener más información, consulte lo siguiente: Diálogo: Añadir método