S7N2 04 PDF
S7N2 04 PDF
S7N2 04 PDF
Contenido Página
Marcas
DBz
PAA
DBy . .
PAE .
DBx
Área de I/O
Pila de datos locales La pila de datos locales (L stack) es un área para almacenar:
• variables temporales de un bloque lógico, incluyendo información de arranque
de un OB.
• parámetros reales que se pasarán al llamar a funciones.
• resultados lógicos intermedios en programas en KOP
Este punto es tratado en el capítulo “Funciones y Bloques de Función".
Bloques de Datos Los Bloques de Datos son bloques usados por los bloques lógicos del programa
de usuario para el almacenamiento de valores. A diferencia de los datos
temporales, la información de los bloques de datos no se sobreescribe cuando la
ejecución de un bloque lógico finaliza o cuando el DB se cierra.
Función
OB1
FC10
Datos Globales
DB20
Función
FC20
Introducción Los Bloques de Datos se usan para almacenar datos de usuario. Como los
bloques lógicos, los bloques de datos ocupan espacio en la memoria de
usuario. Los bloques de datos contienen datos variables (por ej. valores
numéricos) que son usados en el programa de usuario.
El programa de usuario puede acceder a datos en un bloque de datos con
operaciones de bit, byte, palabra o doble palabra. Se pueden usar direcciones
simbólicas o absolutas.
Usos Podemos usar los bloques de datos de formas diferentes, dependiendo de sus
contenidos. Diferenciamos entre:
• Bloques de datos globales: Contienen información que puede ser accedida
por todos los bloques lógicos del programa de usuario.
• Bloques de datos instancia: Son asignados siempre a un FB en particular.
Los datos de cada DB deben usarse solo para el FB asignado.
Los bloques de datos de instancia son tratados con más detalle en el
capítulo “Funciones y Bloques de Función“.
Creación de DBs Podemos crear DBs globales usando el editor de programas o mediante un
“tipo de datos definido por el usuario“ (UDT) que hayamos creado previamente.
Los bloques de datos de instancia se crean cuando llamamos a un FB.
Registros La CPU tiene dos registros de bloques de datos, los registros DB y DI. Esto
implica que podemos tener dos bloques de datos abiertos al mismo tiempo.
Encontrará más información en el curso de programación avanzada.
Tipos de datos • Tipos de Datos de bit (BOOL, BYTE, WORD, DWORD, CHAR)
elementales
• Tipos de Datos Matemáticos (INT, DINT, REAL)
(hasta 32 bits)
• Tipos de Tiempo (S5TIME, TIME, DATE, TIME_OF_DAY)
• Tiempo (DATE_AND_TIME)
Tipos de datos
complejos • Array (ARRAY)
(mayores de 32 bits)
• Estructura (STRUCT)
• Cadena de Caracteres (STRING)
Introducción Los tipos de datos determinan las propiedades de los datos, por ej. la forma en
que van a ser representados los contenidos de una o más direcciones
asociadas, y el rango permitido de valores. Los tipos de datos también
determinan qué operaciones se pueden usar.
Tipos de datos Los tipos de datos elementales son predefinidos de acuerdo con la norma IEC
Elementales 1131-3. El tipo de datos determina la cantidad de espacio en memoria
requerida. Por ejemplo, el tipo de datos Palabra ocupa 16 bits en la memoria de
usuario.
Los tipos de datos elementales nunca son mayores de 32 bits y pueden ser
cargados completamente en los acumuladores del procesador S7 y procesados
con instrucciones elementales de STEP 7.
Tipos de datos Los tipos de datos complejos sólo pueden ser usados en conjunción con
Complejos variables declaradas en bloques de datos globales. Los tipos de datos
complejos no pueden ser cargados completamente en los acumuladores con
instrucciones de carga. Se pueden usar bloques estándar de la librería ("IEC"
Programa S7) para procesar tipos de datos complejos.
Tipos de datos Un tipo de datos definido por el usuario puede emplearse en bloques de datos o
definidos por el como un tipo de datos en una tabla de declaración de variables.
usuario Se pueden crear UDTs con el Editor de Bloques de Datos.
La estructura de un UDT puede contener grupos de datos elementales y/o
complejos.
Palabra Clave Long. (en bits) Ejemplo de una constante de este tipo
BOOL 1 1ó0
BYTE 8 B#16#A9
WORD 16 W#16#12AF
DWORD 32 DW#16#ADAC1EF5
CHAR 8 'w'
S5TIME 16 S5T#5s_200ms
INT 16 123
DINT 32 65539
REAL 32 1.2 o 34.5E-12
TIME 32 T#2D_1H_3M_45S_12MS
DATE 16 D#1993-01-20
TIME_OF_DAY 32 TOD#12:23:45.12
BOOL, BYTE, WORD Las variables de tipos de datos BOOL se componen de un bit; las variables
DWORD, CHAR de tipos de datos BYTE, WORD, DWORD son secuencias de 8, 16 y 32 bits
respectivamente. En este tipo de datos los bits individuales no son evaluados.
Los números BCD y los valores de cuenta, son formas especiales de estos
tipos de datos usadas en conjunción con la función de contaje, al igual que el
tipo de datos CHAR, que representa un carácter en código ASCII.
S5TIME Las varibales de tipo de datos S5TIME se requieren para especificar valores de
tiempo en las funciones de temporización (Funciones de temporización S5). Se
puede especificar el tiempo en horas, minutos, segundos o milisegundos. Se
pueden introducir valores de tiempo con guión de subrayado (1h_4m) o sin él
(1h4m).
Las funciones FC 33 y FC40 de la librería, convierten formato S5TIME a TIME y
formato TIME a S5TIME.
INT, DINT, REAL Las variables de estos tipos de datos representan números que pueden usarse
en operaciones matemáticas.
TIME Una variables de tipo de datos TIME ocupa una doble palabra. Esta variable se
usa, por ejemplo, para especificar valores de tiempo en funciones de
temporización IEC. Los contenidos de la variables son interpretados como un
número en milisegundos DINT y puede ser positivo o negativo (por ej.:
T#1s=L#1 000, T#24d20h31m23s647ms = L#214748647).
DATE Una variables de tipo de datos DATE se almacena en una palabra en formato
de entero sin signo. Los contenidos de la variables representan el número de
días desde 01.01.1990 (por ej.: D#2168-12-31 = W#16#FF62).
TIME_OF_DAY Una variables de tipo de datos TIME_OF_DAY ocupa una doble palabra.
Contiene el número de milisegundos desde que comenzó el día (0:00 en punto)
en formato de entero sin signo. (por ej.: TOD#23:59:59.999 =
DW#16#05265B77).
Editor de Programas Se puede abrir un bloque de datos existente o crear uno nuevo con el Editor
KOP/AWL/FUP.
Cuadro de diálogo Cuando hacemos click sobre el icono "Nuevo“, aparece el cuadro de diálogo
"Nuevo" "Nuevo". Se selecciona el proyecto y el programa de usuario y luego se
introduce, por ejemplo, DB2 para el “Nombre del objeto" (Como tipo de objeto
debe seleccionarse Bloque de Datos o todo lo que pueda ser procesado).
Cuando confirmamos los datos introducidos haciendo click en el botón
“Aceptar", aparece el cuadro de diálogo “Nuevo Bloque de Datos".
Cuadro de diálogo En este cuadro de diálogo, se selecciona el tipo de bloque de datos que se va a
"Nuevo Bloque crear:
de Datos" • DB (bloque de datos globales)
• DB asociado a un UDT (crea un bloque de datos usando la misma
estructura de un bloque UDT)
• DB asociado a un FB (crea un DB de instancia asociado a un FB).
Cargar Al igual que los bloques lógicos, se pueden cargar los bloques de datos en la
CPU.
Visualizar Para visualizar los valores actuales en los bloques de datos, en primer lugar
debemos cambiar a la vista “Ver / Datos“. Podemos visualizar los bloques de
datos usando el icono “Observar sí / no" en la barra de herramientas
(visualización permanente de los valores actuales del DB en la CPU).
8 Bits
7 0
Byte de Datos 0 DBB 0
Byte de Datos 1 DBW 0
Byte de Datos 2
DBD 0
Byte de Datos 3
DBX 4.1
DBD 8188
DBW 8190
Byte de Datos 8191 DBB 8191
General Los elementos de datos de un bloque de datos se direccionan byte a byte, del
mismo modo en que se hacía con las marcas.
Se pueden cargar y transferir bytes de datos, palabras de datos o dobles
palabras de datos. Cuando usemos palabras de datos, se debe especificar en la
operación la dirección del primer byte (por ej. L DBW 2). Como resultado de
esta operación se cargan 2 bytes. Con dobles palabras se cargan 4 bytes a
partir de la dirección que introduzcamos.
AUF DB 99
8.0 Peso[2] REAL o L DB99.DBD4 o L "Valores".Peso[1]
L DBD 8
"Acceso Tradicional" En el acceso tradicional a los bloques de datos (típico en el mundo de S5), éstos
debían ser abiertos explícitamente antes del acceso. Esto se podía hacer de
forma absoluta o simbólica con la instrucción AUF DB 99 o AUF "Valores" (ver
ejemplo). Esto implica que el bloque de datos que fue abierto en primer lugar se
cierra automáticamente. A continuación podremos acceder a los elementos de
datos individuales bit a bit (DBX...), byte a byte (DBB...), palabra a palabra
(DBW...) o doble palabra a doble palabra (DBD...) sin tener que especificar un
bloque de datos.
Desventajas:
• Cuando accedamos a elementos de datos debemos asegurarnos de que
hemos abierto el bloque correcto.
• El acceso sólo puede ser absoluto, esto implica que es labor del
programador asegurarse de que direcciona el valor correcto en el bloque de
datos. Si en el ejemplo cargamos la DBW3, no se cargaría ni el valor de la
variable Numero ni de la variable Peso[1], sino un valor inválido en su
lugar.
• Los accesos absolutos dificultan las posibilidades de corrección y la lectura
del programa.
...simbolico El acceso simbólico a una variable es posible sólo como acceso total y
completamente simbólico. El Editor permite la “mezcla" de direcciones absolutas
y simbólicas durante la edición pero cambia a completamente simbólico después
de que la entrada sea confirmada.
Función hasta ahora • Se cuentan los objetos transportados en modo AUTO (por suma en MW 20,
en el FC 18 con marca de memoria auxiliar para la detección del flanco en M 18.0), tan
pronto como alcanzan el punto Control Final o han pasado la barrera óptica.
• El numero de objetos actual de objetos transportados se representa en el
display digital BCD.
• Usando el potenciómetro BCD, se puede establecer la CONSIGNA numero
de objetos sobre cuántos objetos deben ser transportados. Cuando se
alcanza la CONSIGNA numero de objetos, se enciende el LED rojo (A 20.4 /
A 8.4) en el punto Control Final.
• Mientras aparezca el mensaje CONSIGNA numero de objetos alcanzado
(LED rojo), ninguna otra función de transporte puede empezar (bloqueado
en el FC 16).
• El número de objetos ACTUAL (MW 20) es puesto a 0 a través del pulsador
situado en el punto Control Final, cuando el sistema es apagado o cuando el
mensaje Numero de objetos de consigna alcanzado es reconocido.
Tipos de datos Los tipos de datos complejos (arrays y estructuras) se componen de grupos de
Complejos de tipos de datos elementales o complejos.
Nos permiten la creación de tipos de datos que se adapten a nuestro problema,
con los cuales podamos estructurar grandes cantidades de datos y procesarlas
simbólicamente.
Los tipos de datos complejos no pueden ser procesados con las instrucciones
de STEP 7 todos de una vez (mayores de 32 bits), sino un elemento cada vez.
Los tipos de datos complejos están predefinidos. Los tipos de datos
DATE_AND_TIME tienen una longitud de 64 bits. Las longitudes de los tipos de
datos ARRAY, STRUCT y STRING son definidos por el usuario.
Las variables de tipos de datos complejos pueden ser declaradas solamente en
bloques de datos globales y como parámetros o variables locales de bloques
lógicos.
Tipos de datos Los tipos de datos definidos por el usuario representan una estructura
Definidos por el autodefinida. Se almacenan en bloques UDT (UDT1 ... UDT65535) y
usuarios pueden usarse como una “plantilla" tipo de datos de variable.
Nos podemos ahorrar tiempo tecleando cuando introduzcamos un bloque de
datos si requerimos la misma estructura varias veces.
Ejemplo: Se requiere la misma estructura 10 veces en un bloque de datos.
Primero, definimos la estructura y la guardamos como, por ejemplo, UDT 1.
En el DB, definimos una variable “Direcciones" como un array de 10 elementos
del tipo de datos UDT1:
Array Direcciones [1..10]
UDT 1
En consecuencia, hemos creado 10 rangos de datos con la estructura definida
en el UDT 1 sin ningún “tecleo“ adicional.
Definir el Array La palabra clave para un array es "ARRAY[n..m]". El primero (n) y el último
en el DB elemento (m) se especifica dentro de los corchetes. En el ejemplo, [1..10]
significa 10 elementos, el primer elemento es direccionado con el índice [1] y el
último con el índice [10]. En lugar de [1..10] se podría, por ejemplo, definir [0..9].
Esto sólo afecta en el acceso a los elementos.
Nota Para crear un bloque de datos vacío, definiremos un array con el tipo de datos
que queramos.
Ver / Datos Para visualizar los valores que son almacenados en los elementos individuales,
se seleccionará en las opciones de menú Ver -> Datos para cambiar a otra
visualización. En la vista "Datos", encontraremos los valores almacenados
actualmente en la columna “Valor Actual".
Definir la Estructura La palabra clave para una estructura es "STRUCT". El final de una estructura es
en el DB indicado por "END_STRUCT". Se define un nombre para la estructura (en el
ejemplo: “Datos_motor").