Anda di halaman 1dari 19

Módulos de Función

Automatización Industrial

Índice
TEMA – Módulos de Función
1. – Llamadas a Módulos
2. – Partes de un Módulo
2.1 – Variables Locales
3. – Funciones FC´s
4. – Módulos de Función FB´s
5. – Parámetros de Funciones
5.1 – Parámetros Formales
5.2 – Parámetros Actuales
6. – Módulos de Función y Módulos de Datos
6.1 – Módulos de Datos a Instancia
6.2 – Módulos de Multi-Instancia
Llamada a Módulos
Módulo que llama Módulo llamado
(OB, FB, FC, SFB, SFC) (FB, FC, SFB, SFC)
Ejecución del
Programa
Ejecución del
Instrucción que llama Programa
a otro módulo
(FB, FC, SFB, SFC)

Ejecución del
Programa
Instrucción que llama Ejecución del
a otro módulo Programa

(FB, FC, SFB, SFC)

Llamadas a Módulos (I)


Llamada General “CALL”
• Para que un módulo de código sea procesado debe ser llamado
• Una llamada a módulo consta de la sentencia de llamada (CALL FC 10) y la lista de
parámetros (si el módulo llamado tiene parámetros)
• Después de la llamada, el módulo es procesado hasta encontrar una sentencia de fin de
módulo
• En el caso de los OB se retorna al sistema operativo
• La información requerida por la CPU para el retorno es almacenada en la pila del módulo
(pila B)
• Los parámetros del módulo son el interfaz de datos al módulo llamado
• Con CALL se pueden llamar FBs, FCs, SFBs y SFCs
• La sentencia CALL es una llamada incondicional
• Si el módulo llamado tiene parámetros tiene que utilizarse esta sentencia
Llamadas a Módulos (II)
Llamada a Funciones
• Se puede llamar a una función con CALL por su dirección absoluta
o por su dirección simbólica
• Se deben inicializar todos los parámetros de la función
• Normalmente, las funciones tienen el parámetro RET_VAL en el que
devuelven códigos de error

Llamada a Módulos de Función


• En la llamada a un FB hay que especificar el DB de instancia asociado
separados ambos por una coma
• Se puede utilizar para ambos módulos direcciones absolutas o simbólicas
• En FBs no es necesario inicilizar todos los parámetros del módulo
• Los parámetros no inicializados mantienen su valor inicial

Llamada a Funciones y Módulos de Función del Sistema


• Todas las funciones y módulos de función del sistema deben llamarse
con la instrucción CALL

Llamadas a Módulos (III)


Llamada con “UC” y “CC”:

• Permiten llamar a funciones y módulos de función


• La función llamada no debe tener parámetros ni DB de instancia
• El editor no chequea estas condiciones
• UC y CC no distinguen entre FCs y FBs. Los tratan igual
• UC es una llamada incondiconal
• CC es una llamada condicional al valor del RLO
• Otras posibilidades:
• Direccionamiento indirecto de llamadas a FB o FC con UC y CC
• Llamada vía parámetros de bloque con UC
• Llamada vía parámetros de bloque con CC también en FB

Fin de Módulo:
• BEC. Fin de módulo condicionado al RLO
• BEU. Fin de módulo incondicional
• BE. Fin de módulo. Última sentencia del módulo
Uso del Parámetro EN/ENO

EN = Entrada Enable ENO = Salida Enable

EN ENO

Si está activo (1), se Si está activo (1), indica que la


ejecuta la instrucción Caja de instrucciones STL instrucción se ejecutó sin error.
de la caja. (FC, FB, Move, Add, etc)
Si no está activo (0), no se llamó
Si no está activo (0), no se a la instrucción o no se produjo la
ejecuta la instrucción. la ejecución de la instrucción

Partes de un Módulo

Tabla de
Declaración
de Variables

Sección de
Código
Datos Locales

• Los Datos Locales utilizados normalmente en un módulo son :

– Variables Temporales

– Parámetros

– Variables Permanentes o estáticas

Variables Locales Temporales (I)


Dirección Símbolo Valor Inicial

Tipo de Declaración Tipo de Datos Comentario

• Las variables locales son las declaradas como “temp”


• Se definen en la cabecera del módulo
• Se pueden definir en cualquier módulo de código
• Se usan para almacenar datos locales de la ejecución del programa
• Temporalmente se almacenan en la pila de datos locales. La pila la controla el S.O.
Variables Locales Temporales (II)

• Se utilizan para almacenar resultados intermedios en la ejecución de un módulo


