Objeto: Método
Símbolo:
Palabra clave: METHOD
Los métodos son una extensión del estándar IEC 61131-3 y una herramienta para la programación orientada a objetos que se utiliza para la encapsulación de datos. Un método contiene una declaración y una implementación. Sin embargo, a diferencia de una función, un método no es una POU independiente y está subordinado a un bloque de función o programa. Un método puede acceder a todas las variables válidas del POU superior.
Puede agregar un método debajo de un programa o un bloque de funciones. Hacer clic Añadir método se abre el cuadro de diálogo.
. Entonces elPuede utilizar interfaces para la organización de métodos.
Para más información, ver: Implementar una interfaz
Importante
Cuando copia un método debajo de una POU y lo agrega debajo de una interfaz, o mueve el método allí, la implementación contenida se elimina automáticamente.
Declaración
Sintaxis:
METHOD <access specifier> <method name> : <type of return value>
<access specifier> | Opcional Especificador de acceso Según el especificador de acceso declarado, se puede llamar a un método solo dentro de su propio espacio de nombres ( |
<method name> | Identificadores de métodos |
<type of retur value> | Opcional Tipo de retorno del método Nota: En el caso de métodos que no tienen un tipo de retorno explícito, la primera salida declarada se usa como valor de retorno. Un método no devuelve un valor solo si no se declaran ni el tipo de retorno ni la salida. Sin embargo, no se genera un error del compilador en ningún caso. |
<scope list> | Alcances:
|
<variable declaration list> | Declaración de variables <variable name> : <data type> := <initial value> ; Lista delimitada por punto y coma de variables (parámetros) asignadas a un ámbito de acuerdo con su propósito.
|
Declaración
METHOD PUBLIC DoIt : BOOL VAR_INPUT iInput_1 : DWORD; iInput_2 : DWORD; sInput_3 : STRING(12); END_VAR
Implementación
Opcional
Se permite el acceso a instancias de bloques de funciones oa variables de programa para la implementación del método.
El ESTE El puntero permite el acceso a su propia instancia de bloque de funciones. Por lo tanto, el puntero solo se permite en métodos que están asignados a un bloque de funciones.
Un método no puede acceder VAR_TEMP variables del bloque de funciones.
Un método puede llamarse a sí mismo recursivamente.
No hay implementación para los métodos de interfaz.
Métodos de interfaz puede haber declarado entrada, salida y
VAR_IN_OUT
variables, pero no contienen una implementación.
Llamar a un método
Sintaxis para llamadas:
<return value variable> := <POU name> . <method name> ( <argument passing> );
<return value variable> | Variable para el valor de retorno El tipo tiene que coincidir con el tipo de retorno del método. Nota: En el caso de métodos que no tienen un tipo de retorno explícito, la primera salida declarada se usa como valor de retorno. Un método no devuelve un valor solo si no se declaran ni el tipo de retorno ni la salida. Sin embargo, no se genera un error del compilador en ningún caso. |
<POU name> | Identificador de la instancia del bloque de funciones bajo el cual se organiza el método |
<method name> | Identificadores de métodos |
<argument passing> | Lista delimitada por comas con los argumentos reales Se pasa un argumento a cada parámetro (variable) del método: <parameter name> := <actual argument>
|
Declaración
METHOD PUBLIC DoIt : BOOL VAR_INPUT iInput_1 : DWORD; iInput_2 : DWORD; sInput_3 : STRING(12); END_VAR
Llamada con pasar un argumento a un parámetro
bFinishedMethod := fbInstance.DoIt(sInput_3 := 'Hello World ', iInput_2 := 16#FFFF, iInput_1 := 16);
Cuando se llama al método, el valor de retorno del método se asigna a una variable declarada localmente.
Si omite los nombres de las variables de entrada, la asignación de los argumentos resulta del orden de declaración.
Declaración
METHOD PUBLIC DoIt : BOOL VAR_INPUT iInput_1 : DWORD; iInput_2 : DWORD; sInput_3 : STRING(12); END_VAR IF iInput_1 = iInput_2 THEN DoIt := TRUE; // explicit return value END_IF
Llamada pasando un argumento según el orden en la declaración
bFinishedMethod := fbInstance.DoIt( 16, 16#0010,'Hello World ');
Llamada de método recursivo
Dentro de la implementación, un método puede llamarse a sí mismo, ya sea directamente por medio del ESTA
puntero, o por medio de una variable local para el bloque de función asignado.
<return value variable> := <POU name> . <method name> ( <argument passing> );
Llamada directa de la instancia de bloque de función relevante con el
THIS
puntero<return value variable> := <POU name> . <method name> ( <argument passing> );
Llamada por medio de una variable local del método que instancia temporalmente el bloque de función relevante
Se emite una advertencia del compilador en el caso de una recursiva llamar. Si el método se proporciona con el pragma {attribute 'estimated-stack-usage' := '<estimated stack size in bytes>'}
, se suprime la advertencia del compilador.
Para ver un ejemplo de implementación, consulte "Atributo: 'uso estimado de la pila'" capítulo.
Para llamar a métodos recursivamente, no es suficiente especificar solo el nombre del método. Si solo se especifica el nombre del método, se emite un error del compilador: Se espera el nombre del programa, la función o la instancia del bloque de funciones en lugar de
Métodos especiales de un bloque de función
Declaraciones automáticamente implícitas, pero también es posible una declaración explícita Contiene código de inicialización para el bloque de funciones, tal como se define en la parte de declaración del bloque de funciones. | |
Es necesaria una declaración explícita. Llame después de que se haya copiado la instancia del bloque de funciones (como durante un cambio en línea). Reinicializa el nuevo módulo de instancia. | |
Es necesaria una declaración explícita. Llame para cada instancia del bloque de funciones antes de una nueva descarga o reinicio o durante un cambio en línea para todas las instancias desplazadas o eliminadas. | |
proporciona |
Diálogo: Añadir método
Función: define un método debajo de la POU seleccionada cuando se cierra el cuadro de diálogo.
Llamada: ; Menú de contexto
Requisito: Un programa (PRG
) o un bloque de funciones (FUNCTION_BLOCK
) está seleccionado en el POU ver o el Dispositivos vista.
Aviso
La interfaz de un método insertado debajo de un bloque de funciones básico se copia cuando un método con el mismo nombre se inserta debajo de un bloque de funciones derivado.
Nombre | Ejemplo: Los métodos estándar |
Tipo de retorno | Tipo de datos predeterminado o tipo de datos estructurados de valor de retorno Ejemplo: |
Idioma de implementación | Ejemplo: Texto estructurado (ST) |
Especificador de acceso | Controla el acceso a los datos.
|
Resumen |
|
Agregar | Agrega un nuevo método debajo del objeto seleccionado. |
Soporte de entrada al generar POU heredadas
Al realizar una programación orientada a objetos y utilizar la herencia (EXTENDS
palabra clave) de las POU, puede obtener soporte de la siguiente manera:
Cuando inserta una acción, una propiedad, un método o una transición debajo de una POU derivada de una POU base, el Agregar … se abre el cuadro de diálogo. Luego, el campo de entrada para el nombre se extiende a un cuadro de lista. El cuadro de lista contiene una selección válida de las acciones, propiedades, métodos o transiciones disponibles en la POU base. Ahora puede, por ejemplo, aceptar fácilmente un método de la POU base y luego adaptarlo a la función derivada de la POU.
Métodos y propiedades con el modificador de acceso PRIVATE
no se enumeran aquí porque tampoco se heredan. Métodos y propiedades con el modificador de acceso PUBLIC
obtiene automáticamente un campo modificador de acceso en blanco al aceptar en la POU derivada, lo que significa lo mismo funcionalmente.
Para obtener más información, consulte: Propiedad, Método, Transición, Acción,
