EcoStruxure Machine Expert versión 1.1 no soporta los controladores M258, LMC058 y LMC078.

Método

Descripción general

Un método es un elemento del lenguaje, similar a una función, que puede utilizarse en el contexto de un bloque de funciones. Se puede considerar una función que contiene una instancia del bloque de funciones respectivo. Como tal, el método tiene un valor de retorno, y su parte de declaración propia para variables temporales y parámetros.

También, como medio de programación orientada a objetos, puede utilizar interfaces para organizar los métodos disponibles en un proyecto.

NOTA: Al copiar o desplazar un método o una propiedad de un POU a una interfaz, las implemen­taciones contenidas se eliminan de forma automática. Al copiar o desplazar de una interfaz a un POU, se solicita especificar el lenguaje de implementación deseado.

Inserción de un método

Para asignar un método a un bloque de funciones o a una interfaz, seleccione el nodo de bloque de funciones o de interfaz adecuado en Aplicaciones , haga clic en el signo más de color verde y ejecute el comando Método. Como alternativa, puede hacer clic con el botón derecho en el nodo del bloque de funciones o de la interfaz y ejecutar el comando Agregar objeto > Método en el menú contextual.

En el cuadro de diálogo Añadir método, introduzca un Nombre, el Tipo de retorno deseado, el Lenguaje de implementación: y el Modificador de acceso  (véase a continuación). Para elegir el tipo de retorno, haga clic en el botón ... para abrir el cuadro de diálogo Accesibilidad...

Modificador de acceso: por motivos de compatibilidad, los modificadores de acceso son opcionales. El modificador PUBLIC está presente como equivalente a no establecer ningún modificador.

Como alternativa, seleccione una de las opciones de la lista de selección:

oPRIVADO: el acceso en el método se restringe al bloque de funciones.

oPROTEGIDO: el acceso en el método se restringe al bloque de funciones y su derivación.

oINTERNO: el acceso en el método se restringe al espacio de nombres actual (la biblioteca).

Haga clic en Abrir para confirmar. Se abrirá la vista del editor de métodos.

Accesibilidad al crear bloques de funciones heredados

EcoStruxure Machine Expert facilita la programación orientada a objetos utilizando la herencia dentro de los bloques de funciones. Al ejecutar Agregar objeto sobre un bloque de funciones que hereda de otro, los elementos Acción, Método, Propiedad y Transición utilizados en el bloque de funciones base se enumeran para seleccionarlos.

oLos elementos Acción, Método, Propiedad y Transición con Modificador de acceso = PUBLIC, PROTECTED e INTERNAL definidos en el bloque de funciones base están disponibles para seleccionarlos. Puede adaptar la definición para el objeto heredado. En el objeto heredado, se asigna el mismo Modificador de acceso que a los elementos origen.

oLos elementos Acción, Método, Propiedad y Transición con Modificador de acceso = PRIVATE no se pueden seleccionar porque el acceso está restringido al bloque de funciones base.

Declaración de un método

Sintaxis:

METHOD <modificador acceso> <nombre método> : <tipo datos retorno>VAR_INPUT  ... END_VAR

Para obtener una descripción sobre cómo declarar métodos de manejo de interfaces, consulte el capítulo Interfaz.

Llamada a un método

Las llamadas a métodos también se conocen como llamadas a funciones virtuales. Para obtener información adicional, consulte el capítulo Invocación de métodos.

Para llamar a un método, tenga en cuenta lo siguiente:

oLos datos de un método son temporales y sólo son válidos durante la ejecución del método (variables de pila). Esto significa que las variables y los bloques de funciones declarados en un método se reinicializan en cada llamada al método.

oSólo se permite que los métodos definidos en una interfaz tengan variables de entrada, salida y entrada/salida, pero no cuerpo (parte de la implementación).

oLos métodos como las funciones pueden tener salidas adicionales. Se deben asignar durante la invocación al método.

Implementación de un método

Para implementar un método, tenga en cuenta lo siguiente:

oEn el cuerpo de un método, se permite el acceso a las variables de instancia del bloque de funciones.

oSi es necesario, utilice el puntero THIS, que siempre apunta a la instancia actual.

oNo se puede acceder a las variables VAR_TEMP del bloque de funciones en un método.

Métodos especiales para un bloque de funciones

Método

Descripción

Init

Un método denominado FB_init se declara implícitamente de forma predeterminada, pero también se puede declarar explícitamente. Contiene código de inicialización para el bloque de funciones tal como se ha declarado en la parte de declaración del bloque de funciones. Consulte el método FB_init.

Reinit

Si se declara un método denominado FB_reinit para una instancia de bloque de funciones, este se llama después de que se haya copiado la instancia (como durante el Cambio en línea) y se reinicializa el módulo de la nueva instancia. Consulte los métodos FB_init, FB_reinit.

Exit

Si se desea un método de salida denominado FB_exit, este se debe declarar explícitamente. No hay declaraciones implícitas. El método Exit se llama para cada instancia del bloque de funciones antes de una nueva descarga, un reinicio o durante el cambio en línea para todas las instancias movidas o eliminadas. Consulte el método FB_exit.

Las propiedades y las propiedades de interfaz constan cada una de un método de acceso Set o Get.

Llamada al método también cuando la aplicación está detenida

En el archivo de descripción del dispositivo, se puede definir que siempre se llame a un determinado método con una tarea cíclica por una determinada instancia de bloque de funciones (de un módulo de biblioteca). Si este método tiene los siguientes parámetros de entrada, también se procesa cuando la aplicación activa no se está ejecutando.

Ejemplo

VAR_INPUT
pTaskInfo : POINTER TO DWORD;
pApplicationInfo: POINTER TO _IMPLICIT_APPLICATION_INFO;
END_VAR

El programador puede comprobar el estado de la aplicación mediante pApplicationInfo y definir qué debe suceder.

IF pApplicationInfo^.state = RUNNING THEN <instructions> END_IF