• Solamente están disponibles durante la ejecución del módulo
• Se puede utilizar direccionamiento absoluto o simbólico
• En los OB hay que declarar 20 bytes de información de comienzo de cada uno de ellos
• Normalmente se accede por direccionamiento simbólico
• El identificador de datos locales es la L
• un bit se direcciona con L
• un byte se direcciona con LB
• una palabra con LW
• una doble palabra LD

Dirección Declaración Nombre Tipo Valor inicial Comentario


0.0 temp temporal1 INT 0 Variable temporal
2.0 temp temporal2 REAL 0 Variable temporal

Variables Locales Estáticas (I)


Dirección Símbolo Valor Inicial

Tipo de Declaración Tipo de Datos Comentario


Variables Locales Estáticas (II)

• Datos locales estáticos son direcciones que un módulo de función FB


almacena en el módulo de datos de instancia DI.
• Las variables estáticas son las declaradas como “stat”
• Son declaradas en la cabecera del módulo
• Están en la memoria del módulo de función.
• Mantiene la información hasta que es modificada por programa
• El número está limitado por el tipo de dato de las variables y por el
tamaño del DB
• Se puede utilizar direccionamiento absoluto aunque debe ser la excepción
• En el FB, el DB de instancia se abre con OPN DI xxx
• se puede direccionar un bit con DIX y.x
• un byte con DIB y
• una palabra con DIW y
• una doble palabra con DID y

Variables Locales Estáticas (III)


• Se puede utilizar direccionamiento simbólico utilizando sus nombres
• Se pueden utilizar las mismas sentencias que las utilizadas con DBs globales

Dirección Declaración Nombre Tipo Valor inicial Comentario


0.0 temp temporal1 INT 0 Variable temporal
2.0 stat Total INT 0 Variable estática

Ejemplo:

FB “Totalizador” DB “TotalizadorDato”
Dirección Declaración Nombre Tipo Dirección Declaración Nombre Tipo
0.0 temp In INT 0.0 temp In INT
2.0 stat Total INT 2.0 stat Total INT

L #In
L #Total
+I
T #Total
Funciones FC´s
Las Funciones son módulos de código que se ejecutan al ser llamadas desde otro
módulo. Cuando se la llama, la función actúa como una subrutina del programa.
Cuando termina de ejecutar su código, el control se devuelve al módulo y al
segmento desde el cual fue llamada.

Programa Principal OB1 Módulo Subrutina FC

Ejecución
del programa
Ejecución del
Instrucción que llama Programa
a otro módulo

Módulos de Función FB´s


Un Módulo de Función (FB) tiene un módulo adicional de memoria asociado a
él. Un Módulo de Datos (DB) mantiene una copia de los parámetros que van a
pasar al área de datos locales. Después de la ejecución del FB, se borra el área
de memoria local, pero el DB asociado retiene sus valores.

Copia la parte de
declaración local del FB
DB10 FB1
Llamada a un
módulo con los Área de
parámetros Declaración Local
actuales
Ejemplo: Sección de Código
del módulo llamado
Call FB1,DB10 usando los valores
del área de
memoria local.
Parámetros de Funciones
Declaración de los Parámetros:
• Los parámetros de un módulo representan el interfaz entre el modulo que llama y
el módulo llamado
• Soportan parámetros las funciones y los módulos de función
• Los parámetros pueden declararse de IN, OUT ó IN_OUT

Procesamiento de los Parámetros

Progr. en módulo que llama Progr. en módulo llamado Programa ejecutado

// Primera llamada // Primera llamada


#L Numb_1 L MW 30
CALL “Adder” L MW 32
Numb_1 := MW 30 #L Numb_2 +I
Numb_2 := MW 32 L MW 34
Numb_3 := MW 34 I+ +I
Result := MW 40 T MW 40
#L Numb_3
// Segunda llamada // Segunda llamada
+I L DB 10.DBW 30
CALL “Adder” L DB10.DBW 32
Numb_1 :=DB 10.DBW 30 #T Result +I
Numb_2 :=DB10.DBW 32 L DB10.DBW 34
Numb_3 :=DB10.DBW 34 +I
Result :=DB10.DBW 40 T DB10.DBW 40
Parámetros Parámetros Parámetros
del módulo actuales formales
Declaración de Parámetros
• Los nombres de los parámetros de hasta 24 caracteres
• El nombre de un parámetro no puede ser una palabra clave
• Los parámetros IN/OUT pueden ser tipos de datos elementales, complejos o definidos
por el usurio
• El valor inicial y el comentario son opcionales

