- Programas (PRG)
- Bloques funcionales (FB)
- Funciones (FC)
- Parte de programación
- Parte de programa
La jerarquía es la siguiente:
En la parte
más alta se encuentra el POU tipo programa (PRG), PROGRAM … END_PROGRAM.
En el punto
medio se encuentran los bloques funcionales (FB), FUNCTION_BLOCK … END_FUNCTION_BLOCK.
En la parte inferior se
encuentran las funciones (FC), FUNCTION
… END_FUNCTION.
Funciones (FC): No pueden contener información
de estado interno. La invocación de una función con los mismos parámetros de
entrada debe suministrar siempre la misma salida. Pueden ser funciones estándar
(ADD, ABS, SQRT, etc.) o funciones definidas por usuario, que una vez
implementadas pueden ser usadas en cualquier POU. Suministra exactamente un dato.
Su llamada puede realizarse en
lenguajes de texto como operador en expresiones.
En la declaración se ha de
asignar un tipo de dato (NOMBRE FUNCION: TIPO DE DATO).
Hay que asignar un
resultado a la función. El nombre de la función se utiliza con una variable de
salida.
Declaración de una función:
-
La palabra FUNCTION seguida del nombre de la
función, dos puntos y el tipo de dato del resultado de la función.
-
La construcción VAR_INPUT… END VAR, con los
nombres y tipos de datos de las variables de entradas de la función.
-
Según corresponda, la construcción VAR…END VAR
con los nombres y tipos de datos de las variables internas (aquellas que al
terminar la función desaparecen).
-
El núcleo de la función, escrito en alguno de
los lenguajes de programación que se explicarán más adelante.
-
La palabra clave END_FUNTION.
-
Opcionalmente también se pueden usar las
construcciones VAR_OUT…END VAR, con la que se fijan las variables de salida
cuyos valores pueden verse modificados; y VAR_IN_OUT…END VAR, con la que se
fijan las variables de paso cuyos valores también pueden verse modificados.
Ejemplo en IL:
FUNCTION Fct: INT
VAR_INPUT
PAR1: INT;
PAR2: INT;
PAR3: INT;
END_VAR
LD PAR1
MUL PAR2 ;Devuelve como resultado el producto de los dos primeros
DIV PAR3 ;dividido por la última
ST Fct
Llamada a la función:
Bloques funcionales (FB): equivalentes a los circuitos integrados (IC). Contienen datos e instrucciones y pueden guardar valores de variables. Tienen un interfaz de entrada y salida bien definido y un código interno oculto. Una vez definido puede ser usado una y otra vez, en el mismo o en diferentes programas. Además pueden ser llamados varias veces, creando copias del FB denominadas instancias.
Suministra uno o varios valores.
No proporciona ningún valor de devolución.
Se pueden crear instancias de un FB.
Declaración de un bloque de funciones:
-
FUNCTION_BLOCK seguido del nombre del FB.
-
La construcción VAR_INPUT…END_VAR, con el nombre
y tipo de dato de las variables de entrada.
-
La construcción VAR_OUTPUT…END_VAR, con el
nombre y tipo de dato de las variables de salida (se pueden declarar varias).
-
La construcción VAR_IN_OUT…END_VAR con el nombre
y tipo de dato de las variables de paso cuyo valor puede verse modificado por
el programa dentro del FB.
-
La construcción VAR…END_VAR, con el nombre y
tipo de dato de las variables de estado del FB. También se utiliza para generar
una instancia del FB.
-
La construcción VAR_TEMP…END_VAR, para el
almacenamiento temporal de variables en FB y programas (PRG).
-
El núcleo del bloque funcional con el programa a
ejecutar.
-
La palabra clave END_FUNCTION_BLOCK.
Ejemplo en IL:
FUNCTION_BLOCK FUB
VAR_INPUT
PAR1: INT;
PAR2: INT;
END_VAR
VAR_OUTPUT
MULERG: INT;
VERGL: BOOL;
LD PAR1
MUL PAR2 ;Producto de las entradas
ST MULERG
D PAR1
MUL PAR2 ;Comparación de igualdad
ST MULERG
Instancias:
Cada una posee su propio indicador (nombre de instancia) y una estructura de
datos que contiene sus entradas, salidas y variables internas.
Se
declaran como locales o globales, indicando como tipo de un identificador el
nombre de FB.
INSTANZ:
FUB --> Nombre
instancia, INSTANZ; del FB, FUB.
Las
llamadas a los FB se realizan a través de las instancias, y se puede acceder a
los parámetros de entrada y salida a través de ella, pero no se puede acceder a sus variables internas.
PROGRAM prog
VAR
Inst1: fb; ;ejemplo de acceso a una variable
END_VAR ;de entrada in1 del tipo inst
LD 17
ST inst1.1
CAL inst1
END_PROGRAM
Las
declaraciones de los FB y programas no pueden contener declaración de
instancias, y a su vez no se admiten declaraciones de instancias en las funciones.
El
nombre de una instancia de un FB se puede utilizar como entrada en una función
o FB. Todos los valores se conservan después de cada ejecución del FB.
Llamada a un
BF:
<nombre
de instancia>.<nombre de variable>
VAR ;ejemplo para la llamada de una VAR_IN_OUT,
inst: fubo; ;inout1 del FB en un módulo ST
var1: int;
;No se permite inst (inout1:=2;) o inst.inout1:=2
END_VAR
var1:=2;
inst (inout:=var1);
En SFC las llamadas a FB sólo se pueden
realizar en pasos.
Programa:
Puede contener, aparte de la declaración de tipo de datos, variables y su
código interno, distintas instancias de funciones y FB.
Módulo que al ejecutarse suministra uno o varios valores.
Incluidos en el proyecto de forma global.
Tras cada ejecución se conservan todos los valores.
Pueden recibir llamadas de otros programas y FB.
Una función no admite llamadas a programas.
No existen instancias a programas.
Ejemplo de llamadas a programa
(PRGbeispiel):
Acción: Definible para FB y programas.
Funciona
con los datos del FB o del programa al que pertenece. Se
llama con:
<nombre de programa>.<nombre
de accion>
<nombre de instancia>.<nombre
de accion>
Si se llama desde un
módulo propio, en los editores de texto sólo se utilizan los nombres de acción
y en los gráficos la llamada al FB sin datos de instancia.Recursos: Para la configuración y organización del proyecto y para el seguimiento de valores de variables.

No hay comentarios:
Publicar un comentario