Dirección Símbolo Valor Inicial

Tipo de Declaración Tipo de Datos Comentario

Parámetros Formales
• Los tipos de parámetros los clasifica en: datos simples, datos compuestos y parámetros
Parámetros Formales: Tipos de Datos (I)
Tipo BOOL

Parámetros Formales: Tipos de Datos (II)


Parámetros de módulo de tipo de dato digital:

• Ocupan 8, 16 o 32 bits
• Se leen con la instrucción L (load). p. e. L xxxx
• Se escriben con la instrucción T (transfer). p.e. T xxxx
• Direcciones que pueden asignar tipos de datos elementales
• Direcciones que pueden asignar un tipo de parámetro

Parámetros de módulo de tipo TIMER:


• Funciones binarias
• Tipos de temporizadores:
• SP, SE, SD, SS, SF, R xxxx (parámetro de entrada tipo timer)

Parámetros de módulo de tipo COUNTER:


• Funciones binarias
• Tipos de contadores:
• S, CU, CD, R xxxx (parámetro de entrada tipo counter)
Parámetros Formales: Tipos de Datos (III)
Parámetros de módulo de tipo de dato BLOCK_xx:
• OPN - Abrir módulo de datos (parámetro tipo BLOCK_DB)
• UC - Llamada a función (parámetro tipo BLOCK_FC)
• UC - Llamada a FB (parámetro tipo BLOCK_FB)
• CC - Llamada condicional a FC (parámetro tipo BLOCK_FC)
• CC - Llamada condicional a FB (parámetro tipo BLOCK_FB)
- xxxx vía parámetro de entrada

• Cuando se abre un DB con parámetro, la CPU lo usa como DB global


• Las funciones y módulos de función pasados con parámetros de módulo
no deben contener parámetros de módulo
• Una llamada condicional a módulo vía un parámetro de módulo es sólo
posible si el parámetro de bloque es de un módulo de función

#Data es un parámetro tipo BLOCK_DB El usuario debe asegurar que #Data es el


CALL FB 10.#Data DB de instancia del FB 10

Parámetros Actuales
• Cuando se llama a un módulo se inicializan los parámetros con los
parámetros actuales con los que el módulo se ejecuta
• Pueden ser constantes, direcciones absolutas, direcciones simbólicas, ..
• El parámetro actual debe ser del mismo tipo que el parámetro del bloque
• Cuando se llama a funciones se deben inicializar todos los parámetros
• En los FBs es opcional inicializar todos o sólo alguno de los parámetros
Parámetros Actuales: Tipos de Datos Básicos
• Son permitidos como parámetros actuales de tipos de datos básicos:

Acceso y Restricciones de los Parámetros de Paso

Llamada a módulo (FC, FB) Módulo llamado (FC, FB)

Tabla de Declaración Tabla de Declaración

Valor_1 Input Medida_1 Input

Valor_2 Output Medida_2 Output

Valor_Total In/Out Medida_Total In/Out

Call FC10
Medida_1:=Valor_1
Medida_2:=Valor_2
Medida_Total:= Valor_Total

Paso de Parámetros de un módulo lógico a otro


Paso de Parámetros entre módulos

• Combinaciones posibles en el paso de parámetros de módulos:

E = Tipos de datos elementales


C = Tipos de datos complejos
P = Parámetros tipo TIMER, COUNTER y BLOCK_xx

Parámetros y Variables Locales (I)


OB1 FC1 (Cálculo)
0.0 in Entrada1 int muestra 1
2.0 in Entrada2 int constante
FC1 4.0 in Entrada3 int distancia
6.0 out Salida_A int resultado
MW5 Entrada1 Salida_A AW12 8.0 temp TEMP1 int intermedia
3369 Entrada2
MW10 Entrada3
ADD_I
O #TEMP1
#Entrada1 IN1
#Entrada2 IN2

FC1
SUB_I
MW2 Entrada1 Salida_A AW20 O #Salida_A
#TEMP1 IN1
6869 Entrada2 #Entrada3 IN2
MW16 Entrada3

#Entrada1 , si es variable local


”Entrada1" , si es variable global (simbólico)
Parámetros y Variables Locales (II)

CALL FB7, DB45


STL Comenzar:=I 1.0 Llama al FB7 (utilizando
un Módulo de Datos
Parar:=I 1.1 a instancia DB45) y le
Longitud:=MW 20 pasa los parámetros
Parámetros “Formales”
del FB Correr:=M2.1

Direcciones “Actuales” donde


residen los datos o se almacenarán

FBD DB45
FB7 Llama al FB7 (utilizando
EN ENO un Módulo de Datos
a instancia DB45) y le
I 1.0 Comenzar Correr M2.1 pasa los parámetros
I 1.1 Parar
Direcciones “Actuales” Longitud
donde residen los datos MW20
Parámetros “Formales”
o se almacenarán del FB

Módulos de Función y Módulos de Datos

• Para almacenar datos se pueden utilizar:


• zona de marcas
• módulos de datos
• Los módulos de datos presentan mayores prestaciones
• Los módulos de datos pueden ser:
• globales. Pueden acceder cualquier módulo
• de instancia. Sólo se puede acceder desde el FB asociado
• Los DBs deben de crearse con el editor o en runtime SFC 22 CREAT DB
• Deben de ser cargados en la memoria de trabajo para que se pueda leer y
escribir en ellos
• la CPU utiliza dos registros:
• registro DB: para módulos de datos globales
• registro DI: para módulos de datos de instancia
• se puede tener abierto simultáneamente un módulo de datos de cada tipo
Módulos de Datos a Instancia
• Un Módulo de Datos a Instancia es un duplicado de la Tabla de Declaración
del Módulo de Función asociado a él. Los datos de DB a Instancia
permanecerán después de cerrar el FB.

Uso de un FB sin DB a Instancia

• El STEP7 Versión 2.X le permite crear y utilizar un FB sin usar un DB


asociado a él. Utilizado de esta forma, el FB trabaja igual que un FC.

FB sin DB a Instancia FC

Tabla de Declaración Tabla de Declaración


usando la memoria local
= usando la memoria local

Sección de Sección de
Código Código
Módulos de Función y Módulos de Datos (II)
Direcciones de Datos Dirección de datos Localizado en DB abierto vía el
Registro DB Registro DI
Bit DBX y.x DIX y.x
Byte DBB y DIB y
Palabra DBW y DIW y
Doble palabra DBD y DID y

Direccionamiento Absoluto de Direcciones de Datos


• En este caso hay que conocer las direcciones absolutas que el editor asigna a las
variables. Poco recomendable.

Direccionamiento Completo
• Se hace en dos pasos:
• asignar nombre simbólico al DB en la tabla de símbolos. p.e. “MOTOR1” al DB 51
• asignar dirección de los datos en el módulos de datos. p.e. “PAR” a la DBW 20
• Con direccionamineto simbólico queda: L “MOTOR1”.PAR
• Con direccionamiento absoluto queda: L DB 51.DBW 20

Módulos de Datos (I)


Operaciones con Módulos de Datos
Módulos de Datos (II)
Abrir Módulos de Datos Direccionamiento Partido
• OPN DB x OPN DB 25
• OPN DB nombre L DBW 10
• OPN DI x
• OPN DI nombre Direccionamiento Completo
L DB25.DBW 10
Longitud y Número de DB´s
Cambio los Registros de los
L DBLG // longitud de un DB
L DBNO // número de un DB
Módulos de Datos
L DILG // longitud de un DI CDB
L DINO // número de un DI

Funciones del Sistema para DB´s


SFC 22 CREAT_DB. //Crea un módulo de datos
SFC 23 DEL_DB // Borra un módulo de datos
SFC 24 TEST_DB // Test de un módulo de datos

Módulos de Datos Multi-Instancia (I)


• Los módulos Multi-Instancia le permiten usar un Módulo de Datos para
mantener unos valores separados mientras llama a un FB con un DB asociado.
Un FB ejecuta la sección de código actual mientras otro maneja el Módulo de
Datos a Instancia.

Módulo de Datos
FB que ejecuta Multi-instancia
las instrucciones Usar este asociado a un FB
lógicas área primero

Segmentos dentro
del DB que contendrán
FB que maneja Usar este
los datos separados de
la sección del módulo área después los parámetros pasados
de datos a instancia
que mantendrá los Usar este
últimos parámetros área después
Módulos de Datos Multi-Instancia (II)

Para utilizar DB´s multiinstancia:


– Incorporar los FBs a llamar en forma de variables estáticas en la declaración de
variables del FB invocante
– El FB invocante llama otros bloques de función sin DBs de instancia propios (es
decir, adicionales),
– Esto permite concentrar los datos de instancia en un solo bloque de datos de
instancia, pudiéndose así aprovechar mejor el número disponible de DBs.

Módulos de Datos Multi-instancia (III)

Módulo de control FB 101 FB 100 con múltiples llamadas al FB101

Variables usadas:
setpoint_value: real
sum: real
actual_value: real

DB Multi instancia