Está en la página 1de 533

Principios de Programacin en

STEP7
Automatizacin Industrial

ndice
TEMA Principios de Programacin en STEP7
1. Programas en la CPU
2. Edicin de Programas
2.1 IEC 1131-3
2.2 Instrucciones/Operandos/Mdulos
3. Estructura de Programas
4. Tipos de Mdulos
4.1 Mdulos de Sistema
4.2 Mdulos de Usuario
5. Tipos de Procesamiento
6. Tiempos de Ciclo y Respuesta
7. Proyectos STEP7

Programas en la CPU

En una CPU corren dos programas

Sistema operativo: Est contenido en cada CPU y organiza todas las funciones y
procesos de la CPU no relacionados con una tarea de control especfica.
Entre sus funciones estn:
gestionar el arranque normal y completo del PLC/API
actualizar la imagen del proceso de entradas y salidas
llamar al programa de usuario
detectar alarmas y llamar a los programas de atencin a las mismas
reconocer y tratar los errores
administrar las reas de memoria
comunicar con unidades de programacin y otros sistemas de supervisin

Programa de usuario: Hay que crearlo y cargarlo la CPU. Contiene todas las funciones
necesarias para la tarea de control de una aplicacin especfica.
Entre las tareas del programa de usuario estn:
definir las condiciones de arranque (completo normal) de la CPU
tratar datos del proceso (funciones combinatorias, valores analgicos, ....)
reaccionar a alarmas
tratamiento de perturbaciones en el funcionamiento normal del programa

La Norma IEC 1131 / EN-UNE 61131


Parte

Ttulo

Contenidos

Parte 1

Informacin general

Definicin de trminos y glosario del PLC/API


Caractersticas funcionales del PLC/API

Parte 2

Especificaciones
y ensayos de los
equipos

Prestaciones elctricas, mecnicas y funcionales


Informacin a suministrar por el fabricante
Ensayos y verificaciones

Parte 3 Lenguajes de
programacin

Estructura del software de los PLC/API


Lenguajes de programacin
Elementos del lenguaje

Parte 4

Gua para usuarios

Especificaciones y anlisis del sistema


Aplicacin y seleccin del PLC/API
Seguridad y proteccin, instalacin y mantenimiento

Parte 5

Comunicaciones

Modelos, bloques de comunicacin, mapeado en


protocolos ISO

Lenguajes de IEC 1131 - 3 / STEP7


Lenguaje
Diagrama de funciones

IEC 1131-3
FBD
Function Block Diagram

STEP 7
FBD/FUP
Function Block Diagram

Diagrama de contactos

LD
Ladder Diagram

LAD/KOP
Ladder Logic

Lista de instrucciones

IL
Instruction List

STL/AWL
Statement List

Texto estructurado

ST
Structured Text

SCL
Structured Control Language

Grfico secuencial

SFC
Sequential Function Chart

GRAPH7

Diagrama de bloques

CFC
Continuous Function Chart

Diagrama de grfico
de estados

HIGRAPH7

Funcionalidad del Software


El entorno de programacin permite desarrollar proyectos de control
y automatizacin con las siguiente funcionalidad:
Crear la estructura de directorios necesaria para la gestin de cada proyecto
Configurar el hardware del equipo
Desarrollar programas off-line
Cargar y descargar programas y datos en el PLC/API (on-line)
Depurar el programa en fase de ejecucin sin necesidad de interrumpir la
ejecucin del programa (on-line)
Realizar funciones de test o estado de variables y zonas de la memoria
Realizar funciones de forzado de variables
Elaborar documentos para la fase de mantenimiento posterior
Analizar el estado y comportamiento de la CPU (pilas, tiempos, ...) y de los
mdulos de seal asociados

Programas de Usuario
Bloque en el Programa de Usuario
STEP 7 permite estructurar el programa. Esto aporta las siguientes ventajas:

los programas se pueden dividir en bloques


se pueden estandarizar secciones individuales del programa
se simplifica la organizacin del programa
las modificaciones del programa pueden realizarse ms fcilmente
se simplifica el test del programa, ya que puede ejecutarse por partes
se simplifica la puesta en servicio

Edicin de un Programa
Programa
conjunto de todas las instrucciones y convenciones para el tratamiento de las
seales, por medio de las cuales se acta sobre la instalacin a controlar
(proceso), de acuerdo con unas rdenes de control

Estructura

Representacin

Tcnica modular
Segmentos
Comentarios

FBD / FUP
LAD / KOP
STL / AWL

Instruccin
Instruccin
unidad ms pequea autnoma del programa y constituye una orden de
trabajo para el procesador

Instruccin
002: A

Parte operacional

Operando

Identificacin Parmetro

I 1.0

Operacin
Operando

Parmetro
Identificador del operando
Direccin relativa de la instruccin en el
mdulo respectivo

Operandos
OPERANDOS

Entradas

NEMONICO

FUNCION

Imagen del proceso de entradas (PII)

Salidas

Imagen del proceso de salidas (PIQ)

Marcas

Para almacenar resultados binarios intermedios

Datos

Para almacenar resultados digitales intermedios

Tiempos

Funciones de tiempo (temporizadores)

Contadores

Funciones de cmputo (contadores)

Periferia

Para acceder directamente a la periferia

Locales

Datos locales temporales

Mdulos

OB, FB, FC
SFB, SFC

Para estructurar el programa

Ejemplo de Programa
Esquema STL/AWL
Elctrico

FBD/FUP

LAD/KOP

S1
S2

A I 0.0
AN I 0.1
= Q 4.5

I 0.0

&

I 0.0 I 0.1 Q 4.5


Q 4.5

I 0.1

H1

Estructuracin de los Programas


STEP 7 provee tres posibilidades para organizar un programa.
Programacin
Lineal
Arranque

Programacin
Dividida
Arranque

Programacin
Estructurada
Arranque

Receta A
Receta B

OB1

OB1

Mezclador

FB1

OB1

FC2
FB2

Descarga
Programa Lineal:
Todas la instrucciones
estn contenidas en un
mdulo (normalmente
en el mdulo de
organizacin, OB1)

Programa dividido en reas:


Las instrucciones para funciones
individuales estn contenidas en
mdulos individuales. El OB1
llama a los mdulos individuales
sucesivamente.

FC1

FC3
Programa Estructurado:
Las funciones reutilizables son
cargadas en mdulos individuales.
El OB1 (u otros mdulos) llaman a
estos mdulos y les pasan datos
relevantes.

Estructura de Programa. Programacin Lineal


OB1
1 instruccin
2 instruccin

..
..
..
.

ltima instruccin

Programacin Lineal
OB1: Ejemplo de de un simple mdulo lineal en FUP
Segmento 1: motor marcha/paro

I 0.0

>=1

Q 4.0

&

Q 4.0
I 0.1

Segmento 2: Seguridad y seales de aviso

I 0.2

&

I 0.3

Q 4.1

I 0.4

OB1: ejemplo de un simple


mdulo lineal en AWL
Segmento 1: motor on/off
A(
O I 0.0
O Q 4.0
)
AN I 0.1
= Q 4.0
Segmento 2: Seguridad y
seales de aviso
A
AN
AN
=

I 0.2
I 0.3
I 0.4
Q 4.1

Programacin Lineal. Ejemplo

Programacin Dividida
FC

OB1
Ingrediente_A
Ingrediente_B

>=1
&
=

(CALL)
&

(CALL)

>=1

FC

Mezclador

Descarga

(CALL)
>=1
(CALL)

&

FC

=
>=1

FC

Ejecucin de un Programa Dividido


Programa principal

OB

Mdulo subrutina

Procesamiento
del programa
Instruccin que llaman
otros mdulos

Procesamiento
del programa

Fin de mdulo

Programa Dividido. Control de nivel

FC

Sistema Operativo

Programacin Estructurada I

OB1

FC

FB

FB

FC

SFC
SFB
Otros

OBs

Programacin Estructurada II
Motor

OB1
>=1

&
=
Descarga

>=1
&
=
&
=
=

Estructura del Programa


OB1

Mdulo 7

Mdulo 32

Procesar
mdulo 7
Lamar al
mdulo 32

..
..
.

Mdulo R

...

Llamar al
mdulo X

Retornar

Procesar
mdulo 10
Retornar

Mdulo 10

Retornar

Retornar

Retornar
Nivel1

Nivel2

Nivel3

Niveles 4..7

Nivel 8

Divisin Tecnolgica de un Programa

Sistema operativo

Inicio
del OB 1
ciclo

FB 10

Tren

CINTA A

CALL FB 10

CALL FC 50
FC 50
DB inst. 10

FB 20
CINTA B
CALL FB 20

CALL FC 50

DB inst. 2

Accionamiento

Tipos de Mdulos de Programa


Ciclo
OB

Tiempo
Proceso

FB

FC

SFB

FB

FB

SFC

Mdulo de
Organizacin

Error
Modos de operacin del sistema

Leyenda:
Mdulo de
datos de
instancia

Bloques

CPU 315

CPU 315-2DP Tamao

Md. de organizacin (OB)

13

14

8 Kby

Mdulo de funcin (FB)

128

128 (0-127)

8 Kby

Funcin (FC)

128

128 (0-127)

8 Kby
8 Kby

Mdulo de datos (DB)

127

127(1-127)

Funcin del sistema (SFC)

48

53

Md. func. sistema (SFB)

Mdulos de Usuario
Tipo de Mdulo

Caractersticas

Organizacin (OB)

Interfase de usuario entre el sistema operativo y el programa


Prioridades establecidas de (1a 29)
Informacin especial de inicio en la pila de datos locales
Definen la estructura del programa de usuario

Mdulo de
funcin (FB)

Mdulos con memoria que puede programar el usuario


Parametrizable / retentiva
No parametrizable / retentiva
No parametrizable / no retentiva

Funcin (FC)

- Rutina de programa para funciones frecuentes.


- Un valor de retorno es transferido.
(Los parmetros deben ser asignados por la llamada.)
- No retentivo
- Parametrizable

Mdulo de Datos
(DB)

- Estructurado, almacenamiento de datos locales (DB instan.)


- Estructurado, almacenamiento de datos globales
(vlido en todo el programa)

Mdulos del Sistema


Tipo de Mdulo

Caractersticas

Funcin del
Sistema
(SFC)

- Integrados en el sistema operativo de la CPU


- Un usuario puede llamar esta funcin
(sin memoria).

Mdulos de
Funciones
del Sistema
(SFB)

- Integrados en el sistema operativo de la CPU


- Un usuario puede llamar esta funcin
(con memoria).

Dato de Sistema
(SDB)

- Mdulo de datos para datos de configuracin


y parmetros

Mdulos de Organizacin OBs (I)


Bloques de Organizacin (OB):
Constituyen el interfaz entre el sistema operativo y el programa de usuario.
Tienen prioridad.
En las CPUs del S7 300 la prioridad de los OBs es fija
Es posible asignar la misma prioridad a varios OBs
Con prioridad 0 se desactiva el OB de alarmas
Son llamados por el sistema operativo.
Cada OB contine una informacin de arranque de 20 bytes de
datos locales que entrega al S.O. durante el arranque
Controlan:
El procesamiento cclico
El procesamiento controlado por alarmas del programa
El comportamiento en el arranque del sistema de automatizacin
El tratamiento de errores

Mdulos de Organizacin OBs (II)


Tipo de Alarma

Mdulo de organizacin

Ciclo libre

OB1

Alarmas horarias

OB 10 a OB 17

Alarmas de retardo

OB 20 a OB 23

de 3 a 6

Alarmas cclicas

OB 30 a OB 38

de 7 a 15

Alarmas de Proceso

OB 40 a OB 47

de 16 a 23

Alarma de
multiprocesamiento

OB 60

25

Error de redundancia

OB 70 y OB 72

25 y 28

Errores asncronos

OB 80 a OB 87

26

Ciclo no prioritario

OB 90

29

Arranque

OB 100 a OB 102

27

Errores sncronos

OB 121y OB 122

Prioridad

la del OB del error

Ejecucin Cclica I
Sistema operativo Programa de usuario
Conectar

Ciclo

Programa
principal

Ejecucin Cclica II
Sistema operativo Programa de usuario
Conectar

Programa
de usuario

Ciclo

Programa
principal

Alarma

Interrupcin

Programa
de alarma

Error

Interrupcin

Tratamiento
de errores

Secuencia y Profundidad de Anidamiento

Sistema operativo

Inicio
del
ciclo

Profundidad de anidamiento

OB 1

FB 1

FC 1

DB inst. 1

FB 2
DB inst. 2

FC 1

FB 1

SFC 1

DB inst. 1

DB 1

Llamadas a los Mdulos


Llamada de un mdulo
(OB, FB, FC)

Ejecucin
del programa
Instruccin que llama a
otro mdulo

Mdulo llamado
(FB, FC, SFB, SFC)

Ejecucin
del programa

Fin de mdulo

Fases de la Ejecucin Cclica


El sistema operativo inicia el tiempo
de vigilancia del ciclo
La CPU escribe los valores de la PIQ
en los mdulos de salida
La CPU lee el estado de las entradas en los
mdulos de entrada y actualiza la PII
La CPU ejecuta el programa de usuario
Al final del ciclo, el S.O. realiza las tareas pendientes
(cargar y borrar mdulos, recibir y enviar datos globales..)

Tiempo de Ciclo I
El tiempo de ciclo es el tiempo que el S.O. necesita para:
ejecutar el programa cclico
partes del programa que interrumpen al cclico (ejecucin otros OBs)
actividades del sistema (p.e. actualizacin de imgenes, ..)
El tiempo de ciclo se vigila
El tiempo de ciclo no es igual para cada ciclo

Tiempo de Ciclo II
La figura muestra la funcin del tiempo de vigilancia del ciclo en la
ejecucin del programa en las CPUs

Funciones FCs
Son mdulos programables. Con parmetros absolutos o fromales
Es un mdulo lgico sin memoria
Las variables temporales de FCs se memorizan en la pila de datos locales
Los datos locales se pierden tras la ejcucin de las FCs
Para memorizar los datos, pueden utilizar mdulos de datos globales.
A los datos locales de una FC no se le pueden asignar valores iniciles
Como una FC no tiene memoria, se han de indicar siempre parmetros actuales
Las FCs se pueden utilizar para:
devolver un valor de funcin al mdulo invocante (p.e. Fun. Matemticas)
ejecutar una funcin tecnolgica (p.e. Una combinacin binaria)

Mdulo de Funcin FBs


Son mdulos programables. Con parmetros absolutos o formales
Es un mdulo con memoria
Tiene asigando un mdulo de datos como memoria (DB de instancia)
Los parmetros que se transfieren al FB y las varaiables estticas, se
memorizan en el DB de instancia
Las variables temporales se memorizan en la pila de datos locales
Los datos del DB de instancia no se pierden al finalizar la ejecucin del FB
Los datos memorizados en la pila de datos locales se pierden al finalizar la
ejecucin del FB
Un FB contiene:
un programa que se ejecuta cada vez que se le llama desde otro mdulo
facilitan la programacin de funciones complejas de uso frecuente

FBs y DBs de Instancia


A cada llamada de un FB que transfiere parmetros est asignado un DB
de instancia
Un FB puede ejecutarse con diferentes DBs de instancia, luego se ejecuta
con diferentes valores para los parmetros con cada DB de instancia

FB 20: Motor
Parmetros formales

DB 202: Motor_2
Parmetros actuales (reales)

Arranque: INT IN
Revoluciones: INT IN
Historial: DT IN_OUT
Tiempo efec.: TIME IN_OUT

Entero (16 bits): Arranque


Entero (16 bits): Revoluciones
Fecha y hora (48 bits):
Puntero a direccin del historial
Tiempo (32 bits): Tiempo ejec.

Mdulo de Datos Globales DBs


Son mdulos de datos. No contienen instrucciones STEP 7
Contienen datos de usuario, datos variables con los que trabaja el programa
Cualquier FB, FC o OB puede leer/escribir datos en un DB global
El tamao mximo de los DBs depende de las CPUs
La estructura de los DBs de datos globales se puede definir discrecionalmente
Los datos de un DB de datos globales no se borran al cerrar el DB o concluir
la ejecucin del mdulo de programa que lo utiliza

FC 10
FC 11
FC 12

DB
global
(DB 20)

Acceso desde
todos los bloques

DB de instancia Acceso slo desde


FB 12
(DB 112)

Mdulos del Sistema SFBs y SFCs


Son mdulos ya programados que ofrecen las CPUs S7 a los usuarios

SFBs:

Es un FB integrado en la CPU
Forman parte del S.O.
No se cargan como parte integrante del programa
Al igual que los FBs, son mdulos con memoria
Hay que crear los DBs de instancia y cargarlos en la CPU como parte
intrgrante del programa.
Las CPUs ofrecen SFBs:
para la comunicacin va enlaces configurados
para las funciones especiales

SFCs:

Es una funcin programada integrada en la CPU


Las SFC se pueden llamar desde el programa de usuario
Forman parte del S.O.
No se cargan como parte integrante del programa
Al igual que las FCs, las SFCs son mdulos sin memoria
Las CPUs ofrecen SFCs para un conjunto muy amplio de aplicaciones

Tipos de Mdulos de Datos


8 Bits
Byte de datos 0
El tamao mximo de un mdulo
en la CPU 314 es 8 Kbyte. La
cantidad mxima de memoria
disponible en un mdulo de datos
depende de la CPU.

Byte de datos 8191

Llamada de Mdulos Asignacin de Parmetros


STL/AWL
FB parmetro formal

CALL FB7, DB45


Start: = I 1.0
Stop: = I 1.1
Longitud := MW20
Ejecutar: = M2.1

Llamada al FB7 (a travs del


mdulo de datos de instancia
DB45) y asignacin de parmetros.

Direccin actual de los datos


(parmetro vigente)

DB45

FBD/FUP

FB7
EN

Direccin actual
de los datos

I 1.0
I 1.1
MW20

Llamada al FB7 (a travs del


mdulo de datos de instancia
DB45) y asignacin de parmetros.

ENO

Start
ejecutar
Stop
Longitud

M2.1
FB parmetro formal

Estructura del Mdulo


Cabecera del Mdulo
(36 Bytes)
Cuerpo del mdulo :
Seccin de declaracin
y
Seccin de programa
o
Datos
Interfase
Descripcin breve

Ejemplo de Programacin Estructurada

LT

LT

LT

Botn de la seleccin
del tanque

LT

0 0 0 0

LT A
Ingrediente
Ingrediente B

Procesamiento Cclico del Programa


Inicia el mdulo (OB 100), procesndose una vez
despus de conectar la alimentacin, por ejemplo

Mdulo de entrada

Iniciando el tiempo de control de ciclo

CPU ciclo de scan

Lectura del estado de las seales de los mdulos


guardando los datos en la tabla de la imagen de
proceso de entradas (PII)
Ejecucin del programa en el OB1 (procesamiento
cclico)
Eventos (tiempo de interrupcin, interrupcin de
proceso, etc.)
Llamada a otros mdulos OBs, FBs, FCs, etc.
Escritura en la tabla de imagen de proceso de
salida (PIQ) en los mdulos de salida.

Mdulo OB 1
A I 0.1
A I 1.1
= Q 4.0
.
.
.
.

Mdulo de salida

Imagen del Proceso


I2.0

I2.7

I0.5

I03

Q4.4

Q4.3

PII
Byte 0
Byte 1
Byte 2
.
.
.
.

PIQ
1

Programa
de usuario
A(
O I 2.0
O Q 4.3
)
AN I 2.7
AN I 0.5
AN I 0.3
= Q 4.4

Byte 0
Byte 1
Byte 2
.
.
.
.

Mdulos de Organizacin de Alarmas


Los OBs de alarmas permiten:
ejecutar partes del programa dependientes del tiempo
reaccionar eficazmente a seales externas al proceso

Tipo de Alarma

OBs de alarma

Aplicacin

Alarma horaria

OB 10 a OB 17

Calcula el flujo de un proceso de


mezcla al final de un turno

Alarma de retardo

OB 20 a OB 23

Controla un ventilador para que


se pare 20 seg despus de parar un
motor

Alarma cclica

OB 30 a OB 38

Muestrear el valor de una seal para


el control de una planta

Alarma de proceso

OB 40 a OB 47

Notificar que se ha alcanzado el


valor mximo de un depsito

Ejecucin de Programas Tipos de Procesamiento


Arranque

CON

comprobacin e inicializacin de valores


condiciones de arranque

Procesamiento Cclico
procesamiento normal. OB1
Alarma
del proceso

Alarma de Proceso

Alarma
cclica

Alarma cclica

gobierno por interrupciones


periodos de tiempo predeterminados
importante en lazos regulacin

Alarma
horaria
Alarma
de retardo

Alarma horaria
Alarma de retardo
Tratamiento de Error
en funcin de fallos
slo en algunas gamas

Alarma
por errores

Tiempo de Ciclo
Definicin: El tiempo de ciclo es el tiempo que transcurre durante un
ciclo de programa. Est constituido por:
Tiempo de ejecucin del S.O.
Tiempo de transferencia de las imgenes del proceso (PII, PIQ)
Tiempo de ejecucin del programa
Temporizadores
Funciones integradas
Carga por alarmas
Carga por comunicacin (Profibus-DP, MPI)
S.O.
Programa
de usuario
Tiempo de ciclo

PII S.O.

Programa de usuario
A I 1.0
= Q 4.0

Interrupciones
por alarmas

PIQ PII

Tiempo de Respuesta
El tiempo de respuesta es el tiempo que transcurre entre el reconocimiento de una seal
de entrada y el cambio de estado de la seal de la salida correspondiente. Depende de:
Tiempo de ciclo
Retardo en las entradas y salidas
Tiempos de rotacin adicionales en la red Profibus
Tiempo de reaccin

Retardo de
los mdulos
de entrada

I 1.0 0
1

Q 4.0 0
tiempo

PII S.O.

Ejecucin del programa


A I 1.0
PIQ
= Q 4.0

PII

Tiempo de Respuesta ms Corto y ms Largo


El tiempo de respuesta ms corto se presenta cuando el estado de la
entrada observada cambia justo antes de la carga de la PII. En este caso
hay que tener en cuenta:
Tiempo de retardo de la entradas
Tiempo de actualizacin de la PII
Tiempo de paso por el S.O.
Tiempo del programa de usuario
Tiempo de ejecucin de los temporizadores
Tiempo de actualizacin de la PIQ
Retardo de las salidas
El tiempo de respuesta ms largo se presenta cuando el estado de la
entrada observada cambia durante la carga de la PII. En este caso
el tiempo de respuesta es:
tiempo de retardo de la entradas
2 x tiempo de actualizacin de la PII
2 x tiempo de paso por el S.O.
2 x tiempo del programa de usuario
tiempo de ejecucin de los temporizadores
2 x tiempo de actualizacin de la PIQ
tiempo de retardo de las salidas

Mdulos de Org. de Tarea no Prioritaria


Si se ha definido un tiempo de ciclo mnimo y este es mayor que el tiempo de
ciclo real, al finalizar el programa cclico la CPU dispone de tiempo de
ejecucin.
El tiempo disponible se utiliza para procesar el OB de tarea no prioritaria.

Mdulo de Organizacin de Alarmas Cclicas


Los OBs de alarmas cclicas permiten:
ejecutar partes del programa en periodos de tiempo determinados

Estructura de un Proyecto S7
Programas S7/M7 (no asignados a ningn HW)
Programas de usuario con mdulos S7:
OBs, FBs, FCs, DBs,.......
Fuentes AWL para programas de usuario
Estacin HW de un S7 - 400
CPU programable de un S7-400
Programas S7/M7 (asignados a HW)
Programas de usuario (off-line)
Fuentes AWL
M7-FM programable

Mdulos de STEP7

Seleccionar un Mdulo para la Edicin


La herramienta Programar Mdulo S7 (KOP, AWL) se puede utilizar para editar
mdulos off-line (almacenados en el dispositivo de programacin) o bien on-line
(mdulos que estn en la CPU).
Hay que indicar la opcin deseada y seleccionar el mdulo.

Partes de un Mdulo
Tabla de
Declaracin
de Variables

Seccin de
Cdigo

Word Bits S7

8
BR

7
6
5
CC0 CC1 OV

4
OS

3
2
1
OR STA RLO

0
/FC

Bit /FC Firts Check Bit de Primera Consulta


Cada operacin lgica consulta el estado del bit /FC, as como el estado de seal del operando
direccionado. Si el bit /FC es 0, la operacin almacenar el resultado de la consulta del estado de seal
en el bit RLO de la palabra de estado (bit RLO) y el bit /FC se pone a 1. Este proceso se denomina
primera consulta.
Ciertas instrucciones como =, S y R establecen el /FC bit a 0 iniciando as una nueva lgica despus de
ellas: condicionesacciones (Con esos operandos, se cierra la consulta actual y se abre una nueva
(adems del inicio del programa).
Otras instrucciones como AND o OR establecern el bit / FC a 1 para combinar la lgica con la siguiente
instruccin.

Bit RLO Result of Logic Operation Resultado Lgico


Este bit almacena el resultado de una operacin lgica binaria (AND, NAND, OR, NOR, NOT) o de una
comparacin (XOR--or exclusiva--, XNOR --nor exclusiva--). Otras instrucciones leen el RLO (=, S, R) para
determinar cmo se van a ejecutar.

STA Status (bit 2)


El bit estado almacena el estado de la direccin de Booleana actual (bit direccionado).

Ejemplo con RLO, STA y / FC


Si ests acostumbrado a la lgica de escalera (ladder) y estas luchando por entender el propsito del
RLO y STA puede ayudarte el siguiente ejemplo. El STA se utiliza para realizar un seguimiento del
estado de la direccion. El RLO se utiliza para mantener seguimiento del estado del rengln.

EL programa AWL equivalente seria el siguiente:

1. Al iniciar el primer chequeo el bit /FC es cero por lo que una instruccin Y lgica reflejar el bit de
estado (STA) hacia el Resultado de Operacin lgica (RLO) . En este caso, la direccin de E 1.0 es 1 por lo que el
STA es 1 y el resultado de la lgica (RLO) ser 1. Es decir, en la primera operacin lee el STA de la primera
instruccin y lo copia en el RLO de la primera instruccin.

2. En la segunda lnea el bit /FC es ahora 1 que indica que esta lnea tiene que usar el RLO de la anterior direccin
I1.0 con el STA de la actual direccion I1.1. Como STA = 1 en I1.1, el RLO de la linea procesada es 1 . Es decir, lee el
RLO de I1.0 (instruccin anterior) y el STA de I1.1 (instruccin actual) y realiza una AND logica, que es lo que dice
la instruccin (si fuese O haria OR logica), y el resultado lo copia al RLO de I1.1 (instruccin actual).

3. Lo mismo ocurre en la segunda lnea, pero esta vez de 1 hace que el actual RLO = 0. Es decir, AND entre RLO de
I1.1 y STA de M0.0, almacenandolo en STA de M0.0)

4. La cuarta es la instruccin de asignacin que toma el RLO y lo escribe en la direccion/es correspondientes (en
las otras instrucciones las lee - marcas, entradas --, en asignaciones, set y reset las escribe). En este caso final
RLO = 0 por lo que la salida ser OFF. (Si M0.0 fuese 1, entonces la operacin se evaluar como TRUE haciendo el
RLO = 1 activando la salida Q1.0).

Operaciones de Y lgica.
Esto lo vas a pillar enseguida vers. Imagina que tienes dos entradas que cuando estn las dos a true (1),
tenemos que activar una salida. La logica sera as:
U E 0.0
U E 0.1
= A 1.0
Es decir, iniciamos el segmento leyendo lo que hay en el E0.0 y le hacemos un AND con el E0.1 y su
resultado se lo asignamos a la salida A1.0.
O de otra forma, cargamos el E0.0 en el RLO y luego hacemos un AND de la E0.1 con el RLO y se lo
asignamos a la A1.0

Operacin O lgica
En buena lgica (nunca mejor dicho), podras pensar que la forma correcta de hacer un OR sera:
U E0.0
O E0.1
= A1.0
Y eso funcionria bien. Pero la forma ms mejr sera haciendo:
O E0.0
O E0.1
= A1.0
Por qu?
Lgicamente hacen lo mismo. Pero me gusta ms hacerlo as porque de hecho, cuando traduces un OR de
KOP a AWL as lo representa. Mejor que escribamos todos de la misma manera no?
Bueno, al grano. Adivinas como actuara no?
Inicialmente hara un:

U E0.0 // O E0.0
Como en el caso anterior leera el estado del E0.0 y lo volcara en el RLO (imaginemos un cero).
Luego un:
O E0.1
Y aqu hara un OR con el RLO. Imaginemos que el E0.1 estuviera a uno. El resultado del OR sera un
bonito uno.
= A1.0
E igualamos el uno a la salida A1.0. Sencilo no? Vayamos ahora con los parntesis.
NOTA: TENEMOS TODAS LAS OPERACIONES LOGICAS CON PUERTASAND, NAND,
OR, NOR, XOR, XNOR, NOT

Parntesis en AWL en Step 7


Como puedes imaginar, en cuanto queramos realizar combinaciones un poco ms elaboradas
necesitaremos parntesis para poder realizar estas lgicas.
As, dispondremos de las siguientes operaciones:

U( ..) //UN(..) que valdr para realizar un (N)AND con el contenido interior al parntesis
O(..) // ON(..) que valdr para realizar un (N)OR con el contenido interior del parntesis.
X(..) // XN(..) que valdr para realizar una (N)XOR con el contenido interior del parntesis

En definitiva en lo que se basa es en realizar la combinatoria interior del parntesis y luego ejecutar la
operacin asociada al parntesis.
Los parntesis pueden anidarse metiendo parntesis dentro de otros parntesis. As, odramos hacer algo
similar a lo anteriores ejemplos:
U(
U E0.0
O E0.1
)
O(
U E0.2
U E0.3
)
= A1.0

En este caso primero resolvera la combinatoia interior de los parntesis por separado y luego realizara el
OR entre el resultado de los parntesis.
Hay que aadir que el caso del OR es un poco especial ya que si dentro del parntesis del OR la
combinatoria es de AND exclusivamente, el parntesis se podra haber obviado quedando esa parte as:
O
U E0.2
U E0.3
Y funcionara exctamente igual.

Operandos de cierre de consulta


A estas alturas de la pelcula te estars preguntando si los resultados de la combinatoria se van
almacenando en el RLO, qu pasa despus de una igualacin si quiero empezar a realizar una nueva
combinatoria?
Pues efectivamente despus de los operandos:

Igualacin (=)
Set (S)
Reset (R)

Con esos operandos, se cierra la consulta actual y se abre una nueva (adems del inicio del programa)
Da igual por tanto lo siguiente que hagas (U,O, UN) porque lo que se har es una lectura del operando
en el RLO. Es decir, si la siguiente a una igualacin es

= A1.0
UN E1.0
U E1.1
= A1.2
Lo que har es leer el estado de la E1.0, le cambiar el signo y lo cargar en el RLO. No har un NAND
con nadie. Simplemente realizar la carga en el RLO.
Ojo. Un cambio de segmento no es un inicio de programa. Por tanto si la ltima instruccin de un
segmento es la lectura de un bit haciendo un U E0.7, este afecta al siguiente segmento. A efectos
prcticos es como si lo hubieras escrito al principio del nuevo segmento

FUNCIONES DE RLO EN CONTADORES Y TEMPORIZADORES


Ya hemos visto la logica binaria, pero ahora vamos a emplearlo a temporizadores y contadores. Os
habeis preguntado porque cuando cargamos un temporizador SE sigue contando?? La primera idea es
que se siga CUMPLIENDO LA CONDICION.Pues la respuesta es que mientras el RLO no cambie
sigue contando.
De ah que si solo creemos que el programa funciona CUMPLE CONDICIONEJECUTA
INSTRUCCIN la respuesta esta mal, pues en cada vuelta de ciclo de programa, cuando le toque
evaluar la misma instruccion deberia CARGAR DE NUEVO el temporizador, pero no lo hace. Y lo
mismo ocurre con los contadores.
DE HECHO, UN PRIMER PROBLEMA DE PROGRAMACION RESIDE EN QUE DEBEMOS
PROVOCAR UN CAMBIO DE RLO PARA QUE FUNCIONEN CIERTAS CONDICIONES COMO
QUEREMOS, O VICEVERSA.
UN SEGUNDO PROBLEMA ES QUE LAS OPERACIONES DEBEN TENER SIEMPRE EL
FORMATO CONCRETO DE DATOS PARA LA OPERACIN A REALIZAR.

Qu es un set, reset y asignacion en AWL?


Un SET no es mas que fijar a uno una variable booleana. Como la has fijado, esta variable seguir a uno
aun cuando las condiciones de ponerla a uno desaparezcan.
Se diferencia de una igualacin (asignacion) en que en esta, el resultado final es dependiente en todo
momento de las condiciones para estar a uno o a cero. Mientras que todas las condiciones se cumplan la
variable estara a uno. Cuando una o varias de las condiciones no se cumpla, la seal cae, sera false, 0.
Aqu no. Una vez dadas las condiciones la seal estar a uno indefinidamente o hasta que se le haga un
RESET. Y es que el RESET lo que hace es fijar a cero la variable. Como en el caso anterior, aunque las
condiciones de reset desaparezcan, la seal seguir a cero y no recobrar su estado de uno hasta un nuevo
SET.
Qu pasa si se dan ambas condiciones, SET y RESET en AWL?
Pues lo primero que habra que darte un capn por hacer un programa en el que el set y reset se de
simultneamente.
Puede darse ese caso?
Es grave?
Qu pasa si se da?
De qu depende ?

Porsupuestsimo que s.
No conozco a nadie que haya enfermado de ello, pero mejor evitarlo.
La respuesta seguro que la sabes. Depende.
De segn como se ejecute todo depende .

Como bien sabes, si ambas condiciones se dan simultneamente y seguidas una de otra, la que sobrevivir
del envite ser la segunda.

Qu pasa si mezco Set, Reset e igualaciones?

Espero que esto no se te haya pasado siquiera por la cabeza crcel directamente. Punto. Y sin galletas
en el desayuno hasta nuevo aviso.

Vale, vale pero qu hay del SET y RESET en AWL?


O E0.0
O E0.1
S A 1.0
U E0.2
U E0.3
R A1.0
Chupado no?

Como bien imaginars, la seal A1.0 se pondr a uno, cuando el OR formado por la E0.0 y E0.1 de como
resultado un uno poniendo el RLO a uno.
Igualmente, la A1.0 se podr a cero, cuando el AND de la E0.2 y E0.3 se ponga a uno poniendo el RLO
tambin a uno haciendo por tanto el reset.
En definitiva, el Set y el Reset se ejecutarn forzando la marca o salida en una direccin u otra, cuando el
RLO est a uno y pasando olmpicamente del Set o Reset cuando el RLO est a cero.
Fcil no?

Forzado del RLO SET y CLR


Unas instrucciones muy interesantes son las de forzar el RLO, es decir, cargar en el RLO un cero o un
uno de forma incondicional hasta que haya una nueva operacin de combinatoria booleana:

SET: Fijaremos con ello el RLO a uno


CLR: Fijaremos con ello el RLO a cero

Por ejemplo:
U E0.1
U E0.2
SET
= A1.0

Cunto valdr A1.0?

Pues efectivamente, la salida A1.0 estar forzada a uno ya que da igual lo que pase con la combinacin de
las dos entradas ya que luego se fuerza el RLO a uno y se iguala su valor a la A1.0

Flancos en AWL
Finalmente vamos a ver los pulsos. Hay dos:

Positivo (FP)
Negativo (FN)

Los pulsos como bien sabes son instrucciones que ponen el RLO a uno cuando se cumple el escalon de
subida de cero a uno (el positivo) o que el RLO previo pase de uno a cero (el negativo).
Necesitan una marca auxiliar que es la que almacena la informacin de cmo estaba el RLO en el ciclo
anterior.
Mejor con un ejemplo:
U E0.0
FP M1.0
= A1.0
Lo que har este mini ejemplo ser: Mientras que la marca E0.0 est a cero, la el RLO tras el pulso estar
a cero. Cuando la entrada pase a uno, entonces en ese ciclo de scan el pulso pondr el RLO a 1 haciendo
que la salida A1.0 se active en ese ciclo de scan. En el ciclo siguiente an estando la entrada a uno, la
salida volver a cero ya que el RLO a la salida del pulso estar a cero.
Si hicieramos un ejemplo similar con el flanco negativo:
U E0.0
FN M1.0
= A1.0
El comportamiento sera igual salvo que esta vez, el RLO despus del FN se pondr a uno cuando la seal
de la E0.0 pase de estar a uno a estar a cero. Anlogamente al caso anterior slo estar a uno en ese ciclo
de scan, volviendo a cero en los sucesivos con independencia de que la salida siga a cero en este caso.

Operaciones con Bits de Estado


Automatizacin Industrial

ndice
TEMA Operaciones con Bits de Estado
1. Descripcin de los Bits de Estado
2. Modificacin de los Bits de Condicin
3. Evaluacin de Bits de la Palabra de Estado
4. Operaciones sobre el RLO

Bits de Estado Palabra de Estado


Definicin
Los Bits de Estado son bits indicadores de operacin (flags)
Son utilizados por la CPU para controlar las operaciones binarias y las actualiza durante el
procesamiento digital.
La palabra de estado contiene bits a los que se puede acceder con el operando de
operaciones lgicas con bits y con palabras.

Estructura de la Palabra de Estado

Descripcin de los Bits de Estado (I)


Bit /FC Firts Check Bit de Primera Consulta
Cada operacin lgica consulta el estado del bit /FC, as como el estado de seal del
operando direccionado. Si el bit /FC es 0, la operacin almacenar el resultado de la
consulta del estado de seal en el bit RLO de la palabra de estado (bit RLO) y el bit /FC se
pone a 1. Este proceso se denomina primera consulta

Bit RLO Result of Logic Operation Resultado Lgico


Este bit almacena el resultado de una operacin lgica binaria o de una comparacin.

Descripcin de los Bits de Estado (II)


Bit STA Status Bit de Estado
El bit de estado almacena el valor del bit direccionado.

Bit OR Bit de Estado OR


El bit OR (O) se requiere al realizar una combinacin Y antes de O con una operacin O.

Bit OV Overflow Bit de Desbordamiento


Indica un desbordamiento en el rango de un nmero o la utilizacin de nmeros reales no
vlidos.

Bit OS Stored Overflow Bit de Desbordamiento Memorizado


Se activa junto con OV, pero permanece activo hasta llamada a bloque, fin de bloque o JOS
(salto si OS = 1).

Descripcin de los Bits de Estado (III)


Bits CC1 y CC0 Condition Code Bits Bits Condicin
Los bits CC1 y CC0 dan informacin sobre los resultados o bits siguientes:

Resultado de una operacin aritmtica


Resultado de una operacin de comparacin
Resultado de una operacin digital
Bits que han sido desplazados por una operacin de desplazamiento o de rotacin

Bit BR Binary Result Bit de Resultado Binario


El bit BR corresponde a la salida de habilitacin (ENO) para el cuadro KOP.
Con la operacin SAVE (en STL) o con la bobina se guarda un RLO en el bit BR.

Modificacin de los Bits de Condicin (I)


CC1 y CC0 tras operaciones aritmticas, sin desbordamiento

CC1 y CC0 tras operaciones aritmticas con enteros, con desbordamiento

CC1 y CC0 tras operaciones aritmticas (coma flotante) con desbordamiento

Modificacin de los Bits de Condicin (II)


CC1 y CC0 tras operaciones de comparacin

CC1 y CC0 tras operaciones de desplazamiento y rotacin

CC1 y CC0 tras operaciones lgicas digitales

Evaluar los Bits de la Palabra de Estado (I)


Bit de Anomala - Registro BR

BR

I 0.0

&

I 0.1

Consulta el valor de seal del bit BR (resultado binario)

BR

Bit de Anomala - Operacin no Vlida

Q 4.0

UO

Determina si el resultado de una funcin aritmtica de nmeros en coma flotante es o


no admisible (es decir, si uno de los valores de la funcin aritmtica no es un nmero
en coma flotante vlido). Para ello se evalan los cdigos de condicin de la palabra de
estado (CC1 y CC0).

Bit de Anomala - Desbordamiento

OV

Detecta un desbordamiento (OV) en la funcin aritmtica ejecutada en ltimo lugar. Si


tras una funcin aritmtica el resultado se encuentra fuera de rango.

Bit de Anomala - Desbordamiento Memorizado

OS

Detecta un desbordamiento permanente (OS). A diferencia del bit OV (bit de


desbordamiento), el bit OS permanece activado aunque las operaciones aritmticas se
ejecuten sin error.

Evaluar los Bits de la Palabra de Estado (II)


Bits de Resultado

Determinar la relacin entre el resultado de una


operacin aritmtica y 0

I 0.0
IW0
IW2

SUB_I
EN
IN1 OUT
IN2 ENO
>=0

MW10

&

Q 4.1

Evaluar los Bits de la Palabra de Estado (III)


Operaciones de Consulta de Bits de Estado en STL
A

Chequea que cumple condicin y operacin lgica AND

Chequea que cumple condicin y operacin lgica OR

Chequea que cumple condicin y operacin lgica XOR

AN

Chequea que no cumple condicin y operacin lgica AND

ON

Chequea que no cumple condicin y operacin lgica OR

XN

Chequea que no cumple condicin y operacin lgica XOR

>0

Resultado mayor que 0

>=0

Resultado mayor o igual que 0

[(CC0 = 0) && (CC1 = 1)]


[(CC0 = 0)]

<0

Resultado menor que 0

[(CC0 = 1) && (CC1 = 0)]

<=0

Resultado menor o igual que 0

[(CC1 = 0)]

<>0

Resultado distinto de 0

[(CC0=0) && (CC1=1) v (CC0=1) && (CC1=0)]

==0

Resultado igual a 0

[(CC0 = 0) && (CC1 = 0)]

UO

Resultado invlido (fuera de orden) [(CC0 = 1) && (CC1 = 1)]

OV

Overflow

[OV = 1]

OS

Overflow Memorizado

[OS = 1]

BR

Resultado Binario

[BR = 1]

Evaluar los Bits de la Palabra de Estado (IV)


Operaciones de Bits de Estado en STL
RLO

BR

CC0

CC1

OV

OS

Funciones de Salto Ejecutables


JC, JCB

JCN, JNB

JBI

JNBI

JZ, JMZ, JPZ

JN, JP, JPZ

JN, JM, JMZ

JUO

JO

JOS

Operaciones sobre el RLO


Operaciones sobre el RLO en STL
SET

Establece el RLO a 1

CLR

Establece el RLO a 0

NOT

Niega el contenido del RLO

SAVE

Guarda el contenido del RLO en BR

Carga y Transferencia de la Palabra de Estado


Operaciones de Carga y Transferencia de la Palabra de Estado
L STW

Carga la palabra de estado en el ACU1

T STW

Transfiere el valor del ACU1 a la palabra de estado

Dependiendo de la CPU, los bits /FC, STA y OR no se copian en el ACU1, se ponen a 0

Ejemplos
Ejemplo 1:
SET
S
R
CLR
S

;
M
M
;
C

8.0; // Pone a 1 marca


8.1; // Pone a 0 marca
1;

// Pone a 0 el
// flanco del set del contador

Ejemplo 2:
SET ;
SAVE;
...
AN OV;
SAVE;
...

// Pone BR a 1
// Pone BR a 0 con overflow

Tipos de datos en S7
Tipo y descripcin

Tamao
en bits

Opciones de formato

Mrgenes y representacin
numrica

Ejemplo

TRUE/FALSE

1 / TRUE
0 / FALSE

BOOL
(bit)

Variable booleana
Todo / Nada

Formatodevariablesnumricasmatematizables(conoperacionesdeclculo)
INT (nmero entero)
Identificador: I

16

DINT (entero de
32 bits)
Identificador: D

32

REAL (nmero
decimal en coma
flotante)
Identificador: R

32

Nmero entero con signo

-32768

hasta

150

32767

W
Nmero entero con signo

L#-2147483648

hasta

L#85

L#2147483647

DW
IEEE
Nmero en coma flotante

Lmite superior:
3.402823e+38

1.234567e+13
6,0
0,0

DW
Lmite inferior:
1.175 495e-38

Formatosdetiempo
S5TIME
(tiempo SIMATIC)

16
W

TIME
(tiempo IEC)

32
DW

Tiempo S7 en
pasos de
10 ms (valor estndar)

Tiempo IEC en intervalos de


1 ms, nmero entero con
signo
Equivale al formato DINT (D)
con unidad de 1ms

DATE
(fecha IEC)

16

Fecha IEC en pasos de 1 da

W
TIME_OF_DAY
(hora)

32

Hora en intervalos de 1 ms

DW

S5T#0H_0M_0S_10MS
hasta

S5T#0H_1M_0S_0MS

S5T#2H_46M_30S_0MS

S5TIME#0H_1H_1M_0S_0MS

-T#24D_20H_31M_23S_648MS
hasta

T#0D_1H_1M_0S_0MS

T#24D_20H_31M_23S_647MS

TIME#0D_1H_1M_0S_0MS

D#1990-1-1

D#1994-3-15

hasta

D#2168-12-31

DATE#1994-3-15

TOD#0:0:0.0 hasta

TOD#1:10:3.3

TOD#23:59:59.999

TIME_OF_DAY#1:10:3.3

www.campusabierto.es

AdolfoMolina

Tipos de datos en S7
Tipo y descripcin

Tamao
en bits

Opciones de formato

Mrgenes y representacin
numrica

Ejemplo

BYTE
(byte)

Nmero hexadecimal

WORD
(palabra)

16

Nmero binario

B#16#0
hasta
B#16#FF

B#16#10

2#0 hasta
2#1111_1111_1111_1111

2#0001_0000_0000_0000

W#16#0 hasta
W#16#FFFF

W#16#1000

BCD
Formato carga contadores Z

C#0 hasta
C#999

C#12

Nmero decimal sin signo


Dos Byte

B#(0,0) hasta
B#(255,255)

B#(136,20)

Nmero binario

2#0 hasta
2#1111_1111_1111_1111_
1111_1111_1111_1111

2#1000_0001_0001_1000_
1011_1011_0111_1111

DW#16#0000_0000 hasta
DW#16#FFFF_FFFF

DW#16#00A2_1234

Nmero decimal sin signo


Cuatro Byte

B#(0,0,0,0) hasta
B#(255,255,255,255)

B#(1, 14, 100, 120)

Caracteres ASCII

'A','B' etc.

W
Nmero hexadecimal

DWORD
(palabra doble)

32
DW

Nmero hexadecimal

Variable ASCII
(carcter)

'E'

www.campusabierto.es

AdolfoMolina

Tema 2: Programacin de PLCs


1. STEP 7
2. PROGRAMACIN BSICA AWL
Introduccin
Operaciones lgicas a nivel de bit
Marcas
Simblicos
Flancos
Temporizadores
Diagnosis e informacin del sistema
Contadores
Carga y Transferencia
Operaciones con acumuladores
Saltos
3. PROGRAMACIN ESTRUCTURADA

PLCs
Curso 2009/10

Pgina 1

Introduccin a los Tipos de Datos en STEP 7

Tipos de datos
elementales
(hasta 32 bits)

Tipos de Datos de bit (BOOL, BYTE, WORD, DWORD, CHAR)


Tipos de Datos Matemticos (INT, DINT, REAL)
Tipos de Tiempo (S5TIME, TIME, DATE, TIME_OF_DAY)

Tipos de datos
complejos
(mayores de 32 bits)

Tiempo (DATE_AND_TIME)
Array (ARRAY)
Estructura (STRUCT)
Cadena de Caracteres (STRING)

Tipos de datos definidos por el usuario


(mayores de 32 bits)

Tipo de Datos UDT (User Defined Type)

PLCs
Curso 2009/10

Pgina 2

TIPOS DE DATOS DE BIT TAMAO


La memoria del Autmata est estructurada en bytes.
Estos bytes podemos agruparlos/descomponerlos, obteniendo los
siguientes tamaos de datos:
Bit _ _ _ .N
Byte (8 bits) _ _ _ B
Palabra/word (16 bits) _ _ _ W
Doble palabra/double word (32 bits) _ _ _ D

Se puede acceder a cualquier rea de la memoria: marcas, entrada,


salida, etc. con cualquiera de los tamaos de datos:
PLCs
Curso 2009/10

Pgina 3

DIRECCIONAMIENTO 1/3

Zona de
memoria:

E Tam BBB.b
Nmero de byte
y bit (0-7), en su
caso

E -> Entradas
A -> Salidas
T -> Temporizadores
Z -> Contadores
M -> Marcas
DB -> Mdulos de datos
P -> Acceso directo (PA, PE)

Tamao del Dato que


vamos a usar (bit por
omisin): B, W, D

PLCs
Curso 2009/10

Pgina 4

DIRECCIONAMIENTO 2/3

124

124

125

125

125

125

PLCs
Curso 2009/10

Pgina 5

DIRECCIONAMIENTO 3/3
Dentro de cada byte, palabra o doble palabra, los bits se numeran de
derecha a izquierda, de 0 al 7.

E 124.0

Dir. byte: rea de memoria + B + n de byte EB124

Dir. palabra: rea de memoria + W + n de su 1er byte


EW124 => EB124 EB125

Dir. doble palabra: rea de memoria + D + n de su 1er byte


MD0 => MB0 MB1 MB2 MB3
PLCs
Curso 2009/10

Pgina 6

SISTEMAS NUMRICOS
Sistemas numricos soportados:
Decimal (enteros y fraccionarios), binario, hexadecimal, BCD
Tipos de datos:
Entero (en cualquiera de los sistemas numricos anteriores)
Real (coma flotante)

Ver ayuda
Admin. Simatic
Tipos de datos simples

Carcter

Tiempo: cantidad de tiempo, hora, S5T, fecha


Puntero

PLCs
Curso 2009/10

Pgina 7

Tipos de Datos Elementales en STEP 7


Palabra Clave

Long. (en bits)

Ejemplo de una constante de este tipo

BOOL
BYTE
WORD
DWORD
CHAR

1
8
16
32
8

10
B#16#A9
o B169
W#16#12AE
o W4782
DW#16#ADAC o DW44460
'w'

S5TIME

16

S5T#5s_200ms

INT
DINT
REAL

16
32
32

123
65539
1.2
o

TIME
DATE
TIME_OF_DAY

32
16
32

T#2D_1H_3M_45S_12MS
D#1993-01-20
TOD#12:23:45.12

34.5E-12

PLCs
Curso 2009/10

Pgina 8

Nmeros en COMA FLOTANTE


Estndar IEEE754:

(1/2)

Expresa nmeros reales en 32 bits

N decimal = (-1)signo 2exponente-127 (1+Mantisa2-23)


31 30

...

...

23 22 21

- Signo (S)

1: negativo , 0: positivo (bit 31)

- Mantisa (M)

La mantisa incluye 23 bits (bit 0.. 22).

- Exponente (E) El exponente incluye 8 bits (bit 23..30).


PLCs
Curso 2009/10

Pgina 9

Nmeros en COMA FLOTANTE

Estndar IEEE754:

(2/2)

Expresa nmeros reales en 32 bits

N decimal = (-1)signo 2exponente-127 (1+Mantisa2-23)

Ejemplo:

1#10000000#11000000000000000000000

Parte ligada al signo:


Parte ligada al exponente:
Parte ligada a la mantisa:
Resultado:

(-1)1
= -1
2128-127=21
1+62914562-23=1+0.75
-1 2 1.75

=2
=1.75
= -3.5

PLCs
Curso 2009/10

Pgina 10

ACUMULADORES (1/2)
Registros auxiliares de 32 bits para intercambio de datos y
operaciones de comparacin y aritmeticas.
ACCU-H (16 bits)

ACCU-L (16 bits)

CPU 314IFM tiene 2 acumuladores.


Carga al ACCU1,
y el antiguo ACCU1 pasa al ACCU2.
Si cargamos o transferimos tamaos de datos menores a la
doble palabra ( bits, bytes (B), word (W) ),
se empieza a leer y escribir por la derecha (byte menos
significativo)
PLCs
Curso 2009/10

Pgina 11

ACUMULADORES (2/2)

Operaciones entre acumuladores:


TAK: intercambia contenido ACCU1 y ACCU2 .
PUSH: copia el contenido de ACCU1 al ACCU2, sin cambiar el 1.
POP: copia el contenido de ACCU2 al ACCU1, sin cambiar el 2.
ENT (slo S7-400): ACCU2 a ACCU3 y ACCU3 a ACCU4.
LEAVE (slo S7-400): ACCU3 a ACCU2 y ACCU4 a ACCU3.

PLCs
Curso 2009/10

Pgina 12

CARGA Y TRANSFERENCIA 1/7


Permiten programar intercambio de informacin
entre mdulos de E/S y reas de memoria.
L

-->

T -->

Instruccin de carga a ACCU-1


Instruccin de transferencia desde ACCU-1

Cargan y transfieren del acumulador ACCU1, independientemente del


valor RLO, y tampoco lo modifican.
A dichas instrucciones les sigue un cdigo en el que se indica el tamao,
formato y el nmero/posicin a cargar o transferir.
PLCs
Curso 2009/10

Pgina 13

CARGA Y TRANSFERENCIA 2/7


Ejemplos:
LC Z0 --> Carga el contenido del contador en el acumulador en BCD.
Si Z0=10

ACU1: 00 00 00 .......... 0001 0000

(BCD)

L Z0 --> Idem pero en Binario


Si Z0=10

ACU1: 00 00 00 .......... 0000 1010 (Binario autntico)

L S5T#5S --> Herencia de versiones previas a S7: mximo nmero 9990sg,

PLCs
Curso 2009/10

Pgina 14

CARGA Y TRANSFERENCIA 3/7


Ejemplos:
L ED124 (Cargar en el acumulador la doble palabra 124 de la PAE)
ACU1: EB124 EB125 EB126 EB127
Obsrvese: el byte ms significativo del acumulador (parte izquierda) queda
relleno con el byte de direccin menor, y el de mayor direccin, a la dcha.
L EW8 (Cargar en el ACU1 la palabra 8 de la PAE)
00

00

EB8

EB9

L EB8 (Cargar en el ACU1 el byte 8 de la PAE)


00

00

00

EB8
PLCs

Curso 2009/10

Pgina 15

CARGA Y TRANSFERENCIA 4/7

Ejemplos (con los Registros de Direcciones, AR1 y AR2):


LAR1

----> Carga el reg.de direccin AR1 con el contenido de ACU1

LAR1 R2 ----> Carga el reg. de direccin AR1 con el contenido de reg AR2
TAR

----> Intercambia los contenidos de registros AR1 y AR2

TAR1 R2 ----> Transfiere el contenido de AR1 a AR2


El listado AWL siguiente:
L ED 124
LAR1
L ED 128
LAR2

Tendr como
resultado:

ED124 ----> AR2


ED128 ----> AR1

TAR
PLCs
Curso 2009/10

Pgina 16

CARGA Y TRANSFERENCIA 5/7


Ejemplos (L y T con diferentes tamaos):
L EB124 (Cargar en el ACU1 el byte 124 de las entradas)
00
00
00
EB124
Si ahora hacemos T MW32
00
00
00

EB124

MB32 MB33

L ED124

EB124

EB125 EB126 EB127

T MB32

MB32
PLCs

Curso 2009/10

Pgina 17

CARGA Y TRANSFERENCIA 6/7


L +5

--> Carga entero de 16 bits

L L#523123

--> Carga un entero de 32 bits

Ver ayuda
Adm. Simatic

L B#16#EF

--> Carga un hexadecimal de 8 bits

Tipos de datos
simples

L 2#0011_0110_1110_0011 --> Carga binario de 16 bits

NOTA:

T MB0
T AD256

--> Transfiere (el ACU1) al byte de marcas 0


--> Transfiere (el ACU1) a la doble palabra de salida 256

PLCs
Curso 2009/10

Pgina 18

CARGA Y TRANSFERENCIA 7/7

PLCs
Curso 2009/10

Pgina 19

EJERCICIO (Entregable 4)

Tenemos una mezcladora que produce 2 tipos de productos,


magdalenas y donuts, para lo cual controla la receta,
modificando las proporciones de harina (A124.0) y leche
(A124.1), y el tiempo que est mezclndolos (A124.2).
La produccin empezar cuando E124.0 se ponga a 1
Si E124.1=1 produce magdalenas, para lo cual A124.0 est
encendido 3 segundos, A124.1 est encendido 1 segundo y
A124.2 durante 2 sg.
Si E124.1=0 produce donuts, para lo cual los tiempos son 4,
3 y 2 segundos respectivamente.
El sistema debe ser robusto de forma que si est en medio
de una receta no debe interrumpirse aunque cualquiera de
los dos botones de entrada se modifique

PLCs
Curso 2009/10

Pgina 20

Mdulos de Datos
y

Tipos de datos
Automatizacin Industrial

ndice
TEMA Mdulos de Datos y Tipos de Datos
1. Tipos de Mdulos de Datos
2. Edicin de Mdulos de Datos
3. Llamada a Mdulos de Datos
4. Acceso a Mdulos de Datos
5. Tipos de Datos
5.1 Tipos de Datos Elementales
5.2 Tipos de Datos Estructurados

Introduccin
DB
OB

DB

FB

Mdulo de
organizacin

FC
DB

DB
FB

FB

OB =
FB =
FC =
SFB =
SFC =
SDB =
DB =

Mdulo de Organizacin
Mdulo de Funcin
Funcin
Mdulo de Funcin de Sistema
Funcin de Sistema
Mdulo de Datos de Sistema
Mdulo de Datos

SFB

SFC

Leyenda:

Mdulo de
datos a
instancia

Tipos de Mdulos de Datos


8 bits
Global
(normalmente usados)

Byte datos 0
El mximo tamao del mdulo
para la CPU 314 es 8 kBytes.
La cantidad de memoria
disponible para los mdulos
de datos depende de la CPU.

Instancia (local)

Byte datos 8191

Edicin de Mdulos de Datos (I)

Edicin de Mdulos de Datos (II)


STEP 7
Direccin
de memoria
Nombre
local

Valor
inicial
Datablock c:\class\machine1\db10

Tipo de datos

Comentario

Llamada a Mdulos de Datos


Del OB 1

Al OB 1

FC 15

FC 16

:OPN DB 12
:
:
:L
DB
:T
DB
:
:
CALL FC 16
:
:
:L
DB
:T
DB
:
:
:BE

:
:
:
:L
DB
:T
DB
:
:
:
:OPN DB 13
:
:L
DB
:T
DB
:
:
:BE

DB 12

DB 13

Acceso a Elementos de Datos


Abrir mdulo de datos
OPN DB 19
OPN valores

Carga y Transferencia en Mdulos de Datos


L DBB 1
L DBW 2
L5
T DBW 4
L 'A'
L DBB28
==I

Cargar el byte de datos 1.


Cargar la palabra de datos 2 (byte 2/3).
Cargar el nmero 5.
Transferir a la palabra 4.
Cargar el carcter ASCII A.
Cargar el byte de datos 28.
Comparar.

U DBX 3.1

Consultar el bit 1 del byte 3.

L DB19.DBW4

Cargar la palabra de datos 4


del DB19 (incluye OPN DB 19).
Acceso simblico a la variable
N1. valores es el nombre simblico
del DB que contiene dicha variable

L valores.N1

Notas de Acceso a Elementos de Datos


Direccionamiento

STEP 7 permite tener dos DBs abiertos simultneamente


Uno se referencia por DB (global) y el otro por DI (instancia)
La forma de abrirlos: OPN DB 5, OPN DI 7
Para cargar o transferir al DB: L DBB 0, T DBB 1
Para cargar o transferir al DI: L DIB 0, T DIB 3
Otra forma de direccionar sin abrir el DB:
L DB5.DBB 0, T DB7.DBB 1
Para direccionamiento de bit, byte, palabra y doble palabra:
A DB5.DBX 0.7, para direccionar un bit
L DB5.DBB 7, para direccionar un byte
L DB5.DBW 7, para direccionar una palabra
L DB5.DBD 7, para direccionar una doble palabra

Tipos de Datos Elementales


Las variables de tipos de datos bsicos tiene una longitud mxima de
doble palabra
Son procesadas con instrucciones de carga y transferencia o con
operaciones lgicas binarias
Los tipos de datos elementales pueden ocupar un bit, un byte, una
palabra o una doble palabra
Declaracin:
Varname : datatype := pre-assignment
Varname es el nombre de la variable
datatype es un tipo de dato elemental
pre-assignment es el valor asignado
Una variable pude ser declarada global en la tabla de simblicos o
locamente en la seccin de declaraciones

Tabla de Tipos de Datos Elementales


Tipo de Datos Tamao Descripcin
(Bit)

BOOL
BYTE
WORD
DWORD
CHAR
STRING
INT
DINT
REAL
TIME
DATE
TOD
S5TIME

1
8
16
32
8

Bit. Rango: true o false


Byte. Rango: 0 a 255
Palabra. Rango: 0 a 65.53532-1
Doble Palabra. Rango: 0 a 2
Carcter. Cada carcter imprimible (Cdigo ASCII
>31)
8 X 254 Cadena de caracteres desde 2 a 254
16
Entero. Rango: -32.768 a 32.767
32
Doble entero. Rango: -231a 231-1
32
Nmero en coma flotante. (IEEE)
32
Tiempo en intervalos de 1 ms (IEC)
16
Fecha en intervalos de 1 da (IEC)
32
Hora y da en intervalos de 1 ms: hora (0 a 23),
minutos (0 a 59), segundos (0 a 59), ms (0 a 999)
16
Valor de tiempo para los temporizadores.
Rango: 0H_0M_0S_0MS a 2H_46M_30_0MS

Bit, Byte, Palabra y Doble Palabra

BIT

Una variable tipo BOOL representa un bit (p.e. entrada I 0.0)


Una variable tipo BYTE es un conjunto de 8 bits (p.e.salidas QB 5)
Una variable tipo WORD es un conjunto de 16 bits (p.e. marcas MW 7)
Una variable tipo DWORD es un conjunto de 32 bits
BYTE Longitud = 8 BITS

Longitud = 1 BIT

7 6 5 4 3 2 1 0

PALABRA Longitud = 16 BITS


7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

DOBLE PALABRA Longitud = 32 BITS


7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

Representacin en BCD
Se pueden introducir datos en BCD con tipo de dato 16# (hexa) y usar slo dgitos
de 0 a 9 (p.e. L W#16#2468)
Para temporizadores est definido el tipo de datos S5TIME# (p.e. L S5TIME#30s.)
Para contadores est definido el tipo de datos C# o 16# (p.e. L C#368)

Nmero BCD, 3 dcadas


Byte m+1

Byte m
8 7

12 11

15

10 2

Signo

4 3

101

100

Nmero BCD, 7 dcadas

Byte m+1

Byte m

15

12 11

Signo

8 7

106

4 3

105

0 15

104

Byte m+3

Byte m+2

103

12 11

102

8 7

4 3

101

Tipo de Dato CHAR


EL tipo de datos CHAR representa un carcter en cdigo ASCII.
Cada variable de tipo CHAR ocupa un byte (p.e. L A)

Dato tipo CHAR


Byte m

7 6 5 4 3 2 1 0

Cdigo ASCII

100

Representacin de Nmeros (I)


INT:
Una variable de tipo de dato INT representa un entero que es
almacenado en 16 bits (una palabra) en coma fija
No tiene un identificador especial
Los bits 0-14 representan el valor de la variable
El bit 15 representa el signo (0 -> positivo ; 1 -> negativo)
Nmeros negativos son almacenados en forma de complemento a dos
El rango posible desde +32.767 (7FFFhex) a -32.768 (8000hex)
15 14

.......0

..... 2 2 21 2 0

S 214.....

Representacin de Nmeros (II)


DINT:
Una variable de tipo de dato DINT representa un entero que es
almacenado en 32 bits (doble palabra) en coma fija
Un entero es almacenado como una variable DINT:
si es mayor de 32.767 o menor de -32.768
si el identificador L # precede al nmero
Los bits 0-30 representan el valor de la variable
El bit 31 representa el signo (0 -> positivo ; 1 -> negativo)
Nmeros negativos son almacenados en forma de complemento a dos
El rango posible desde:
+2,147,483,647 (7FFF FFFFhex) a -2,147,483,648 (8000 0000hex)
31 30
30

S 2 .....

.......16 15.....
16

15

....2 2 ....

.......0

..... 2 21 2 0
2

L -100 // Se carga un nmero INT en ACU1. Palabra izquierda ACU1 (0000hex)


L L#-100 //se carga un nmero DINT en ACU1. Palabra izquierda ACU1 (FFFFhex)

Representacin de Nmeros (III)


REAL:

Una variable de tipo de dato REAL representa una fraccin que es


almacenado en 32 bits (doble palabra) en coma flotante
Un entero es almacenado como una variable REAL:
- si el punto decimal es seguido por un cero (L 100.0 o L 1.0e+2)
La variable real consiste internamente en tres partes:
- el signo (bit 31) ( 0 -> positivo; 1 -> negativo)
- 8 bits para el exponente (en base 2) (bits 23 a 30)
- 23 bits de mantisa (bits 0 a 29)
Nmeros normalizados en coma flotante:
- rango desde -3.402 823 x 10 +38 a -1.175 494 x 10 -38)
- +1.175 494 x 10 -38 a 3.402 823 x 10 +38
Nmeros no normalizados en coma flotante:
- - 1.17 494 x 10 -38 a -1.401 298 x 10 -45
- + 1.401 298 x 10 -45 a +1.175 494 x 10 -38

31 30....
7

S 2 ...

.......0

.23 22.....
0

1 2

..... 2 23

....2 2 2 ....

Exponente

Mantisa

Representacin de Nmeros (IV)


REAL:

Representacin de Tiempos (I)


S5TIME:
Una variable de tipo de dato S5TIME es usada para inicializar
temporizadores en STL, LAD y FBD
Ocupa una palabra de 16 bits con 1 + 3 dcadas
El tiempo se especifica en horas, minutos, segundos y milisegundos
La conversin a la representacin interna la realiza el STEP 7
El nmero es representado internamente en BCD de 000 a 999
El tiempo base puede se: 10 ms (00), 100ms (01), 1s (10) y 10s (11)
El tiempo es el producto del valor por la base
15 14

.......0
0

10

10

Base de tiempo

S5TIME#500ms
S5T#2h46m30s

10

10

Valor de tiempo

(=0050hex)
(=3999hex)

Representacin de Tiempos (II)


DATE:
Una variable de tipo de dato DATE es almacenada en una palabra
como un nmero sin signo en coma fija
El contenido de la variable corresponde al nmero de das desde
el 01.01.1990.
La representacin contiene el ao, el mes y el ao, cada uno
separado por (-)
15 14

.......0

14

..... 2 21 20

15

2 2 .....
Ejemplos:
DATE#1990-01-01
D#2168-12-31

(=0000hex)
(=FF62hex)

Representacin de Tiempos (III)


TIME:
Una variable de tipo de dato TIME ocupa una doble palabra
La representacin contiene especificacin de da (d), hora (h),
minutos (m), segundos (s) y milisegundos (ms)
El contenido de la variable es interpretado como milisegundos (ms)
y almacenados como un nmero de 32 bits en coma fija con signo
31 30

.......16 15.....

30

16

.......0

15

....2 2 ....

..... 2 2 21 20

TIME#24d20h31m23s647ms
TIME#0ms

(=7FFF_FFFFhex)
(=0000_0000hex)

S 2 .....
Ejemplos:

Representacin de Tiempos (IV)


TIME_OF_DAY:
Una variable de tipo de dato TIME_OF_DAY ocupa una doble palabra
Contiene el nmero de milisegundos desde el comienzo del da (0:00)
como un nmero si signo en coma fija
La representacin contiene la especificacin de horas, minutos,
segundos y milisegundos.
31 30
31

30

.......16 15.....

2 2 .....

16

15

....2 2 ....

.......0

..... 2 21 20
2

Ejemplos:
TIME_OF_DAY#00:00:00
TOD#23:59:59.999

(=0000_0000hex)
(=0526_5BFFhex)

Representacin de Tiempos (V)


DATE_AND_TIME:
El tipo de dato DATE_AND_TIME representa un tiempo consistente
en fecha y momento del da
Se puede utilizar la abreviacin DT en lugar de DATE_AND_TIME
como un nmero si signo en coma fija
La representacin interna es de 64 bits
Se indica como Ao-Mes-Da -h:min:s.ms

Ejemplo: DT#1995-02-02-08:30:01.999

Tipos de Datos Estructurados y Arrays


Estructura

Array

COMPONENTES
GEOMTRICOS

TIPO

GEO_COMPONENTES
STRUCT
CIRCULO:
TRIANGULO:

CUADRADO:
RECTANGULO:
END_STRUCT
END_TYPE

ENTERO
PALABRA
REAL
ENTERO

FUNCTION_BLOCK: EJEMPLO
VAR
GEOMETRY:
ARRAY [1...3 ] of GEO_COMPONENTS
END_VAR

Strings

Antes de utilizar los datos locales dinmicos del tipo STRING, el usuario los debe inicializar p.ej. mediante una
secuencia AWL tal como:
LAR1 P#lokal_string_var // lokal_string_var est declarada en VAR_TEMP como STRING[200]
L 200 // longitud de STRING indicada arriba
T LB [AR1, P#0.0] // introducido en el MAX Len Byte de la cadena
L 5 // longitud real de la cadena
T LB [AR1, P#1.0] // introducir longitud real de la cadena

UDT: Tipos de Datos de Usuario


UDT
Son estructuras de datos creadas por el usuario y que, una vez definidas, pueden utilizarse en
todo el programa.
Los tipos de datos de usuario (UDTs) se crean en el Administrador SIMATIC o con el editor
incremental.

Estructura de un UDT
Despus de abrir un UDT se visualiza en una nueva ventana de trabajo la tabla de este tipo de datos
de usuario en modo "Declaracin".
La primera y la ltima lnea contienen ya las declaraciones STRUCT y END_STRUCT,
respectivamente, que indican el comienzo y el fin del tipo de datos de usuario.
Puede editar el tipo de datos de usuario comenzando a partir de la segunda lnea de la tabla
de declaracin en las columnas correspondientes.
Los tipos de datos de usuario pueden estar formados por:
tipos de datos simples,
tipos de datos compuestos o
tipos de datos de usuario ya existentes

UDT: Ejemplo en AWL


TYPE UDT 20
STRUCT
arranque : BOOL; //variable del tipo BOOL
terico : INT;
//variable del tipo INT
alor : WORD;
//variable del tipo WORD
END_STRUCT;
END_TYPE

Step 7 Elementary Data Types


Type and Siz Format
Descripti e
Options
on
in
Bit
s

Range and Number


Notation
(lowest to highest values)

Example in STL

BOOL
(Bit)

1 Boolean
text

TRUE/FALSE

TRUE

BYTE
(Byte)

8 Hexadeci
mal
number

B#16#0 to B#16#FF

L B#16#10
L byte#16#10

2#0 to
2#1111_1111_1111_1111

L
2#0001_0000_0000_0000

Hexadeci
mal
number

W#16#0 to W#16#FFFF

L W#16#1000
L word#16#1000

BCD

C#0 to C#999

L C#998

Decimal
number
unsigned

B#(0,0) to B#(255,255)

L B#(10,20)
L byte#(10,20)

WORD
(Word)

DWORD
(Double
word)

16 Binary
number

32 Binary
number

2#0 to
L
2#1111_1111_1111_1111_ 2#1000_0001_0001_1000
1111_1111_1111_1111
_
1011_1011_0111_1111

Hexadeci
mal
number

W#16#0000_0000 to
W#16#FFFF_FFFF

L DW#16#00A2_1234
L dword#16#00A2_1234

Decimal
number
unsigned

B#(0,0,0,0) to
B#(255,255,255,255)

L B#(1, 14, 100, 120)


L byte#(1,14,100,120)

INT
(Integer)

16 Decimal
number
signed

-32768 to 32767

L 101

DINT
(Double
integer)

32 Decimal
number
signed

L#-2147483648 to
L#2147483647

L L#101

REAL
(Floatingpoint
number)

32 IEEE
Floatingpoint
number

Upper limit +/L 1.234567e+13


3.402823e+38
Lower limit +/-1.175495e38

S5TIME
(SIMATI
C time)

16 S7 time in
steps of
10ms
(default)

S5T#0H_0M_0S_10MS to
S5T#2H_46M_30S_0MS
and
S5T#0H_0M_0S_0MS

L S5T#0H_1M_0S_0MS
L
S5TIME#0H_1H_1M_0S_
0MS

TIME
(IEC
time)

32 IEC time
in steps of
1 ms,
integer
signed

T#24D_20H_31M_23S_64
8MS
to
T#24D_20H_31M_23S_64
7MS

L T#0D_1H_1M_0S_0MS
L
TIME#0D_1H_1M_0S_0
MS

DATE
(IEC date)

16 IEC date
in steps of
1 day

D#1990-1-1 to
D#2168-12-31

L D#1996-3-15
L DATE#1996-3-15

TIME
_OF_DA
Y (Time)

32 Time in
steps of 1
ms

TOD#0:0:0.0 to
TOD#23:59:59.999

L TOD#1:10:3.3
L
TIME_OF_DAY#1:10:3.3

A', 'B' etc.

L 'E'

CHAR
(Character
)

8 ASCII
characters

S5TIME NOTES

Underscores in time and date are optional


It is not required to specify all time units (for example: T#5h10s is valid)
Maximum time value = 9,990 seconds or 2H_46M_30S

S5TIME Format

Time base Binary Code


10 ms

00

100 ms

01

1s

10

10 s

11

Symbol Table Allowed Addresses and Data Types


English
German
Description
Mnemonics Mnemonics

Data Type

Address
Range

I/O Signals
I

Input bit

BOOL

0 to
65535.7

IB

EB

Input byte

BYTE, CHAR

0 to 65535

IW

EW

Input word

WORD, INT, S5TIME,


DATE

0 to 65534

ID

ED

Input double word

DWORD, DINT, REAL,


TOD, TIME

0 to 65532

Output bit

BOOL

0 to
65535.7

QB

AB

Output byte

BYTE, CHAR

0 to 65535

QW

AW

Output word

WORD, INT, S5TIME,


DATE

0 to 65534

QD

AD

Output double word

DWORD, DINT, REAL,


TOD, TIME

0 to 65532

Marker Memory
M

Memory bit

BOOL

0 to
65535.7

MB

MB

Memory byte

BYTE, CHAR

0 to 65535

MW

MW

Memory word

WORD, INT, S5TIME,


DATE

0 to 65534

MD

MD

Memory double word

DWORD, DINT, REAL,


TOD, TIME

0 to 65532

Peripheral I/O
PIB

PEB

Peripheral input byte

BYTE, CHAR

0 to 65535

PIW

PEW

Peripheral input word

WORD, INT, S5TIME,


DATE

0 to 65534

PID

PED

Peripheral input double


word

DWORD, DINT, REAL,


TOD, TIME

0 to 65532

PQB

PAB

Peripheral output byte

BYTE, CHAR

0 to 65535

PQW

PAW

Peripheral output word

WORD, INT, S5TIME,


DATE

0 to 65534

PQD

PAD

Peripheral output double DWORD, DINT, REAL,


word
TOD, TIME

0 to 65532

Timers and Counters


T

Timer

TIMER

0 to 65535

Counter

COUNTER

0 to 65535

FB

FB

Function block

FB

0 to 65535

OB

OB

Organization block

OB

1 to 65535

FC

FC

Function

FC

0 to 65535

SFB

SFB

System function block

SFB

0 to 65535

SFC

SFC

System function

SFC

0 to 65535

DB

Data block

DB, FB, SFB, UDT

1 to 65535

Logic Blocks

Data Blocks
DB

User-defined data types

UDT

UDT

User-defined data type

UDT

0 to 65535

Tema 2: Programacin de PLCs


1. STEP 7
2. PROGRAMACIN BSICA AWL
Introduccin
Operaciones lgicas a nivel de bit
Marcas
Simblicos
Flancos
Temporizadores
Diagnosis e informacin del sistema
Contadores
Carga y Transferencia
Operaciones con acumuladores
Saltos
3. PROGRAMACIN ESTRUCTURADA

PLCs
Curso 2009/10

Pgina 1

Introduccin
OBs, FBs, FCs
Tabla de declaracin de variables
Variables locales y atributos del sistema

rea de instrucciones
Formado por uno o varios segmentos
Lenguajes posibles:
AWL(ingls, aleman),
KOP,
FUP

Propiedades de bloques
Autor del bloque
Fecha y hora de creacin..........

PLCs
Curso 2009/10

Pgina 2

Introduccin
Toda instruccin se compone de:
marca de salto (opc.), operacin, operando y comentario (opc.).
Ejemplo:

M001: U E1.0 //Comentario

Cada instruccin ocupa una lnea propia.


Por cada segmento se pueden introducir unas 2000 lneas.
Al introducir operaciones o direcciones absolutas no se distingue
entre maysculas y minsculas.
PLCs
Curso 2009/10

Pgina 3

Operaciones lgicas a nivel de bit


Qu son ?
Parte del conjunto de instrucciones que permiten desarrollar
operaciones con operandos binarios de un bit.
Cules son ?
U, UN combinacin serie (AND)
O, ON combinacin paralelo (OR)
U(O

Posibles anidamientos

O(U

Posibles anidamientos

or exclusiva

asignacin
PLCs

Curso 2009/10

Pgina 4

Operaciones lgicas a nivel de bit


La CPU chequea el estado de las seales de los sensores
(operandos)

La primera vez, en cada operacin lgica:


Se guarda el estado de la entrada (primer operando) en el RLO
Result of Logic Operation, bit del registro de estado CPU
No se ejecuta operacin lgica
Siguientes veces, dentro de operacin lgica:
Se ejecuta operacin lgica entre valor de RLO
y valor de estado de entrada (nuevo operando).
El resultado de operacin lgica se guarda en el RLO

PLCs
Curso 2009/10

Pgina 5

Operaciones lgicas a nivel de bit

PLCs
Curso 2009/10

Pgina 6

Operaciones lgicas a nivel de bit


El elemento fundamental es el RLO (Resultado de operacin lgica).
El RLO es un bit de la palabra de estado.

Refleja el resultado de la ltima operacin lgica realizada:


Cuando una operacin si se ejecuta/cumple: RLO=1
Cuando una operacin no se ejecuta/cumple: RLO=0

Es entrada y salida en las operaciones combinacionales.

PLCs
Curso 2009/10

Pgina 7

Operaciones lgicas a nivel de bit

Realiza la operacin
AND de dos bits.

Diagrama de
contactos

E 124.2

En diagrama de
contactos equivale a
una conexin serie

U E124.2
AWL

E 125.0

A 125.0

KOP

U E125.0
=A 125.0
PLCs

Curso 2009/10

Pgina 8

Operaciones lgicas a nivel de bit

Realiza la
operacin OR de
dos bits.

O E124.2
AWL

E 124.2

E 125.0

En diagrama de
contactos equivale
a una conexin
paralelo.

O E125.0
=A 125.0
KOP

A 125.0

PLCs
Curso 2009/10

Pgina 9

Operaciones lgicas a nivel de bit

AWL

AWL
KOP

KOP
E 124.1

A 124.0

U E124.1

E 124.0

UN E124.0

E 124.0

=A 124.0

E 124.1

A 124.0

O E124.1
ON E124.0
=A 124.0

PLCs
Curso 2009/10

Pgina 10

Operaciones lgicas a nivel de bit


FUP

KOP

AWL

PLCs
Curso 2009/10

Pgina 11

Operaciones lgicas a nivel de bit

PLCs
Curso 2009/10

Pgina 12

Operaciones lgicas a nivel de bit

U E 124.0
UN E 124.1
= A 124.0
U E 125.0

Primera consulta

Primera consulta

PLCs
Curso 2009/10

Pgina 13

OPERACIONES CON SLO RLO


NOT negar RLO

SET

activar RLO (=1)

CLR desactivar RLO (=0)

SAVE
SAVE almacena el RLO (resultado lgico) en el bit RB (bit de resultado binario).
PLCs
Curso 2009/10

Pgina 14

OPERACIONES CON MEMORIA (I/IV)

U E 124.0
S A 125.0

1) Si la entrada 124.0 est activa


se enciende la salida 125.0
2) Si la entrada 124.0 se desactiva
no se desactiva la salida 125.0
PLCs

Curso 2009/10

Pgina 15

OPERACIONES CON MEMORIA (II/IV)

PLCs
Curso 2009/10

Pgina 16

OPERACIONES CON MEMORIA (III/IV)

U E 124.0
S A 124.0
U E 124.1
R A 124.0

Prevalece
el Reset
sobre el Set

U E 124.0
R A 124.0
U E 124.1
S A 124.0

Prevalece
el Set sobre
el Reset

PLCs
Curso 2009/10

Pgina 17

OPERACIONES CON MEMORIA (IV/IV)

Tiempo de ciclo

U E 124.0
S A 124.0
U E 124.1
R A 124.0

PLCs
Curso 2009/10

Pgina 18

MARCAS

PLCs
Curso 2009/10

Pgina 19

EJERCICIO (Entregable 1)

El estado de disponibilidad o no de servicio lo proporciona un selector de dos


posiciones: Conectado-Desconectado.
La electrobomba se pondr en marcha cuando el sensor de mnimo est
encendido y se apagar cuando, o bien se encienda el sensor de mximo, o
bien salte el trmico o bien la desconectemos mediante el selector.
Si la electrobomba est en servicio deber lucir una lmpara indicadora.
Si salta el trmico se encender otra lmpara avisndolo.

PLCs
Curso 2009/10

Pgina 20

Operaciones Binarias y de
Memoria
Automatizacin Industrial

ndice
TEMA Operaciones Binarias y de Memoria
1. Palabra de Estado
2. Instrucciones de Bit
3. Operaciones Lgicas Binarias
4. Consideraciones sobre Sensores
5. Operaciones de Memoria
5.1 Detectores de Flanco
5.2 Operaciones SR/RS
6. Consideraciones sobre Primera Consulta

Palabra de Estado (I)


Contiene bits con informacin de estado
Las operaciones interpretan o activan los bits de estado
La palabra de estado tiene 16 bits

215.....

28 27 26 25 2 4 23 2 2 21 20
BR CC1 CC0 OV OS OR STARLO/FC

Bit
0

Ocupacin
/FC

1
2
3
4

RLO
STA
OR
OS

Significado
Bit de primera consulta
- En el comienzo de un segmento su valor es 0
- Excepto cuando el seg. previo finaliza con SAVE
Bit de resultado lgico. Se almacena resultado lgico
Bit de estado
Bit OR (necesario en operaciones Y antes de O)
Bit de desbordamiento memorizado

Palabra de estado (II)


Bit
5

Ocupacin
OV

6
7

CC0
CC1

BR

9 a 15 No ocupado

Significado
Bit de desbordamiento. Error de desbordamiento en
operaciones en coma flotante
Cdigo de condicin 0
Cdigo de condicin 1
Proporcionan informacin sobre:
- Resultado de una operacin aritmtica
- Resultado de una comparacin
- Resultado de una operacin digital
- Bits desplazados del operando por desplazamiento
o rotacin
Resultado binario. Establece un enlace entre el
procesamiento de palabras y el procesamiento de bits

Instrucciones bit
Las instrucciones bit trabajan con los dos nmeros binarios, 0 y 1.
En el mbito de las operaciones lgicas:
- 1 significa activado
- 0 significa no activado
Las instrucciones bit interpretan estados de seal de 1 y 0 y los combina segn lgica
de Boole
El resultado de estas combinaciones es 1o 0. Se indican como "Resultado de
Operacin Lgica" (RLO).

Operaciones Lgicas Binarias I


#

O I 0.1
O I 0.2
= Q 4.1

&

A I 0.1
A I 0.2
= Q 4.1

NOT

XOR

S
>=1
=

SR_FF
Q
S

RS_FF
Q
R

Operaciones Lgicas Binarias II


Operacin
A
AN
A(
AN(
O
ON
O
O(
ON(
X
XN
X(
XN(
)

Funcin Y
Funcin YN
Y - abrir parntesis
NO-Y abrir parntesis
Funcin O
Funcin ON
Funcin O de funciones Y
O - abrir parntesis
NO-O abrir parntesis
Funcin O-EXCLUSIVA
Funcin NO-O-EXCLUSIVA
O-EXCLUSIVA abrir parntesis
NO-O-EXCLUSIVA abrir parntesis
Cerrar parntesis

=
#
FP
FN
S
R
SAVE

Funcin de asignacin
Conector intermedio
Funcin de flanco positivo
Funcin de flanco negativo
NOT
Funcin negacin
Funcin set de un biestable
Funcin reset de biestable
Salvar RLO en RB

Operaciones lgicas binarias III


Operacin lgica Y

I 0.1

&

Q 4.0

I 0.2

A I 0.1
A I 0.2
= Q 4.0

Operacin lgica O

I 0.3
I 0.4

>=1

Q 4.1
=

O I 0.3
O I 0.4
= Q 4.1

Operacin lgica binarias IV


Operacin lgica O de funciones Y
I 0.0
I 0.1
I 0.2

&
>=1
&

Q 4.0

I 0.3

Operacin lgica Y de funciones O


I 0.0
I 0.1
I 0.2

>=1
&
>=1

Q 4.1

I 0.3

A
A
O
A
A
=
A(
O
O
)
A(
O
O
)
=

I 0.0
I 0.1
I 0.2
I 0.3
Q 4.0

I 0.0
I 0.1
I 0.2
I 0.3
Q 4.1

Operacin Lgica O-exclusiva

I 0.1
I 0.2

XOR

Q 4.0
=

X I 0.1
X I 0.2
= Q 4.0

A I 0.1
AN I 0.2
O
AN I 0.1
A I 0.2
= Q 4.0

Otras Funciones Binarias I


Insertar
entrada
binaria
Invertir una
entrada
binaria
Asignacin

Conector

Otras Funciones Binarias II


Cargar resultado lgico (RLO) en registro BR
I 0.1

&
SAVE

I 0.2

Activar salida
I 0.1

&

Q 4.0
S

I 0.2

Desactivar salida
I 0.1
I 0.2

&

Q 4.0
R

Ejemplo (I)
.

I 0.0 I 0.1 I 0.2

Q 1.0

I 0.0 I 0.3 I 0.5


I 0.1

I 0.3 I 0.4

I 0.4

I 0.5

I 0.2
Q 4.0

I 0.0
I 0.1

&

I 0.2
I 0.3

A
A
A
O
A
A
O
A
=

>=1

&

I 0.4

I 0.5

Q 4.0

I 0.0
I 0.1
I 0.2
I 0.3
I 0.4
I 0.5
Q 4.0

Ejemplo (II)
I 0.0

>=1

I 0.1
I 0.2

&
>=1

I 0.3

>=1
&

I 0.4
I 0.5
I 0.6

>=1
=

Q 4.0

A(
A(
O
O
)
A(
O
O
)
O
)
A(
O
O
)
=

I 0.0
I 0.1
I 0.2
I 0.3
I 0.4
I 0.5
I 0.6
Q 4.0

Consideraciones sobre Sensores


ENUNCIADO: Accionar la salida cuando est activado S1 y no est activado S2
S1

S2

I 0.0

I 0.1

&
Q 4.0

S1

S2

I 0.0

I 0.1

&
Q 4.0

A
I 0.0
AN I 0.1
=
Q 4.0

A
A
=

I 0.0
I 0.1
Q 4.0

S1

S2

I 0.0

I 0.1

&
Q 4.0

S2

S1

AN I 0.0
AN I 0.1
=
Q 4.0

AN I 0.0
A
I 0.1
=
Q 4.0

I 0.0

I 0.1

&
Q 4.0

Ejemplo (III)
I 0.0 I 0.1 I 0.2

Q 4.1

I 0.0 I 0.3 I 0.5


I 0.3 I 0.4

I 0.1 I 0.4
I 0.2

I 0.5

Q 4.1

I 0.0

>=1

I 0.3
I 0.5
I 0.1

&
>=1

I 0.4
I 0.2

Q 4.1

A(
O
O
O
)
A(
O
O
)
A
=

I 0.0
I 0.3
I 0.5
I 0.1
I 0.4
I 0.2
Q 4.1

Ejemplo (IV)
I 0.0
I 0.1

>=1

I 0.2

>=1

&

I 0.3
I 0.4

XOR

I 0.5
I 0.6
I 0.7

X(
A(
O I 0.0
O I 0.1
)
A(
O
I 0.2
O
I 0.3
)
A
I 0.4
)
X(
A
I 0.5
A(
O
I 0.6
O
I 0.7
)
)
= Q 4.0

&

Q 4.0

>=1

Ejemplo (V)
I 0.0
I 0.1

&

M 0.0
&

I 0.2
I 0.3

XOR

I 0.4

M 1.1
#

M 2.2
I 0.5

>=1

DB5.DBX 3.2
Q 4.0
#

A
I 0.0
A
I 0.1
A
I 0.2
NOT
=
M 0.0
A M 0.0
A(
A(
X
I 0.3
X
I 0.4
)
NOT
=
M 1.1
A M 1.1
O(
A
I 0.5
=
M 2.2
A M 2.2
)
)
NOT
= DB5.DBX 3.2
A DB5.DBX 3.2
= Q 4.0

Ejemplo (VI-a)
Circuitos de Mando

Circuito de Potencia

1-50 Hz 220v

L1
L2
L3

L1
F1F
F3F

F2F

SOQ
K1M

K1M

S1B

K1M

K1M

H1

K1M

2
1

4
3

6
5

F3F

H2

Smbolo
F3F
SOQ
S1B
K1M
H1
H2

Operando Comentario
I 0.0
Sobreintensidad (NC)
I 0.1
Paro (NC)
I 0.2
Marcha (NA)
Q 4.0
Rel
Q 4.1
Lmpara sealizacin desconectado
Q 4.2
Lmpara sealizacin conectado

4
6
2
U1 V1 W1
M
3%P

Ejemplo (VI-b)
I 0.0
I 0.1
I 0.2

&

Q 4.0

>=1

Q 4.0

Q 4.0

Q 4.0

&

&

A
A
A(
O
O
)
=

I 0.0
I 0.1
I 0.2
Q 4.0
Q 4.0

Q 4.1
=

Q 4.2
=

AN Q 4.0
=
Q 4.1
A
=

Q 4.0
Q 4.2

Operaciones de Memoria
Prioridad a la Conexin

Prioridad a la Desconexin
Q 4.0

I 0.1

I 0.1

Marcha

Q 4.0

Marcha

I 0.0

Paro

I 0.0

Paro
Q 4.0

A(
O
O
)
A
=

Q 4.0

A I 0.1
O
A Q 4.0
A I 0.0
= Q 4.0

I 0.1
Q 4.0
I 0.0
Q 4.0

Detector de Flanco Positivo RLO (0 --> 1)

RLO
1

Flanco Positivo

Flanco Negativo

Tiempo

Diagrama del estado de la seal


Lista de Instrucciones
A I 1.0
FP M 1.0
= Q 4.0
Funciones lgicas
M 1.0
I 1.0
P
Q 4.0

I 1.0

M 1.0
Q 4.0

Detector de Flanco Negativo RLO (1 --> 0)

Flanco Positivo

RLO
1

Flanco Negativo

Tiempo

Diagrama del estado de la seal


Lista de Instrucciones
A I 1.0
FN M 1.0
= Q 4.0

I 1.0

M 1.0

Funciones lgicas
M 1.0
I 1.0
N
Q 4.0

Q 4.0

Detector de Flanco de Seal (0 --> 1)


Compara el estado de la seal del <Operando1>con el estado de seal de la consulta
precedente, que se ha almacenado en en M_BIT. Si se produce un cambio de 0 a 1,
la salida Q ser 1.

I 0.3
POS

M 0.0

M_BIT Q

I 0.4

&

Q 4.0
=

A(
A I 0.3
BLD 100
FP M 0.0
)
A I 0.4
= Q 4.0

Detector Flanco de Seal (1 --> 0)


Compara el estado de la seal del <Operando1>con el estado de seal de la consulta
precedente, que se ha almacenado en en M_BIT. Si se produce un cambio de 1 a 0,
la salida Q ser 1.

I 0.3

A(
A I 0.3
BLD 100
FN M 0.0
)
A I 0.4
= Q 4.0

NEG

M 0.0

Q 4.0

&

M_BIT Q

I 0.4

Flip-Flop SR
Biestable preponderante al reset (R)
Esta operacin es afectada por el Master Control Relay (MCR)

I 0.1

M 1.0
&

I 0.2
I 0.3
I 0.4

SR
Q 4.1

&
R

A
A
S
A
A
R
A
=

I 0.1
I 0.2
M 1.0
I 0.3
I 0.4
M 1.0
M 1.0
Q 4.1

Flip-Flop RS
Biestable preponderante al set (S)
Esta operacin es afectada por el Master Control Relay (MCR)

I 0.1

&

I 0.2
I 0.3
I 0.4

A
A
R
A
A
S
A
=

M 0.0
R RS
Q 4.0

&
S

I 0.1
I 0.2
M 0.0
I 0.3
I 0.4
M 0.0
M 0.0
Q 4.0

Divisor Binario
I 0.7
M 1.0

Segmento 1
&
I 0.7

Q 5.0

Q 5.0

M 1.0

A I
AN M
S Q
A I
A M
R Q

0.7
1.0
5.0
0.7
1.0
5.0

I 0.7

&
R Q

M 1.0
Segmento 2
&
I 0.7
Q 5.0

AN I 0.7
A Q 5.0
S M 1.0
AN I 0.7
AN Q 5.0
R M 1.0

I 0.7
Q 5.0

M 1.0
S

&
R Q

Bscula JK
I 0.7
M 2.1
I 0.7

I 0.0

I 0.1

M2.0

Segmento 2

&

&

M 10.0

M 2.0
I 0.0
M 10.1

&

M 2.0
I 0.1
M 10.1

&

&

R Q

Segmento 3
M 2.0

&

&

M 10.0

M 10.1

M 2.0

M 10.0
S

M 10.1
S

&
R Q

M 10.0

Segmento 4

/Q

M 10.1

Q Q 5.0

&

Q 5.0

Electrobomba
Con.

Desc.
Nivel Mximo

Selector

Luz de
Funcionamiento

Luz disparo
rel trmico

Nivel Mnimo

Bomba

Asignacin de Entradas
I 0.0 Selector
I 0.1 Rel trmico
I 0.2 Boya nivel mximo
I 0.3 Boya nivel mnimo
Asignacin de Salidas
Q 5.0 Electrobomba
Q 5.1 Sealizacin de
estado operativo
Q 5.2 Seal. rel trmico
Asignacin de Marcas
M 1.0 Marca auxiliar
electrobomba

A I
AN I
AN I
S M
ON I
ON I
O I
R M

0.0
0.2
0.3
1.0
0.1
0.0
0.2
1.0

A M 1.0
= Q 5.0
A I 0.0
= Q 5.1
AN I 0.1
= Q 5.2

Consideraciones sobre Primera Consulta


RLO
A I 1.0
ANI 1.1
A M 4.0
= Q8.0
A I 2.0

....
....
....
....

estado de seal
....
....
....
....
Primera consulta

Tema 4
Instrucciones Bsicas:
Operaciones lgicas con bits

Div.. Ingeniera
Div
Ingeniera de
Sistemas y Automtica
Automtica

Instrucciones Bsicas:Operaciones lgicas con bits

Bibliografa
l

Ttulo: Step7 Avanzado


l
l

l
l
l
l

Autor: Jos Martnez Torres


Descargar de la pgina web

Manual Siemens Step7-AWL para S7-300 y S7-400


Manual Siemens Step7-KOP para S7-300 y S7-400
Manual Siemens Step7-FUP para S7-300 y S7-400
Ttulo: Automating with Step7 in STL and SCL
l
l

Autor: Hans Berger


ISBN: 3-89578-140-1

Instrucciones Bsicas:Operaciones lgicas con bits

ndice
l

Operaciones lgicas con bits


l
l
l
l
l
l

Operaciones bsicas
Instrucciones de terminacin de cadenas lgicas
Combinacin de operaciones bsicas
Funcin memoria
Instrucciones que afectan al RLO
Operaciones que detectan cambios en el
resultado lgico
Instrucciones Bsicas:Operaciones lgicas con bits

ndice
l

Operaciones lgicas con bits


l
l
l
l
l
l

Operaciones bsicas
Instrucciones de terminacin de cadenas lgicas
Combinacin de operaciones bsicas
Funcin memoria
Instrucciones que afectan al RLO
Operaciones que detectan cambios en el
resultado lgico
Instrucciones Bsicas:Operaciones lgicas con bits

Operaciones lgicas con bits


l

Las operaciones lgicas con bits operan con dos


dgitos, 1 y 0.

Estos dos dgitos constituyen la base de un sistema numrico


denominado sistema binario. Los dos dgitos 1 y 0 se
denominan dgitos binarios o bits.
En el mbito de los contactos y bobinas, un 1 significa activado
(conductor) y un 0 significa desactivado (no conductor).

Las operaciones lgicas con bits interpretan los


estados de seal 1 y 0, y los combinan de acuerdo
con la lgica del lgebra de Boole.
l

Estas combinaciones producen un 1 un 0 como resultado


y se denominan resultado lgico (RLO). Las operaciones
lgicas con bits permiten ejecutar las ms diversas
funciones.

Instrucciones Bsicas:Operaciones lgicas con bits

Operaciones lgicas con bits


1.- Las operaciones bsicas para
las operaciones lgicas con bits
son:
U
Y
UN
Y-No
O
O
ON
O-No
X
O-exclusiva
XN
O-exclusiva-No

3.- Las siguientes operaciones permiten ejecutar una


cadena lgica encerrada entre parntesis:
U(
Y con abrir parntesis
UN(
Y-No con abrir parntesis
O(
O con abrir parntesis
ON(
O-No con abrir parntesis
X(
O-exclusiva con abrir parntesis
XN(
O-exclusiva-NO con abrir parntesis
)
Cerrar parntesis

2.- Para terminar una cadena


lgica se puede utilizar una de
las tres operaciones:
=
Asignar
R
Desactivar
S
Activar

4.- Las operaciones siguientes permiten modificar el


resultado lgico (RLO):
NOT
Negar el RLO
SET
Activar el RLO (=1)
CLR
Desactivar RLO (=0)
SAVE
Memorizar el RLO en el registro RB

5.- Otras operaciones detectan cambios en el resultado lgico y reaccionan


correspondientemente:
FN
Flanco negativo
FP
Flanco positivo
Instrucciones Bsicas:Operaciones lgicas con bits

ndice
l

Operaciones lgicas con bits


l
l
l
l
l
l

Operaciones bsicas
Instrucciones de terminacin de cadenas lgicas
Combinacin de operaciones bsicas
Funcin memoria
Instrucciones que afectan al RLO
Operaciones que detectan cambios en el
resultado lgico
Instrucciones Bsicas:Operaciones lgicas con bits

Operaciones bsicas

Instrucciones Bsicas:Operaciones lgicas con bits

Operaciones bsicas

Instrucciones Bsicas:Operaciones lgicas con bits

Operaciones bsicas
l

Serie

SOLUCIN EN AWL
U E
0.0
U E
0.1
=
A
4.0
l

Paralelo

SOLUCIN EN AWL
U E
0.0
O E
0.1
=
A
4.0

(tambin O

E 0.0)

Instrucciones Bsicas:Operaciones lgicas con bits

10

Operaciones bsicas
l

Contactos negados

SOLUCIN EN AWL
UN E
0.0
U
E
0.1
=
A
4.0

Instrucciones Bsicas:Operaciones lgicas con bits

11

ndice
l

Operaciones lgicas con bits


l
l
l
l
l
l

Operaciones bsicas
Instrucciones de terminacin de cadenas
lgicas
Combinacin de operaciones bsicas
Funcin memoria
Instrucciones que afectan al RLO
Operaciones que detectan cambios en el
resultado lgico
Instrucciones Bsicas:Operaciones lgicas con bits

12

Instrucciones de terminacin de
cadenas lgicas

Instrucciones Bsicas:Operaciones lgicas con bits

13

Instrucciones de terminacin de
cadenas lgicas

Instrucciones Bsicas:Operaciones lgicas con bits

14

Instrucciones de terminacin de
cadenas lgicas
l
l

Las instrucciones SET y RESET son instrucciones de memoria.


Si programamos un SET de una salida o de una marca con unas
condiciones, se activar cuando se cumplan dichas condiciones.
Aunque las condiciones dejen de cumplirse, no se desactivar
hasta que se haga un RESET de la salida o marca.
Estas instrucciones tienen prioridad. Dependen del orden en que
las programemos. Siempre va a tener prioridad la ltima que
programemos.
En nuestro caso, si hacemos un SET y un RESET dentro del
mismo ciclo de scan, al final de cada ciclo har efecto lo ltimo
que hayamos programado.

15

Instrucciones Bsicas:Operaciones lgicas con bits

Instrucciones de terminacin de
cadenas lgicas
l

RLO
l
Las instrucciones vistas hasta ahora son consultas y asignaciones. Esto significa:
el procesador examina el estado de las seales de entrada, salida y marcas y le
asigna a un estado de seal a las salidas y a las marcas.
l
Dos o ms primeras consultas generan una operacin lgica. El resultado de
estas consultas es el resultado de la operacin lgica (RLO). El resultado de la
operacin lgica proveniente de una operacin lgica AND o una OR puede ser
asignado a una salida o a una marca.

Primera Consulta
l
La instruccin que hace la primera consulta despus de una asignacin se
denomina de primera consulta. Esto significa que se genera un resultado de la
operacin lgica completamente nuevo, independiente del resultado previo de la
operacin lgica. Carece de importancia si la instruccin de primera consulta es
una AND o una OR.
RLO estado de se al
U E 1.0
UN E 1.1
U M 4.0
= A 8.0
U E 2.0

....
....

....
....

....
....

....
....

Instrucciones Bsicas:Operaciones lgicas con bits

Primera consulta

16

Instrucciones de terminacin de
cadenas lgicas

Instrucciones Bsicas:Operaciones lgicas con bits

17

ndice
l

Operaciones lgicas con bits


l
l
l
l
l
l

Operaciones bsicas
Instrucciones de terminacin de cadenas lgicas
Combinacin de operaciones bsicas
Funcin memoria
Instrucciones que afectan al RLO
Operaciones que detectan cambios en el
resultado lgico
Instrucciones Bsicas:Operaciones lgicas con bits

18

Combinacin de operaciones
bsicas

Instrucciones Bsicas:Operaciones lgicas con bits

19

Combinacin de operaciones
bsicas

Instrucciones Bsicas:Operaciones lgicas con bits

20

10

Combinacin de operaciones
bsicas
l

Utilizacin de parentesis

SOLUCIN EN AWL
U E 0.0
O(
U E 0.1
U E 0.2
)
O
U E 0.3
U E 0.4
= A 4.0
Instrucciones Bsicas:Operaciones lgicas con bits

21

Ejercicio 1
Control automtico taladradora vertical
Proyectar un circuito para el control automtico de una
taladradora vertical. Dicha mquina deber realizar la
siguiente funcin:

FCs

Ps

1.- Mediante el pulsador B iniciamos el descenso de la


herramienta, la cual, al llegar a un minirruptor fin de carrera FCb, debe interrumpir el descenso e iniciar la subida.
2.- Al llegar, en la subida, a un minirruptor fin de carrera
FBs, la herramienta debe detenerse.

Rs

3.- El circuito deber llevar un pulsador de emergencia


Ps, mediante al cual pueda interrumpirse el descenso de
la herramienta, para que automticamente se inicie la subida.

Rb

4.- Cuando la herramienta est subiendo de ninguna


manera deber poder iniciarse la bajada, aunque se
pulse B.

b
FCb

Definido el diagrama de circuito, traducir a lenguaje STEP


7 la lgica cableada .

Instrucciones Bsicas:Operaciones lgicas con bits

22

11

Ejercicio 1: Resolucin
Asignacin de variables
Pulsador B
E0.0
Pulsador de emergencia Ps
E0.1
Final de carrera bajada FCb
E0.2
Final de carrera subida FCs
E0.3
Actuador bajada Rb
A4.0
Actuador subida Rs
A4.1

Instrucciones Bsicas:Operaciones lgicas con bits

23

Ejercicio 2
Arranque directo de un motor trifsico con
rotor en cortocircuito
1.- Elementos del esquema:
Q1
Seccionador con fusibles incorporados
KM1
Contactor de potencia
F1
Rel trmico de proteccin
M
Motor trifsico
LM
Lmpara que seala motor en marcha
LF1
Lmpara que seala disparo de F1
LBT
Lmpara que seala tensi n en el circuito
2.- Funcionamiento
Para poner en marcha, pulsar en S1.
Para parar, pulsar en S2
El motor tambi n se desconectar por disparo de F1
Lmparas de sealizaci n de circuido bajo tensin (LBT), motor en servicio
(LM) y disparo de rel trmico (LF1)

Instrucciones Bsicas:Operaciones lgicas con bits

24

12

Ejercicio 2: Resolucin
Asignacin de variables
Pulsador S1
E0.0
Pulsador S2
E0.1
Rel trmico F1(n.c)
E0.2
Lmpara LBT
A4.0
Lmpara LM
A4.1
Lmpara LF1
A4.2

Instrucciones Bsicas:Operaciones lgicas con bits

25

ndice
l

Operaciones lgicas con bits


l
l
l
l
l
l

Operaciones bsicas
Instrucciones de terminacin de cadenas lgicas
Combinacin de operaciones bsicas
Funcin memoria
Instrucciones que afectan al RLO
Operaciones que detectan cambios en el
resultado lgico
Instrucciones Bsicas:Operaciones lgicas con bits

26

13

Funcin memoria
l

MARCAS
l

Las marcas son bits internos de la CPU. Disponemos de


una cantidad limitada de marcas. Esta cantidad depende
de la CPU con la que estemos trabajando.
Estos bits podremos activarlos o desactivarlos como si
fueran salidas. En cualquier punto del programa los
podremos consultar.
A las marcas les llamaremos M. A continuacin tenemos
que decir a que bit en concreto nos estamos refiriendo. Por
ejemplo tenemos las marcas, M 0.0, M 10.7, M 4.5, etc.

27

Instrucciones Bsicas:Operaciones lgicas con bits

Funcin memoria
U(
U
U
U
O
O
)
U(
O
O
U
U
O
U
U(
O
O
)
)
=

E
E
E
E
E

0.2
0.3
0.4
0.1
0.0

1.0

E
E

1.1
1.2

0.5

E
E

0.7
0.6

0.4

M0.2
Ejemplo MARCAS
SOLUCIN EN AWL
U
E
0.0
O
E
0.1
O(
U
E
0.2
U
E
0.3
U
E
0.4
)
=
M
0.0
U
E
0.6
O
E
0.7
=
M
0.1
U
E
1.1
U
E
1.2
O
E
1.0
=
M
0.2
U
E
0.5
U
M
0.1
=
M
0.3
U
M
0.0
U(
U
M
0.3
O
M
0.2
)
=
A
4.0
l

M0.0

Instrucciones Bsicas:Operaciones lgicas con bits

M0.3
M0.4

28

14

Funcin Memoria
l

Si el sensor es un pulsador (momentneamente


conectado), entonces la seal est activada tanto
tiempo como mantengamos accionado el pulsador.
Para poder almacenar el estado de esta operacin,
deberemos emplear la Funcin memoria.
Funci n memoria

S1

K1

S3

S4
K2

S2
K1

prioridad a la
desconexin

K2

prioridad a la
conexin

29

Instrucciones Bsicas:Operaciones lgicas con bits

Flip -flop

Funcin Memoria
l

Funcin memoria en un PLC


l

S2

K1

En un PLC, la funcin memoria se elabora mediante el flip-flop S-R.El flipflop dispone de dos entradas: una para la instruccin de activacin S y otra
para la instruccin de desactivacin R.
Un "1" en la entrada de SET , activa la funcin memoria. La salida Q del
flip-flop alcanza el valor de seal "1".

Reset
l

Set
l

S1

Un "1" en la entrada de RESET , desactiva la funcin memoria. La salida Q


del flip-flop alcanza el valor de seal "0".

Debemos analizar el caso de que en ambas entradas se alcance al


valor 1. Segn el flip-flop que utilicemos (Set/Reset o Reset/Set) la
prioridad ser a la desconexin o a la conexin respectivamente.
El valor de seal 0" en cualquiera de las dos entradas no modifica el
valor del resultado del flip-flop. (prevalece el valor antiguo)

Instrucciones Bsicas:Operaciones lgicas con bits

30

15

Funcin Memoria
Instrucciones de Set y Reset
KOP

AWL

FUP
Set

SET

Set

A9.0

E1.0

RESET

Reset

E1.0
A9.0

U
R

E1.1
A9.0

Reset

A9.0
R

E1.1

U
S

Instrucciones Bsicas:Operaciones lgicas con bits

31

Funcin Memoria
l

Ejemplo

Solucin con Set y Reset


SOLUCIN EN AWL
U
E
0.0
S
A
4.0
U
E
0.1
R
A
4.0

Instrucciones Bsicas:Operaciones lgicas con bits

32

16

Funcin Memoria
Flip-flop "Prioridad al Set"
Set/reset
el flip flop

M0.2
E1.4

RS_FF
R

A9.4

Reset/set
flip flop

E1.5
S

U
R
U
S
U
=

E1.4
M0.2
E1.5
M0.2
M0.2
A9.4

Reset/set
flip flop

33

Instrucciones Bsicas:Operaciones lgicas con bits

Funcin Memoria
Flip-flop "Prioridad al Reset"
Set/reset
el flip flop

M0.0
E1.2

A9.3

SR_FF
S

E1.3
R

Set/reset
flip flop

U
S
U
R
U
=

E1.2
M0.0
E1.3
M0.0
M0.0
A9.3

Set/reset
flip flop

Instrucciones Bsicas:Operaciones lgicas con bits

34

17

E 0.3
E 0.2

Ejemplo
l

Depsito de agua
Tenemos un depsito de agua. Para manejarlo tenemos un selector de
mando. Podemos seleccionar modo manual(E 0.0) o modo automtico
(E 0.1). Si seleccionamos modo manual, lo que queremos es que mientras est
conectada, la bomba est funcionando(A 4.0), y cuando desconectemos
que se pare la bomba. No queremos que se haga caso a las boyas de nivel.
l
Si lo tenemos en modo automtico queremos que el nivel se mantenga
entre las dos boyas. Cuando el agua llegue al nivel de abajo(E 0.2)
queremos que se ponga en marcha la bomba, y cuando el agua llegue al
nivel de arriba(E 0.3) queremos que se pare la bomba.
l
Adems tenemos un rel trmico(E 0.7) que acta tanto cuando tenemos la
bomba en funcionamiento manual como cuando la tenemos en
funcionamiento automtico. Cuando salta el rel, queremos que se pare la
bomba y que nos avise con un indicador luminoso en el cuadro de mando(A
4.7).
l
Adems tenemos una luz de marcha que nos indica cuando est en marcha
la bomba(A 4.1).
l

Instrucciones Bsicas:Operaciones lgicas con bits

35

Ejemplo:solucin
SOLUCIN EN AWL
Segmento 1: MANUAL
U E
0.0
= A
4.0
= A
4.1
Segmento 2: AUTOMTICO
U E
0.1
U E
0.7
U E
0.2
UN E
0.3
S A
4.0
S A
4.1
U E
0.1
U E
0.7
UN E
0.2
U E
0.3
ON E
0.7
R A
4.0
R A
4.1
UN E
0.7
= A
4.7

//Si activamos en modo manual


//Pon en marcha la bomba
//Enciende la luz de marcha
//Si est en automtico
//Y est bien el rel
//Y est activo el nivel de abajo
//Y no est activo el nivel de arriba
//Pon en marcha la bomba
//Y enciende la luz de marcha
//Si est en automtico
//Y est bien el rel
//Y no est activo el nivel de abajo
//Y se ha activado el nivel de arriba
//O ha saltado el rel
//Para la bomba
//Apaga la luz de marcha
//Si ha saltado el rel
//Avsame con la luz de

Instrucciones Bsicas:Operaciones lgicas con bits

36

18

Ejemplo:solucin
l

Si hacemos la prueba de este circuito veremos que


no funciona correctamente. Vemos que en modo
manual s que funciona pero en modo automtico
no para la bomba cuando debera.
Para resolver este circuito correctamente, nos hace
falta utilizar marcas auxiliares. En un mismo bloque
no podemos activar la misma salida dos veces con
condiciones diferentes porque se interfieren entre
ellas.
Memoria imagen de salidas y entradas
Instrucciones Bsicas:Operaciones lgicas con bits

37

Ejemplo:solucin

Instrucciones Bsicas:Operaciones lgicas con bits

38

19

Ejemplo:Manual

Instrucciones Bsicas:Operaciones lgicas con bits

39

Ejemplo:Automtico

Instrucciones Bsicas:Operaciones lgicas con bits

40

20

Ejemplo:Automtico
Funcionamiento Incorrecto

Si se desactiva E0.2 una vez


que empieza a llenar se
para la bomba y la luz
indicadora. Debido al
segmento 1.

Instrucciones Bsicas:Operaciones lgicas con bits

41

Ejemplo:solucin
Correctamente
U M
Segmento 1 : MANUAL
U E
0.0
//Si est en manual
O M
= M
0.0
//Activa la marca 0.0
= A
= M
0.1
//Y activa la marca 0.1
U M
Segmento 2: AUTOMTICO
O M
U E
0.1
//Si est en automtico
= A
U E
0.7
//Y est el rel bien
U E
0.2
//Y est activo el nivel inferior
UN E
0.3
//Y no est activo el nivel superior
S M
0.2
//Activa la marca 0.2
S M
0.3
//Y activa la marca 0.3
U E
0.1
//Si est en automtico
U E
0.7
//Y est el rel bien
UN E
0.2
//Y no est activo el nivel inferior
U E
0.3
//Y se ha activado el nivel superior
ON E
0.7
//O ha saltado el rel
R M
0.2
//Desactiva la marca 0.2
R M
0.3
//Y desactiva la marca 0.3
UN E
0.7
//Si no est el rel
= A
4.7
//Activa la luz de rel.

0.0
0.2

//Si est activa la marca 0.0


//O est activa la marca 0.2

4.0
0.1
0.3

//Pon en marcha la bomba


//Si est activa la marca 0.1
//O la marca 0.3

4.1

//Enciende la luz de marcha

Instrucciones Bsicas:Operaciones lgicas con bits

42

21

Ejemplo: Automtico

Instrucciones Bsicas:Operaciones lgicas con bits

43

Ejemplo: Automtico sin que


se pare la bomba/luz

Instrucciones Bsicas:Operaciones lgicas con bits

44

22

Ejemplo: solucin
l

Ahora ya no funciona el trmico en el modo


manual. Al utilizar marcas diferentes para
cada tipo de funcionamiento, el trmico slo
acta sobre las marcas de modo automtico.
Slo estamos haciendo un reset de una de
las marcas que activan la bomba. Nos falta
resetear la otra marca. Tendremos que
aadir las siguientes lneas.
UN E
R
M
R
M

0.7
0.0
0.1

//Si ha saltado el rel


//Desactiva la marca 0.0
//Y desactiva la marca 0.

Instrucciones Bsicas:Operaciones lgicas con bits

45

Ejemplo: solucin
l
l

Ahora podemos hacer todas las objeciones que queramos y


corregir sobre lo que ya tenemos hecho.
Por ejemplo, en este caso no he tenido en cuenta la situacin de
que despus de haber estado en manual o en automtico,
volvamos a la posicin de reposo. En automtico he hecho sets
a ciertas marcas. Cuando volvamos a la posicin de reposo esas
marcas tendrn que volver a cero. De lo contrario podra darse el
caso de que estando en la posicin de reposo, tengamos la
bomba en marcha. Para remediar esto podra aadir las
siguientes instrucciones:
UN

0.0

UN
R
R

E
A
A

0.1
4.0
4.1

Instrucciones Bsicas:Operaciones lgicas con bits

46

23

ndice
l

Operaciones lgicas con bits


l
l
l
l
l
l

Operaciones bsicas
Instrucciones de terminacin de cadenas lgicas
Combinacin de operaciones bsicas
Funcin memoria
Instrucciones que afectan al RLO
Operaciones que detectan cambios en el
resultado lgico
Instrucciones Bsicas:Operaciones lgicas con bits

47

Instrucciones que afectan al


RLO
l

NOT
l

NOT es la instruccin para invertir el RLO.

CLR/SET

El RLO pasa a 0 con la instruccin borrar CLEAR, y el RLO pasa a1 con la instruccin SET.

SAVE/U RB
l

Con la instruccin SAVE (grabar memoria), el contenido del RLO se almacena en un registro (palabra
de estado). El RLO almacenado puede ser consultado de nuevo con la instruccin U RB.

Instrucciones que Afectan al RLO


KOP

E0.0

FUP

E0.1

U
E0.0
U
E0.1
NOT
=
A8.0

A8.0
NOT

NOT

No se visualiza en KOP

CLR
SET

E1.0

SAVE

(SAVE)
RB

A8.1
( )

AWL

No se visualiza en FUP

CLR
SET

U
E1.6
SAVE
U
RB
=
A8.1

Instrucciones Bsicas:Operaciones lgicas con bits

48

24

ndice
l

Operaciones lgicas con bits


l
l
l
l
l
l

Operaciones bsicas
Instrucciones de terminacin de cadenas lgicas
Combinacin de operaciones bsicas
Funcin memoria
Instrucciones que afectan al RLO
Operaciones que detectan cambios en el
resultado lgico
49

Instrucciones Bsicas:Operaciones lgicas con bits

Flancos
Evaluacin de Flanco
Flanco Positivo

Flanco Negativo

RLO
1
0

Tiempo
Diagrama del estado de la seal

Lista de Instrucciones
U E 1.0
FP M 1.0
= A 4.0

Diagrama KOP
E1.0

M1.0
P

E 1.0
A4.0

M 1.0
A 4.0

Diagrama FUP
Un tiempo de ciclo

Instrucciones Bsicas:Operaciones lgicas con bits

50

25

Flancos
l

l
l

En ocasiones necesitamos que una determinada accin slo se


realice una vez mientras se cumplan las condiciones para la
activacin de la misma.
Una gran cantidad de sets de variables mejoraran si se les aplicase
una seal de flanco positivo a sus condiciones de activacin.
La seal de flanco, tanto positivo como negativo en el Step 7
requiere de una marcha que no puede ser utilizada en otra parte del
programa, por lo que es importante simbolizarla como exclusiva de
ese flanco en cuestin

Instrucciones Bsicas:Operaciones lgicas con bits

51

26

Tema 2: Programacin de PLCs


1. STEP 7
2. PROGRAMACIN BSICA AWL
Introduccin
Operaciones lgicas a nivel de bit
Marcas
Simblicos
Flancos
Temporizadores
Diagnosis e informacin del sistema
Contadores
Carga y Transferencia
Operaciones con acumuladores
Saltos
3. PROGRAMACIN ESTRUCTURADA

PLCs
Curso 2009/10

Pgina 1

Diagnosis e informacin del sistema


Herramientas de diagnosis:
Visualizacin del estado del programa
Permite seguir el procesamiento de un bloque lgico que se est ejecutando en la CPU
En AWL es configurable la informacin de la
tabla de diagnosis (herramientas > preferencias>AWL)

ACCU-1

Adems, se puede forzar variables de tipo BOOL: ?????


1. Seleccione el operando que quiere forzar.
2. Elija el comando de men Test > Forzar a 1 o Test > Forzar a 0.

Test con tabla de variables.


PLCs
Curso 2009/10

Pgina 2

Diagnosis e informacin del sistema


Herramientas de diagnosis:
Visualizacin del estado del programa
Test con tabla de variables.
Se puede OBSERVAR y FORZAR variables
Se puede mostrar las valores de las variables: E, A, M, T, Z, bloques de datos y periferia.
Procedimiento para observar / forzar variables:
1. Crear y Editar una tabla de variables VAT.
2. Establecer enlace on-line: Sistema de destino > Establecer enlace con
3. Dentro de la tabla, configurar condiciones de disparo: Variable > Condiciones de disparo
4. Activar las funciones de test: Variable > Observar y Variable > Forzar
5. Guardar tabla editada: Tabla > Guardar o Tabla > Guardar como

PLCs
Curso 2009/10

Pgina 3

Diagnosis e informacin del sistema


Crear y abrir una VAT:
Desde Admin. Simatic:

Insertar > Bloque S7 > Tabla var.

Tambin, desde Admin. Simatic: Sistema de destino > Observar / forzar.


Tambin, desde ventana Observar/forzar variables:

Tabla > Nueva

PLCs
Curso 2009/10

Pgina 4

Diagnosis e informacin del sistema


Observar y forzar variables
Punto y condicin de disparo

Forzado permanente
El programa de CPU no puede cambiarlo
Admdor. Simatic --> Sistema destino --> Mostrar
valores de forzado permanente --> Variable
forzado permanente para forzarla
anular para eliminarlo.
Se enciende el led FRCE
PLCs
Curso 2009/10

Pgina 5

Diagnosis e informacin del sistema


Admdor. Simatic -->
Icono de HW (doble click)
CPU (doble click)
Propiedades
Ciclo/Marca de ciclo
Tiempo de vigilancia
Marcas de ciclo
Cargar configuracin
hardware,
una vez elegida marca de ciclo

PLCs
Curso 2009/10

Pgina 6

Diagnosis e informacin del sistema


Tiempo de vigilancia de ciclo
Si el tiempo de ciclo (ms) supera el tiempo de vigilancia, la CPU pasar al estado operativo STOP.
Causas de un rebase del tiempo de vigilancia:
procesos de comunicacin

acumulacin de alarmas

errores en el programa de la CPU.

Marcas de ciclo
son marcas que cambian peridicamente su valor binario (relacin impulso - pausa: 1:1).
Active la casilla de verificacin si desea utilizar una marca de ciclo e introduzca el nmero del byte de
marcas.
Nota: El byte de marcas seleccionado no puede ser utilizado para almacenar datos temporalmente.

PLCs
Curso 2009/10

Pgina 7

Diagnosis e informacin del sistema


Cada bit del byte de marcas de ciclo lleva asignada una duracin de perodo/frecuencia:

Bit

T (s):

1,6

0,8

0,5

0,4

0,2

0,1

Frecuencia (Hz):

0,5

0,625 1

1,25

2,5

10

Para verlo
L MB100
T AB100

y se lo transferimos a la CPU.
PLCs

Curso 2009/10

Pgina 8

Diagnosis e informacin del sistema


Sistema Destino --> Informacin del Mdulo.
Hay varias solapas, cada una de las cuales contiene informacin sobre un determinado
aspecto.
Dependiendo de si se hace ONLINE/OFFLINE, las solapas son diferentes:
General: versin de la CPU, etc
Datos caractersticos: dice cuntas marcas tiene, entradas, salidas, contadores,
memoria, etc. y las direcciones que ocupan.
Buffer de diagnstico: listado de eventos. En caso de error, iremos a l, y
veremos el listado.
PLCs
Curso 2009/10

Pgina 9

Diagnosis e informacin del sistema


Sistema Destino --> Informacin del Mdulo.
Ms opciones:
Bloques: cuntos mdulos hay, cules son, qu tamao pueden tener...
Tiempo de ciclo: cunto ha tardado el ltimo ciclo, cual es el tiempo de
vigilancia que tiene, posibilidad de cambiarlo...
Pilas: permite ver los registros, acumuladores, palabra de estado, etc.,
mdulos no completamente procesados, y as averiguar porqu el
autmata pasa a STOP.
PLCs
Curso 2009/10

Pgina 10

Diagnosis e informacin del sistema


Sistema Destino --> Informacin del Mdulo.
Ms opciones:
Sistema de reloj: hora del autmata, horas de funcionamiento, etc.
Tiempo de ciclo: visualiza el tiempo de ciclo mnimo, mximo y
actual. Tambin podremos actualizar los valores.
Memoria: ocupacin de la memoria.

PLCs
Curso 2009/10

Pgina 11

Tema 2: Programacin de PLCs


1. STEP 7
2. PROGRAMACIN BSICA AWL
Introduccin
Operaciones lgicas a nivel de bit
Marcas
Simblicos
Flancos
Temporizadores
Diagnosis e informacin del sistema
Contadores
Carga y Transferencia
Operaciones con acumuladores
Saltos
3. PROGRAMACIN ESTRUCTURADA

PLCs
Curso 2009/10

Pgina 1

Contadores
Hay un rea de la memoria de la CPU reservada para
contadores.
Hay 64 contadores
Cada contador tiene asignada una palabra de 16 bits. El valor
mximo que pueden contar de 999 (BCD).
Se identifican con la letra Z

Instrucciones disponibles:
cargar un valor prefijado,
leer su contenido,
incrementar, decrementar, resetear.

PLCs
Curso 2009/10

Pgina 2

Contadores
Operaciones habituales con contadores:

Carga valor 0
Carga valor de acumulador AC1 en contador direccionado

PLCs
Curso 2009/10

Pgina 3

Contadores
U E124.5
ZR Z5

--> Decrementa Z5 si E124.5 cambia de 0 a 1 (RLO de 0 a 1)

U E124.7
R Z5

--> Pone Z5 a 0 con el cambio positivo de E124.7

L Z5
T MW4

-->Transfiere el contenido de Z5 a la palabra M4 en binario

LC Z5
T MW7

--> Transfiere el contenido de Z5 a la palabra M4 en BCD

U Z5
= A124.3

--> Pone un 1 en A124.3 si Z5 es distinto de 0


PLCs

Curso 2009/10

Pgina 4

EJERCICIO (Entregable 3)

Automatizar un garaje de 5 plazas de tal forma


que si ste se encuentra lleno se encienda una luz
indicndolo y no suba la barrera. En caso contrario
deber estar encendida otra luz indicando LIBRE.
El garaje consta de 5 plazas
Disponemos de botn y una barrera en la
entrada y lo mismo en la salida.

Salida

Entrada

PLCs
Curso 2009/10

Pgina 5

Operaciones de Cmputo
Automatizacin Industrial

ndice
TEMA Operaciones de Cmputo
1. Operaciones de Computo Tipos de Contadores
2. Formato de la Palabra de Cmputo
3. Orden de las Instrucciones de Contadores
4. Carga y Lectura de Contadores
5. Parmetros de Contadores
6. Operaciones de Contaje

Operaciones de Cmputo Contadores


Caractersticas
Los contadores tienen reservada un rea de memoria especfica en la CPU
Para cada contador estn reservados 16 bits
Tiene acceso a la zona de contadores:
slo las operaciones de contaje
Un contador permite:
contar hacia arriba
contar hacia abajo
se le puede fijar un valor de 0 a 999 unidades
se puede hacer poner a 0
Permiten contar impulsos de baja frecuencia (unos pocos Hz)
Para contar impulsos de frecuencias superiores es necesario hardware especfico

Operaciones de Cmputo
Operacin Operando Significado
S
Activar (cargar) un contador
El contador se activa con el flanco creciente del RLO.

Reponer (borrar) un Contador


El contador se pone a 0 siempre que el RLO sea 1.

CU

Incrementar un Contador (contaje hacia adelante)


Con flanco creciente se incrementa en 1 el valor del contador.
Con RLO a 0 no se modifica el valor del contador.

CD

Decrementar un Contador (contaje hacia atrs)


Con flanco creciente se reduce en 1 el valor del contador.
Con RLO a 0 no se modifica el valor del contador.

Identificador
C

Parmetro

AG S7-300
0 ... 255

Tipos de Contadores
Incrementador/Decrementador
STL
FBD/LAD
A I 0.0
CU C 1
C1
A I 0.1
S_CUD
CD C 1
I 0.0
L C#100
CU
S C 1
I 0.1
CD
A I 0.3
R C 1
I 0.2
S
CV
L C 1
C#100
PV CV_BCD
T AW 6
R
Q
I 0.3
LC C 1
T MW 2
A C 1
= Q 4.0

Incrementador
FBD/LAD

AW 6
MW 2
Q 4.0

Decrementador
FBD/LAD

C2

C3

S_CU

S_CD

I 1.0

CU

I 1.2
C#100
I 1.3

CV

PV CV_BCD

AW 8
MW 4
Q 4.1

I 2.0

CD

I 2.2
C#100
I 2.3

CV

PV CV_BCD

AW 10
MW 6
Q 4.3

Formato de la Palabra de Cmputo


15

12 11

0000hex

102

4 3

101

100

Valor del contador especificado en BCD (0 a 999)

Un contador toma como valor de cmputo el contenido del ACU 1


Rango de valores desde 0 a 999 unidades
Slo valores positivos en BCD

Especificacin de un contador en formato de una constante


L C#100;
//Valor del contador 100
L W#16#0100; //Valor del contador 100

Especificacin de un contador en formato de una variable


L C#200;
T MW 56;
.......
L MW 56;

//Valor del contador 20


//Salvar valor del contador
//Cargar el valor del contador

Orden de las Instrucciones


Contar Hacia Adelante
A I 0.0
CU C 1
Contar Hacia Atrs
A I 0.1
CD C 1
Cargar
A I 0.2
L C#5
S C 1

C1

Ejemplo: Valor de Contaje

S_CUD

Duracin:

I 0.0
I 0.1

CU
CD

I 0.2

C#5

PV CV_BCD

DBW 2
QW 6

I 0.3

Q 4.0

Constante Valor
CV

Poner a Cero
A I 0.3
R C 1

C#5

Incrementar
CU - I 0.0
Decrementar
CD - I 0.1

Consultas Digitales
L C 1
T DBW 2
LC C 1
T QW 6

Activar
S I 0.2
Borrar
R I 0.3

Consultas Binarias
A C 1
= Q 4.0

Salida Binaria
Q - Q 1.0
5
Valor de
contador
CV, CV_BCD
0

Carga y Lectura de un Contador


Constante de Cmputo

15

12

11

Operacin
Operando

Valor del contador de 3 dgitos


(codificada en BCD)

L C# 38

Preseleccin de Tiempo
(codificado en BCD)

Valor del contador (0..999)

- Constante C#
- Palabra de Datos
- Palabra de Entradas IW
- Palabra de Marcas MW
- Palabra de Salidas QW
- .......

Lectura de un Contador
Valor actual del contador C2

L C 2

LC C 2
ACU 1

Valor en Binario
Posiciones de bits ocupadas con 0

Valor de tres dgitos en BCD

S_CDU
PV CV
CV_BCD
R

Parmetros del Contador

Parmetros del Contador Incrementador

Parmetros del Contador Decrementador

Operaciones de Contaje Activar un Contador S y Decrementar ZR


Cronograma

Esquema Elctrico

Estados de
seal

I 0.1
C# 7

I 0.0

I 0.1

PV

I 0.0

!=0

CV

C 1
Q 4.5

0
1

Binario
16 bits

Valor del Contador

Q 4.5

0
T iem po
S C 1

S C 1

STL
A I 0.0
CD C 1
NOP 0
A I 0.1
L C#7
S C 1
NOP 0
NOP 0
NOP 0
A C 1
= Q 4.5

FBD

LAD
S_CD

CD

S_C D
I 0.0

CD

I 0.1
C# 7

C 1

I 0.0

Z1

I 0.1

C# 7

CV
Q

CV

PV C V_BC D

Q
Q 4.5

PV PV_BC D

Q 4.5

Operaciones de Contaje Borrar un Contador R e Incrementar ZV


Cronograma

Esquema Elctrico

Estados de
seal
1

I 0.0

I 0.1

I 0.1

0
7

C 1
I 0.0

PV

!=0

CV

Binario
16 bits

Q 4.5

Q 4.5

T iem po
R C 1

STL
A I 0.0
CU C 1
NOP 0
NOP 0
NOP 0
A I 0.1
R C 1
NOP 0
NOP 0
A C 1
= Q 4.5

FBD

LAD

C 1

I 0.0

S_C U

CU
S

CU

CV

I 0.1

I 0.1

CV

PV CV_BCD

PV C V_BC D

C 1

I 0.0

S_C U

Q 4.5

Q
Q 4.5

Operaciones de Carga y
Transferencia
Automatizacin Industrial

ndice
TEMA Operaciones de Carga y Transferencia
1. Operaciones de Carga y Transferencia
2. Efecto sobre los Acumuladores
3. Funciones del Acumulador
4. Funciones de Sistema para la Transferencia de Datos

Operaciones de Carga y Transferencia


Las Operaciones de Carga y Transferencia permiten
intercambiar informaciones entre las diferentes zonas de operandos
preparar temporizaciones y valores de contador para su posterior tratamiento
cargar valores constantes necesarios para la ejecucin del programa
hay funciones de:
- carga
- transferencia
- funciones entre acumuladores
- funciones del sistema (SFC 20,21 y 81)

El flujo de informacin discurre a travs de los denominados acumuladores

Estructura de los Acumuladores


31

0
24 23
16 15
8 7
Byte alto
Byte bajo
Byte alto
Byte bajo
Palabra alta

ACU(1 2) Palabra baja

Operaciones de Carga y Transferencia


Memoria sistema
Imgenes PII, PIQ
Marcas
Dat. locales temporales

Memoria trabajo

Temporiz. Contadores

Bloque de datos

Palabra de estado

Long. nmero bloques

Reg. direcciones

Constantes, punteros

Acumulador 1

Imgenes PII, PIQ


Marcas

Memoria sistema

Periferia de entradas

Funciones del acumulador

Funciones de carga

Func. transferencia

Mdulos

Acumulador 2

Funciones digitales

Palabra de estado
Dat. locales temporales

Bloque de datos

Memoria trabajo

Periferia de salidas

Mdulos

Operaciones de Carga
La funcin carga (L - load) pone en el acumulador1 el valor del operando especificado:
(constante, variable o una direccin ) (todos los tipos de datos con 8, 16 o 32 bits)
Operandos ubicados en la memoria:

L
L
L

IB n
IW n
ID n

31

L
L
L
24

23

24

23

24

15

15

IB 1

L IB 0
0
L IW 0

IB 1
8

MB n
MW n
MD n

IB 2

16 15

L
L
L

IB 0

IB 0
16

24 23

PIB n
PIW n
PID n

0000
16

23

IB 0

31

15

0000

0000
31

16

L
L
L

0000

0000
31

QB n
QW n
QD n

0
IB 3

8 7

L ID 0

0 ACU 1

Ejemplos de Direccionamiento
Carga de constantes
Direccionamiento inmediato
L +27
L L#-1
L 2#1010101010101010
L DW#16#A0F0BCFD
L FIN
L T#500 ms
L S5T#2s
L C#100
L B#(100,12)
L B#(100,12,50,8)
L B#16#F1
L P#10.0
L P#I20.6
L P#name
L -25
L D# 1995-01-20
L TOD#13:20:33.125

Descripcin
Carga la constante entera de 16 bits 27 en ACU1
Carga la constante entera de 32 bits -1 en ACU1
Carga la constante binaria de 16 bits en ACU1
Carga la constante hexadecimal en ACU1
Carga los caracteres ASCII deseados en ACU1
Carga el valor de temporizacin en ACU1
Cargar un temporizador S5
Carga un valor de computo en BCD en ACU1
Carga la constante de 2 bytes
Carga la constante de 4 bytes
Cargar nmero de dos dgitos hexadecimales en ACU 1
Carga el puntero intrarea en ACU1
Carga el puntero interrea en ACU1
Cargar la direccin de variable local
Carga el nmero real en ACU1
Carga la fecha
Carga de un tiempo (la hora) en 32 bits

Operaciones de Transferencia
La funcin transferencia (T - transfer) pone el contenido del acumulador1 en el
operando especificado (todos los tipos de datos en 8, 16 o 32 bits)
Las operaciones de transferencia son incondicionales
Operandos ubicados en la memoria:

T
T
T

IB n
IW n
ID n

T
T
T

QB n
QW n
QD n

24 23

31

T
T
T

PQB n
PQW n
PQD n

16 15

T
T
T

MB n
MW n
MD n

ACU 1

8 7

T QD 4

T QW 4

T QB 4

Efecto sobre el ACU 1


ACCU 1 contenidos para las instrucciones de carga
31
24 23
16 15
8
7
0000

0000
31

24

23

16

15

0000

0000
31

0000

24
IB 0

23

Byte 3

15

IB 1

Instruccin Transferir
31
24 23

IB 0
7

IB 0
16

Byte 2

T QD 4

15

L IB 0
0
L IW 0

IB 1
8

IB 2

16

0
L ID 0

IB 3

8
Byte 1

T QW 4

0
Byte 0

T QB 4

Efecto sobre el ACU 2 Operaciones de Carga


Informacin
perdida
Word dWord c

ACU 2

ACU 1

Word dWord c

Word bWord a

Word bWord a
IW 7

Informaciones
procedentes
de la PII

IW 7

L IW 7
IW 7

IW 9

L IW 9
IW 9

Word bWord a

Informacin
perdida

ACU 2

ACU 1

YYYY

ZZZZ

YYYY

ZZZZ

ID 0

ZZZZ

ID 0

ID 4

Informaciones
procedentes
de la PII
L ID 0
ID 0
L ID 4
ID 4

Efecto sobre el ACU 2 Operaciones de Transferencia

ACU 2

ACU 1

Word dWord c

Word bWord a

Word dWord c

Word bWord a

ACU 2

ACU 1

ID 1

ID 3

ID 1

ID 3

Informaciones
en la PIQ
T QW 5
Word a

Informaciones
en la PAA
T QD 10
ID 3

Informacin
perdida
Valor previo
de QW 5

Informacin
perdida
Valor previo
de QD 10

Funciones del Acumulador I


Permiten transferir valores de un acumulador a otro, o reemplazar
bytes en el acumulador 1
Se ejecutan independiente del resultado lgico o bits de estado

Transferencia directa entre acumuladores


TAK: Permite intercambiar el contenido de ACU1 y ACU 2
PUSH: Permite desplazar el contenido de los ACU hacia adelante
POP: Permite desplazar el contenido de los ACU hacia atrs

TAK

PUSH

POP

Acumulador 2

Acumulador 1

Acumulador 1

Acumulador 2

Acumulador 1

Acumulador 2

Acumulador 1

Acumulador 2

Funciones del Acumulador II


Intercambio de Bytes en el Acumulador 1
CAW: cambia en el acumulador 1, los bytes de la palabra de menor peso
CAD: cambia bytes en todo el acumulador 1. El byte de mayor peso con el byte
de menor peso y los dos bytes intermedios entre s

n+1

n+2

n+3

n+1

n+3

n+2

n+1

n+2

n+3

n+3

n+2

n+1

CAW

CAD

Carga y Transferencia de Datos Move


En funciones Lgicas
La operacin Transferir un valor permite inicializar variables con valores
predeterminados
El valor indicado en la entrada IN se copia en el operando indicado en la salida OUT
Permite copiar todos los tipos de datos de 8,16 o 32 bits

Cuadro FUP

MOVE

Parmetro Tipo de
datos
EN
BOOL

Entrada de habilitacin

IN

Valor fuente

EN OUT
OUT
IN ENO
ENO

Area de
memoria
I, Q, M, D, L
T, C
Todos tipos I, Q, M, D, L
8, 16 o 32 bi
Todos tipos I, Q, M, D, L
8, 16 32 bi
BOOL
I, Q, M, D, L

Descripcin

Direccin de destino
Salida de habilitacin

Carga y Transferencia de Datos


KOP

AWL
L - Carga
T - Transferencia
(Todos los tipos de datos con 8, 16, 32 bits)

MOVE
EN

ENO

IN

EN - Habilitar entrada
ENO -Habilitar salida
IN - Valor de entrada
(todos los tipos de datos
con longitud 8, 16, 32 bit)
O - Direccin del resultado
(todos los tipos de datos
con longitud 8, 16, 32 bit)

Ejemplos:
L +5
// Carga una constante de 16-bit
L L#523123
// Carga una constante de 32-bit
L B#16#EF
// Carga un byte hexadecimal
L 2#0001_0110_1110_0011
// Carga un valor binario de 16-bit
L TOD#1:10:3.3
// Carga un tiempo de 32-bit
T MB0
T AD256

// Transferir un valor al byte de


memoria 0
// Transferir un valor a la doble
doble palabra de salida 256

Funciones del Sistema para Transferencia de Datos


Estn disponibles las siguientes funciones del sistema para la transferencia de datos

SFC 20 BLKMOV
SFC Parmetros Declaracin Tipo dato Descripcin
20
SRCBLK
INPUT
ANY
Fuente de donde copiar datos
RET_VAL
OUTPUT
INT
Informacin de error
DSTBLK
OUTPUT
ANY
Destino donde copiar los datos

Funciones del Sistema para Transferencia de Datos


SFC 21 FILL
SFC Parmetros Declaracin Tipo dato Descripcin
21
VBAL
INPUT
ANY
Area fuente a ser copiada
RET_VAL
OUTPUT
INT
Informacin de error
BLK
OUTPUT
ANY
Destino donde copiar los datos

Funciones del Sistema para Transferencia de Datos


SFC 81 UBLKMOV
SFC Parmetros Declaracin Tipo dato Descripcin
81
SRCBLK
INPUT
ANY
Fuente de donde copiar datos
RET_VAL
OUTPUT
INT
Informacin de error
DSTBLK
OUTPUT
ANY
Destino donde copiar los datos

Tema 2: Programacin de PLCs


1. STEP 7
2. PROGRAMACIN BSICA AWL
Introduccin
Operaciones lgicas a nivel de bit
Marcas
Simblicos
Flancos
Temporizadores
Diagnosis e informacin del sistema
Contadores
Carga y Transferencia
Operaciones con acumuladores
Saltos
3. PROGRAMACIN ESTRUCTURADA

PLCs
Curso 2009/10

Pgina 1

Introduccin a los Tipos de Datos en STEP 7

Tipos de datos
elementales
(hasta 32 bits)

Tipos de Datos de bit (BOOL, BYTE, WORD, DWORD, CHAR)


Tipos de Datos Matemticos (INT, DINT, REAL)
Tipos de Tiempo (S5TIME, TIME, DATE, TIME_OF_DAY)

Tipos de datos
complejos
(mayores de 32 bits)

Tiempo (DATE_AND_TIME)
Array (ARRAY)
Estructura (STRUCT)
Cadena de Caracteres (STRING)

Tipos de datos definidos por el usuario


(mayores de 32 bits)

Tipo de Datos UDT (User Defined Type)

PLCs
Curso 2009/10

Pgina 2

TIPOS DE DATOS DE BIT TAMAO


La memoria del Autmata est estructurada en bytes.
Estos bytes podemos agruparlos/descomponerlos, obteniendo los
siguientes tamaos de datos:
Bit _ _ _ .N
Byte (8 bits) _ _ _ B
Palabra/word (16 bits) _ _ _ W
Doble palabra/double word (32 bits) _ _ _ D

Se puede acceder a cualquier rea de la memoria: marcas, entrada,


salida, etc. con cualquiera de los tamaos de datos:
PLCs
Curso 2009/10

Pgina 3

DIRECCIONAMIENTO 1/3

Zona de
memoria:

E Tam BBB.b
Nmero de byte
y bit (0-7), en su
caso

E -> Entradas
A -> Salidas
T -> Temporizadores
Z -> Contadores
M -> Marcas
DB -> Mdulos de datos
P -> Acceso directo (PA, PE)

Tamao del Dato que


vamos a usar (bit por
omisin): B, W, D

PLCs
Curso 2009/10

Pgina 4

DIRECCIONAMIENTO 2/3

124

124

125

125

125

125

PLCs
Curso 2009/10

Pgina 5

DIRECCIONAMIENTO 3/3
Dentro de cada byte, palabra o doble palabra, los bits se numeran de
derecha a izquierda, de 0 al 7.

E 124.0

Dir. byte: rea de memoria + B + n de byte EB124

Dir. palabra: rea de memoria + W + n de su 1er byte


EW124 => EB124 EB125

Dir. doble palabra: rea de memoria + D + n de su 1er byte


MD0 => MB0 MB1 MB2 MB3
PLCs
Curso 2009/10

Pgina 6

SISTEMAS NUMRICOS
Sistemas numricos soportados:
Decimal (enteros y fraccionarios), binario, hexadecimal, BCD
Tipos de datos:
Entero (en cualquiera de los sistemas numricos anteriores)
Real (coma flotante)

Ver ayuda
Admin. Simatic
Tipos de datos simples

Carcter

Tiempo: cantidad de tiempo, hora, S5T, fecha


Puntero

PLCs
Curso 2009/10

Pgina 7

Tipos de Datos Elementales en STEP 7


Palabra Clave

Long. (en bits)

Ejemplo de una constante de este tipo

BOOL
BYTE
WORD
DWORD
CHAR

1
8
16
32
8

10
B#16#A9
o B169
W#16#12AE
o W4782
DW#16#ADAC o DW44460
'w'

S5TIME

16

S5T#5s_200ms

INT
DINT
REAL

16
32
32

123
65539
1.2
o

TIME
DATE
TIME_OF_DAY

32
16
32

T#2D_1H_3M_45S_12MS
D#1993-01-20
TOD#12:23:45.12

34.5E-12

PLCs
Curso 2009/10

Pgina 8

Nmeros en COMA FLOTANTE


Estndar IEEE754:

(1/2)

Expresa nmeros reales en 32 bits

N decimal = (-1)signo 2exponente-127 (1+Mantisa2-23)


31 30

...

...

23 22 21

- Signo (S)

1: negativo , 0: positivo (bit 31)

- Mantisa (M)

La mantisa incluye 23 bits (bit 0.. 22).

- Exponente (E) El exponente incluye 8 bits (bit 23..30).


PLCs
Curso 2009/10

Pgina 9

Nmeros en COMA FLOTANTE

Estndar IEEE754:

(2/2)

Expresa nmeros reales en 32 bits

N decimal = (-1)signo 2exponente-127 (1+Mantisa2-23)

Ejemplo:

1#10000000#11000000000000000000000

Parte ligada al signo:


Parte ligada al exponente:
Parte ligada a la mantisa:
Resultado:

(-1)1
= -1
2128-127=21
1+62914562-23=1+0.75
-1 2 1.75

=2
=1.75
= -3.5

PLCs
Curso 2009/10

Pgina 10

ACUMULADORES (1/2)
Registros auxiliares de 32 bits para intercambio de datos y
operaciones de comparacin y aritmeticas.
ACCU-H (16 bits)

ACCU-L (16 bits)

CPU 314IFM tiene 2 acumuladores.


Carga al ACCU1,
y el antiguo ACCU1 pasa al ACCU2.
Si cargamos o transferimos tamaos de datos menores a la
doble palabra ( bits, bytes (B), word (W) ),
se empieza a leer y escribir por la derecha (byte menos
significativo)
PLCs
Curso 2009/10

Pgina 11

ACUMULADORES (2/2)

Operaciones entre acumuladores:


TAK: intercambia contenido ACCU1 y ACCU2 .
PUSH: copia el contenido de ACCU1 al ACCU2, sin cambiar el 1.
POP: copia el contenido de ACCU2 al ACCU1, sin cambiar el 2.
ENT (slo S7-400): ACCU2 a ACCU3 y ACCU3 a ACCU4.
LEAVE (slo S7-400): ACCU3 a ACCU2 y ACCU4 a ACCU3.

PLCs
Curso 2009/10

Pgina 12

CARGA Y TRANSFERENCIA 1/7


Permiten programar intercambio de informacin
entre mdulos de E/S y reas de memoria.
L

-->

T -->

Instruccin de carga a ACCU-1


Instruccin de transferencia desde ACCU-1

Cargan y transfieren del acumulador ACCU1, independientemente del


valor RLO, y tampoco lo modifican.
A dichas instrucciones les sigue un cdigo en el que se indica el tamao,
formato y el nmero/posicin a cargar o transferir.
PLCs
Curso 2009/10

Pgina 13

CARGA Y TRANSFERENCIA 2/7


Ejemplos:
LC Z0 --> Carga el contenido del contador en el acumulador en BCD.
Si Z0=10

ACU1: 00 00 00 .......... 0001 0000

(BCD)

L Z0 --> Idem pero en Binario


Si Z0=10

ACU1: 00 00 00 .......... 0000 1010 (Binario autntico)

L S5T#5S --> Herencia de versiones previas a S7: mximo nmero 9990sg,

PLCs
Curso 2009/10

Pgina 14

CARGA Y TRANSFERENCIA 3/7


Ejemplos:
L ED124 (Cargar en el acumulador la doble palabra 124 de la PAE)
ACU1: EB124 EB125 EB126 EB127
Obsrvese: el byte ms significativo del acumulador (parte izquierda) queda
relleno con el byte de direccin menor, y el de mayor direccin, a la dcha.
L EW8 (Cargar en el ACU1 la palabra 8 de la PAE)
00

00

EB8

EB9

L EB8 (Cargar en el ACU1 el byte 8 de la PAE)


00

00

00

EB8
PLCs

Curso 2009/10

Pgina 15

CARGA Y TRANSFERENCIA 4/7

Ejemplos (con los Registros de Direcciones, AR1 y AR2):


LAR1

----> Carga el reg.de direccin AR1 con el contenido de ACU1

LAR1 R2 ----> Carga el reg. de direccin AR1 con el contenido de reg AR2
TAR

----> Intercambia los contenidos de registros AR1 y AR2

TAR1 R2 ----> Transfiere el contenido de AR1 a AR2


El listado AWL siguiente:
L ED 124
LAR1
L ED 128
LAR2

Tendr como
resultado:

ED124 ----> AR2


ED128 ----> AR1

TAR
PLCs
Curso 2009/10

Pgina 16

CARGA Y TRANSFERENCIA 5/7


Ejemplos (L y T con diferentes tamaos):
L EB124 (Cargar en el ACU1 el byte 124 de las entradas)
00
00
00
EB124
Si ahora hacemos T MW32
00
00
00

EB124

MB32 MB33

L ED124

EB124

EB125 EB126 EB127

T MB32

MB32
PLCs

Curso 2009/10

Pgina 17

CARGA Y TRANSFERENCIA 6/7


L +5

--> Carga entero de 16 bits

L L#523123

--> Carga un entero de 32 bits

Ver ayuda
Adm. Simatic

L B#16#EF

--> Carga un hexadecimal de 8 bits

Tipos de datos
simples

L 2#0011_0110_1110_0011 --> Carga binario de 16 bits

NOTA:

T MB0
T AD256

--> Transfiere (el ACU1) al byte de marcas 0


--> Transfiere (el ACU1) a la doble palabra de salida 256

PLCs
Curso 2009/10

Pgina 18

CARGA Y TRANSFERENCIA 7/7

PLCs
Curso 2009/10

Pgina 19

EJERCICIO (Entregable 4)

Tenemos una mezcladora que produce 2 tipos de productos,


magdalenas y donuts, para lo cual controla la receta,
modificando las proporciones de harina (A124.0) y leche
(A124.1), y el tiempo que est mezclndolos (A124.2).
La produccin empezar cuando E124.0 se ponga a 1
Si E124.1=1 produce magdalenas, para lo cual A124.0 est
encendido 3 segundos, A124.1 est encendido 1 segundo y
A124.2 durante 2 sg.
Si E124.1=0 produce donuts, para lo cual los tiempos son 4,
3 y 2 segundos respectivamente.
El sistema debe ser robusto de forma que si est en medio
de una receta no debe interrumpirse aunque cualquiera de
los dos botones de entrada se modifique

PLCs
Curso 2009/10

Pgina 20

Tema 2: Programacin de PLCs


1. STEP 7
2. PROGRAMACIN BSICA AWL
Introduccin
Operaciones lgicas a nivel de bit
Marcas
Simblicos
Flancos
Temporizadores
Diagnosis e informacin del sistema
Contadores
Carga y Transferencia
Operaciones con acumuladores
Saltos
3. PROGRAMACIN ESTRUCTURADA

PLCs
Curso 2009/10

Pgina 1

Operaciones con AC. Comparacin (I)

PLCs
Curso 2009/10

Pgina 2

Operaciones con AC. Comparacin (II)


RLO=1 si resultado de comparacin es cierto , RLO=0 si falso
? I: Compara los contenidos de ACU2-L y ACU1-L

Ejemplo:
L MW 32

MB32 MB33 ----> ACU1

L EW 124

ACU1 ---> ACU2 Y EB124 EB125 ---> ACU1

==I

Si ACU2(MW32) = ACU1(EW124), RLO=1

=A 124.0
>I

y se activa el bit 0 del byte 124 de salida


Si ACU2(MW32) > ACU1(EW124), se activa el

=A 124.1
<I

bit 1 del byte 124 de salida


Si ACU2(MW32) < ACU1(EW124), se activa el

=A 124.2

bit 2 del byte 124 de salida


PLCs

Curso 2009/10

Pgina 3

Operaciones con AC. Comparacin (III)

Ejemplo:

L MD 16

MB16 a MB19 ----> ACU1

L 1.359E+02

ACU1 ---> ACU2 Y 1.359E+02 ---> ACU1

<=R

Si ACU2 < = ACU1 se activa el

=A 124.7

bit 7 del byte 124 de salida

>R

Si ACU2 > ACU1 se activa el

=A 124.0

bit 0 del byte 124 de salida

S M 124.0

La marca 124.0 guarda el resultado de la ltima comparac

PLCs
Curso 2009/10

Pgina 4

Operaciones con AC. Aritmticas (I)

Siempre son entre el contenido del ACU2 y el del ACU1

El resultado se guarda en ACU1, el contenido de ACU2 no cambia

Son independientes del RLO

Una vez cargados los acumuladores, se opera, dependiendo del formato del dato:
I, D, R (entero 16 bits, entero 32 bits, real o coma flotante)

- , + , * , / , MOD (resto de divisin de enteros dobles)


Ejemplo:

xI xD xR

L MW 32

MB32 MB33 --- > ACU1

L EW 124

ACU1 --> ACU2 y EB124 EB125 --> ACU1

-I

ACU2 ACU1 ---> ACU1

PLCs
Curso 2009/10

Pgina 5

Operaciones con AC. Aritmticas (II)

Una vez realizada la operacin aritmtica se activan los bits


A1, A0, OS y OV de la palabra de estado indicando:
resultado positivo, negativo, cero, desbordamiento o divisin por 0
- 32768 <= entero 16 bits <= 32767
- 2 147 483 648 <= entero 32 bits <= 2 147 483 647
En CPUs de 4 acumuladores:
El resultado queda en ACU1,
ACU3 pasa a ACU2, y
ACU4 se duplica en ACU3 y AUC4.
PLCs
Curso 2009/10

Pgina 6

Operaciones con AC. Aritmticas (II-b)

La funcin de los bits de la palabra de estado depende del tipo de operacin


Ejemplo: operaciones en coma fija (I, D}

PLCs
Curso 2009/10

Pgina 7

Operaciones con AC. Aritmticas (III)

Sumar constante entera o doble:


+ <constante entera> ACU1 + CTE -> ACU1,

Dividir /I : ACU2 / ACU1:


ACU1 L cociente
ACU1 H resto

PLCs
Curso 2009/10

Pgina 8

Ops. Avanzadas (ns reales)

Toman el dato de ACU1, y dejan tambin ah la solucin:


Raz cuadrada:

SQRT

Elevar al cuadrado: SQR


Funciones trigonomtricas: SIN, COS, TAN, ASIN, ACOS, ATAN
(con los ngulos en radianes).
Logaritmos:

LN, LOG

Valor absoluto:

ABS

Exponencial:

EXP

Incrementos:

+ 1
- 1

=> ACU1=ACU1+1
=> ACU1=ACU1-1
PLCs

Curso 2009/10

Pgina 9

Conversiones entre tipos de datos (I)

PLCs
Curso 2009/10

Pgina 10

Conversiones entre tipos de datos (II)


Rango para nmeros BCD:

-999 <= I <= +999

-9 999 999 <= D <= +9 999 999

PLCs
Curso 2009/10

Pgina 11

Conversiones entre tipos de datos (III)


Ejemplos:
L MW 10

MB10 MB11 (BCD) ---> ACU1

BTI

ACU1 (BCD) ---> ACU1 (I, entero)

T MW 20

ACU1 (I) ---> MB20 MB21

L MW 10

MB10 MB11 (I) ---> ACU1

ITD

ACU1 (I) ---> ACU1 (D)

T MD 20

ACU1 (D) ---> MB20 MB21 MB22 MB23

PLCs
Curso 2009/10

Pgina 12

Conversiones entre tipos de datos (IV)

doble

Un real 32bits IEEE-FPE

inferior

mayor
superior
un real en entero de 32 bits

PLCs
Curso 2009/10

Pgina 13

Conversiones entre tipos de datos (V)

PLCs
Curso 2009/10

Pgina 14

Conversiones entre tipos de datos (VI)


Ejemplos:
L MD 10

MB10 MB11 MB12 MB13 (R) ---> ACU1

RND

ACU1 (R) ---> ACU1 (D) con redondeo al ms prximo

T MD 20

ACU1 (D) ---> MB20 MB21 MB22 MB23

L EW 124

EB124 EB125 ---> ACU1

NEGI

C2 de ACU1 ---> ACU1

T MW 20

ACU1 ---> MB20 MB21

PLCs
Curso 2009/10

Pgina 15

Ops. Lgicas a nivel de Palabra W y Doble Palabra D (I)

Operan con W (16 bits) o con D (32 bits) bit por bit, segn lgica de Boole.
Operacin lgica entre
ACU1 y ACU2

ACU1 y constante

PLCs
Curso 2009/10

Pgina 16

Ops. Lgicas a nivel de Palabra W y Doble Palabra D (II)

Ejemplos:
L ED 124
L MD 20
UD
T AD 124

La AND se hace entre ACU1 y ACU2, cargados previamente


con los valores indicados.
Este ejemplo se podra utilizar para enmascarar ciertos bits
de la ED124 segn la mscara de MD20, transfieriendo a
la salida AD124 slo los bits que nos interesen.

L EW 124

En ste caso, la AND se hace entre el ACU1 (previa-

UW

mente cargado con los bytes de entrada 124 y

W#16#AA55

T MW 20

125) y un valor inmediato expresado en hexadecimal

PLCs
Curso 2009/10

Pgina 17

Ops. de desplazamiento y rotacin (I)


Se aplican al ACU1: palabra W (16 bits) o doble palabra D (32 bits).
El cdigo AWL se formar eligiendo una letra de cada una de las siguientes
parejas:
S (shift)

R (right)

W (word)

R (Rotate)

L (left)

D (double)

n (N Despl.)

ROTATE SOLO DE 32 BITS

Los desplazamientos rellenan con 0, aunque hay instrucciones que permiten mantener el signo:
SSD

Ambas provocan un desplazamiento a dcha del ACU1 o ,

SSI

ACU1-L pero manteniendo el signo

Cuando no se indique n, ste ser el contenido del byte bajo del ACU2

PLCs
Curso 2009/10

Pgina 18

Ops. de desplazamiento y rotacin (II)

Un desplazamiento a la izquierda de n bits


Multiplica el contenido del acumulador por 2^n

Un desplazamiento a la derecha de n bits


Divide el contenido del acumulador por 2^n !!
PLCs
Curso 2009/10

Pgina 19

Ops. de desplazamiento y rotacin

(III)

Ejemplos de Desplazamiento:

L EW 124
SLW 6

Desplaza los bits de la palabra baja de ACU1 seis posiciones a la izqda.

T MW 20
L MW 10
SSI 4

Desplaza cuatro posiciones a la dcha y repite signo

T MW 20
L +3

En ste caso, SRD no lleva n, por lo que se tomar el depositado en

L MD 10

el byte bajo de ACU2, o sea, 3. Recordemos que al hacer el segundo

SRD

L, lo que se carg en ACU1 pasa a ACU2.

T MD 20
PLCs
Curso 2009/10

Pgina 20

Ops. de desplazamiento y rotacin (IV)

Ejemplos de Rotacin:
L MD 10
RLD 3

Rota todos los bits del ACU1 tres posiciones a la izqda.

T MD 20

L +6

En ste caso, RRD no lleva n, por lo que se tomar el depositado en

L MD 10

el byte bajo de ACU2, o sea, 6. Recordemos que al hacer el segundo

RRD

L, lo que se carg en ACU1 pasa a ACU2.

T MD 20

PLCs
Curso 2009/10

Pgina 21

EJERCICIO (Entregable 5)

Desarrollar un programa que resuelva ecuacin de segundo grado.


Los coeficientes sern:
a (EB126) =>0,
b (EB125) entero (-128,127)
c (EB124) entero (-128,127)
Las dos races resultantes (r1 y r2) sern almacenadas en las marcas
r1_real: MD0
r1_imaginaria:
r2_real: MD8
r1_imaginaria:

y MD4
y MD12

Adems, se utilizarn tres salidas para indicar:


si son races complejas
(A125.7)
si son races reales
(A125.4)
si son races iguales
(A125.0)
Si a=0
parpadea A125
El programa debe resolver el caso b=c=0.

Muestre en AW126 la parte entera mayor de las dos races

PLCs
Curso 2009/10

Pgina 22

Operaciones de Comparacin
Automatizacin Industrial

ndice
TEMA Operaciones de Comparacin
1. Operaciones de Comparacin
1.1 Comparar Nmeros Enteros
1.2 Comparar Nmeros Enteros Dobles
1.2 Comparar Nmeros en Coma Flotante
2. Ejemplos

Operaciones de Comparacin
Las operaciones de comparacin permiten comparar dos valores en formato
byte, palabra o doble palabra
Para poder comparar, los operandos deben estar uno en cada acumulador
La ejecucin de las operaciones no depende del RLO
El resultado es binario. Si se cumple la comparacin, el RLO es 1; si no, es 0
Las operaciones de comparacin no modifican los contenidos de los ACUs

Activacin de los Bits de la Palabra de Estado


Activacin de los bits CC1 y CC0 Tras una Operacin de Comparacin

Comparar Nmeros Enteros


La operacin Comparar enteros ejecuta una operacin de comparacin cuya base
es un entero en coma fija de 16 bits.
Compara los operandos de IN1 e IN2 segn el tipo de comparacin seleccionado.
Si la comparacin se verifica, es decir, es verdadera, el resultado lgico (RLO) de
la comparacin es 1, en caso contrario es 0.
No existe la negacin del resultado.

Ejemplo:
IW 0
MW 10

CMP
==I
IN1
IN2

&

I 0.0

Q 4.0
=

A(
L IW 0
L MW 10
==I
)
A I 0.0
= Q 4.0

Comparar Nmeros Enteros Dobles


La operacin Comparar enteros dobles ejecuta una operacin de comparacin
cuya base es un entero en coma fija de 32 bits.
Compara los operandos de IN1 e IN2 segn el tipo de comparacin seleccionado.
Si la comparacin se verifica, es decir, es verdadera, el resultado lgico (RLO) de
la comparacin es 1, en caso contrario es 0.
No existe la negacin del resultado.

Ejemplo:
MD 0
MD 4

CMP
<>D
IN1
IN2

I 0.0

&
Q 4.0
=

A(
L MD 0
L MD 4
<>D
)
A I 0.0
= Q 4.0

Comparar Nmeros en Coma Flotante


La operacin Comparar nmeros en coma flotante ejecuta una operacin de
comparacin cuya base son nmeros en coma flotante.
Compara los operandos de IN1 e IN2 segn el tipo de comparacin seleccionado.
Si la comparacin se verifica, es decir, es verdadera, el resultado lgico (RLO) de
la comparacin es 1, en caso contrario es 0.
No existe la negacin del resultado.

Ejemplo:
MD 0
MD 4

CMP
<R
IN1
IN2

I 0.0

A(
L MD 0
L MD 4
<R
)
A I 0.0
= Q 4.0

&
Q 4.0
=

Ejemplos 1
Comparacin en el comienzo Comparacin en operaciones lgicas:
de una operacin lgica:
O Input2
L
L
>I
A
=

O(
L MW 122
L 200
<=I
)
O Input3
= Output2

MW 120
512
Input1
Output1

Mltiples comparaciones:

L MW 124
L 1200
>I
JC GREA
==I
JC EQUA

L MW 124
L 1200
>I
JP GREA
JZ EQUA

Ejemplos 2
L MW 92
L 120
==I
R M 99.0

Comparacin de INT:

L DB_Global.CompVal1
L DB_Global.CompVal2
<D
= DB_Global.CompResult

Comparacin de DINT:

L #Valact
L #CALIBRE
>=R
S #Recali

Comparacin de REAL:

Ejemplo Semforo
Cronograma

1
0

60

<

Rojo

Q 4.0

Verde

Q 4.1

>

1
0

<

20

Naranja Q 4.2

>

5 <
Tiempo en sg.

I 0.0

T1

&

M 2.0

S_ODT
S5T#1S

TV
R

C1
BI
BCD
Q

# M 2.0
#

S_CDU
CU
CD
S
CV
PVCV_BCD

C1
+60

C1
+75

C1
+80

Q 4.0
CMP
S
2
==I
IN1
M 1.0
IN2 Q
2 R Q
Q 4.1
CMP
==I
IN1
M 1.1
2
IN2 Q
CMP
==I
M 1.2
IN1
2
IN2 Q

Rojo

Verde

R Q

Q 4.2
S
R Q

Naranja

A
AN
L
SD
A
=
A
CU
***
L
L
==
R
S

STL
I 0.1
M 2.0
S5T#1S
T 1
T 1
M 2.0
M 2.0
C 1
C 1
60
I
Q 4.0
Q 4.1

L
L
==
S

C 1
75
I
Q 4.2

L
L
==
R
R
S
R

C
80
I
Q
Q
Q
C

1
4.1
4.2
4.0
1

Ejemplo Sealizacin de Nivel de Llenado


Ejemplo
A
R
A
CU
A
CD
L
L
<=
=
L
L
>=
=

I 0.0
15

10

5
I 0.1

Se desea vigilar el llenado de un depsito,


sealizando cuando se alcanza un lmite superior
(15) y un lmite inferior (5). Cuando el depsito
est totalmente vaco deber ponerse a cero el
contador de caudal C4.

STL
I 0.2
C 4
I 0.0
C 4
I 0.1
C 4
C 4
5
I
Q 4.1
C 4
15
I
Q 4.0

Ocupacin de las Entradas y Salidas:


I 0.0 - Emisor de caudal, tubera de entrada
I 0.1 - Emisor de caudal, tubera de salida
I 0.2 - Pulsador para poner a 0 el contador
Q 4.0 - Sealizador de nivel por debajo de 5
Q 4.1 - Sealizador de nivel por encima de 15
Del diagrama mostrado se podr reconocer el
estado del contador (= contenido del depsito) y su
reaccin sobre las entradas I 0.0 e I 0.1, as como el
efecto sobre los diodos luminiscentes (Q 4.0 y Q
4.1).
El diodo luminiscente de salida Q 4.0 luce mientras
se alcance o se sobrepase el lmite superior (15).
El diodo luminiscente de salida Q 4.1 luce mientras
se alcance o se baje del lmite inferior (5).

I 0.2

0
1

8x

12x

I 0.0

I 0.1

0
1

Q 4.0

0
1

Q 4.1

Tiempo

Ejemplo Generacin de Seal Triangular


1

I 0.0

0
1

A
AN
L
SD
A
=
***
A
AN
CU
A
A
CD
AN
R
***
LC
T
***
LC
L
>=
S
***
AN
R
***
A
=

M 20.0

0
IB 1

AB 5

0
1

Q 4.0

Tiempo

I 0.0

T 22; M 20.0
F

G
1 Hz

C 22

&

S_CUD

&

CU
CD
S

QB 5
CMP
==I
IN1

CV

PV CV_BCD

M 20.1
SR

IB 1

IN2 Q

Q
Q 4.0

AW L
I 0.0
M 20.0
S5T#1S
T 22
T 22
M 20.0
M
Q
C
M
Q
C
I
C

20.0
4.0
22
20.0
4.0
22
0.0
22

C 22
QB 5
C 22
IB 1
I
M 20.1
C
M

22
20.1

M
Q

20.1
4.0

Operaciones Matemticas
Automatizacin Industrial

ndice
TEMA Operaciones Matemticas
1. Operaciones Aritmticas Bsicas
1.1 Operaciones Aritmticas Bsicas con Nmeros Enteros Simples
1.2 Operaciones Aritmticas Bsicas con Nmeros Enteros Dobles
1.3 Operaciones Aritmticas Bsicas con Nmeros Reales
2. Operaciones Aritmticas Avanzadas
2.1 Funciones Trigonomtricas
2.2 Funciones Logartmicas y Exponenciales
2.3 Otras Funciones
3. Operaciones de Conversin
4. Operaciones de Desplazamiento y Rotacin
5. Operaciones Lgicas con Palabras
6. Operaciones con Bits de la Palabra de Estado

Operaciones Aritmticas Bsicas

Las funciones aritmticas combinan dos valores digitales en los acumuladores


Se incluyen es este apartado las operaciones aritmticas bsicas
El resultado queda en el ACU1
Los bits de estado CC0, CC1, OV y OS proveen informacin adicional del resultado de la
operacin.
Hay funciones para nmeros en coma fija y coma flotante
Se contemplan las operaciones:
suma
resta
multiplicacin
divisin
adicin de constantes
incremento
decremento

Representacin General
La estructura semntica de una operacin aritmtica es:
Funcion

Cargar
Direccin1
Cargar
Direccin2
Funcin aritmtica
Transferir
Resultado

EN

ENO

IN1
IN2 OUT

Se contemplan las siguientes funciones aritmticas:


Funciones Aritmticas
Suma

Tipo de dato
INT

DINT

REAL

+I

+D

+R

Resta

-I

-D

-R

Multiplicacin

*I

*D

*R

Divisin

/I

/D

/R

Divisin con resto como resultado

MOD

ADD_I
EN
IN1 OUT
IN2 ENO

Uso del Parmetro EN/ENO


EN = Entrada Enable

ENO = Salida Enable

EN

Si est activo (1), se


ejecuta la instruccin de la caja.
Si no est activo (0), no se
ejecuta la instruccin.

ENO

( )

Si est activo (1), indica que la


Caja de instrucciones KOP instruccin se ejecut sin error.
(FC, FB, Move, Add, etc)
Si no est activo (0), no se llam
a la instruccin o no se produjo
la ejecucin de la instruccin

* AWL no admite los parmetros EN/ENO. ENO = al bit BR en AWL

Nmeros Enteros Simples (I)


Suma de INT (+I)

ADD_I

EN
Interpreta como valores a sumar los contenidos
IN1 OUT
de las palabras de las partes bajas de los ACU1-2
IN2 ENO
La suma queda en ACU1
En los bits CC0 y CC1 indica si el resultado ha sido positivo, negativo o cero.
Los bits de estado OV y OS indican cualquier sobrepasamiento del rango
La parte alta del ACU1 no se modifica

Resta de INT (-I)

SUB_I

L
L
+I
T

MW4
MW10

MW5
MW11

L
Interpreta como valores a restar los contenidos
EN
-I
de las palabras de las partes bajas de ACU1-2
IN1 OUT
T
Resta el valor del ACU1 del valor del ACU2
IN2 ENO
El resultado queda en ACU1
En los bits CC0 y CC1 indica si el resultado ha sido positivo, negativo o cero.
Los bits de estado OV y OS indican cualquier sobrepasamiento del rango
La parte alta del ACU1 no se ha modificado

MW6

MW7

Nmeros Enteros Simples (II)


Multiplicacin de INT (*I)

MUL_I

Interpreta como valores a multiplicar los contenidos de las palabras de las


partes bajas de los acumuladores 1 y 2.
El producto queda en ACU1como un nmero de tipo de dato DINT
En los bits CC0 y CC1 indica si el resultado ha sido positivo, negativo o cero.
Los bits de estado OV y OS indican cualquier sobrepasamiento del rango
Para la siguiente multiplicacin el valor est como un DINT en ACU1

Divisin de INT (/I)


Divide los contenidos de las partes bajas
de los acumuladores 1 y 2.
ACU2 es el dividendo y ACU1 el divisor
Devuelve en ACU1 cociente y resto (INT)
Los bits CC0 y CC1 indican si +, - o cero
Los bits OV y OS indican sobrepasamiento
Si divisor=0, dividendo=divisor= 0
CC0, CC1, Ov y OS se ponen a 1

DIV_I
EN
IN1 OUT
IN2 ENO

31

16 15

ACU2 (Irrelevante)
Antes

EN
IN1 OUT
IN2 ENO

Dividendo

/I

ACU1 (Irrelevante)
=
Despus
ACU1
Resto

Divisor
Cociente

Nmeros Enteros Dobles (I)


Suma de DINT (+D)

ADD_DI

Interpreta los valores de ACU1 y ACU2


EN
como valores en DINT
IN1 OUT
La suma queda en ACU1
IN2 ENO
En los bits CC0 y CC1 indica si el resultado ha
sido positivo, negativo o cero.
Los bits de estado OV y OS indican cualquier sobrepasamiento del rango

Resta de DINT (-D)


Interpreta los valores de ACU1 y ACU2 como valores en DINT
Resta el valor del ACU1 del valor del ACU2
El resultado queda en ACU1
En los bits CC0 y CC1 indica si el resultado ha sido positivo, negativo o cero.
Los bits de estado OV y OS indican cualquier sobrepasamiento del rango

L
L
+I
T

MD4
MD10
MD16

SUB_DI
EN
IN1 OUT
IN2 ENO

Nmeros Enteros Dobles (II)


Multiplicacin de DINT (*D)
Interpreta los valores de ACU1 y ACU2 como valores en DINT
El resultado de la multiplicacin queda en ACU1
En los bits CC0 y CC1 indica si el resultado ha sido positivo, negativo o cero.
Los bits de estado OV y OS indican cualquier sobrepasamiento del rango

Divisin de DINT (/D)


Interpreta los valores de ACU1 y ACU2 como valores en DINT
Divide el valor de ACU2 (dividendo) entre el valor de ACU1 (divisor)
Almacena el cociente en el ACU1
El cociente es un resultado entero de la divisin.

Divisin de DINT con resto como resultado (MOD)


Interpreta los valores de ACU1 y ACU2 como valores en DINT
Divide el valor de ACU2 (dividendo) entre el valor de ACU1 (divisor)
Almacena el resto en el ACU1

MUL_DI
EN
IN1 OUT
IN2 ENO

DIV_DI
EN
IN1 OUT
IN2 ENO

MOD_DI
EN
IN1 OUT
IN2 ENO

Evaluacin de los Bits de la Palabra de Estado


Las operaciones aritmticas de enteros afectan a los bits de estado CC1, CC0, OV y OS
Estado de seal de los bits de la palabra de estado: resultado del clculo dentro del rea vlida

Estado de seal de los bits de la palabra de estado: resultado del clculo fuera del rea vlida

Estado de seal de los bits de la palabra de estado: operaciones aritmticas con nmeros enteros dobles +D, /D y MOD

Nmeros Reales (I)


Suma de REAL (+R)

ADD_R
EN
IN1 OUT
IN2 ENO

Interpreta los valores de ACU1 y ACU2 como valores de tipo de dato REAL
La suma queda en ACU1
En los bits CC0 y CC1 indica si el resultado ha sido positivo, negativo o cero.
Los bits de estado OV y OS indican cualquier sobrepasamiento del rango

Resta de REAL (-R)

SUB_R

EN
Interpreta los valores de ACU1 y ACU2 como valores de tipo de dato REAL IN1 OUT
Resta del valor del ACU1 el valor del ACU2
IN2 ENO

El resultado queda en ACU1


En los bits CC0 y CC1 indica si el resultado ha sido positivo, negativo o cero.
Los bits de estado OV y OS indican cualquier sobrepasamiento del rango

Nmeros Reales (II)


Multiplicacin REAL (*R)

MUL_R

EN
Interpreta los valores de ACU1 y ACU2 como
IN1 OUT
valores de tipo de dato REAL
IN2 ENO
El producto queda en ACU1
En los bits CC0 y CC1 indica si el resultado ha sido positivo, negativo o cero.
Los bits de estado OV y OS indican cualquier sobrepasamiento del rango
Si un operando no es REAL, retorna un valor no vlido en ACU1 y CC0, CC1,
OV y OS se ponen a 1

Divisin de REAL (/R)

DIV_R

EN
Interpreta los valores de ACU1 y ACU2 como
IN1 OUT
valores de tipo de dato REAL
IN2 ENO
Divide el valor de ACU2 (dividendo)
entre el valor de ACU1 (divisor)
Almacena el cociente en el ACU1
En los bits CC0 y CC1 indica si el cociente ha sido positivo, negativo o cero.
Los bits de estado OV y OS indican cualquier sobrepasamiento del rango
Si un operando no es REAL, retorna un valor no vlido en ACU1 y CC0, CC1
OV y OS se ponen a 1.

L
L
*R
T

L
L
/R
T

MD6
MD12
MD67

MD67
MD3
MD33

Evaluacin de los Bits de la Palabra de Estado


Las operaciones aritmticas de reales afectan a los bits de estado CC1, CC0, OV y OS
Estado de seal de los bits de la palabra de estado para resultados de operaciones en coma flotante dentro del rea vlida

Estado de seal de los bits de la palabra de estado para resultados de operaciones en coma flotante dentro del rea no vlida

Suma de Constantes al ACU1


Funciones

Estructura semntica
Cargar
Direccin1
Adicin Constante
Transferir Resultado

+ B#16#bb
+ +/-w
+ L#+/-d

La adicin de constantes es til para el clculo de direcciones


Aade la constante especificada al contenido del ACU1
Se puede especificar:
constante byte hexadecimal
constante word o doble word decimal
Para aadir una constante word usando DINT , preceder a la constante con L#
Si una constante decimal excede el rango de INT, calcula automticamente en DINT

Ejemplos:
L
+
T

Valor1
B#16#21
Resultado1

L
+
T

Valor2
-33
Resultado2

L
+
T

Valor3
L#-1
Resultado3

Decremento e Incremento
Decremento (DEC n)

Incremento (INC n)

Estructura semntica
Cargar
Decrementar
Transferir

Direccin1
Valor
Resultado

Cargar
Incrementar
Transferir

Direccin1
Valor
Resultado

Las funciones DEC e INC afectan a ACU1


El valor que se puede incrementar o decrementar tiene un rango de 0 a 255
Slo afecta al byte de menor peso del ACU1
No hay llevada (carry) al byte siguiente
Se ejecutan con independencia del RLO

Ejemplos:
L
INC
T

ValorInicial
5
ValorInicial

L
DEC
T

ValorFinal
7
ValorFinal

Operaciones Aritmticas Avanzadas


Las funciones matemticas procesan nmeros en formato de datos REAL
Los bits de estado CC0, CC1, OV y OS proveen informacin adicional del resultado de
la operacin.
Las funciones matemticas toman el nmero del ACU1 como entrada
Almacena el resultado en el ACU1
Se contemplan las funciones:
trigonomtricas
arco
cuadrado y raz cuadrada
funcin exponencial en base e y logaritmo natural

Representacin General
La estructura semntica de una operacin aritmtica avanzada es:
Cargar
Direccin1
Funcin matemtica
Transferir
Resultado

Funcion
EN

ENO

IN

OUT

Funciones Trigonomtricas (I)


Funciones Trigonomtricas
Existen las funciones trigonomtricas:
- seno (SIN)
- coseno (COS)
- tangente (TAN)
La entrada es un ngulo en radianes en
formato de nmero REAL en ACU1

SIN
EN OUT
IN

TAN
EN OUT
IN

Funciones Arco

ENO

ENO

Ejemplo:
La potencia elctrica P=V*I*sen
L
PHI
SIN
L
Corriente
*R
L
Tension
*R
T
Potencia

ATAN
EN OUT

Existen las funciones arco:


- arco seno (ASIN)
- arco coseno (ACOS)
IN ENO
- arco tangente (ATAN)
La entrada es un nmero REAL en ACU1
El resultado es un ngulo en radianes en ACU1

Ejemplo:
Arco seno en grados
L
0.343
ASIN
L
57.2958
*R
T
Angulo_grados

Funciones Logartmicas y Exponenciales


Funcin Logartmica (LN)
Calcula el logaritmo natural de un nmero en coma flotante
LN
EN OUT
IN

Exponencial en base e (EXP)


Realiza la funcin e( ACU1)

ENO

Ejemplo: ab = eb ln a
EXP
EN OUT
IN

ENO

L
LN
L
*R
EXP
T

Valor_a
Valor_b

Potencia

Funciones Cuadrado y Raz Cuadrada


Ejemplo: Volumen cilindro

Cuadrado (SQR)

SQR
EN OUT

Calcula el cuadrado del valor del ACU1


L
MD 34
SQR
T
MD 38

IN

ENO

L
SQR
L
*R
L
*R
T

Radio
Altura
3.141592
Volumen

Ejemplo:

Raz cuadrada (SQRT)


Extrae la raz cuadrada del valor del ACU1
L
M D10
SQRT
T
MD 14

SQRT
EN OUT
IN

ENO

L
SQR
L
SQR
+R
SQRT
T

r 2h

#a

c = a 2 + b2

#b

#c

Operaciones de Conversin
Las funciones de conversin convierten el tipo de datos del valor del ACU1

BCD
3 dec.

INVI (INV_I)
NEGI (NEG_I)

BTI (BCD_I)
INT
ITB (I_BCD)
ITD
(I_DI)
BTD (BCD_DI)

BCD
7 dec.

DINT

INVD (INV_DI)
NEGD (NEG_DI)

DTB (DI_BCD)
DTR
(DI_R)

RND+ (CEIL), RND- (FLOOR)


RND (ROUND), TRUNC (TRUNC)

REAL

ABS
NEGR (NEG_R)

Conversin de Enteros
Estructura Semntica

Conversin: Nmeros en INT y DINT


ITD:
ITB:
DTB:
DTR:

Conversin de INT a DINT (I_DI)


Conversin de INT a BCD (I_BCD)
Conversin de DINT a BCD (DI_BCD)
Conversin de DINT a REAL (DI_R)

Conversin: Nmeros en BCD


BTI:
BTD:

Funcin
EN ENO

Cargar
Direccin1
Funcin de conversin
Transferir Resultado

Conversin de BCD a INT (BCD_I)


Conversin de BCD a DINT (BCD_DI)

IN

OUT
L
MD10
DTR
T
MD30

DI_R
EN ENO
IN

OUT

L
EW4
BTI
T
MW20

BCD_I
EN ENO
IN

OUT

Conversin de Reales
Conversin: Nmeros REAL

L
MD33
RND
T
MD69

RND: Convierte real a doble entero. Redondea a ms prximo (ROUND)


TRUNC:Convierte real a doble entero. Trunca el nmero (TRUNC)
RND+: Convierte real a doble entero superior (CEIL)
RND-: Convierte real a doble entero inferior (FLOOR)

Modos de Redondeo en Conversin de Nmeros Reales

ROUND
EN ENO
IN

OUT

Otras Operaciones de Conversin


Otras funciones de conversin
INVI:
INVD:
NEGI:
NEGD:
NEGR:
ABS:

ABS
EN ENO

Complemento a uno de INT (INV_I)


Complemento a uno de DINT (INV_DI)
Complemento a dos de INT (NEG_I)
Complemento a dos de DINT (NEG_DI)
Negacin de nmero REAL, cambio de signo (NEG_R)
Valor absoluto de un nmero REAL (ABS)

IN

Operaciones de Transferencia
Operacin MOVE
Permite inicializar variables con valores determinados.
El valor indicado en la entrada IN se copia en el
operando indicado de la salida OUT. ENO y EN
tienen el mismo estado de seal.
Se puede copiar todos los tipos de datos de 8, 16 32
bits de longitud.

MOVE
EN ENO
IN

OUT

OUT

Operaciones de Desplazamiento y Rotacin


Las funciones de desplazamiento permiten desplazar el contenido del ACU1 hacia la
derecha o hacia la izquierda
Se pueden utilizar con palabras y dobles palabras
Devuelven el resultado en el ACU1
Se contemplan las operaciones:
desplazamiento
rotacin
Se pueden programar de dos formas:
El nmero de posiciones en ACU2

Funcin
EN
IN OUT
N ENO

Cargar
Numero_de_posiciones
Cargar
Dato1
Funcin desplazar
Transferir
Resultado
El nmero de posiciones como parmetro
Cargar
Dato1
Fun. Desplazar
Numero_de_posiciones
Transferir
Resultado

Funciones de Registro
Se contemplan las siguientes funciones de registro:
Funciones de Registro Palabra

Doble palabra

con n posiciones

con n posiciones con n posiciones

con n posiciones

como parmetro

en ACU2

en ACU2

como parmetro

Desplazar a la izquierda SLW n (SHL_W) SLW

SLD n (SHL_DW)

SLD

Desplazar a la derecha SRW n (SHR_W) SRW

SRD n (SHR_DW)

SRD

Desplazar con el signo SSI n (SHR_I)

SSI

SSD n (SHR_DI)

SSD

Rotar a la izquierda

RLD n (ROL_DW)

RLD

Rotar a la derecha

RRD

Rotar izqui. con CC1 Rotar derecha con CC1

RRD n (ROR_DW)

RLDA

RRDA

Desplazamientos
Desplazamiento izquierda (palabra) SLW

Desplazamiento izquierda (doble palabra) SLD

CC1

ACU1

CC1

ACU1

Desplazamiento derecha (palabra) SRW

Desplazamiento derecha (doble palabra) SRD

CC1

CC1

ACU1

ACU1

Desplazamiento con signo (palabra) SSI

Desplazamiento con signo (doble palabra) SSD

CC1

CC1
ACU1

ACU1
SHL_W
EN ENO
IN
N
O

MW50
(MW4 = 5) MW4

L
SLW
T

*
MW12

MW50
5
MW12

Rotaciones
Rotar a la izquierda RLD

Rotar izquierda a travs de CC1 RLDA

CC1

CC1
ACU1

ACU1

Rotar a la derecha RRD

Rotar a la derecha a travs de CC1 RRDA


CC1

CC1

ACU1

ACU1
ROR_DW

EN
MD60

IN

MW6

(MW6 = 4)

ENO

L
RRD
T

MD60
4
MD50

MD50
* Estado de seal del ltimo bit desplazado:

Operaciones Lgicas con Palabras

Las funciones lgicas de palabras combinan los contenidos del ACU1 y ACU2 bit a bit.
El resultado queda en el ACU1
Hay funciones para palabras o dobles palabras
Se dispone de funciones:
AND
OR
OR Exclusiva

Se pueden programar de dos formas:


Operacin sin constante

Funcin
ENO
EN

Cargar
Valor1
Cargar
Valor2
Funcin lgica sin constante
Transferir
Resultado

IN1
IN2

Operacin con constante


Cargar
Dato1
Operacin lgica con constante
Transferir
Resultado

Operacin Digital AND


Operacin digital AND
AW (WAND_W)
AW W#16#
AD (WAND_DW)
AD DW#16#

operacin AND (palabra) entre ACU1 y ACU2


operacin AND (palabra) entre constante y ACU1
operacin AND (doble palabra) entre ACU1 y ACU2
operacin AND (doble palabra) entre constante y ACU1

WAND_W
ENO
EN
MW10

IN1

MW20

IN2

OUT

L
L
AW
T

MW30

MW10
MW20
MW30

OUT

Operacin Digital OR
Operacin digital OR

OW (WOR_W)
OW W#16#
OD (WOR_DW)
OD DW#16#

operacin OR (palabra) entre ACU1 y ACU2


operacin OR (palabra) entre constante y ACU1
operacin OR (doble palabra) entre ACU1 y ACU2
operacin OR (doble palabra) entre constante y ACU1

WOR_W
ENO
EN
MW32

IN1

MW44

IN2

OUT

MW34

L
L
OW
T

MW32
MW44
MW34

Operacin Digital OR Exclusiva


Operacin digital OR exclusiva
XOW (WXOR_W) operacin OR exclusiva (palabra) entre ACU1 y ACU2
XOW W#16#
operacin OR excl. (palabra) entre constante y ACU1
XOD (WXOR_DW) operacin OR excl. (doble palabra) entre ACU1 y ACU2
XOD DW#16#
operacin OR excl. (doble palabra) entre constante y ACU1

WXOR_W
ENO
EN
MW26

IN1

MW28

IN2

OUT

L
L
XOW
T

MW24

MW26
MW28
MW24

Ejemplos de Operaciones Lgicas con Palabras


Ejemplo 1
L
L
AW
T

IW
MW
MW

Ejemplo 3
0
// Valor 1
144 // Valor 2
// Operacin lgica
146 // Resultado

Ejemplo 2
L
AW
T
L
OD
T

MW 148
W#16#807F
MW 150
MD 152
DW#16#8000_F000
MD 156

L
L
AW
L
OW
T

Valor1
Valor2
Valor3
Resultado

Ejemplo 4
L
Valor4
L
Valor5
XOW
AW W#16#FFF0
T
Resultado2

Operaciones de Salto
Automatizacin Industrial

ndice
TEMA Operaciones de Salto
1. Instrucciones de Salto
1.1 Salto Incondicional
1.2 Salto Condicional
2. Distribuidor de Saltos
3. Bucles
4. Saltos Condicionados

Introduccin
Principios de Saltos
Permiten interrumpir la ejecucin lineal del programa. STEP 7 soporta varias
instrucciones de Salto a Etiquetas (ir a etiqueta)
Consta de una condicin de salto y una etiqueta de salto (direccin)
La etiqueta consta de cuatro caracteres. No debe comenzar con carcter numrico
Los saltos pueden ser hacia delante o hacia atrs. Siempre dentro de un mdulo
Salto Incondicional
Salto Condicional, basado en el RLO, BR, OV / OS, CC1 y CC0
...

Salto

Ejemplo:

Si se ejecuta el salto las


instrucciones situadas
entre el salto y la etiqueta
no se procesan

Etiqueta

L
C 10
L
50
>I
JC
GR50
Programa
........
JU
SHAR
GR50: Programa en
etiqueta de salto
SHAR:

Introducciones de Salto
Operaciones de Salto en STL
JU

Etiqueta

Salto Inconcicional

JC

Etiqueta

Salto si RLO = 1

JCN

Etiqueta

Salto si RLO = 0

JCB

Etiqueta

Salto si RLO = 1 y salva RLO

JNB

Etiqueta

Salto si RLO = 0 y salva RLO

JBI

Etiqueta

Salto si BR = 1

JNBI

Etiqueta

Salto si BR = 0

JZ

Etiqueta

Salto si resultado de operacin igual a 0

JN

Etiqueta

Salto si resultado de operacin distinto a 0

JP

Etiqueta

Salto si resultado de operacin mayor que 0

JPZ

Etiqueta

Salto si resultado de operacin mayor o igual a 0

JM

Etiqueta

Salto si resultado de operacin menor que 0

JMZ

Etiqueta

Salto si resultado de operacin menor o igual a 0

JUO

Etiqueta

Salto si resultado de operacin invlido

JO

Etiqueta

Salto si overflow

JOS

Etiqueta

Salto si overflow memorizado

JL

Etiqueta

Distribuidor de saltos

LOOP

Etiqueta

Bucle por salto

Condicion
Salto condicional
Programa si no
se cumple condicin
Programa si se
cumple la condicin

Instrucciones de Salto Incondicional


Salto Incondicional (JMP)
El Salto Incondicional se ejecuta independientemente de cualquier condicin; este salto no
lee ni se ve afectado por los bits de la palabra del estado.
AWL

FUP
Segmento 1
....

Segmento 1
CAS1
JMP

.
.
.
.
Segmento X

Segmento X

CAS1: A I 0.4
R Q 4.1

CAS1
Q 4.1
I 0.4

JU CAS1
.
.
.
.
.
.
.

Instrucciones de Salto Condicional


Salto Condicional (JMP, JMPN)
El Salto Condicional se ejecuta en funcin de una condicin reflejada en uno o varios bits de
la palabra de estado.
AWL

FUP
Segmento 1
I 0.0

CAS2
JMP

.
.
.
.

Segmento 1
A I 0.0
JC CAS2
.
.
.
.
Segmento X
CAS2: A I 0.4
R Q 4.1

Segmento X
CAS2

Segmento 1
I 0.0

CAS3
JMPN

.
.
.
.

CAS3
Q 4.1
I 0.4

Segmento 1
A I 0.0
JCN CAS3
.
.
.
.
Segmento X
CAS3: A I 0.4
R Q 4.1

Segmento X

Q 4.1
I 0.4

AWL

FUP

STL: Saltos Condicionales Basados en RLO


Salto Condicional (JC, JCN)
El bit de la palabra de estado Resultado de la Operacin Lgica (RLO) determina cuando
se ejecuta este salto condicional.
Tambin existen instrucciones que adems guardan el resultado en el RB

Salta si RLO = 1

Salta si RLO = 1 y almacnalo en RB


A I 0.0
A I 1.0
JCB NEW1

A I 0.0
A I 1.0
JC NEW1

Salta si RLO = 0 y almacnalo en RB

Salta si RLO = 0
A I 0.0
A I 1.0
JCN REC2

A I 0.0
A I 1.0
JNB REC2

STL: Saltos Condicionales Basados en BR, OV, OS


Salto Condicionales Basados en BR, OV, OS
Los bits del la palabra de estado Resultado Binario (RB) o Desbordamiento/Desbordamiento
Memorizado determinan cuando se ejecutan estos saltos condicionales. La evaluacin de los
bits RB, OV y OS proporciona un medio de verificar condiciones de error.

Salto si BR = 1 (JBI)

Salto si BR = 0 (JNBI)

Salto si OV = 1 (JO)

Salto si OS = 1 (JOS)

STL: Saltos Condicionales Basados en CC1 y CC0


Salto Condicionales Basados en CC1 y CC0

Cuando se ejecuta en el programa un clculo matemtico, los bits CC1 y CC0 se


actualizan en la palabra del estado.
Los bits CC1 y CC0 se evalan en las siguientes instrucciones de salto de la tabla

CC0

CC1

Salto ejecutado
JZ

Salto si el resultado es Cero

JMZ

Salto si cero o menor de cero

JPZ

Salto si cero o mayor de cero

JM

Salto si es menor de cero (negativo)

JMZ

Salto si cero o menor de cero (negativo)

JN

Salto si no cero

JP

Salto si es mayor de cero (positivo)

JPZ

Salto si cero o mayor de cero (positivo)

JN

Salto si no es cero

JUO

Salto si resultado no es admisible

STL: Distribuidor de Saltos


Instruccin JL
Un salto distribuidor JL permite especificar (calcular) saltos a una seccin del programa
en el mdulo condicionado a un nmero de posicin.
Trabaja conjuntamente con una lista de saltos incondicionales JU
Hay una etiqueta de salto en JL que apunta al final de la lista
Puede tener hasta 255 entradas
Utiliza el byte bajo del ACU1
L
JL
JU
JU
.
.
JU
END: JU
.....
M0:
L

Numero_de_posiciones
END
M0
M1

//Nmero para decidir el salto


//Selector de x posicines
//Si ACU1 tiene 0 salta a meta 0
//Si ACU1 tiene 1 salta a meta 1

Mx
ERR

// Si ACU1 tiene x salta a meta x


// Si ACU1 es mayor de x o menor de 0

MW 30

STL: Distribuidor de Saltos

STL: Funcin Bucle


Inicio del Contador de Bucle

Seccin de Programa
que va a ser ejecutado
varias veces

Decremento del Contador


de Bucles

Contador de
Bucle <>0 ?

No
Continuar

L +4
NEXT:T MB10
.
.
.
.
.
L MB10
LOOP NEXT

// cargar el contador de bucle


// primera instruccin del bucle
// bucle
// bucle
// bucle
// bucle
// bucle
// ltimas instrucciones del bucle
// salto a la etiqueta NEXT

En este ejemplo, el programa comprendido


entre NEXT y NEXT se ejecutar 4 veces.

STL: Funcin Bucle

Saltos Condicionados
FC100

Si

No

AN I 0.5
JC M3

JU M2
M1 -

A I 0.0
JC M1

A I 0.6
= Q 4.3

?
Si

Si

M4 AN I 2.0
= Q 4.5
A I 2.1
JC M4

A I 0.2
= Q 4.0
JU M2

M3 BE

No

?
Si

M1 A
=

I 0.3
Q 4.1

M2 A
=

I 0.4
Q 4.2

No

?
Si

No

No

AN I 0.1
JC M1

M3 A I 0.7
= Q 1.4

M2 -

Si

No

Ejemplos de Saltos:Incidencia sobre Temporizadores


FC10
A
JC

I
MET1

0.0

Salto a meta1 con entrada a 1

A
A
=

I
I
Q

0.1
0.2
4.0

Combinacin binaria

A
L
SD
A
R

I
S5T#1S
T
I
T

0.2

Temporizador

0
0.3
0

A
CU
A
CD
A
L
S
A
R

I
C
I
C
I
C#10
C
I
C

0.4
1
0.5
1
0.6

L
T

C
QW

1
6

Carga y Transferencia

L
L
==I
=

C
C#12

Comparacin

4.1

A
=

T
Q

0
4.2

T
Q

0
4.3

MET1 A
=
BE

Contador

1
0.7
1

Salida temporizador
dentro de salto

Ejemplos de Saltos: Ejecucin Prioritaria


FC13
A
JC

I
PRI1

0.0

Con I0.0 se ejecutan A y D

A
JC

I
PRI2

0.1

Con I0.1 se ejecutan B y D

A
JC

I
PRI3

0.2

Con I0.2 se ejecutan C y D

JU

FIN

PRI1 A
A
=
JU

I
I
Q
FIN

1.0
1.1
4.0

Programa A

PRI2 A
A
=
JU

I
I
Q
FIN

1.2
1.3
4.1

Programa B

PRI3 A
A
=
JU

I
I
Q
FIN

1.4
1.5
4.2

Programa C

FIN

I
I
Q
FIN

1.6
1.7
4.3

Programa D

A
A
=
JU
BE

Ejemplos de Saltos: Mezcladora


Mediante un selector de 5 posiciones, realizar el programa que permita ajustar el tiempo de funcionamiento de una
mezcladora. Los tiempos fijos asignados a cada posicin se encuentran en el DB 10

DB10
0
2
4
6
8

FC11

OB1

S5T#1S
S5T#2S
S5T#3S
S5T#4S
S5T#5S

CALL
CALL
BE

FC
FC

A
L
SE
A
=
BE

10
11

I
MW
T
T
Q

1.0
10
20
20
4.0

DB
DBW
I
META
DBW
I
META
DBW
I
META
DBW
I
META
DBW
I
META

10
0
0.0

MW

10

FC10
OPN
L
A
JC
L
A
JC
L
A
JC
L
A
JC
L
A
JC
BEU
META T
BE

Ejemplos de Saltos: Lector de Alarmas


FC14
L
T
A
S
JC
ALA1 R
.
.
.
L
T
A
S
JC
ALA2 R
.
.
.
L
T
A
S
JC
ALA3 R
.
.
.
BEU

PB
MB
M
M
ALA0
M

ALA0 L
T

IB
PB

1
1

M
ALA1
M
ALA2
M
ALA3

10.0

A
JC
A
JC
A
JC
BE

0
0
0.0
10.0

Primera consulta de alarma

10.0
Cdigo de Programa Principal

PB
MB
M
M
ALA0
M

0
0
0.0
10.1

Segunda consulta de alarma

10.1
Cdigo de Programa Principal

PB
MB
M
M
ALA0
M

0
0
0.0
10.2

Tercera consulta de alarma

10.2
Cdigo de Programa Principal

10.1
10.2

Programa de alarma

2
0.1
4
0.2
6
0.3
8
0.4

Ejemplos de Saltos: Cinta Transportadora


Reconocimiento
de pieza defectuosa

Expulsor

FC20
Nomb CINTA
A
AN
=
S
AN
R

I
M
M
M
I
M

0.0
1.0
2.0
1.0
0.0
1.0

AN
BEC

2.0

AN
JC

I
BUEN

0.1

Salto si es buena

L
SLW
L
+I
T
JU

MB
1
1

20

Si es defectuosa se desplaza
el registro de desplazamiento
y se introduce un 1

MB
FIN

20

BUEN L
SLW
T

MB
1
MB

20

FIN

MB
QB

20
4

MB 20
I 0.0

L
T
BE

20

Evaluacin de orden de
desplazar

Si es buena se desplaza el
registro de desplazamiento
Presentar el registro de
desplazamiento en QB4

Ejemplos de Saltos: Saltos Distribuidos


FC 14
L IB 0
JL OVER
JU M0
JU M1
JU M2
JU M3
OVER: L
0
T QW 4
BEU
M0:

M1:

M2:

M3:

L
-16
SSI 2
T QW
BEU
L
16
SSI 2
T
QW
BEU
L
-16
SRW 2
T
QW
BEU
L
16
SRW
2
T QW 4

//Desplazar con signo a derecha


4

Saltos en Step 7 (I) SPA , SPB y SPBN (If Then-Else)


Las operaciones de saltos en Step 7 son parecidas conceptualmente a los que nos podemos encontrar en
otros lenguajes: interrumpen la ejecucin normal del programa (secuencial) y lo retoman en una etiqueta
dada.
Los saltos tienen una serie de caractersticas y requisitos:

Constan de una condicin de salto y una direccin donde saltar (la etiqueta).
La etiqueta puede tener como mximo 4 caracteres y el primer carcter no puede ser un nmero.
Los saltos pueden ser incondicionales y condicionados.
Se distinguen en los nombres de las etiquetas entre maysculas y minsculas (aaa no es la misma
etiqueta que AAA)

En la entrada de hoy vamos a ver un salto incondicional (SPA) y dos condicionados (SPB y SPBN). Te
mostrar en futuras entradas ms saltos para poder hacer un CASE o un FOR-NEXT, pero de momento
veremos estos que son los ms simples y probablemente ms habituales.

Saltos en Step 7: SPA


La operacin de salto SPA es un salto incondicional, es decir, se ejecuta siempre que se encuentre en el
camino de la ejecucin del programa y no depende del estado del RLO.
La sintxis ser de la siguiente forma:

.
SPA pepe
(cdigo que no se ejecutar)
pepe: NOP 0
(Cdigo que continuar ejecutndose)

Tras la etiqueta hay que escribir 2 puntos y obligatoriamente una instruccin.


La instruccin NOP 0 es una instruccin nula. No hace nada de nada. Ocupa 2 bytes en memoria y lleva un
minsculo tiempo de ejecucin. Adems slo es programable en AWL.
A mi personalmente me gusta colocar el NOP 0 tras la etiqueta por varios motivos

Porque cuando ests colocando las etiquetas SPA u otras me gusta colocar la etiqueta de salto
inmediatamente despus. Como no s cmo va a seguir el programa, coloco la NOP 0.
Si coloco una instruccin tras la etiqueta y maana borro la primera instruccin tras el salto corro
el peligro de no darme cuenta que adems de la instruccin, he borrado tambin el salto.
A mi juicio queda ms limpio ya que todas las etiquetas siempre llevarn el mismo empiece y es
ms visible entre todo el cdigo.
Manas personales (la de ms peso probablemente de todas)

La operacin de salto SPA en general no ir sola ya que salvo en ocasiones que quieras evitar la ejecucin
de una parte del cdigo porque ests depurando alguna parte, no tiene mucha utilidad en s misma.
Normalmente va a ir acompaada de otras instrucciones de salto, complementando las acciones. En el vdeo
de ejemplo podrs ver cmo se pueden combinar.

Saltos en Step 7: SPB y SPBN (If /Then)

Saltos en Step 7
Estas dos operaciones de salto son condicionadas, es decir, dependen del estado del RLO:

SPB: Se ejecutar el salto cuando el resultado de la operacin booleana sea true (RLO = 1)
SPBN: Se ejecutar el salto cuando el resultado de la operacin booleana sea FALSE (RLO = 0)

En definitiva es lo que podramos llamar los IF- THEN de otros lenguajes de programacin.
La sintxis ser de la siguiente forma:
.
Condicin booleana
SPB pepe
(cdigo que se ejecutar si RLO = 0 y no se ejecutar con RLO=1)
pepe: NOP 0
(Cdigo que continuar ejecutndose con o sin salto)


Evidentemente con SPBN sera idntico:
.
Condicin booleana
SPBN pepe
(cdigo que se ejecutar si RLO = 1 y no se ejecutar con RLO=0)
pepe: NOP 0
(Cdigo que continuar ejecutndose con o sin salto)

Como bien indica la sintxis el salto se produce si y slo si se produce la condicin de salto (RLO=0 1
dependiendo de si elijes SPB o SPBN). Esto implica, y quiero dejarlo bien claro aunque sea una obviedad,
que el cdigo que est bajo la condicin de salto y la etiqueta se ejecutar normalmente si la condicin de
salto no se satisface.
Para que tengas una idea de cmo hacer un IF-THEN-ELSE la estructura sera del estilo

Condicin IF
SPB Etiq1
(Codigo ELSE)
SPA Etiq2
Etiq1: NOP 0
(Codigo del IF)
Etiq2: NOP 0

Como puedes ver, hemos combinado el SPB con el SPA de forma que:

Si la condicin de salto se cumple, saltamos al Etiq1 y ejecutamos el cdigo del IF y continuamos


evitando el cdigo del ELSE.
Si la condicin de salto NO se cumple, ejecutamos a continuacin el cdigo del ELSE y hacemos
un salto incondicional (SPA) para evitar y no ejecutar el cdigo del IF saltando al Etiq2.

Como veis estas instrucciones empiezan a ser interesantes ya que nos van a dar bastante juego a la hora de
realizar nuestros programas.

Cundo los voy a usar?


En general vas a usar estas instrucciones cuando el cdigo a evitar o no no lleven aparejado un FC/FB ya
que en otro caso, es ms simple crear una booleana que te active la llamada a la funcion FB/FB que no
andar con saltos.
Es decir, la usar dentro de los FC/FB cuando el cdigo a ejecutar o a esquivar sea pequeo y no merezca
tener un FC/FB para ello ya que si el cdigo va a ser muy largo, bajo mi punto de vista es mejor
englobarlo en una funcin para un mejor seguimiento y depuracin.

Existen ms tipos de saltos en Step 7?


Efectivamente hay otros tipos de salto para realizar otro tipos de tareas como pueden ser los que se
generan en otros lenguajes como son las sentencias SELECT-CASE o FOR-NEXT entre otros

LOOP en Step 7 (Saltos II) Bucle For Next y


ejemplo de filtrado analogico
11 enero, 2013 en ejemplos, Teora, Tutoriales, Uncategorized, Videos 1 Comentario

inShare

En la ltima entrada vimos los saltos en Step 7 ms comunes. Hoy te voy a mostrar un nuevo tipo de
salto, que si provienes de la programacin en otros lenguajes, te va a sonar. Se trata de hacer bucles tipo
FOR-NEXT mediante la instruccin LOOP en Step 7.
Realmente la instruccin es muy sencilla: LOOP Etiqueta. Para explicarlo bien, vamos a desgranar el
siguiente cdigo:
(Cdigo)
L 10 > Lo primero que hacemos es cargar en el acumulador el nmero de ciclos del bucle.
NEXT: T MW10 -> Transferimos el valor del ACU-1 a nuestra marca de contador de ciclos
(Cdigo) > Implementamos el cdigo que queramos

L MW10 > Cargamos el valor del contador de ciclos en el ACU-1


LOOP NEXT > Ejecutamos el loop y saltamos a la etiqueta deseada (Llamada NEXT en este caso pero
podramos llamarla pepe)
(Cdigo) > Continuamos con el cdigo que queramos.
Vayamos con la explicacin del LOOP.

Qu hace el LOOP en Step 7?


La instruccin LOOP hace lo siguiente:
[unordered_list style="bullet"]

Toma el valor del ACU-1 y le resta una unidad.


Evalua el resultado de restar la unidad. Si el resultado no es cero, salta a la etiqueta. Si es cero (ya
ha terminado), continua en la lnea siguiente (no ejecuta el salto).

[/unordered_list]
Hay que tener en cuenta que es necesario una variable (en nuestro ejemplo MW10) de 16bits que sea
entera no negativa. El salto puede ser hacia delante o hacia atrs, pero la forma de hacer un FOR-NEXT
tradicional es como se muestra.
Por tanto, hemos hecho lo siguiente:
Cargar el nmero de iteraciones en el acumulador 1. Por ejemplo 10.
L 10
Tras ello, generamos cual va a ser nuestra meta de salto (Llamarla NEXT creo que es bastante adecuada
por su significado) y transferimos el valor del ACU-1 al contador de ciclos.
NEXT: T MW10
Por tanto, en el primer ciclo, MW10 valdr 10.
Como nota podrs pensar en el post sobre los saltos dijiste que lo mejor es poner la Meta seguido de
NOP 0 y ahora ests usando la instruccin directamente. Correcto. Es cierto que lo escrib y lo
mantengo. De hecho aqu podra hacer lo mismo y poner un
NEXT: NOP 0
T MW 10
pero sin que sirva de precedente creo que es ms intuitivo y fcil de entender que el NEXT va
asociado intrnsecamente al contador de ciclos por lo que evitamos el poner a instruccin nula ya que
siempre, siempre, siempre, ha de ponerse la transferencia del contador de ciclos tras la meta, por tanto,
seguido es ms adecuado en este caso no crees?

Bien, sigamos. Una vez transferido el valor a MW10 (recordemos que vale 10), ejecutaremos el cdigo
que queramos. Ojo, sin usar MW10 salvo de lectura, no carguis sobre l valores ya que desvirtuara el
valor del contador.
Una vez terminado el cdigo ejecutamos
L MW10
LOOP NEXT
Lo que hacemos es cargar el valor del contador (10 en la primera iteracin) y ejecutar LOOP. Como vale
10 >0, le resta una unidad (9) y salta a NEXT.
Es decir, saltar a NEXT: T MW10 y por tanto ahora el contador de ciclos valdr 9 ya que es lo que
tenemos en el acumulador 1!!
Luego volver a ejecutar el cdigo que queramos, cargar nuevamente este valor 9, le restar la unidad y
devolver un 8 para que se lo transfiramos al contador de ciclos.
Fcil verdad? Espero que no os haya parecido una explicacin para nios de prvulos pero es que hay
veces que con el tema de los acumuladores, mucha gente se la un poco.
Finalmente os he preparado un ejemplo que creo que os va a gustar. Se trata de realizar un filtrado de una
seal analgica de esta forma:
[unordered_list style="bullet"]

Tomaremos la seal cada 100 ms.


Pasaremos como entrada el valor analgico en tipo entero
Realizaremos un filtrado de los n ltimos ciclos donde n puede ser como mucho 200.
Nos devolver la media de los n ltimos ciclos como valor real
Nos devolver la medida de los 200 ltimos ciclos si hemos puesto n>20 y una seal booleana de
alarma indicando que el nmero de ciclos es demasiado grande y que por tanto
devolvemos solamente la media del mximo nmero de ciclos.

Tema 2: Programacin de PLCs


1. STEP 7
2. PROGRAMACIN BSICA AWL
Introduccin
Operaciones lgicas a nivel de bit
Marcas
Simblicos
Flancos
Temporizadores
Diagnosis e informacin del sistema
Contadores
Carga y Transferencia
Operaciones con acumuladores
Saltos
3. PROGRAMACIN ESTRUCTURADA

PLCs
Curso 2009/10

Pgina 1

Control del flujo del programa: Ops. de Salto

Permiten al programa interrumpir su desarrollo lineal, para continuar el


procesamiento en un punto diferente del programa.

El operando de una instruccin de salto es una meta o etiqueta.


meta:
4 caracteres mximo (el 1 letra) y distingue maysculas y minsculas
Ejemplo: SPA MOT1
Debe ir seguida de
Ejemplo:

: instruccin de lnea cuando sea la marca del salto.

MOT1: L EB 124
PLCs

Curso 2009/10

Pgina 2

Operaciones de Salto incondicional


SPA

salto incondicional a una meta (anterior o posterior)

SPL

salto utilizando una lista de metas


permite distribuir saltos conjuntamente con SPA

Ejemplo:

PLCs
Curso 2009/10

Pgina 3

Ejemplo con Operaciones de Salto

PLCs
Curso 2009/10

Pgina 4

Operaciones de Salto condicional (I)


Su ejecucin depender del cumplimiento, o no, de una determinada
condicin, vinculada a bits de la palabra de estado.

Las operaciones ms utilizadas son:


SPB

salto si RLO = 1

SPBN salto si RLO = 0

Otros saltos condicionales, en funcin de otros bits de palabra de estado:


SPBI y SPBIN

vinculadas a RB

SPO y SPS

vinculadas a OV y OS, respect

SPZ, SPN, SPP, SPM, SPMZ, SPPZ y SPU


=0

<>0

>0

<0

<=0

>=0

vinculadas a resultados de operaciones aritm.

no vlido (op. Artimtica no permitida, ejem: dividir por cero)

PLCs
Curso 2009/10

Pgina 5

Operaciones de Salto condicional (II)

Ejemplo:

PLCs
Curso 2009/10

Pgina 6

Operaciones de Salto condicional (III)

PLCs
Curso 2009/10

Pgina 7

Ops. de Salto: Bucle


La instruccin utilizada para el bucle es LOOP y el operando ser una meta para
que salte a ella en cada iteracin.
LOOP decrementa ACU1-L y salta si ACU1-L <> 0 a META
Ejemplo: L +5
PROX: T MB 10

inicializa contador de bucles


meta a la que salta

Segmento que se repite

L MB 10
LOOP PROX decrementa ACU1-L y salta si ACU1-L <>0
PLCs
Curso 2009/10

Pgina 8

Ops. de fin de bloque (I)


BEA o BE fin de bloque incondicionado.
Salta a) al fin de OB1

b) a lnea siguiente a la de llamada al bloque actual

BEB fin de bloque condicionado al RLO (si RLO=1)

PLCs
Curso 2009/10

Pgina 9

EJERCICIO (Entregable 6)

Tenemos una mezcladora que produce 2 tipos de productos,


magdalenas y donuts, para lo cual controla la receta, modificando
las proporciones de harina (A124.0) y leche (A124.1), y el tiempo
que est mezclndolos (A124.2).
La produccin empezar cuando E124.0 se ponga a 1
Si E124.1=1 produce magdalenas, para lo cual A124.0 est
encendido 2 segundos, A124.1 est encendido 1 segundo y A124.2
durante 3 sg.
Si E124.1=0 produce donuts, para lo cual los tiempos son 3, 2 y 4
segundos respectivamente.
El sistema debe ser robusto de forma que si est en medio de una
receta no debe interrumpirse aunque cualquiera de los dos
botones de entrada se modifique
La entrada E124.2 permite elegir si los productos y el proceso de
mezcla se realizan simultneamente (si E124.2=0) o de manera
secuencial (si E124.2=1)

PLCs
Curso 2009/10

Pgina 10

EquivalenteIEC

Tipo

Arranque

Dependedela
sealarranque

SI:Impulso

Impulso

Conexin

Si

SV:Impulsoprolongado

TP *

Impulso

Conexin

No

SE:Retardoalaconexin

TON

Retardo

Conexin

Retarso

Conexin

No

Desconexin

SS:Retardoalaconexinmemorizado

SA:Retardoaladesconexin(PRORROGA) TOFF

*TP:noseredispara conarranquesprximos

www.campusabierto.esCursodeProgramacindeAutmatas

SI

Disparo

SV

Reset
Tiempo
Valor
booleano

SE

Disparo
Reset
Tiempo
Valor
booleano
Disparo

SS

Reset
Tiempo
Valor
booleano
Disparo

SA

Reset
Tiempo
Valor
booleano

www.campusabierto.esCursodeProgramacindeAutmatas

Operaciones con Temporizadores

S7-300/400

Los temporizadores permiten distintas operaciones:


Funcionamiento en un modo determinado.
Borrar la temporizacin.
Re-arrancar un temporizador (FR).
Consultar su estado como un operando ms en operaciones lgicas
de bit.
Consultar su valor en ACU 1.
Modos de funcionamiento:
Impulso (SI).
Impulso prolongado (SV).
Retardo a la conexin (SE).
Retardo a la conexin con memoria (SS).
Retardo a la desconexin (SA).
1

Carga de un valor de temporizacin


El valor de temporizacin se debe cargar en la parte baja del ACU para
desde all transferirlo al temporizador mediante el set que determine
el modo de temporizacin adecuado.

El valor de temporizacin puede cargarse en la palabra baja del ACU


1 en formato binario, hexadecimal o BCD. Desde 0 a 9990 segundos

La siguiente sintaxis permite cargar un valor de temporizacin


predefinido: L W#16#abcd
a = base de tiempos
bcd = valor de temporizacin en formato BCD
Base de tiempos y cdigo respectivo:
10 ms
0
100 ms 1
1s
2
10 s
3
Registros afectados: ACU 1, ACU 2

Carga de un valor de temporizacin


Ejemplo:
L W#16#210

//esto introduce un valor de 10 segundos en ACU 1


(2 base de 1s, 10 los segundos que deseamos)
L S5T#aH_bbM_ccS_ddMS
a = horas, bb= minutos, cc = segundos, dd = milisegundos

En este caso la base de tiempos se selecciona de forma automtica,


tomndose la de valor ms bajo posible. Debido a esto los valores de
resolucin demasiado alta se redondean por defecto, alcanzando el
rango pero no la resolucin deseada.
Las posibles resoluciones y rangos son:
0,01 s 10MS a 9S_990MS
0,1 s 100MS a 1M_39S_900MS
1
s 1S a 16M_39S
10 s 10S a 2H_46M_30S
L S5T#00H02M23S00MS //esto introduce un valor de temporizacin
de2 minutos y 23 segundos en el ACU 1

Temporizador como impulso (SI)


Instruccin: SI
Si el RLO (al ejecutar esta instruccin) cambia de 0 a 1, el temporizador arranca. El temporizador marcha con el
valor de tiempo indicado en ACU1. Si el RLO cambia de 1 a 0 antes de terminar el tiempo, el temporizador se
detiene. La salida del temporizador entrega 1 mientras el temporizador corre.
Registros afectados: ER
Ejemplo:
U
L
SI
U
=

E 0.0
S5T#45s
T2
T2
A 0.1

//Empleamos la entrada 0.0 como entrada del temporizador


//Introducimos un valor de temporizacin de 45 segundos
//Empleamos el temporizador 2 como impulso
//Leemos la salida del temporizador
//Asignamos la salida del temporizador a la salida 0.1

Temporizador como impulso prolongado (SV)


Instruccin: SV
Si el RLO (al ejecutar esta instruccin) cambia de 0 a 1, el temporizador arranca y continua en marcha incluso si
el RLO cambia a 0 antes de que el temporizador termine. Mientras el tiempo esta corriendo, la salida vale 1.
Registros afectados: ER
Ejemplo:
U
L
SV
U
=

E 0.2
S5T#85s
T 9
T 9
A 9.1

//Empleamos la entrada 0.2 como entrada del temporizador


//Introducimos un valor de temporizacin de 85 segundos
//Empleamos el temporizador 9 como impulso prolongado
//Leemos la salida del temporizador
//Asignamos la salida del temporizador a la salida 9.1

Temporizador como retardo a la conexin (SE)


Instruccin: SE
El temporizador arranca cuando hay un flanco creciente en el RLO (al ejecutar esta instruccin). El temporizador
continua en marcha con el valor de temporizacin indicado en el ACU 1 mientras sea positivo el estado de seal
en la entrada (el RLO). El estado de la salida es 1 si el tiempo ha transcurrido sin errores y si el estado de la
entrada (RLO) es 1. Si la entrada (RLO) cambia de 1 a 0 mientras est en marcha el temporizador, ste cambia el
estado de la salida a 0. Registros afectados: ER
Ejemplo:
U
L
SE
U
=

E 0.7
S5T#65s
T 4
T 4
A 8.1

//Empleamos la entrada 0.7 como entrada del temporizador


//Introducimos un valor de temporizacin de 65 segundos
//Empleamos el temporizador 4 como retardo a la conexin
//Leemos la salida del temporizador
//Asignamos la salida del temporizador a la salida 8.1

Temporizador como retardo a la conexin (SS)


Instruccin: SS
Si la entrada (RLO en la ejecucin de la instruccin) cambia de 0 a 1, el temporizador arranca y continua
corriendo incluso si la entrada (RLO) cambia a 0, antes que el temporizador termine de contar. Si el tiempo ha
concluido la salida continua a 1 independientemente del estado de la entrada (RLO). Solo se puede poner a 0 la
salida mediante un Reset. El temporizador vuelve a arrancar con el valor de temporizacin indicado en el ACU 1 si
el estado de la seal en la entrada (RLO) cambia de 0 a 1 mientras el temporizador est en marcha.
Registros afectados: ER
Ejemplo:
U
L
SS
U
=

E 1.2
S5T#32s
T 2
T 2
A 3.1

//Empleamos la entrada 1.2 como entrada del temporizador


//Introducimos un valor de temporizacin de 32 segundos
//Empleamos el temporizador 2 como retardo a la c. con memoria
//Leemos la salida del temporizador
//Asignamos la salida del temporizador a la salida 3.1

Temporizador como retardo a la desconexin (SA)


Instruccin: SA
Si la entrada (RLO en la ejecucin de la instruccin) cambia de 1 a 0, el temporizador arranca y continua
corriendo. Si la entrada (RLO) cambia a 1 antes que el temporizador termine de contar, se resetea el
temporizador. Mientras el tiempo est corriendo, la salida vale 1.
Registros afectados: ER
Ejemplo:
U
L
SA
U
=

E 4.2
S5T#32s
T 7
T 7
A 1.1

//Empleamos la entrada 4.2 como entrada del temporizador


//Introducimos un valor de temporizacin de 32 segundos
//Empleamos el temporizador 7 como retardo a la desconexin
//Leemos la salida del temporizador
//Asignamos la salida del temporizador a la salida 1.1

Eleccin del Temporizador adecuado

Borrado de un Temporizador AWL S7-300/400

Instruccin: R T
Esta instruccin borra (reinicia) el temporizador indicado. El temporizador vuelve al estado de
reposo, es decir parado y con la salida igual a 0.
Registros afectados: ER
Ejemplo:
U E 0.0
L S5T#2s
SS T 2
U E 0.1
R T 2
U T 2
= A 3.1

//Empleamos la entrada 0.0 como entrada del temporizador


//Introducimos un valor de temporizacin de 2 segundos
//Empleamos el temporizador 2 como retardo a la c. con memoria
//Empleamos la entrada 0.1 como entrada de borrado
//Si la entrada 0.1 cambia de 0 a 1 el temporizador 2 se borra
//Leemos la salida del temporizador
//Asignamos la salida del temporizador a la salida 3.1

10

Re-arranque de un Temporizador AWL S7-300/400


Instruccin: FR T
Cuando el RLO cambia de 0 a 1 (flanco de subida) delante de una operacin FR se habilita el
temporizador. Este cambio del estado de seal siempre es necesario para habilitar un temporizador.
Para arrancar un temporizador y ejecutar una operacin normal de temporizador no hace falta
habilitarlo. Esta funcin se emplea nicamente para redisparar un temporizador que est en marcha,
es decir, para rearrancarlo. Este rearranque slo puede efectuarse cuando la operacin de arranque
contina procesndose con un RLO de 1. Registros afectados: ER
Ejemplo:
U
FR
U
L
SI
U
=

E 2.0
T 1
E 2.1
S5T#5s
T 1
T 1
A 4.0

//Empleamos la entrada 2.0 como re-arranque


//Re-arrancamos el temporizador 1 si la E 2.0 pasa a 1
//Empleamos la entrada 2.1 como entrada del temporizador
//Introducimos un valor de temporizacin de 5 segundos
//Empleamos el temporizador 1 como impulso
//Leemos la salida del temporizador
//Copiamos la salida del temporizador a la salida 4.0

Si el RLO cambia de 0 a 1 en la entrada de re-arranque mientras est en marcha el temporizador, el


temporizador vuelve a arrancar. El tiempo programado se emplea como tiempo actual para el rearranque. Un cambio del RLO de 1 a 0 en la entrada de re-arranque no produce ningn efecto.
Un cambio del RLO de 0 a 1 en la entrada de habilitacin no afecta al temporizador si todava hay
un RLO 0 en la entrada del temporizador.
11

Re-arranque de un Temporizador AWL S7-300/400


Instruccin: FR T
Cuando el RLO cambia de 0 a 1 (flanco de subida) delante de una operacin FR se habilita el
temporizador. Este cambio del estado de seal siempre es necesario para habilitar un temporizador.
Para arrancar un temporizador y ejecutar una operacin normal de temporizador no hace falta
habilitarlo. Esta funcin se emplea nicamente para redisparar un temporizador que est en marcha,
es decir, para rearrancarlo. Este rearranque slo puede efectuarse cuando la operacin de arranque
contina procesndose con un RLO de 1. Registros afectados: ER
Ejemplo:
U
FR
U
L
SI
U
=

E 2.0
T 1
E 2.1
S5T#5s
T 1
T 1
A 4.0

//Empleamos la entrada 2.0 como re-arranque


//Re-arrancamos el temporizador 1 si la E 2.0 pasa a 1
//Empleamos la entrada 2.1 como entrada del temporizador
//Introducimos un valor de temporizacin de 5 segundos
//Empleamos el temporizador 1 como impulso
//Leemos la salida del temporizador
//Copiamos la salida del temporizador a la salida 4.0

Si el RLO cambia de 0 a 1 en la entrada de re-arranque mientras est en marcha el temporizador, el


temporizador vuelve a arrancar. El tiempo programado se emplea como tiempo actual para el rearranque. Un cambio del RLO de 1 a 0 en la entrada de re-arranque no produce ningn efecto.
Un cambio del RLO de 0 a 1 en la entrada de habilitacin no afecta al temporizador si todava hay
un RLO 0 en la entrada del temporizador.
12

Lectura de un valor de Temporizacin AWL S7-300/400

Instrucciones: L T y LC T
Con la instruccin "L T" introducimos en el ACU 1 (parte baja) el valor del temporizador
especificado en binario. El valor en ACU 1 puede ser introducido en otro temporizador.
Con la instruccin "LC T" introducimos en el ACU 1 (parte baja) el valor del temporizador
especificado en BCD. En esta codificacin no es posible pasar el valor de ACU 1 a otro
temporizador.
Registros afectados: ACU 1, ACU 2
Ejemplos:
L T 1 //introduce el valor del temporizador 1 en el ACU 1
LC T 2 //introduce el valor del temporizador 2 en el ACU 1 en
BCD

13

Operaciones con Temporizadores

S7-300/400

TEMPORIZADORES SE Y SI
Temporizadores sin memoria: Tenemos los temporizadores SE y SI. Analicemos cada
uno de ellos.
Temporizador SE: Es un temporizador de retardo a la conexin. Para programar el
temporizador, necesitamos cinco operaciones como mnimo.
1 Necesitamos una condicin a partir de la cual empiece a temporizar. Esta condicin
puede constar de una sola instruccin o de varias.
2 Necesitamos decirle cuanto tiempo tiene que temporizar.
3 Necesitamos decirle el modo de funcionamiento y n de temporizador que
queremos utilizar. (En cada CPU tenemos una cantidad de temporizadores)
4 Queremos que en algn momento dado, (mientras temporiza, cuando ha acabado de
temporizar, etc.)
5 haga algo.
Alguna de estas operaciones pueden constar de ms de una instruccin.

14

Temporizadores SE y SI S7-300/400
El modo de funcionamiento es el siguiente:

Adems de lo que hemos visto, en cualquier momento podemos hacer un RESET del
temporizador. Para hacer un RESET necesitamos una condicin. En el momento se
cumpla si al temporizador le corresponda estar a 1, automticamente se pondr a cero
aunque por su modo de funcionamiento no le corresponda.

15

Temporizadores SE y SI S7-300/400
Tenemos un semforo con las tres luces verde, amarillo y rojo. Tenemos dos pulsadores
de mando: un pulsador de marcha y un pulsador de paro.

Con el pulsador de marcha quiero que comience el ciclo. El ciclo de funcionamiento es el


siguiente:
1/ Verde durante 5 seg.
2/ Verde + Amarillo durante 2 seg.
3/ Rojo durante 6 seg.
El ciclo es repetitivo hasta que se pulse el pulsador de paro. En ese momento se apaga
todo. Siempre que le d al pulsador de marcha quiero que empiece por el verde.

16

Temporizadores SE y SI S7-300/400
U E 0.0
S A 4.2
U A 4.2
L S5T#5S
SE T 1
U T1
S A 4.1
U A 4.1
L S5T#2S
SE T 2
U T2
S A 4.0
R A 4.1
R A 4.2
U A 4.0
L S5T#6S
SE T 3
U T3
S A 4.2
R A 4.0
U E 0.1
R A 4.0
R A 4.1
R A 4.2
BE

//Al activar el pulsador de marcha


//Encender el verde
//Si se ha encendido el verde
//Cuenta 5 segundos
//Con el temporizador 1
//Y cuando acabes de contar
//Enciende el amarillo
//Si se ha encendido el amarillo
//Cuenta 2 segundos
//Con el temporizador 2
//Y cuando acabes de contar
//Enciende el rojo
//Apaga el amarillo
//Y apaga el verde
//Si se ha encendido el rojo
//Cuenta 6 segundos
//Con el temporizador 3
//Cuando acabes de contar
//Enciende el verde
//Y apaga el rojo
//Si se activa el pulsador de paro
//Apaga el rojo
//Apaga el amarillo
//Apaga el verde

17

Temporizadores SE y SI S7-300/400

18

Automatizacin de un depsito AWL S7-300/400


Se tiene un tanque de lquidos para su operacin se tiene un selector de mando. Podemos seleccionar modo
manual o modo automtico. Si seleccionamos modo manual, lo que queremos es que mientras est conectada, la
bomba est funcionando, y cuando desconectemos que se pare la bomba. No se quiere atender a la sealizacin
de nivel. En modo automtico el nivel se debe mantener entre los detectores de nivel. Se dispone de una
proteccin trmica de motor con indicador luminoso en el panel de control.
Segmento 1: MANUAL
U E 0.0 //Si activamos en modo manual
= A 4.0 //Pon en marcha la bomba
= A 4.1 //Enciende la luz de marcha
Segmento 2: AUTOMTICO
U E 0.1 //Si est en automtico
U E 0.7 //Y est bien el rel
U E 0.2 //Y est activo el nivel de abajo
UN E 0.3 //Y no est activo el nivel de arriba
S A 4.0 //Pon en marcha la bomba
S A 4.1 //Y enciende la luz de marcha
U E 0.1 //Si est en automtico
U E 0.7 //Y est bien el rel
UN E 0.2 //Y no est activo el nivel de abajo
U E 0.3 //Y se ha activado el nivel de arriba
ON E 0.7 //O ha saltado el rel
R A 4.O //Para la bomba
R A 4.1 //Apaga la luz de marcha
UN E 0.7 //Si ha saltado el rel
= A 4.7 //Avsame con la luz de rel
BE

19

Automatizacin de un depsito AWL S7-300/400


Si hacemos la prueba de este circuito veremos que no funciona
correctamente. Vemos que en modo manual s que funciona pero en
modo automtico no para la bomba cuando debera.

Para resolver este circuito: nos hace falta utilizar marcas auxiliares.
En un mismo bloque no podemos activar la misma salida dos veces
con condiciones diferentes porque se interfieren entre ellas.

Las salidas no se activan en el mismo instante en el que se lee la


instruccin correspondiente. Existe un registro interno que se denomina
PAA (Imagen de proceso de salida), en el que se van almacenando los
valores que se tienen que transferir a las salidas cuando finalice el
correspondiente ciclo de scan.

Cuando se lea la instruccin BE es cuando se mandarn estos valores


a las salidas reales. Si hemos enviado varios valores dentro del mismo
ciclo de scan, el que realmente llegar a las salidas, ser el ltimo que
hemos enviado.
20

Automatizacin de un depsito AWL S7-300/400


Segmento 1: MANUAL
U E 0.0
= M 0.0
= M 0.1

//Si est en manual


//Activa la marca 0.0
//Y activa la marca 0.1

Segmento 2: AUTOMTICO
U E 0.1
U E 0.7
U E 0.2
UN E 0.3
S M 0.2
S M 0.3
U E 0.1
U E 0.7
UN E 0.2
U E 0.3
ON E 0.7
R M 0.2
R M 0.3
UN E 0.7
= A 4.7

//Si est en automtico


//Y est el rel bien
//Y est activo el nivel inferior
//Y no est activo el nivel superior
//Activa la marca 0.2
//Y activa la marca 0.3
//Si est en automtico
//Y est el rel bien
//Y no est activo el nivel inferior
//Y se ha activado el nivel superior
//O ha saltado el rel
//Desactiva la marca 0.2
//Y desactiva la marca 0.3
//Si no est el rel
//Activa la luz de rel.
21

Automatizacin de un depsito AWL S7-300/400


A continuacin se aaden las marcas a las salidas.
U
O
=
U
O
=

M
M
A
M
M
A

0.0 //Si est activa la marca 0.0


0.2
//O est activa la marca 0.2
4.0
//Pon en marcha la bomba
0.1
//Si est activa la marca 0.1
0.3
//O la marca 0.3
4.1
//Enciende la luz de marcha

Ahora ya no funciona el trmico en el modo manual. Al utilizar marcas diferentes para cada tipo de
funcionamiento, el trmico slo acta sobre las marcas de modo automtico. Slo estamos
haciendo un reset de una de las marcas que activan la bomba. Nos falta resetear la otra marca.
Tendremos que aadir las siguientes lneas.
UN E 0.7
R M 0.0
R M 0.1
BE

//Si ha saltado el rel


//Desactiva la marca 0.0
//Y desactiva la marca 0.1

Otra posible solucin sera programar el paro de la bomba por apertura del rel trmico en el ltimo
segmento. Los paros de emergencia se suelen programar al final.
Ahora podemos hacer todas las objeciones que queramos y corregir sobre lo que ya tenemos
hecho.
22

Automatizacin de un depsito AWL S7-300/400


Por ejemplo, puedo querer asegurarme que cuando se pone en marcha en modo manual no est a
la vez en modo automtico. Se puede suponer que por error se pueden dar las dos circunstancias a
la vez y quiero evitar ese error.
Se aaden las instrucciones pertinentes.
U E 0.0
UN E 0.1
Ahora ya tenemos la base del programa. Podemos aadir todo lo que creamos que sea necesario o
conveniente. Por ejemplo, en este caso no se ha tenido en cuenta la situacin de que despus de
haber estado en manual o en automtico,volvamos a la posicin de reposo. En automtico he hecho
sets a ciertas marcas. Cuando volvamos a la posicin de reposo esas marcas tendrn que volver a
cero. De lo contrario podra darse el caso de que estando en la posicin de reposo, tengamos la
bomba en marcha. Para remediar esto podra aadir las siguientes instrucciones:
UN
UN
R
R

E
E
A
A

0.0
0.1
4.0
4.1

.......
23

Control cintas transportadoras AWL S7-300/400


Funcionamiento: Es un automatismo para seleccionar cajas por su tamao. La cinta
transportadora A4.0 est activa esperando una caja. Cuando se activa el sensor E0.0 la cinta A4.1
se pone en marcha, y la cinta A4.0 se detiene. Para seleccionar la caja hay dos sensores: E0.1 y
E0.2, este ltimo tambin indica que la caja sale de la cinta.
Si la caja es grande se activaran los 2 sensores a la vez, por lo que la caja se desplazara por la
cinta transportadora A5.0 que funcionara durante 5 seg.
Si la caja es pequea nunca se activaran los dos sensores a la vez, y pasara a la cinta para cajas
pequeas A5.1 que funcionara 4 seg. Una vez que la caja salga de la cinta intermedia A4.1
podremos procesar otra caja activando A4.0.
Las cajas van llenando dos contenedores. Como opcin, se podr poner dos contadores que
cuenten las cajas grandes y pequeas, y que cuando lleguen a 7 cajas grandes y 5 pequeas, se
detenga el proceso hasta que el operario sustituya los contenedores por otros vacos y le d a un
pulsador de acuse de recibo.

24

Automatizacin de un sistemas de cintas AWL S7300/400


//Activacin de las cintas
UN A 4.1
= A 4.0
U E 0.0
S A 4.1

//Si no est activada la cinta intermedia


//que se activa la primera cinta
//Si sensor de llegada de caja a la cinta intermedia
//activar la cinta intermedia

//Seleccin por tamao:


U E 0.1
U E 0.2
S M 0.0
U E 0.2
FN M 0.1
= M0.2

//Si se activan los dos sensores


//Es que es una caja grande, lo guardo en una marca
//Cuando se activa el sensor de salida de la cinta
//intermedia por flanco positivo
//Lo guardo en una marca

//Segn el tamao activo la cinta de salida:


U M 0.2
U M 0.0
L S5T#5S
SV T 1
U T1
= A 5.0
U M 0.2
UN M 0.0
L S5T#4S
SV T 2
U T 2
= A 5.1
U M 0.2
R A 4.1
R M 0.0

//Cuando sale la caja


//y es grande

//activo la cinta para grandes durante 5 seg.


//Cuando sale la caja
//y no es grande

//activo la cinta para pequeas durante 4 seg


//Cuando sale la caja
//Desactivo la cinta intermedia
//Reseteo la marca que me indica el tamao

25

Operaciones de Temporizacin
Automatizacin Industrial

ndice
TEMA Operaciones de Temporizacin
1. Operaciones de Tiempo
2. Orden de las Instrucciones
3. Cargar una Temporizacin
4. Salida de una Temporizacin
5. Eleccin del Temporizador Apropiado
6. Eleccin del Temporizador Apropiado
7. Programacin de Temporizadores
8. Ejemplos de Programacin de Temporizadores
8.1 Generador de Impulsos
8.2 Generador de Onda Cuadrada Simtrica
8.3 Generador de Onda Cuadrada Asimtrica
8.4 Arranque Estrella/Tringulo

Introduccin
Las operaciones relacionadas con temporizadores permiten medir secuencias de tiempo,
como, esperas, periodo de tiempo de una medida o generar impulsos
En la memoria para cada temporizador hay reservados 16 bits
Tiene acceso a la zona de temporizadores:
las operaciones de temporizacin
actualizacin por reloj (S.O.) de las palabras de temporizacin
Se contemplan 5 tipos de temporizadores:
impulso
impulso prolongado
retraso a la conexin
retraso a la conexin memorizado
retraso a la desconexin

Operaciones de Tiempo
Operacin
SP

SE

SD

SS

SF

Identificador
T

Operando

Significado
Arrancar como Impulso una Temporizacin
La temporizacin se arranca con el flanco creciente del RLO.
Con el RLO a 0 se pone a 0 la temporizacin.
Cualquier consulta durante la temporizacin indica estado de seal 1.
Arrancar como Impulso Prolongado una Temporizacin
La temporizacin se arranca con el flanco creciente del RLO.
Un RLO a 0 no afecta la temporizacin.
Cualquier consulta durante la temporizacin indica estado de seal 1.
Arrancar como Retardo a la Conexin una Temporizacin
La temporizacin se arranca con el flanco creciente del RLO.
Con el RLO a 0 se pone a 0 la temporizacin.
Las consultas indican estado de seal 1 cuando ha transcurrido la
temporizacin y en la entrada sigue aplicando el RLO.
Arrancar como Retardo a la Conexin Memorizada una Temporizacin
La temporizacin se arranca con el flanco creciente del RLO.
Un RLO a 0 no afecta la temporizacin.
Las consultas indican estado de seal 1 cuando ha transcurrido la
temporizacin.
El estado de seal es 0 cuando la temporizacin ha sido borrada con la
operacin R.
Arrancar como Retardo a la Desconexin una Temporizacin
La temporizacin se arranca con el flanco decreciente del RLO.
Con el RLO a 1 se ajusta la temporizacin a su valor inicial.
Las consultas indican estado de seal 1 mientras el RLO a la entrada sea 1 o
corra la temporizacin.
Reponer (borrar) una Temporizacin
La temporizacin se repone al valor inicial mientras el RLO sea 1.
Un RLO 0 no afecta la temporizacin.
Las consultas indican estado de seal 0 mientras la temporizacin se reponga o
no haya sido todava arrancada.
Parmetro
AG S7-300
0 ... 127

Tipos de Temporizadores
Impulso
Arrancar

A I 0.0
L S5T#2S
SP T 1

Poner a 0
Salida Q

Impulso
Prolongado

<T

Arrancar

A I 0.1
L S5T#2S
SE T 2

Poner a 0
Salida Q

Retardo a la
Conexin

Arrancar

A I 0.2
L S5T#2S
SD T 3

Poner a 0
T

Salida Q

Retardo a la
Conexin
Memorizado

<T

Arrancar
Poner a 0

A I 0.3
L S5T#2S
SS T 4

Retardo a la
Desconexin

Salida Q

Arrancar

A I 0.4
L S5T#2S
SF T 5

Poner a 0
Salida Q

Tipos de Temporizadores
Seal de entrada
Impulso (SP)

Impulso prolongado (SE)

Retraso a la conexin (SD)

Retraso a la conexin
memorizado (SS)

Retraso a la
desconexin (SF)

Eleccin del Temporizador Apropiado

Orden de las Instrucciones


ARRANCAR
A I
0.0
L S5T#2S
SD T
0
PONER A CERO
A
R

I
T

0.1
0

T0
S_ODT
BI

I 0.0

S5T#2S

TV

I 0.1

DBW 6

BCD

QW 6

Q 4.0

CONSULTAS
DIGITALES
L
T
LC
T

T
DBW
T
QW

0
6
0
6

CONSULTAS
BINARIAS
A
=

T
Q

0
4.0

Arrancar
I 0.0
Poner a cero
I 0.1
Corre el
tiempo
Estado en Q
Valor de
temporizacin
BI, BCD

<< T >>

Formato de la Palabra de Tiempo


15

12 11

Irrelevante Base de
tiempo

4 3

101

102

100

Valor de temporizacin en BCD (0 a 999)

Para fijar el valor de tiempo hay que respetar las siguientes reglas sintcticas
- S5T#aHbbMccSdddMS
siendo: a=horas, bb=minutos, cc=segundos y ddd=milisegundos
- La base de tiempos se selecciona automticamente y el valor del temporizador
se redondea al prximo nmero inferior con esa base de tiempo

Cdigo binario Base de tiempo


00
10 ms
01
100 ms
10
1s
11

10 s

Resolucin
0.01segundos
0.1segundos
1 segundo

Rango de tiempo
10 Ms a 9S 990MS
100 MS a 1M 39S 900MS
1S a 16M 39S

10 segundos

10S a 2H 46M 30S

Especificacin del Tiempo (I)


Especificacin de Tiempo
El valor de temporizacin se debe cargar en la parte baja del ACU 1, para desde all
transferirlo al temporizador mediante el set que determine el modo de temporizacin
adecuado.
El tiempo va decrementando hasta ser igual a 0.
El valor de temporizacin puede cargarse en la palabra baja del ACU 1 en formato
binario, hexadecimal o BCD.
Se debe elegir una base de tiempos y un valor dentro de dicha base, con lo que podemos
realizar temporizaciones desde 0 a 9990 segundos (0H00M00S00MS a
2H46M30S00MS).

Especificacin del Tiempo (II)


Especificacin del Tiempo como una Constante
Formato: L W#16#abcd
a = base de tiempos
bcd = valor de temporizacin en formato BCD
Ejemplo:
L W#16#2010; //esto introduce un valor de 10 segundos en ACU 1
//(2 base de 1s, 10 los segundos que deseamos)

Formato S5TIME# o S5T#: L S5T#aHbbMccSddMS


a = horas, bb= minutos, cc = segundos, dd = milisegundos
En este caso la base de tiempos se selecciona de forma automtica, tomndose la de valor ms bajo
posible. Debido a esto los valores de resolucin demasiado alta se redondean por defecto, alcanzando
el rango pero no la resolucin deseada.
Ejemplos:

L S5T#00H02M23S00MS

//esto introduce un valor de temporizacin de


//2 minutos y 23 segundos en el ACU 1
//Duracin 10 segundos
//Duracin 1 minuto + 10 milisegundos

L S5TIME#10s;
L S5T#1m10ms;

Especificacin del tiempo como


una Variable

L
T
.......
L

S5T#10m; //Duracin 10 minutos


MW 20; //Salvar la duracin
MW 20; //Cargar el tiempo

Carga de una Temporizacin


Preseleccin de Tiempo

S_ODT
S
BI

- Constante S5TIME
- Palabra de Datos DBW
- Palabra de Entrada IW
- Palabra de Salida QW
- Palabra de Marca MW
- ...

DBW 10

TV
R

Base de Tiempos

BCD
Q

- - 0 1 0 0 1 1 0 0 1 1 0 0 1 1
126

IW 126

127

- - 0 1 0 0 1 1
0 0 1 1 0 0 1 1

333.1
Configuracin de la Palabra
para la Preseleccin del
Tiempo (333 x 0,1s)

- - 0 1 0 0 1 1 0 0 1 1 0 0 1 1

Bits de Estado de los Temporizadores


(en preseleccin sin significado)

Valor de Temporizacin (0..999 BCD)


Base de Tiempos

B ase
B in a rio
F a c to r

0
00
0 ,0 1 s

1
01
0 ,1 s

2
10
1s

3
11
10s

Lectura de un Temporizador

Tiempo actual en T1
L T1

LC T1
ACU 1

Temporizacin en
Binario

Base de Temporizacin de tres


tiempos
dgitos en BCD

Posiciones de bits ocupadas con 0

Lectura de una Temporizacin


Palabra de Temporizacin Dual

Palabra de Temporizacin Decimal


(BCD)

T 10

T 10

S_ODT
S
BI

DBW 1

TV

QW 3

L
T
L
T
L
T
L
T

MW 2

BCD

PW 4

T 10
DBW 1
T 10
MW 2
T 10
QW 3
T 10
PW 4

10 9

DBW 5

TV

QW 7

13 12

10 9

0 0 0 0 0 0

T 10
DBW 5
T 10
MW 6
T 10
QW 7
T 10
PW 8

Valor de Temporizacin
10 9

LC T 10

L T 10
15

PW 8

15

LC
T
LC
T
LC
T
LC
T

MW 6

BCD

Base de
Tiempo

Valor de Temporizacin
15

S_ODT
S
BI

Dual

BCD

ACU 1

15

13 12 11

8 7

4 3

0 0
102
101
100
Base de Valor de Temporizacin
Tiempo

ACU 1

Temporizador en modo Impulso


Cuadro FBD

Parmetro Tipo de
datos

Area de
memoria

Descripcin

No.

TIMER

BOOL

I, Q, M, D, L, T,
C
I, Q, M, D, L
o constante
I, Q, M, D, L, T,
C
I, Q, M, D, L
I, Q, M, D, L
I, Q, M, D, L

Nmero de identificacin del temporizador.


El rea depende de la CPU utilizada.
Entrada de arranque

TV

S5TIME

BOOL

BI
BCD
Q

WORD
WORD
BOOL

Valor de temporizacin preseleccionado


(margen: 0 9999)
Entrada de desactivacin
Tiempo restante (formato de entero)
Tiempo restante (formato BCD)
Estado del temporizador

Cronograma

Esquema Elctrico

Estados de
seal
I 0.0

I 0.0

0
1

Q 4.5

T1
Q 4.5

Tiempo en s
5s

T1: Rel de tiempo con contacto de


paso al conectar

STL
A I 0.0
L S5T#5S
SP T 1
NOP 0
NOP 0
NOP 0
A T 1
= Q 4.5

FBD

LAD

Temporizador en modo Impulso Prolongado


Cuadro FBD

Parmetro Tipo de
datos

Area de
memoria

Descripcin

No.

TIMER

BOOL

TV

S5TIME

BOOL

BI
BCD
Q

WORD
WORD
BOOL

I, Q, M, D, L, T,
C
I, Q, M, D, L
o constante
I, Q, M, D, L, T,
C
I, Q, M, D, L
I, Q, M, D, L
I, Q, M, D, L

Nmero de identificacin del temporizador.


El rea depende de la CPU utilizada.
Entrada de arranque
Valor de temporizacin preseleccionado
(margen: 0 9999)
Entrada de desactivacin
Tiempo restante (formato de entero)
Tiempo restante (formato BCD)
Estado del temporizador

Cronograma

Esquema Elctrico

Estados de
seal
I 0.0

I 0.0

T2

Q 4.5

Q 4.5

Tiempo
t

A I
L IW
SE T
NOP 0
NOP 0
NOP 0
U T
= Q

STL
0.0
16
2

2
4.5

T2: Rel de tiempo con formacin de


paso al conectar

FBD

LAD

Temporizador en modo Retraso a la Conexin


Cuadro FBD

Parmetro Tipo de
datos

Area de
memoria

Descripcin

No.

TIMER

BOOL

TV

S5TIME

BOOL

BI
BCD
Q

WORD
WORD
BOOL

I, Q, M, D, L, T,
C
I, Q, M, D, L
o constante
I, Q, M, D, L, T,
C
I, Q, M, D, L
I, Q, M, D, L
I, Q, M, D, L

Nmero de identificacin del temporizador.


El rea depende de la CPU utilizada.
Entrada de arranque
Valor de temporizacin preseleccionado
(margen: 0 9999)
Entrada de desactivacin
Tiempo restante (formato de entero)
Tiempo restante (formato BCD)
Estado del temporizador

Cronograma

Esquema Elctrico

Estados de
seal
1

I 0.0

I 0.0

0
1

Q 4.5

T3

Tiempo en s
9s

9s

Q 4.5
4

STL
A I 0.0
L S5T#9S
SD T 3
NOP 0
NOP 0
NOP 0
A T 3
= Q 4.5

FBD

LAD

Temporizador en modo Retraso a la Conexin Memorizado


Cuadro FBD

Parmetro Tipo de
datos

Area de
memoria

Descripcin

No.

TIMER

BOOL

TV

S5TIME

BOOL

BI
BCD
Q

WORD
WORD
BOOL

I, Q, M, D, L, T,
C
I, Q, M, D, L
o constante
I, Q, M, D, L, T,
C
I, Q, M, D, L
I, Q, M, D, L
I, Q, M, D, L

Nmero de identificacin del temporizador.


El rea depende de la CPU utilizada.
Entrada de arranque
Valor de temporizacin preseleccionado
(margen: 0 9999)
Entrada de desactivacin
Tiempo restante (formato de entero)
Tiempo restante (formato BCD)
Estado del temporizador
Cronograma

Esquema Elctrico
2

I 0.0

0
1

I 0.1

I 0.1

0
1

Q 4.5

T iem po en s
t

STL
A I 0.0
L S5T#5S
SS T 4
A I 0.1
R T 4
NOP 0
NOP 0
A T 4
= Q 4.5

H 1

I 0.0

H 1

Q 4.5
4
H 1: R el auxiliar

FBD

H 1

T 4

LAD

Temporizador en modo Retraso a la Desconexin


Cuadro FBD

Parmetro Tipo de
datos

Area de
memoria

Descripcin

No.

TIMER

BOOL

TV

S5TIME

BOOL

BI
BCD
Q

WORD
WORD
BOOL

I, Q, M, D, L, T,
C
I, Q, M, D, L
o constante
I, Q, M, D, L, T,
C
I, Q, M, D, L
I, Q, M, D, L
I, Q, M, D, L

Nmero de identificacin del temporizador.


El rea depende de la CPU utilizada.
Entrada de arranque
Valor de temporizacin preseleccionado
(margen: 0 9999)
Entrada de desactivacin
Tiempo restante (formato de entero)
Tiempo restante (formato BCD)
Estado del temporizador

Cronograma

Esquema Elctrico

I 0.0

0
1

I 0.0

Q 4.5

T5

Tiempo en s
t

Q 4.5
4

A I
L MW
SF T
NOP 0
NOP 0
NOP 0
A T
= Q

STL
0.0
14
5

FBD

5
32.5

Forma de Cargar un Temporizador


Representacin Esquemtica
Programa

Seal del
Temporizador 17
0

L S5T#1S
SP T 17

1s - n * tp
A T 17
= Q 4.5

n: Cantidad de ejecuciones del programa


tp: Tiempo de ejecucin del programa

Explicacin
La figura muestra la ejecucin n + 1
desde el arranque del temporizador T 17
(S5T#1S es 1s). A pesar de que la
temporizacin transcurri justo tras la
instruccin = Q 4.5, la salida 4.5 se
mantiene activada. Este cambio slo se
considera durante la siguiente ejecucin
del programa.

LAD

Marcas de Ciclo (I)


9Las marcas de ciclo cambian su estado binario peridicamente
9La relacin impulso-pausa es 1:1
9La frecuencia est ajustada y es fija
9Hay definidas 8 frecuencias fijas que pueden almacenarse en un byte de
marcas
9El byte de marcas se parametriza en la configuracin de la CPU

7 6 5 4 3 2 1 0
0.1 seg. (10 Hz)
0.2 seg. (5 Hz) parpadeo
0.4 seg. (2.5 Hz) intermitencia rpida
0.5 seg. (2 Hz)
0.8 seg. (1.25 Hz) intermitencia
1.0 seg. (1 Hz)
1.6 seg. (0.625 Hz) intermitencia lenta
2.0 seg. (0.5 Hz)

Marcas de Ciclo (II)


Configuracin en hardware de la CPU

Ejemplo Generador de Impulsos


Cronograma
1

I 0.0

0
1

Ejemplo
Se desea que la marca 2.0
funcione como un generador de
impulsos de periodo 2 segundos

M 2.0

Tiempo
<

2s

> <

2s

> <

2s

STL
A I 0.0
AN M 2.0
L S5T#2S
SD T 7
NOP 0
NOP 0
NOP 0
A T 7
= M 2.0

>

FBD

LAD

Ejemplo Generador de Onda Cuadrada Simtrica


Ejemplo
Se desea una onda cuadrada
de periodo 4s. Para ello
utilizamos el generador de
impulsos
del
ejemplo
anterior y un divisor
binario. Colocaremos la
salida en la Q 4.0.

Cronograma
1

I 0.0

0
1
0
1
0

<

2s

><

2s

> <

2s

>

M 2.0
Q 4.0
Tiempo

A
AN
L
SD
NOP
NOP
NOP
A
=
***
A
AN
S
A
A
R
NOP
***
AN
A
S
AN
AN
R
NOP

STL
I 0.0
M 2.0
S5T#2S
T 7
0
0
0
T 7
M 2.0
M
M
Q
M
M
Q
0

2.0
1.0
4.0
2.0
1.0
4.0

M
Q
M
M
Q
M
0

2.0
4.0
1.0
2.0
4.0
1.0

FBD

Ejemplo Generador de Onda Cuadrada Asimtrica


Cronograma
1

I 0.0

0
1

Tiempo de Marcha T1

0
1

Ejemplo
Se desea que la salida Q 4.0 funcione
como un generador de onda cuadrada
asimtrica de 3s con valor 0 y 5s con
valor 1.

Salida T1

0
1

Tiempo de Marcha T2

0
1

Salida T2

0
1

Q 4.0

0
Tiempo

STL

FBD

A(
A
I 0.0
AN T 2
L
S5T#3S
SD T 1
NOP 0
NOP 0
NOP 0
A T 1
)
= Q 4.0
A Q 4.0
L S5T#5S
SD T 2
NOP 0
NOP 0
NOP 0
NOP 0

Ejemplo Arranque Estrella/Tringulo I


STL
Segmento 1
A I 0.0
A(
O I 0.1
O Q 4.0
)
= Q 4.0

I 0.0

I 0.1

L
Q 4.0

FBD
Lnea
I 0.0

&

I 0.1

>=1

Q 4.0

Y
Q 4.1

Q 4.2

Segmento 2
A Q 4.0
AN Q 4.2
L S5T#3s
SD T 1
NOP0
NOP0
NOP0
NOP0

Q 4.0

Temporizador
Q 4.0

T1

&

Q 4.2

S_ODT
S
BI

2
S5T# 3S

BCD

Segmento 3
A Q 4.0
AN Q 4.2
AN T 1
= Q 4.1

Estrella
Q 4.0
Q 4.2

&

T1

Segmento 4
A Q 4.0
A(
AN Q 4.1
A T 2
O Q 4.2
)
= Q 4.2

TV

Q 4.1

Tringulo
Q 4.0
Q 4.1

&

&

T1

>=1
Q 4.2

Q 4.2

Ejemplo Arranque Estrella/Tringulo II


ST L
Segm ento 1
A
I 0 .0
A(
O
I 0 .1
O
Q 4 .0
)
=
Q 4 .0

FBD

STL
Segmento 1
A I 0.0
A(
O I 0.1
O Q 4.0
)
= Q 4.0

Lnea
I 0 .0

&

I 0 .1

>= 1
Q 4 .0

Segm ento 2
A
Q 4 .0
A N Q 4 .2
L
S5 T# 3s
SD T 1
N OP 0
N OP 0
N OP 0
N OP 0

I 0.0

>=1

Segmento 2
A Q 4.0
AN Q 4.2
L S5T#3s
SD T 1
NOP0
NOP0
NOP0
NOP0

T 1

&

Q 4.2

2
S 5T # 3S

S _O D T
BI

TV

BC D

Estrella
Q 4 .0

T1

Q 4 .1

T emporizador de Retardo
Q 4.0

Q 4.0

2
S 5T # 10 0M S
Q 4.2

Segmento 4
A Q 4.0
A I 0.3
A(
AN Q 4.1
A T 2
O Q 4.2
)
= Q 4.2

BC D

2
S5T# 3S

TV

T ringulo
Q 4.0

BCD

Estrella
Q 4.0
Q 4.2

&
Q 4.1

Tringulo
Q 4.0
I 0.3
Q 4.1

&

&

T1

>=1

Q 4.1

&

S_ODT
S
BI

T1

S _O D T
BI

TV

T1

&

Q 4.2

T 2

&

Q 4.1

Temporizador

Segmento 3
A Q 4.0
AN Q 4.2
AN T 1
= Q 4.1

&

Q 4 .2

Q 4.0

Q 4.0

T emporizador

Segm ento 4
A
Q 4 .0
A N Q 4 .2
L S 5T #1 00 ms
SD T 2
A
Q 4 .2
R
T 2
N OP 0
N OP 0
N OP 0

&

I 0.1

Q 4 .0

Q 4.0

Segm ento 3
A
Q 4 .0
A N Q 4 .2
AN T 1
=
Q 4 .1

Segm ento 5
A
Q 4 .0
A(
A N Q 4 .1
A
T 2
O
Q 4 .2
)
=
Q 4 .2

FBD
Lnea

Q 4.2

Q 4.2

&

T2

>=1
Q 4.2

Q 4.2

Funciones de Tiempo en IEC


Las funciones de tiempo estn integradas en FBs en la CPU. Estn disponibles:
SFB 3 TP
Generador de pulsos
SFB 4 TON
On delay
SFB 5 TOF
Off delay

Nombre
IN
PT
Q
ET

Declaracin Tipo dato


INPUT
BOOL
INPUT
TIME
INPUT
BOOL
INPUT
TIME

Descripcin
Entrada de arranque
Longitud del pulso o duracin de espera
Estado del temporizador
Tiempo pasado

Tema 2: Programacin de PLCs


1. STEP 7
2. PROGRAMACIN BSICA AWL
Introduccin
Operaciones lgicas a nivel de bit
Marcas
Simblicos
Flancos
Temporizadores
Diagnosis e informacin del sistema
Contadores
Carga y Transferencia
Operaciones con acumuladores
Saltos
3. PROGRAMACIN ESTRUCTURADA

PLCs
Curso 2009/10

Pgina 1

Simblicos

Son nombres simblicos que le podemos dar a entradas,


salidas, marcas, temporizadores, contadores y mdulos.
En el programa podemos usar esos nombres en vez de
las direcciones absolutas.
Para cada smbolo debemos rellenar: nombre simblico,
direccin absoluta a la que sustituye, tipo de dato que es
(se rellena slo), y un comentario (opcional)
PLCs
Curso 2009/10

Pgina 2

Simblicos

Hay dos maneras de crear tabla de smbolos:


Desde el administrador Simatic (Programa S7): Fuentes Bloques Smbolos
Creando Tabla de Smbolos desde OB1: herramientas --> tabla de smbolo.
Esto llama al editor de smbolos.
Se introducen smbolos y se cierra, Tabla --> cerrar y eso la guarda.

Adems para insertar/editar smbolos en tabla:


Si estamos en el editor de AWL: insertar --> smbolo --> Nuevo.
Se meten las entradas adecuadas y se acepta

En Ver decidimos si se quiere ver:


direcciones absolutas o smbolos.

PLCs
Curso 2009/10

Pgina 3

Flancos
Permiten averiguar en qu ciclo ha habido
un flanco positivo FP (paso de 0 a 1 del RLO)
o un flanco negativo FN (paso de 1 a 0 del RLO) de una seal.

Se necesita una marca auxiliar que almacena el estado anterior, para poder
compararlos. Puede usarse cualquier marca.
Ej. Flanco positivo

E 124.0

U E 124.0
FP M1.0
= A 124.1

M 1.0
RLO

El RLO slo estar a 1 un tiempo de ciclo: en el que cambie.


PLCs
Curso 2009/10

Pgina 4

Temporizadores
Un temporizador es un contador de tiempos. La CPU 314IFM tiene 128 temporizadores
Por cada temporizador se reservan 16 bits y tiene un rango
de valores de 10ms a 9990s (2h 46m 30s)
Un temporizador realiza dos funciones
Contar tiempo
Poner una variable de salida asociada a nivel alto

Los tipos de temporizadores se diferencian entre s en:

cundo comienzan a contar el tiempo y


cundo activan la salida asociada.
PLCs

Curso 2009/10

Pgina 5

Temporizadores

Tipos de temporizadores
SI - Temporizador de impulso
El tiempo mximo que la seal de salida permanece a 1 corresponde al valor de
temporizacin To programado.
La seal de salida permanece a 1 durante un tiempo inferior si la seal de entrada
cambia a 0.

SV - Temporizador de impulso prolongado


La seal de salida permanece a 1 durante el tiempo programado,
independientemente del tiempo que la seal de entrada est a 1.

PLCs
Curso 2009/10

Pgina 6

Temporizadores
Resumen
tipos
temporizadores

PLCs
Curso 2009/10

Pgina 7

Temporizadores

Tipos de temporizadores
SE - Temporizador con retardo a la conexin
La seal de salida es 1 solamente si ha finalizado el tiempo programado y (AND)
la seal de entrada sigue siendo 1.

SS - Temporizador con retardo a la conexin con memoria


La seal de salida cambia de 0 a 1 solamente si ha finalizado el tiempo
programado, independientemente del tiempo en que la seal de entrada est a 1.
cundo termina la temporizacin?

SA - Temporizador con retardo a la desconexin


La seal de salida es 1 el tiempo que la seal de entrada es 1 y, a partir de ah, el
tiempo marcado por el temporizador.
El temporizador arranca cuando la seal de entrada cambia de 1 a 0.
PLCs
Curso 2009/10

Pgina 8

Temporizadores
Resumen
tipos
temporizadores

PLCs
Curso 2009/10

Pgina 9

Temporizadores
Programacin de un temporizador (T0, T1, ...)
Carga el tiempo de inicializacin en un acumulador interno con la operacin
load (L)
Formato:

L S5T#aH_bM_cS_dMS
Ejemplo:

S5T#10M_30S

Generacin de un RLO que condicionar la activacin del temporizador


Activacin del temporizador
Formato:

tipo n timer

Si hay un flanco en el RLO de entrada respecto del ciclo anterior.


El temporizador se inicializa con el tiempo que se haba cargado en el
acumulador interno.
SI T0 - SV T0 - SE T0 - SS T0 - SA T0

PLCs
Curso 2009/10

Pgina 10

Temporizadores
Inicializacin:
U E124.0
L S5T#10S
SI T0

L S5T#10S
U E124.0
SI T0

Reseteo de un temporizador
Ejemplo:
U E124.1
R T0

Consulta de la salida
Ejemplo:
U T0
= A124.0

PLCs
Curso 2009/10

Pgina 11

Temporizadores
Temporizador de Impulso (SI)
El temporizador
arranca con el flanco de subida del RLO de entrada de la sentencia SI
se detiene al finalizar el tiempo de temporizacin
La salida asociada
se pone a 1 al arrancar el temporizador
se pone a 0 al terminar la temporizacin o al ponerse a cero el RLO de entrada
E X.x
RLO

AT0

PLCs
Curso 2009/10

T
Pgina 12

Temporizadores
Temporizador de Impulso Prolongado (SV)
El temporizador
arranca con el flanco de subida del RLO de entrada de la sentencia SV
se detiene al finalizar el tiempo de temporizacin

La salida asociada
se pone a 1 al arrancar el temporizador (flanco de subida del RLO de entrada de SV)
se pone a 0 al terminar la temporizacin

E X.x
RLO

AT0

PLCs
Curso 2009/10

Pgina 13

Temporizadores
Temporizador de Retardo a la Conexin (SE)
El temporizador
arranca con el flanco de subida del RLO de entrada de la sentencia SE
se detiene al finalizar el tiempo de temporizacin o con un cero en el RLO de entrada

La salida asociada
se pone a 1 al terminar el temporizador
se pone a 0 al cuando el RLO de entrada de SE pasa a cero

E X.x
RLO

AT0

PLCs
Curso 2009/10

Pgina 14

Temporizadores
Temporizador de Retardo a la Desconexin (SA)
El temporizador
arranca con el flanco de bajada del RLO de entrada de la sentencia SA
se detiene al finalizar el tiempo de temporizacin

La salida asociada
se pone a 1 con el flanco de subida del RLO de entrada de SA
se pone a 0 al terminar la temporizacin
E X.x
RLO

AT0

PLCs
Curso 2009/10

Pgina 15

Temporizadores
Temporizador de Retardo a la Conexin Memorizado (SS)
El temporizador
arranca con el flanco de subida del RLO de entrada de la sentencia SS
se detiene al finalizar el tiempo de temporizacin

La salida asociada
se pone a 1 al terminar la temporizacin
se pone a 0 slo mediante una instruccin de reset
E X.x
RLO
Reset

AT0
T

PLCs
Curso 2009/10

Pgina 16

Temporizadores

Otras consideraciones sobre los temporizadores


Hay que ser muy cuidadosos si utilizamos el mismo
temporizador en dos sitios distintos del cdigo, ya que
podemos estarlo arrancando o no en los distintos puntos y
se producir un funcionamiento errneo.
La variable que arranca el temporizador debe producir un
flanco positivo. Para que ese flanco positivo se produzca, el
programa debe pasar por ese punto con valor 0 y
posteriormente con valor 1, o no ver el flanco. Esto es
especialmente crtico en el caso de utilizar temporizadores
con elementos que se vern posteriormente como saltos o
bloques (FCs/FBs).

PLCs
Curso 2009/10

Pgina 17

Temporizadores
Comprobar el funcionamiento de los diferentes tipos de temporizadores
U E 124.0
L S5T#10S
SI T0

Condicin de arranque del temporizador

U E 124.1
R T0

Condicin de reseteo del temporizador

U T0
= A124.0

Presentacin de la seal asociada al temporizador

Probar otros ejemplos con


SV

SE

SA

SS
PLCs

Curso 2009/10

Pgina 18

EJERCICIO (Entregable 2)

Se dispone de un semforo, el cual en condiciones normales


se encuentra del modo siguiente:
A124.0

- Verde vehculos
- Rojo Peatones.

A124.1
A124.2
A125.0
A125.1

En el mismo instante que un peatn accione sobre el


pulsador situado en el semforo, ste pasar a amarillo para
vehculos, estado que durar durante 3 . Finalizado este,
pasara a estado rojo para vehculos y verde para peatones.
El tiempo de duracin fijado para rojo vehculos: 6 .

E124.0
Press
butto
n

Finalizado el proceso, el semforo regresar al estado


normal.
Durante el tiempo de duracin del ciclo, deber evitarse que
cualquier nueva activacin sobre el pulsador verde, rearme el
ciclo.

PLCs
Curso 2009/10

Pgina 19

Tipos de temporizadores IEC


Los autmatas S7-1200 han incorporado en su biblioteca de programacin los
temporizadores basados en software que dicta la norma IEC 1131-3:

TP - Temporizador de impulsos.
TON - Temporizador a la conexin.
TONR -Temporizador a la conexin con memoria.
TOF - Temporizador a al desconexin.

Si eres un programador procedente del entorno de los S7-200, observars que hay un
cambio radical en la forma que se utilizan dichos temporizadores. Si ests habituado a la
programacin de los temporizadores hardware de los S7-300, tambin tendrs que
adaptarte al nuevo concepto ya que comprobars que son bastante diferentes,. Sin
embargo, si alguna vez has utilizado los temporizadores software (Temporizadores IEC)
de la librera Standard Library>Systems Funciton Blocks del STEP 7, no tendr ninguna
dificultad con los temporizadores de los S7-1200, ya que son prcticamente idnticos.
El siguiente tutorial se basa en el temporizador TON, pero puede ser utilizado de forma
similar con los dems tipos.

Uso de los temporizadores


Los temporizadores del S7-1200, al estar basados en software, no requieren
direccionamiento a una zona de memoria determinada del hardware y por tanto, no se
identifican con un nmero (T1, T37, etc) como ocurre, por ejemplo, en los S7-200. As,
cada vez que se inserta un temporizador en la zona de programacin, ste pide que se
asigne un bloque de datos (DB) a instancia. Dicho DB debe identificarse mediante un
nombre simblico reconocible y que sea fcilmente distinguible de otros que se puedan
utilizar en el mismo programa.

En el campo PT del temporizador debe escribirse el tiempo de preseleccin en formato


TIME. Por ejemplo: T#3S (tres segundos) T#1M10S (un minuto 10 segundos)
T#100Ms (cien milisegundos).

Ejemplo 1: Activacin directa de una salida una vez transcurrido un


tiempo.
Un uso inmediato de los temporizadores, consiste en utilizar la salida Q, de tipo binario,
para activar de forma directa, una vez que se ha superado el tiempo de preseleccin PT,
elementos de programacin en formato de bit como salidas, marcas o cualquier otra
combinacin lgica.

Ejemplo 2: Asociacin de contactos a un temporizador.


Al no ser temporizadores hardware y no existir un direccionamiento directo a una zona
de memoria especfica para ellos, ya no es posible asignar, como se haca en otros PLC's,
contactos a los temporizadores mediante su identificador: T1, T2, T3, etc. No obstante,
para hacer algo similar se puede recurrir a diferentes tcnicas.

Opcin 1: Uso de una marca asociada al temporizador.

Cuando la marca es "verdadera", los contactos asociados invierten su valor lgico,


activando o desactivando los segmentos en los que se encuentran programados.

Se puede decir que esta es una solucin muy "elctrica" similar a la utilizada en los
automatismos cableados con rels.

Opcin 2: Uso de la variable Q del DB a instancia asociado al temporizador.

En este caso no es necesario asignar ninguna bobina a la salida Q del temporizador. Sin
embargo, los contactos asociados deben leer el valor de dicha salida directamente del DB
a instancia. Para ello cada contacto debe tener la siguiente sintaxis: "Nombre del DB".Q
(en nuestro ejemplo "Temp_1".Q).

Ejemplo 3: Uso de un solo temporizador para acciones a diferentes valores


de tiempo.
Lo visto anteriormente requiere usar un temporizador por cada conmutacin temporizada
que se desee realizar. Es decir, si se desea activar una salida a los 5 segundos y otra a los
10 segundos, es necesario utilizar dos temporizadores independientes configurados, cada
uno de ellos, con sus respectivos tiempos de preseleccin.
Sin embargo, si se lee el valor de la salida ET del temporizador a a travs de una variable
o a travs de DB a instancia, es posible realizar acciones a diferentes valores de tiempo
de un mismo temporizador.

Opcin 1: Comparar el valor de una variable asignada a la salida ET del


temporizador.

La variable debe tener el formato de doble entero (DInt) y debe escribirse en la salida ET
del temporizador. El tiempo se almacena en ella en formato de milisegundos. Por tanto,
las operaciones de comparacin deben hacerse teniendo esto en cuenta.
En el siguiente ejemplo se muestra como la salida Q0.6 se activa si el tiempo de
temporizador es mayor o igual a 3 segundos (3000ms) y la Q0.7 lo hace si el tiempo es
superior o igual a 8 segundos (8000ms).

Opcin 2: Comparar el valor de la salida ET del temporizador.

De igual forma que para la salida Q del del DB a instancia, es posible leer la salida ET
(que tiene formato DInt) y operar con ella en las comparaciones sin necesidad de crear
ninguna variable intermedia.

En las comparaciones se puede utilizar una constate numrica en ms o directamente


emplear el dato en formato TIME:

Tema 6 Ejemplo
Ejemplo Programacin
Estructurada

Div.
Div. Ingeniera de
Sistemas
Sistemas yy Automtica
Automtica

Programacin estructurada

FB

Programacin estructurada

FB

Programacin estructurada

FC

Programacin estructurada

LLAMADA DESDE OB1

Programacin estructurada

Mutiinstancia
MULTIINSTANCIA
Para ello se tiene que crear un
nuevo FB de orden superior (en
nuestro ejemplo, el FB10) y llamar
desde el mismo al FB1, que ha
permanecido invariable, como
"instancia local". En cada llamada,
el FB1 subordinado deposita sus
datos en el bloque de datos DB10
del FB10 de orden superior, con lo
cual no se tienen que asignar ms
DBs al FB1. Todos los FBs
acceden a un nico bloque de
datos (aqu, el DB10).

Supongamos que su tarea de automatizacin requiere otros


controles de motor, p.ej., para un motor que funciona con aceite
de colza, para un motor de hidrgeno, etc.

Procediendo de la misma forma que lo hemos hecho


hasta ahora, utilizaramos el FB1 asignndole un nuevo
DB por cada control adicional.
Programacin estructurada

FB10

Programacin estructurada

DB10

Programacin estructurada

OB1

Programacin estructurada

Tecnologa en Automatizacin y Accionamientos -SCE

Manual de formacin
para soluciones generales en automatizacin
Totally Integrated Automation (T I A )

MDULO B4
Bloques de datos

T I A Manual de Formacin
Edicin: 02/2002

Pgina 1 de 18

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

Este documento fue suministrado por SIEMENS Siemens A&D SCE (Tecnologa en Automatizacin y
Accionamientos, Siemens A&D, coopera con la Educacin) para formacin. Siemens no hace ningn tipo de
garanta con respecto a su contenido.
El prstamo o copia de este documento, incluyendo el uso e informe de su contenido, slo se permite dentro de
los centros de formacin.
En caso de excepciones se requiere el permiso por escrito de Siemens A&D SCE (Mr. Knust: E-Mail:
michael.knust@hvr.siemens.de). Cualquier incumplimiento de estas normas estar sujeto al pago de los posibles
perjuicios causados. Todos los derechos quedan reservados para la traduccin y posibilidad de patente.
Agradecemos al Ingeniero Michael Dziallas, a los tutores de las escuelas de formacin profesional, as como a
todas aquellas personas que nos han prestado su colaboracin para la elaboracin de este documento.

T I A Manual de Formacin
Edicin: 02/2002

Pgina 2 de 18

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

PGINA:
1.

Introduccin..................................................................................................

2.

Notas sobre los Bloques de Datos.................................................................

3.

Generando Bloques de Datos.......................................................................

Los smbolos siguientes acceden a los mdulos especificados:

Informacin

Programacin

Ejercicio Ejemplo

Notas

T I A Manual de Formacin
Edicin: 02/2002

Pgina 3 de 18

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

1.

INTRODUCCIN
El mdulo B4 pertenece al contenido de las Funciones Adicionales de Programacin STEP 7.
Programacin Bsica
De STEP 7
2 - 3 das
Mdulos A

Funciones Adicionales
de Programacin STEP 7
2- 3 das
Mdulos B

Sistemas de Bus de
Campo Industrial
2- 3 das Mdulos D

Programacin
Secuencial
2- 3 das Mdulos C

Visualizacin de
Procesos
2- 3 das Mdulos F

Comunicacin IT
con SIMATIC S7
1- 2 das Mdulo E

Finalidad del Aprendizaje:


En este mdulo, el lector aprender sobre como utilizar los Bloques de Datos para almacenar
informacin.

Generando Bloques de Datos


Specificando la estructura de un Bloque de Datos
Accediendo a un elemento de un DB en un programa STEP 7

Requirements:
Requisitos:
Para el correcto aprovechamiento de este mdulo, se requieren los siguientes conocimientos:

Conocimientos de uso de Windows 95/98/2000/ME/NT4.0


Programacin Bsica de PLC con STEP 7 ( Mdulo A3 - Puesta en Marcha programando PLC
con STEP 7)
Conocimientos Bsicos de programacin estructurada (Anexo I Programacin Bsica de PLC
Programando con un SIMATIC S7-300)
Indice

T I A Manual de Formacin
Edicin: 02/2002

Notas

Pgina 4 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

Hardware y software Necesarios


1

2
3
4
.

PC, Sistema Operativo Windows 95/98/2000/ME/NT4.0 con


Mnimo: 133MHz y 64MB RAM, aprox. 65 MB de espacio libre en disco duro
ptimo: 500MHz y 128MB RAM, aprox. 65 MB de espacio libre en disco duro
Software STEP 7 V 5.x
Interfase MPI para PC (p.e. PC- Adapter)
PLC SIMATIC S7-300 con al menos un mdulo de entradas/salidas
Ejemplo de configuracin:
Fuente de Alimentacin: PS 307 2A
CPU: CPU 314
Entradas Digitales: DI 16x DC24V
Salidas Digitales: DO 16x DC24V / 0.5 A
-

2 STEP 7

1 PC

3 PC Adapter

4 SIMATIC S7-300

Indice

T I A Manual de Formacin
Edicin: 02/2002

Notas

Pgina 5 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

2.

NOTAS SOBRE LOS BLOQUES DE DATOS


Los Bloques de Datos (DBs) pueden ser utilizados en el programa para salvar informacin en la CPU.
Tienen una capacidad de memoria de hasta 8 KBytes ( 8192 Bytes ).
Existen dos tipos de Bloques de Datos. DBs Globales , en los cuales todos los OBs, FBs y FCs
pueden guardar o leer datos y DBs de Instancia, los cuales se encuentran asignados a un FB en
particular.
En los DBs, se pueden almacenar diferentes tipos de datos (p.e. BOOL o WORD ) de manera
aleatoria.
La estructura de un DB se genera a travs de la herramienta Editor KOP/ AWL//FUP: Programar
Bloques de STEP7 .
En la estructura del programa STEP 7, los bloques de datos se encuentran de la siguiente manera:

OB 1
Call FB1, DB10

FB 1

DB 10

L DB11.DBW0

DB 11
DB Global
Para todos los
FBs
FCs
OBs

DB de Instancia
Solo datos
locales al FB1
BE

UC FC2

Indice

T I A Manual de Formacin
Edicin: 02/2002

OB = Bloque de Organizacin
FB = Bloque de Funcin
FC = Funcin
DB = Bloque de Datos

Notas

Pgina 6 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

3.

GENERANDO BLOQUES DE DATOS

Los Bloques de Datos son generados y abiertos como cualquier otro tipo de bloque en la herramienta
Editor KOP/ AWL//FUP: Programar Bloques. Sirven para almacenar datos e informacin de
estados.
En el prrafo siguiente, se describe a travs de un ejemplo la utilizacin de un bloque de datos global:
Por esto, los valores se seleccionarn con los interruptores 'S0' a 'S7' y visualizados en un mdulo de
Display de salidas. La representacin numrica del valor a almacenar se representa con estos
interruptores, donde el interruptor S7 tendr el mayor peso del valor y el interruptor S1 el menor peso.
El ejemplo se corresponde con las direcciones siguientes:
Entradas:
Interruptor
Interruptor
Interruptor
Interruptor
Interruptor
Interruptor
Interruptor
Interruptor

S0
S1
S2
S3
S4
S5
S6
S7

=
=
=
=
=
=
=
=

E
E
E
E
E
E
E
E

0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7

Salidas:
Display = AW4

Indice

T I A Manual de Formacin
Edicin: 02/2002

Notas

Pgina 7 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

Para poder generar este ejemplo del programa, deben de los seguirse los siguientes pasos (Por eso el
programa se distribuye con la creacin de la configuracin del hardware):
1. Llamar al Administrador SIMATIC con un doble click ( Administrador SIMATIC)

Administrador SIMATIC.lnk

2.

Crear un proyecto nuevo ( Archivo Nuevo)

Indice

T I A Manual de Formacin
Edicin: 02/2002

Notas

Pgina 8 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

3.

En el campo Nombre, asignamos el nombre del proyecto Proyecto_Prueba_DB.


( Proyecto_Prueba_DB OK)

4.

Insertar un nuevo Programa S7 ( Insertar Programa Programa S7).

Indice

T I A Manual de Formacin
Edicin: 02/2002

Notas

Pgina 9 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

5.

Seleccionar la carpeta Bloques. ( Bloques)

6.

Insertar un Bloque de Datos ( Insertar Bloque S7 Bloque de Datos).

Indice

T I A Manual de Formacin
Edicin: 02/2002

Notas

Pgina 10 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

7.

Introducir el nombre DB10, seleccionar la opcin DB Global y aceptar con OK ( DB10 DB


Global -> OK).

8.

Abrir el bloque de datos DB10 con un doble click( DB10).

Indice

T I A Manual de Formacin
Edicin: 02/2002

Notas

Pgina 11 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

Nota:

Indice

T I A Manual de Formacin
Edicin: 02/2002

Los bloques de datos asignados a un FB se generan automticamente en la llamada al


FB. No tiene sentido, por tanto, generarlos antes de generar el FB. Por otro lado, los
bloques de datos asociados a un tipo de datos (UDT) son DBs cuya estructura es una
copia exacta del UDT.

Notas

Pgina 12 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

10. Cada registro del DB tiene un Nombre, Tipo, Valor Inicial y Comentario (opcional).
En el momento en que se pasa al campo siguiente, se le genera una direccin en le DB que no
puede ser alterada.
El bloque de datos ser salvado

y cargado el PLC

. El selector de modo del PLC deber

estar en STOP! ( Nombre Tipo Valor Inicial Comentario

Nombre simblico
con el que se
accede a la
direccin absoluta
asignada.

Tipo de dato
asignado (ver
tabla abajo) al
registro.

Valor inicial en formato


compatible con el tipo
de dato seleccionado (
opcional ).

Comentario
para
documentacin
( opcional ).

La direccin absoluta es asignada por


STEP 7, cada vez que se valida un
registro con ENTER.
El formato de la direccin puede ser
BIT, BYTE, WORD, ....
Se puede acceder tambin a este
elemento a travs de su direccin
absoluta (despus de haber compilado
y cargado el DB).

Nota:

Indice

T I A Manual de Formacin
Edicin: 02/2002

Si el bloque de datos es declarado como de instancia a un FB, al abrir dicho DB ya


aparece la tabla con la estructura del DB y no puede modificarse. Dicha estructura es una
copia exacta de la tabla de declaraciones del FB.

Notas

Pgina 13 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

Los datos en un bloque de datos deben de llevar asignado un tipo de datos.


Los tipos de datos estndar STEP 7 se definen en la tabla mostrada abajo :

Tipo y
descripcin

Tamao
en Bits

FormatoOpciones

Rango y notacin numrica

Ejemplo

(Valores mximo y mnimo)

BOOL (Bit)

Texto Booleano

TRUE/FALSE

TRUE

BYTE (Byte)

Nmero
Hexadecimal

B#16#0 a B#16#FF

B#16#10

Nmero Binario

2#0 a 2#1111_1111_1111_1111

2#0001_0000_0000_0000

Nmero
Hexadecimal

W#16#0 a W#16#FFFF

W#16#1000

BCD

C#0 a C#999

C#998

WORD (Palabra)

16

Nmero Decimal B#(0,0) a B#(255,255)


sin signo
DWORD (Doble
Palabra)

32

B#(10,20)

Nmero Binario

2#0 a
2#1000_0001_0001_1000_1
2#1111_1111_1111_1111_1111_111 011_1011_0111_1111
1_1111_1111

Nmero
Hexadecimal

DW#16#0000_0000 a
DW#16#FFFF_FFFF

DW#16#00A2_1234

Nmero Decimal B#(0,0,0,0) a B#(255,255,255,255)


sin signo

B#(1,14,100,120)

INT (Entero)

16

Nmero Decimal -32768 a 32767


con signo

DINT (Int,32 bit)

32

Nmero Decimal L#-2147483648 a L#2147483647


con signo

L#1

REAL (Nmero
en coma flotante)

32

Nmero en
coma flotante
IEEE

Mximo: +/-3.402823e+38
Mnimo: +/-1.175495e-38

1.234567e+13

S5TIME
(Tiempo Simatic)

16

Tiempo S7 en
pasos de 10 ms

S5T#0H_0M_0S_10MS a
S5T#2H_46M_30S_0MS and
S5T#0H_0M_0S_0MS

S5T#0H_1M_0S_0MS
S5TIME#1H_1M_0S_0MS

TIME
(Tiempo IEC)

32

Tiempo IEC en
pasos desde
1ms, entero con
signo

-T#24D_20H_31M_23S_648MS a
T#24D_20H_31M_23S_647MS

T#0D_1H_1M_0S_0MS
TIME#0D_1H_1M_0S_0MS

DATE
(Fecha IEC)

16

Fecha IEC en
pasos de 1 da

D#1990-1-1 a D#2168-12-31

DATE#1994-3-15

TIME_OF_DAY
(Fecha y Hora)

32

Tiempo en
pasos de 1ms

TOD#0:0:0.0 a TOD#23:59:59.999

TIME_OF_DAY#1:10:3.3

Caracteres ASCII

A, B etc.

CHAR (Carcter)

Indice

T I A Manual de Formacin
Edicin: 02/2002

Notas

Pgina 14 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

11. El contenido de los valores del bloque de datos se puede modificar. No es recomendable hacerlo
a travs del campo Valor Inicial. Se debe de hacer a travs de la opcin de men Datos ( Ver
Datos).

12. Es ahora cuando se puede introducir un nuevo valor en el campo Valor Actual y salvarlo en el
disco duro con

Indice

T I A Manual de Formacin
Edicin: 02/2002

as como cargarlo en la CPU con

Notas

Pgina 15 de 18

( Valor Actual

).

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

Indice

T I A Manual de Formacin
Edicin: 02/2002

Notas

Pgina 16 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

13. Para poder acceder a los registros del DB en el programa STEP 7, el OB1 debe ser abierto con
un doble click en el icono asociado del Administrador SIMATIC ( Administrador SIMATIC
OB1).

14. Aceptamos la pantalla con OK ( OK ).

Indice

T I A Manual de Formacin
Edicin: 02/2002

Notas

Pgina 17 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

Existen tres posibilidades de acceso a los datos:


1.

Acceso por Direccionamiento Directo:

Se puede acceder a un elemento de un DB con las siguientes instrucciones:


Ejemplo:
L
DB 20. DBB2
L
DB 22. DBW4
A
DB 2. DBX5.6
2.

Cargamos el byte de datos 2 del DB20 en el ACCU 1


Cargamos el byte de datos 4 del DB22 en el ACCU 1
Consultamos el estado del bit de datos 5.6 del DB2.

Accesso a un elemento de un DB que ya se encontraba abierto:

Para poder acceder a un elemento de datos, primero se debe abrir su correspondiente DB a travs de
las instrucciones OPN DB o OPN DI. Una vez hecho esto, varios bits de datos (DBX/DIX),bytes de
datos (DBB/DIB), palabras de datos (DBW/DIW) o dobles palabras de datos (DBD/DID) pueden ser
procesadas en diferentes operaciones binarias o aritmticas.
Al utilizar la instruccin OPN DI se abre un DB de Instancia. Esta instruccin puede utilizarse tambin
con DBs globales, cuando 2 DBs permanecen abiertos al mismo tiempo.
Ejemplo:
OPN
OPN
L
T
A
A
=
3.

DB 20
DI 22
DBW 0
MW 1
DIX 0.0
E 1.0
A 4.0

Abrimos el DB20
Abrimos el DB22
Cargamos la palabra de datos 0 del DB20 en el ACCU 1
Transferimos el contenido del ACCU 1 a la palabra de marcas 1
Operacin AND sobre el bit de datos 0.0 del DB22 con
el bit de entradas 1.0
Asignamos el resultado al bit de salidas digitales 4.0

Acceso a datos de un DB de Instancia a travs de la llamada de un Bloque de Funcin:

Los datos pueden ser transferidos a un DB de Instancia a travs de la llamada a su correspondiente


bloque de funcin con la instruccin CALL FB1, DB19. La asignacin de las variables, que deberan de
haber sido previamente definidas en la tabla de definiciones del FB, y cuyo contenido se almacena en
el DB de instancia, son tomadas de las direcciones asignadas a los parmetros del FB (p.e. EW0, M
10.0 o AW4) con la instruccin CALL.
Ejemplo:
CALL
CONTADOR:=
SALIDA:=
Nota:

Indice

T I A Manual de Formacin
Edicin: 02/2002

FB1, DB19
EW 0
A 4.0

La Variable CONTADOR corresponde con la direccin EW 0.


La variable SALIDA corresponde con la direccin A 4.0.

El formato de las variables del DB de Instancia y la direccin asignada en el parmetro


del FB deben de ser iguales.
Notas

Pgina 18 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Tecnologa en Automatizacin y Accionamientos -SCE

15. Con el Editor KOP/ AWL//FUP: Programar Bloques, se dispone de una herramienta para
generar el programa STEP 7.
La seleccin del elemento de datos se realiza a travs de los diferentes interruptores, como se
muestra en la imagen de abajo.
Cuando se hayan contemplado todas las posibilidades de seleccin con los interruptores (S0 a
S7) en el OB1, se deber guardar en el disco duro
modo de la CPU deber estar en STOP! (

y cargado en el PLC

. El interruptor de

16. Cuando el selector de modo del PLC se ponga en RUN, el programa comienza su ejecucin.
Activando slo uno de los interruptores S0 a S7, el valor almacenado en el correspondiente
registro del bloque de datos es visualizado en el mdulo de salidas a travs de la direccin AW4.

Indice

T I A Manual de Formacin
Edicin: 02/2002

Notas

Pgina 19 de 18

Generando Bloques de Datos

Mdulo B4
Bloques de Datos

Mdulos de Funcin
Automatizacin Industrial

ndice
TEMA Mdulos de Funcin
1. Llamadas a Mdulos
2. Partes de un Mdulo
2.1 Variables Locales
3. Funciones FCs
4. Mdulos de Funcin FBs
5. Parmetros de Funciones
5.1 Parmetros Formales
5.2 Parmetros Actuales
6. Mdulos de Funcin y Mdulos de Datos
6.1 Mdulos de Datos a Instancia
6.2 Mdulos de Multi-Instancia

Llamada a Mdulos
Mdulo que llama
(OB, FB, FC, SFB, SFC)
Ejecucin del
Programa
Instruccin que llama
a otro mdulo

Mdulo llamado
(FB, FC, SFB, SFC)
Ejecucin del
Programa
(FB, FC, SFB, SFC)

Ejecucin del
Programa
Instruccin que llama
a otro mdulo

Ejecucin del
Programa
(FB, FC, SFB, SFC)

Llamadas a Mdulos (I)


Llamada General CALL
Para que un mdulo de cdigo sea procesado debe ser llamado
Una llamada a mdulo consta de la sentencia de llamada (CALL FC 10) y la lista de
parmetros (si el mdulo llamado tiene parmetros)
Despus de la llamada, el mdulo es procesado hasta encontrar una sentencia de fin de
mdulo
En el caso de los OB se retorna al sistema operativo
La informacin requerida por la CPU para el retorno es almacenada en la pila del mdulo
(pila B)
Los parmetros del mdulo son el interfaz de datos al mdulo llamado
Con CALL se pueden llamar FBs, FCs, SFBs y SFCs
La sentencia CALL es una llamada incondicional
Si el mdulo llamado tiene parmetros tiene que utilizarse esta sentencia

Llamadas a Mdulos (II)


Llamada a Funciones
Se puede llamar a una funcin con CALL por su direccin absoluta
o por su direccin simblica
Se deben inicializar todos los parmetros de la funcin
Normalmente, las funciones tienen el parmetro RET_VAL en el que
devuelven cdigos de error

Llamada a Mdulos de Funcin


En la llamada a un FB hay que especificar el DB de instancia asociado
separados ambos por una coma
Se puede utilizar para ambos mdulos direcciones absolutas o simblicas
En FBs no es necesario inicilizar todos los parmetros del mdulo
Los parmetros no inicializados mantienen su valor inicial

Llamada a Funciones y Mdulos de Funcin del Sistema


Todas las funciones y mdulos de funcin del sistema deben llamarse
con la instruccin CALL

Llamadas a Mdulos (III)


Llamada con UC y CC:

Permiten llamar a funciones y mdulos de funcin


La funcin llamada no debe tener parmetros 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 va parmetros de bloque con UC
Llamada va parmetros de bloque con CC tambin en FB

Fin de Mdulo:
BEC. Fin de mdulo condicionado al RLO
BEU. Fin de mdulo incondicional
BE. Fin de mdulo. ltima sentencia del mdulo

Uso del Parmetro EN/ENO


EN = Entrada Enable

ENO = Salida Enable


EN

Si est activo (1), se


ejecuta la instruccin
de la caja.

Caja de instrucciones STL


(FC, FB, Move, Add, etc)

Si no est activo (0), no se


ejecuta la instruccin.

Partes de un Mdulo

Tabla de
Declaracin
de Variables

Seccin de
Cdigo

ENO

Si est activo (1), indica que la


instruccin se ejecut sin error.
Si no est activo (0), no se llam
a la instruccin o no se produjo la
la ejecucin de la instruccin

Datos Locales

Los Datos Locales utilizados normalmente en un mdulo son :


Variables Temporales
Parmetros
Variables Permanentes o estticas

Variables Locales Temporales (I)


Direccin

Smbolo

Tipo de Declaracin

Valor Inicial

Tipo de Datos

Comentario

Las variables locales son las declaradas como temp


Se definen en la cabecera del mdulo
Se pueden definir en cualquier mdulo de cdigo
Se usan para almacenar datos locales de la ejecucin 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 ejecucin de un mdulo


Solamente estn disponibles durante la ejecucin del mdulo
Se puede utilizar direccionamiento absoluto o simblico
En los OB hay que declarar 20 bytes de informacin de comienzo de cada uno de ellos
Normalmente se accede por direccionamiento simblico
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

Direccin

Declaracin

Nombre

Valor inicial

Comentario

0.0

temp

temporal1

Tipo
INT

Variable temporal

2.0

temp

temporal2

REAL

Variable temporal

Variables Locales Estticas (I)


Direccin

Smbolo

Tipo de Declaracin

Valor Inicial

Tipo de Datos

Comentario

Variables Locales Estticas (II)


Datos locales estticos son direcciones que un mdulo de funcin FB
almacena en el mdulo de datos de instancia DI.
Las variables estticas son las declaradas como stat
Son declaradas en la cabecera del mdulo
Estn en la memoria del mdulo de funcin.
Mantiene la informacin hasta que es modificada por programa
El nmero est limitado por el tipo de dato de las variables y por el
tamao del DB
Se puede utilizar direccionamiento absoluto aunque debe ser la excepcin
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 Estticas (III)


Se puede utilizar direccionamiento simblico utilizando sus nombres
Se pueden utilizar las mismas sentencias que las utilizadas con DBs globales
Direccin

Declaracin

Nombre

0.0

temp

temporal1

Tipo
INT

Valor inicial
0

Comentario
Variable temporal

2.0

stat

Total

INT

Variable esttica

Ejemplo:
FB Totalizador

DB TotalizadorDato

Direccin Declaracin Nombre Tipo

Direccin Declaracin Nombre Tipo

0.0

temp

In

INT

0.0

temp

In

INT

2.0

stat

Total

INT

2.0

stat

Total

INT

L
L
+I
T

#In
#Total
#Total

Funciones FCs
Las Funciones son mdulos de cdigo que se ejecutan al ser llamadas desde otro
mdulo. Cuando se la llama, la funcin acta como una subrutina del programa.
Cuando termina de ejecutar su cdigo, el control se devuelve al mdulo y al
segmento desde el cual fue llamada.

Programa Principal OB1

Mdulo Subrutina FC

Ejecucin
del programa
Ejecucin del
Programa

Instruccin que llama


a otro mdulo

Mdulos de Funcin FBs


Un Mdulo de Funcin (FB) tiene un mdulo adicional de memoria asociado a
l. Un Mdulo de Datos (DB) mantiene una copia de los parmetros que van a
pasar al rea de datos locales. Despus de la ejecucin del FB, se borra el rea
de memoria local, pero el DB asociado retiene sus valores.

DB10
Llamada a un
mdulo con los
parmetros
actuales
Ejemplo:
Call FB1,DB10

Copia la parte de
declaracin local del FB

FB1
rea de
Declaracin Local
Seccin de Cdigo
del mdulo llamado
usando los valores
del rea de
memoria local.

Parmetros de Funciones
Declaracin de los Parmetros:
Los parmetros de un mdulo representan el interfaz entre el modulo que llama y
el mdulo llamado
Soportan parmetros las funciones y los mdulos de funcin
Los parmetros pueden declararse de IN, OUT IN_OUT

Procesamiento de los Parmetros


Progr. en mdulo que llama

Progr. en mdulo llamado

// Primera llamada
CALL Adder
Numb_1 := MW 30
Numb_2 := MW 32
Numb_3 := MW 34
Result := MW 40

#L

Numb_1

#L

Numb_2

I+
#L
+I

Parmetros Parmetros
del mdulo actuales

#T

// Primera llamada
L
MW 30
L
MW 32
+I
L
MW 34
+I
T
MW 40

Numb_3

// Segunda llamada
CALL Adder
Numb_1 :=DB 10.DBW 30
Numb_2 :=DB10.DBW 32
Numb_3 :=DB10.DBW 34
Result :=DB10.DBW 40

Programa ejecutado

Result

Parmetros
formales

// Segunda llamada
L
DB 10.DBW 30
L
DB10.DBW 32
+I
L
DB10.DBW 34
+I
T
DB10.DBW 40

Declaracin de Parmetros
Los nombres de los parmetros de hasta 24 caracteres
El nombre de un parmetro no puede ser una palabra clave
Los parmetros IN/OUT pueden ser tipos de datos elementales, complejos o definidos
por el usurio
El valor inicial y el comentario son opcionales

Direccin

Smbolo

Tipo de Declaracin

Valor Inicial

Tipo de Datos

Comentario

Parmetros Formales
Los tipos de parmetros los clasifica en: datos simples, datos compuestos y parmetros

Parmetros Formales: Tipos de Datos (I)


Tipo BOOL

Parmetros Formales: Tipos de Datos (II)


Parmetros de mdulo de tipo de dato digital:
Ocupan 8, 16 o 32 bits
Se leen con la instruccin L (load). p. e. L xxxx
Se escriben con la instruccin T (transfer). p.e. T xxxx
Direcciones que pueden asignar tipos de datos elementales
Direcciones que pueden asignar un tipo de parmetro

Parmetros de mdulo de tipo TIMER:


Funciones binarias
Tipos de temporizadores:
SP, SE, SD, SS, SF, R xxxx (parmetro de entrada tipo timer)

Parmetros de mdulo de tipo COUNTER:


Funciones binarias
Tipos de contadores:
S, CU, CD, R xxxx (parmetro de entrada tipo counter)

Parmetros Formales: Tipos de Datos (III)


Parmetros de mdulo de tipo de dato BLOCK_xx:
OPN - Abrir mdulo de datos (parmetro tipo BLOCK_DB)
UC - Llamada a funcin (parmetro tipo BLOCK_FC)
UC - Llamada a FB (parmetro tipo BLOCK_FB)
CC - Llamada condicional a FC (parmetro tipo BLOCK_FC)
CC - Llamada condicional a FB (parmetro tipo BLOCK_FB)
- xxxx va parmetro de entrada
Cuando se abre un DB con parmetro, la CPU lo usa como DB global
Las funciones y mdulos de funcin pasados con parmetros de mdulo
no deben contener parmetros de mdulo
Una llamada condicional a mdulo va un parmetro de mdulo es slo
posible si el parmetro de bloque es de un mdulo de funcin

#Data es un parmetro tipo BLOCK_DB


CALL FB 10.#Data

El usuario debe asegurar que #Data es el


DB de instancia del FB 10

Parmetros Actuales
Cuando se llama a un mdulo se inicializan los parmetros con los
parmetros actuales con los que el mdulo se ejecuta
Pueden ser constantes, direcciones absolutas, direcciones simblicas, ..
El parmetro actual debe ser del mismo tipo que el parmetro del bloque
Cuando se llama a funciones se deben inicializar todos los parmetros
En los FBs es opcional inicializar todos o slo alguno de los parmetros

Parmetros Actuales: Tipos de Datos Bsicos


Son permitidos como parmetros actuales de tipos de datos bsicos:

Acceso y Restricciones de los Parmetros de Paso


Llamada a mdulo (FC, FB)
Tabla de Declaracin

Mdulo llamado (FC, FB)


Tabla de Declaracin

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 Parmetros de un mdulo lgico a otro

Paso de Parmetros entre mdulos


Combinaciones posibles en el paso de parmetros de mdulos:

E = Tipos de datos elementales


C = Tipos de datos complejos
P = Parmetros tipo TIMER, COUNTER y BLOCK_xx

Parmetros y Variables Locales (I)


FC1 (Clculo)

OB1

FC1
MW5

Entrada1 Salida_A

3369

Entrada2

MW10

Entrada3

AW12

0.0

in

Entrada1

int

2.0

in

Entrada2

int

4.0

in

Entrada3

int

6.0

out

Salida_A

int

8.0

temp

TEMP1

int

muestra 1
constante
distancia
resultado
intermedia

ADD_I
#Entrada1 IN1
#Entrada2 IN2

#TEMP1

#Salida_A

FC1
SUB_I
MW2

Entrada1 Salida_A

6869

Entrada2

MW16

Entrada3

AW20

#TEMP1 IN1
#Entrada3 IN2

#Entrada1 , si es variable local


Entrada1" , si es variable global (simblico)

Parmetros y Variables Locales (II)


STL
Parmetros Formales
del FB

CALL FB7, DB45


Comenzar:=I 1.0
Parar:=I 1.1
Longitud:=MW 20
Correr:=M2.1

Llama al FB7 (utilizando


un Mdulo de Datos
a instancia DB45) y le
pasa los parmetros

Direcciones Actuales donde


residen los datos o se almacenarn

FBD

DB45
EN

Direcciones Actuales
donde residen los datos
o se almacenarn

I 1.0
I 1.1
MW20

FB7

ENO

Comenzar Correr
Parar
Longitud

Llama al FB7 (utilizando


un Mdulo de Datos
a instancia DB45) y le
M2.1 pasa los parmetros
Parmetros Formales
del FB

Mdulos de Funcin y Mdulos de Datos


Para almacenar datos se pueden utilizar:
zona de marcas
mdulos de datos
Los mdulos de datos presentan mayores prestaciones
Los mdulos de datos pueden ser:
globales. Pueden acceder cualquier mdulo
de instancia. Slo 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 mdulos de datos globales
registro DI: para mdulos de datos de instancia
se puede tener abierto simultneamente un mdulo de datos de cada tipo

Mdulos de Datos a Instancia


Un Mdulo de Datos a Instancia es un duplicado de la Tabla de Declaracin
del Mdulo de Funcin asociado a l. Los datos de DB a Instancia
permanecern despus de cerrar el FB.

Uso de un FB sin DB a Instancia


El STEP7 Versin 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
Tabla de Declaracin
usando la memoria local

Seccin de
Cdigo

FC

Tabla de Declaracin
usando la memoria local

Seccin de
Cdigo

Mdulos de Funcin y Mdulos de Datos (II)


Direcciones de Datos

Direccin de datos Localizado en DB abierto va 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 simblico al DB en la tabla de smbolos. p.e. MOTOR1 al DB 51
asignar direccin de los datos en el mdulos de datos. p.e. PAR a la DBW 20
Con direccionamineto simblico queda: L MOTOR1.PAR
Con direccionamiento absoluto queda: L
DB 51.DBW 20

Mdulos de Datos (I)


Operaciones con Mdulos de Datos

Mdulos de Datos (II)


Abrir Mdulos de Datos

Direccionamiento Partido
OPN DB 25
L DBW 10

OPN DB x
OPN DB nombre
OPN DI x
OPN DI nombre

Direccionamiento Completo
L DB25.DBW 10

Longitud y Nmero de DBs


L
L
L
L

Cambio los Registros de los


Mdulos de Datos

DBLG // longitud de un DB
DBNO // nmero de un DB
DILG // longitud de un DI
DINO // nmero de un DI

CDB

Funciones del Sistema para DBs


SFC 22 CREAT_DB. //Crea un mdulo de datos
SFC 23 DEL_DB // Borra un mdulo de datos
SFC 24 TEST_DB // Test de un mdulo de datos

Mdulos de Datos Multi-Instancia (I)


Los mdulos Multi-Instancia le permiten usar un Mdulo de Datos para
mantener unos valores separados mientras llama a un FB con un DB asociado.
Un FB ejecuta la seccin de cdigo actual mientras otro maneja el Mdulo de
Datos a Instancia.

FB que ejecuta
las instrucciones
lgicas

Usar este
rea primero

Mdulo de Datos
Multi-instancia
asociado a un FB

Segmentos dentro

FB que maneja
la seccin del mdulo
de datos a instancia
que mantendr los
ltimos parmetros

del DB que contendrn


Usar este
los datos separados de
rea despus los parmetros pasados

Usar este
rea despus

Mdulos de Datos Multi-Instancia (II)


Para utilizar DBs multiinstancia:
Incorporar los FBs a llamar en forma de variables estticas en la declaracin de
variables del FB invocante
El FB invocante llama otros bloques de funcin sin DBs de instancia propios (es
decir, adicionales),
Esto permite concentrar los datos de instancia en un solo bloque de datos de
instancia, pudindose as aprovechar mejor el nmero disponible de DBs.

Mdulos de Datos Multi-instancia (III)


Mdulo de control FB 101

FB 100 con mltiples llamadas al FB101

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

DB Multi instancia

Tema 2: Programacin de PLCs


1. STEP 7
2. PROGRAMACIN BSICA AWL
3. PROGRAMACIN ESTRUCTURADA
Introduccin
Bloques de organizacin (OB)
Funciones (FC)
Bloques de Funcin (FB)
Boques de datos (DB)

PLCs
Curso 2009/10

Pgina 1

Introduccin

Facilita modularidad del programa, y clarifica su organizacin y anlisis

Permite generar funciones reutilizables y no repetir cdigo

Simplifica el test y la puesta en servicio


FC
Sistema
operativo

FB

OB1
FB

FC

SFC

SFB

Otros

PLCs

Curso 2009/10

OBs

Pgina 2

Introduccin
OB 1

Modularizacin de tareas:
Las tareas parciales se solucionan
con sus propios mdulos
La asignacin de parmetros
flexibiliza la programacin
Ejemplo: Ciclo de taladro con
profundidad asignable por
parmetro
Reutilizacin de los Mdulos:
Los Mdulos pueden llamarse
tantas veces como se necesite
Restricciones:
no se tiene acceso a
direcciones globales

FB10

FB1
Motor 1

Controlador
. . .

Vlvulas

OB 1

FB 1
.
.

CALL
FB1, DB2
Marcha
:=E 0.0
Paro
:=E 0.1
Motor_on :=A12.0
Velocidad :=AW14

.
.

SFC

FC 5
Valor
lmite

FB2

Direc.
0.0
0.1
2.0
4.0
6.0
0.0
.
.
.
U
UN
=
.

Copia

DB 2
Decl.
in
in
out
out
stat
temp

Nombre
Marcha
Paro
Motor_on
Velocidad
Veloc_ant
Calc_1

Tipo
BOOL
BOOL
BOOL
INT
INT
INT

#Marcha
#Paro
#Motor_on

PLCs
Curso 2009/10

Pgina 3

Introduccin
Tipo de Mdulo

Propiedades

Mduo de
Organizacin (OB)

- interfase para el usuario


- prioridades graduadas (0 a 27)
- informacin de inicio especfica en la pila de datos locales

Mdulo de Funcin (FB)

- parametrizable (los parmetros pueden asignarse en una llamada)


- con (rellamada) memoria (variables estticas)

Funcin (FC)

- parametrizable (los parmetros deben asignarse en la llamada)


- bsicamente sin memoria (slo variables temporales)

Bloque de Datos (DB)

- almacenamiento estructurado de datos locales (DB de instancia)


- almacenamiento estructurado de datos globales (vlido en todo el programa)

Mdulos de Funcin
del Sistema (SFB)

- FB (con memoria) guardado en el sistema operativo de la CPU y


llamable por el usuario

Funcin del
Sistema (SFC)

- funcin (con memoria) guardada en el sistema operativo de la CPU


y llamable por el usuario

Bloques de Datos
del Sistema (SDB)

- bloque de datos para datos de configuracin y parmetros

PLCs
Curso 2009/10

Pgina 4

Introduccin
Variables/Datos Globales
(vlidos en todo el programa)

Variables/Datos Locales
(slo vlidos en un bloque)
Variables temporales

Varibales estticas

PAE / PAA

se borran despus de la

se mantienen incluso despus

E/A

ejecucin del bloque asociado

de que sea ejecutado el bloque

M/T/Z

almacenamiento temporal

almacenamiento permanente

reas de DB

en la L stack

en DBs.

utilizables en OBs / FCs / FBs solo se pueden usar en FBs

absoluto

simblico
Acceso

PLCs
Curso 2009/10

Pgina 5

Introduccin
Parmetros de Entrada (IN) solo en FBs, FCs, SFBs y SFCs
Con ayuda de los parmetros de entrada se pueden asignar datos necesarios para el
procesamiento del bloque.
Parmetros de Salida (OUT) solo en FBs, FCs, SFBs y SFCs
En los parmetros de salida, los resultados del procesamiento del bloque son depositados
aqu.
Parmetros de Entrada/Salida (IN_OUT) solo en FBs, FCs, SFBs y SFCs
En los parmetros de Entrada/Salida, los contenidos de estos parmetros y el resultado del
procesamiento del bloque depositado en ellos mismos.
Datos Estticos (STAT) slo en FBs y SFBs
Los datos estticos son los datos locales a un bloque de funcin, los cuales son
almacenados en un bloque de datos de instancia y por tanto preservados hasta el siguiente
procesamiento del bloque.
Datos Temporales (TEMP) en todos los bloques
Los datos estticos son los datos locales a un bloque que almacenan valores durante el
proceso de dicho bloque en una pila de datos locales (L-Stack) y, una vez ha terminado de procesarse
el bloque, el contenido de estas variables se pierde.

PLCs
Curso 2009/10

Pgina 6

Introduccin

Los parmetros son canales para


transferir informacin:
Parmetros de Entrada (In):
Parmetros de Salida (Out):
Parmetros E/S (In/Out):
Los parmetros de un mdulo:
Estn en la seccin de cdigo
como variables "locales"
Pueden tener cualquier tipo de
dato

Dir.
0.0
0.1
2.0
2.0
8.0
10.0
...
...

Decl.
in
in
in
out
out
inout
stat
temp

Nombre
Marcha
Paro
Velocidad
Motor_on
Consigna
EMER_OFF
...
..

EN

Tipo
BOOL
BOOL
INT
BOOL
INT
BOOL
...
...

"Motor"
Marcha

Parmetros
de entrada
Parmetros
In/Out

Paro
Velocidad

Valor inicial
FALSE
TRUE
0
FALSE
0
FALSE
...
...

...

ENO

Motor_on
Consigna

Parm.
de Salida

EMER_OFF

PLCs
Curso 2009/10

Pgina 7

Bloques de organizacin
Son los encargados de poner programa de usuario a disposicin de la CPU, es decir,
nuestro programa debe estar incluido en un OB para poder ser ejecutado por el
Autmata
Los OBs son llamados cclicamente por el sistema operativo. Nunca por otro
mdulo lgico . Un OB puede ser interrumpido por otro OB de mayor prioridad.
Estn jerarquizados en prioridades y se dividen en dos tipos:
Dedicados a tareas peridicas:
OB1: Programa principal (mnima prioridad)
OB10: Interrupcin horaria
OB35: Interrupcin cclica, etc.
Dedicados a tratamiento de errores:
OB40: Error hardware
OB121 y 122: Error sncrono, etc.
PLCs
Curso 2009/10

Pgina 8

Bloques de organizacin
Arranque
OB 100
OB 101
OB 102
Ejecucin
Cclica del
Programa
OB 1

Ejecucin
Peridica
De un programa
OB 10...17
(Alarmas
horarias)

OB 30...38

(Alarmas Cclicas)

Ejecucin del
programa
Sujeta a eventos
OB 20...23

OB 80...87

OB 40...47

OB 121, 122

OBs de Alarma

Error OBs

(Alarmas de retardo)

(Alarmas de Proceso)

(Errores Asncronos)

(Errores Sncronos)

PLCs
Curso 2009/10

Pgina 9

Bloques de organizacin
Ej. OB82 (Prio.26) =
Manejo de Error.
Ejecutado en el caso de
rotura de un hilo en la
entrada analgica PEW 352

Ej. OB20 (Prio.3) =


Alarma de retardo.
La ejecucin comienza
3.25s despus de la
deteccin de un objeto.

Ej. OB10 (Prio.2) =


Alarma
Horaria.
Ejecutada una vez
Por minuto desde
las 9:30

El
OB1
Se
ejecuta
contnuamente .....

...... Hasta que es interrumpido


por otro OB
N OB
OB 1
OB 10
OB 20
OB 35
OB 40
OB 82

Tipo de OB
Programa Cclico
Alarma Horaria
Alarma de retardo
Alarma Cclica
Alarma de proceso
Manejo de Error

Prioridad
1
2
3
12
16
26 / 28

PLCs
Curso 2009/10

Pgina 10

Bloques de organizacin: OB de Arranque


Rearranque Completo
automatico
S7-300 / 400

manual
S7-300

Alimentacin STOP->RUN

S7-400
STOP->RUN
+ CRST

Borrado de la imagen de proceso,


M, T, Z no remanentes
Ejecucin del OB 100
Habilitacin de Salidas

C
I
C
L
O

Lectura de la PAE
Ejecucin del OB1
Escritura de la PAA

PLCs
Curso 2009/10

Pgina 11

Funciones

Las Funciones son mdulos de cdigo que se ejecutan al ser llamadas desde otro
mdulo.

Cuando se la llama, la funcin acta como una subrutina del programa. Cuando
termina de ejecutar su cdigo, el control se devuelve al mdulo y al segmento desde el
cual fue llamada.
Programa Principal

OB1

Mdulo Subrutina

FC

Ejecucin
del programa

Ejecucin del
Programa

Instruccin que llama


a otro mdulo

fin de bloque

Las Funciones son bloques lgicos sin memoria


Las variables temporales de las FCs se memorizan en la tabla de datos locales

PLCs
Curso 2009/10

Pgina 12

Funciones
Mdulos parametrizables:
tantos parmetros de entrada,
salida, y entrada/salida como se
necesiten.
sin memoria, p.e. slo variables
temporales
sin acceso a variables globales y
direcciones absolutas
con los mismos parmetros de
entrada devuelven el mismo
resultado
Amplan el juego de
instrucciones del procesador

Function FC10
Ejecucin
del programa

in
in
out
...

On_1
On_2
Off

BOOL
BOOL
BOOL

CALL FC 10
On_1 :=
On_2 :=
Off
:=

E 0.1
E 0.2
A8.0

...
U
U
=
...

#On_1
#On_2
#Off

PLCs
Curso 2009/10

Pgina 13

Funciones: sin parmetros


Contienen instrucciones a modo de subrutinas
Se insertan como nuevo bloque desde el administrador SIMATIC (del mismo
modo que se insertan VATs)
Llamada (equivalen a CALL pero no es posible transferir parmetros):
UC
llamada incondicional Ej.: UC FC12
CC
llamada condicionada a RLO=1
Ej.:
U
E125.0
CC
FC1
El fin de una funcin se realiza con la instruccin
BEA (incondicional) o
BEB (condicional a RLO=0)
PLCs
Curso 2009/10

Pgina 14

Funciones: con parmetros


Contienen instrucciones a modo de subrutinas
Se insertan como nuevo bloque desde el administrador SIMATIC (del mismo
modo que se insertan DBs o FCs sin parmetros)
Al darles contenido (introducir cdigo) se debe rellenar tambin su Tabla de
Declaracin, donde se incluyen los parmetros formales de la funcin (con los
que se disea la funcin) declarados como IN, OUT o IN/OUT.
Los parmetros actuales sern los que se transfieran desde el bloque actual a la
funcin, siendo estos valores asignados a los parmetros formales de la FC para
que trabaje con ellos
El fin de una funcin con parmetros se realizar igualmente con instrucciones
BEA y BEB
PLCs

Curso 2009/10

Pgina 15

Funciones: con parmetros


Ejemplos:
Llamada a una funcin sin parmetros:

CALL FC 12
Llamada a una funcin con parmetros:

CALL FC 25
Velocidad := MW10
Inicio :=
E124.0
Alarma := A125.0
Parmetros formales: Velocidad, Inicio y Alarma
Parmetros actuales: MW10, E124.0 y A125.0
Dentro de FC 25 (en su Tabla de Declaracin) se habrn definido las caractersticas de
Velocidad, Inicio y Alarma
CALL llama a un bloque lgico independientemente del RLO

PLCs
Curso 2009/10

Pgina 16

Funciones
Instruccin CALL
El tiempo de procesamiento para CALL depende del nmero y la posicin de
memoria de los parmetros actuales
La instruccin CALL asegura que los parmetros de mdulo son provistos
correctamente con datos actuales
Ejemplo:
CALL FC10
On_1
:= E 0.1
On_2
:= E 0.2
Off
:= A 8.0
Instruccin de llamada UC y CC
Llamada a mdulo independiente del RLO (UC) o dependiente del RLO (CC)
Ejemplos: UC FC20 CC FC20
Slo se pueden usar cuando la FC no tiene parmetros
PLCs
Curso 2009/10

Pgina 17

Bloques de funcin
Es un bloque con memoria.
Tiene asociado un bloque de datos DB de instancia,
de tal forma que en cada nueva llamada
DB10
se puede conservar el valor de las
Copia la parte de
variables internas de la funcin.
declaracin local del FB
Esto no era posible en FCs

FB1

rea de
Declaracin Local

Llamada a un
mdulo con los
parmetros
actuales
Ejemplo:

Seccin de cdigo
del mdulo llamado
usando los valores
del rea de
memoria local.

Call FB1,DB10
PLCs
Curso 2009/10

Pgina 18

Bloques de funcin

Mdulos parametrizables:
tantos parmetros de entrada,
salida y entrada/salida como se
necesiten
con memoria, es decir, con
variables estticas (tambin puede
haber temporales)
Llamada con rea de datos propia
(instancia)
Aplicacin:
Funciones de temporizacin y
contadores
Unidades de control de procesos
con estados internos
calderas
motores, vlvulas, etc.

Motor

DB 16
0.0
0.1
2.0
4.0

FB 5

CALL FB5, DB16


Marcha :=E 0.0
Paro
:=E 0.1
Motor_on :=A8.0
Velocidad :=AW12

Marcha
Paro
Motor_on
Velocidad

in
Marcha
in
Paro
out Motor_on
out Velocidad
stat ...
Temp...

...
U
UN
=
...

BOOL
BOOL
BOOL
INT

BOOL
BOOL
BOOL
INT

#Marcha
#Paro
#Motor_on

Es necesario

PLCs
Curso 2009/10

Pgina 19

Bloques de funcin
Tipos de variables aadidos (no en FCs):
STAT: esttico; conserva el valor de la variable de un ciclo para el siguiente, ya
que almacena su valor en el mdulo de datos DB asociado a la funcin.

Llamada a mdulo de funcin:


CALL FB1, DB3

CALL FBnx, DBny

Desde el administrador SIMATIC se habrn creado (dentro del Proyecto y en


la carpeta Bloques) FB 1 y DB 3:
Primero se crea FB1: tabla de declaracin de variables, cdigo de funcin, etc.
Despus se crea DB3 (asociado a FB1) y toma la tabla de declaracin de FB1
Asignacin del valor actual al parmetro/variable formal:
desde el DB3: Ver > datos > valor actual
Desde el OB100: Load + Transfer

PLCs
Curso 2009/10

Pgina 20

Bloques de funcin
Mediante la llamada con varias instancias de un FB se pueden controlar
varios equipos con el mismo FB

PLCs
Curso 2009/10

Pgina 21

Bloques de datos

Zonas de memoria para almacenamiento de datos organizados del programa

No pierden la informacin cuando el programa los ha acabado de utilizar

Existen DBs de dos tipos:


Globales: disponibles para cualquier mdulo lgico del programa.
De instancia: asignado a un mdulo de funcin, por lo que slo es accesible por ste.

PLCs
Curso 2009/10

Pgina 22

Bloques de datos globales

Son remanentes: no pierden la informacin aunque se corte la alimentacin (en coherencia


con el programa cargado en la CPU)

Tras la creacin de un DB, ste debe ser definido (rellenado) con las variables que se desee.
Tipo de variables:
Simple (bool, byte, entero, palabra, doble palabra).
Compuesto (STRING, DATE_AND_TIME, ARRAY).
Estructuras.

Apertura:

AUF

DB8

Acceso:

L
U
T
U

DB8
DB8.DBX3.0
DB7.DBW3
DB6.DBD4

lleva implcito AUF DB8


lleva implcito AUF DB7
lleva implcito AUF DB6

Los DB permiten la asignacin de simblicos.


PLCs
Curso 2009/10

Pgina 23

Bloques de datos globales


DB 99 "Valores"
Dir. Nombre

Tipo

0.0

Estado

BOOL

1.0

Estados

BYTE

2.0

Numero

INT

4.0 Peso[1]

8.0 Peso[2]

Acceso
Tradicional

Acceso Total
absoluto

simblico

AUF
U

"Valores"
DBX 0.0

DB99.DBX0.0

Valores".Estado

AUF
L

DB 99
DBB 1

DB99.DBB1

Valores".Estados

AUF
L

"Valores"
o
DBW 2

DB99.DBW2

L Valores".Numero

AUF
L

DB 99
DBD 8

DB99.DBD4

L "Valores".Peso[1]

REAL

REAL

PLCs
Curso 2009/10

Pgina 24

Bloques de datos globales

Abrir mdulo de datos


AUF DB 19

Carga y transferencia en mdulos de datos


L DBB 1
L DBW 2
L5
T DBW 4
L 'A'
L DBB28
==I

Cargar el byte de datos 1.


Cargar la palabra de datos 2 (byte 2/3).
Cargar el nmero 5.
Transferir a la palabra 4.
Cargar el carcter ASCII A.
Cargar el byte de datos 28.
Comparar.

U DBX 3.1

Consultar el bit 1 del byte 3.

L DB19.DBW4 Cargar la palabra de datos 4


del DB19 (incluye AUF DB 19).

PLCs
Curso 2009/10

Pgina 25

Bloques de datos de instancia

Asociado a un bloque de funcin FB. Antes de crear un DB instancia debe existir el FB

Cuando se inserta en el proyecto desde el Administrador SIMATIC, se debe asociar a


un bloque de funcin FB ya existente.

Aparecen en la tabla de variables los parmetros correspondientes al FB asociado


automticamente.

Pueden asociarse varios DBs a un nico FB.


CALL

FB22,DB201

CALL

FB22,DB202

CALL

FB22,DB203

PLCs
Curso 2009/10

Pgina 26

Resumen

FC
Lenguaje

AWL

FB

Sin parmetros

Con parmetros

CALL FC1
UC FC1
CC FC1

CALL FC2
Par1: ...
Par2: ...
Par3: ...

sin param., sin DB inst.

Con param., con DB inst.

CALL FB2, DB3


Par1: ...
Par2: ...
Par3: ...

UC FB1
CC FB1

FC1
( CALL )
KOP

FC2

FC1
EN

DB3

ENO

EN

FB1
ENO

EN

FB2
ENO

Par1
Par2

EN

ENO

Par1
Par2

Par3

Par3

DB3
FC2

Curso 2009/10

EN

Par3

PLCs

FB1

FB2

EN

EN

Par1
Par2

Par1
ENO

ENO

Par2

Par3
Pgina 27

ENO

EJERCICIO (Entregable 7)

Tenemos una mezcladora que produce 3 tipos de productos, magdalenas, sobaos


y donuts, para lo cual controla la receta modificando las proporciones de harina
(A124.0), leche (A124.1), levadura (A124.2), azcar (A124.3) y un motor que
realiza la mezcla (A124.4).
La produccin empezar con un flanco de subida de la seal E124.0.
El byte EB125 controla el producto a fabricar: magdalenas si es 0, sobaos si vale 1
y donuts en caso de que almacene 2. En cualquier otro caso la mezcladora se
mantendr parada.
La tabla de tiempos para cada producto es la siguiente:
Harina

Leche

Levadura

Azcar

T mezcla

Magdalenas 3

Sobaos

Donuts

La entrada E124.5 permite elegir si los productos y el proceso de mezcla se


realizan simultneamente (si E124.2=0) o de manera secuencial (si E124.2=1)
PLCs
Curso 2009/10

Pgina 28

EJERCICIO (Entregable 7)

Resuelva el ejercicio utilizando:

Funciones con parmetros.

Bloques de funcin con DBs de instancia.

Evite, en la medida de lo posible, el uso de saltos.

PLCs
Curso 2009/10

Pgina 29

Direccionamiento Indirecto S7-1200 y S7-1500

El ejemplo de programacin con un autmata Siemens S7-1500 (tambin es valido para S7-1200)
muestra como trabajar con direccioamiento indirecto dentro de un ARRAY
Para ello se simular el registro de temperatura de un proceso, almacenando la temperatura en un DB
Array
Que es un direccionamiento indirecto?
Mediante esta funcin podemos acceder a diferentes reas de memoria de una manera indirecta inidicada
por un ndice o puntero. Este tipo de direccionamiento nos puede llegar a ahorrar muchas lineas de
programa sobre todo cuando trabajamos moviendo datos.
Si por ejemplo queremos mover un valor a diferentes puntos de una variable array podemos hacer dos
cosas:
DIRECCIONAMIENTO DIRECTO
Creamos una funcin MOVE para mover el valor a cada uno de los punto de la variable array

MOVE "Temperatura" a "Temperatura" a Registro_Temperatura".Temperatura[1]


MOVE "Temperatura" a "Temperatura" a Registro_Temperatura".Temperatura[2]
DIRECCIONAMIENTO INDIRECTO
Creamos una sola funcin MOVE en donde moveremos el valor a donde nos indique el valor de la
variable "Puntero"

MOVE "Temperatura" a "Temperatura" a Registro_Temperatura".Temperatura["Puntero"]


Si "Puntero" =3 moveremos "Temperatura" a Registro_Temperatura".Temperatura[3]
Si "Puntero" =8 moveremos "Temperatura" a Registro_Temperatura".Temperatura[8]
De esta forma cambiando el valor de "Puntero" podemos acceder con misma funcin MOVEa cualqueir
punto del Array

Programacin del Ejemplo


Lo primero que hacemos es crear una DB (Bloque de datos) a la que llamaremos
"Registro_Temperatura".

Dentro de la DB creamos una variable que llamaremos "Temperatura" y ser del tipo Array[1..10] of Int

Este sera el programa del PLC


## Borrado de Array y reinicio de puntero
- Al habilitar el registro mediante flanco ascendente de "Habilita_Registro" borramos todo el array con la
funcin FILL_BLK
- Tambin reiniciamos el puntero (lo ponemos a 0)

## Temporizacin de registro
Al Habilitar el registro de datos "Habilita_Registro" lanzamos un temporizador cada 10 Seg que activara
el bit "Flag_Registro" que realiza el registro de datos y reinicia el temporizador
De esta manera generamos cada 10 segundos un bit que realiza el registro de forma peridica

## Registro de datos e incremento de puntero


Al activarse el "Flag_Registro" realizamos dos cosas:
- Incremento del valor del "Puntero" con la instruccin INC
- Mover el valor de "Tenperatura" al Array "Registro_Temperatura" que nos marca el puntero

## Fin de registro
Comparamos el valor de "Puntero" con +10 (el tamao del array) y si es igual a 10 ponemos a reset el bit
"Habilita_Rgistro"
De esta forma tenemos 10 registro en el Array

Aqu podemos ver la tabla del Array y sus registros

Direccionamiento indirecto en Step 7 (I)


Memoria y punteros a rea
3 marzo, 2014 en Teora, Tutoriales, Videos 18 Comentarios

tweet

inShare

Para empezar con el tema del direccionamiento indirecto, vamos a explicar una serie de conceptos bsicos
y luego nos pondremos con la formas ms bsicas de direccionamientos indirectos.
Los tipos de direccionamientos son tres:

Direccionamiento Inmediato
Direccionamiento Directo
Direccionamiento Indirecto

Los dos primeros, son los que conocemos muy bien:

El direccionamiento inmediato es cargar directamente el valor del operando (de cualquier tipo), por
ejemplo L 32.
El direccionamiento directo ser del tipo L MW10 (donde el valor de MW10 sea el 32 anterior) es
decir, en la carga se apunta directamente al sitio de la memoria donde reside el valor que queremos
cargar.

Nada
nuevo
bajo
el
sol.
Ahora bien, qu pasa cuando queremos recorrer reas de memoria de forma recursiva o leer un rea
dinmicamente?

Direccionamiento indirecto
Como decimos, podemos acceder a los valores de la memoria de una forma indirecta.. vamos a querer saber
el contenido de una variable (o rea de memoria) usando otra variable que se referir a est rea de la que
queremos saber su valor.

Parece un poco enrevesado pero es bastante fcil de entender mediante un ejemplo: podemos abrir el DB10
con AUF de dos formas:
AUF DB10
o bien:
AUF DB[MW20], teniendo la marca MW20 el valor 10.
Esta ltima forma de cargar el valor de la marca MW10 es uno de los tipos de direccionamiento indirecto,
pero hay varios:

Direccionamiento Indirecto por Memoria con Nmero


Direccionamiento Indirecto por Memoria con Puntero de rea
Direccionamiento Indirecto por Registro e Intrarea (rea interna)
Direccionamiento Indirecto por Registro e Interrea (rea cruzada)

El caso anterior, el usado es el primero, mediante nmero.

Direccionamiento Indirecto por Memoria


Dentro de los direccionamientos indirectos por memoria con nmero a su vez, podemos usar MW (o DW
de un DB) o MD (o DD de un DB) para acceder:

Usando formato palabra: accederemos a temporizadores, contadores , abriremos DB y accederemos


a FB y FC.
Usando formato doble palabra: accederemos a datos de tipo bit, byte, palabra y doble palabra.

Formato palabra nmero (indexados)


Es el ms fcil de entender: en un nmero entero (palabra) introducimos el valor de DB, FB ,
temporizador etc que queramos leer.
As podemos hacer un
L 10
T MW 10
U T[MW10]
con lo que estaremos leyendo el estado del temporizador T10.
Digamos que nos sirve para valores operandos que estn indexados mediante un nmero como son los
DB , los contadores etc. Para hacer referencia a ellos, nos servimos de un nmero ya que existe una lista
de estos elementos.

Direccionamiento Indirecto con formato doble palabra Punteros


a rea

Aqu ya se introduce el concepto estrella del direccionamiento indirecto el puntero.


Hagamos un pequeo parntesis para ver este concepto.
Un puntero no es ms que una direccin. Nada ms. No tiene un valor, slo apunta con el dedo como un
nio pequeo dnde mirar, pero no dice qu est viendo.
Los punteros pueden ser:

Interrea (rea cruzada) : Por ejemplo P#M10.0, o P#E10.0 o P#DBX10.0


Intrarea (rea interna): Por ejempo P#10.0

Como ves hay una gran diferencia. Los que tienen rea de memoria se posicionan, dentro de todas las
reas la memoria en una en concreta, y de esa, en una posicin definida (siguen sin decir lo que vale, pero
la direccin es completa).
En cambio, los que no llevan rea de memoria, simplemente es una direccin. pero no sabemos de qu
rea de memoria!
En nuestro caso, y siguiendo con los direccionamientos indirectos, vamos a usar los punteros SIN rea de
memoria.
As podremos hacer esto:
L P#10.0
T MD10
U E[MD10]
= A [MD10]
En este ejemplo de una imaginacin sin parangn, lo que hemos hecho es cargar un puntero (en el rea de
direcciones de la que ya hablaremos AR1) y se lo hemos transferido a la marca MD10. Por tanto, el
cdigo de arriba sera lo mismo que escribir:
U E10.0
= A10.0
Ves a dnde te puede llevar esto y las posibilidades que ofrece? Tambin se te ha erizado el bello?.
Sigamos

Se puede cargar los punteros de otra forma?


Pues s.
Resumiendo diremos que le damos la direccin bien mediante el puntero (P#10.0) o contando con los
dedos cuntos bits tiene la direccin. Es decir:

Podemos hacer, al igual que en el caso de arriba:


L 80 (porque la direccin 10.0 son 80 bits)
T MD10
U E[MD10]
= A [MD10]
Es lo mismo? Extrictamente lo mismo. Hemos creado el puntero de la misma forma. Por tanto, de forma
numrica, un puntero se ver como el nmero de bits de ese puntero.

Direccionamiento indirecto en Step 7 (II)


Registros y reas
11 marzo, 2014 en Curso online, ejemplos, Teora, Tutoriales, Videos 22 Comentarios

inShare4

En esta nueva entrada sobre direccionamiento indirecto es con la que terminamos el curso. En ella vamos
a ver la segunda parte de cmo automatizar y recorrer zonas de memoria para trabajar con ellas de forma
indirecta y recursiva. Lo primero que has de hacer es leer el direccionamiento indirecto en Step 7 (I) si
no lo has hecho ya.

Registro de direcciones
Como sabes, cuando se carga un valor, hay dos registros, el ACU1 y el ACU2. Pues tambin existen dos
registros de direcciones, el AR1 y el AR2 para usarlos en el direccionamiento indirecto.
La forma de cargar y transferir los valores a los registros son de la siguientes 3 maneras:

Cargar directamente el puntero en el AR1


Cargar el puntero y transferirselo al AR1
Cargar el valor numrico de bits y transferirselo al AR1

Cargar directamente el puntero


Es el ms rpido si se sabe qu hay que cargar:
LAR1 P#1.0
Lo que cargar en el AR1 el puntero 1.0
Cargar el puntero y transferirlo al AR1
L P#1.0

LAR1
Al igual que el anterior, cargamos el puntero P#1.0 en el AR1
Cargar el valor numrico de bits y transferirlo al AR1
o, como dijimos en direccionamiento indirecto (I), podemos crear al puntero diciendo cuntos bits tiene
la direccin
L8
LAR1
Har exactamente lo mismo que los casos anteriores. Hay que puntualizar que si queremos acceder a una
direccin que tenga ms de 32768 bits (16 bits) la carga debera ser del estilo:
L L#80000
TAR1
De tal forma que cargaremos la direccin 10000.0
Un poco altita la direccin aunque esa sera la forma. A decir verdad, lo suyo es jugar siempre con nmeros
en doble palabra como ya veremos ms adelante aunque hacerlo como enteros tambin es vlido aunque
limitado a la capacidad de una palabra frente a la doble.

Direccionamiento Indirecto por Registro e Intrarea/Interrea


La diferencia fundamental entre el registro e Intrarea y registro e Interrea es:

Intrarea: No se especifica el rea de memoria


Interrea: Vamos a especificar el rea de memoria (el tipo, por as decirlo)

Y esto qu significa en cristiano?


Pues a la hora de la verdad, y para nosotros, no mucha cosa. En resumen, y que permitan los puristas, lo
que vamos a hacer es o bien:

LAR1 P#50.0 // Cargar el puntero


L MW [AR1, P#10.0] // Decir el operando (en este caso de carga), el tipo de rea (marcas) y la direccin.
O tambin podemos hacer:
LAR1 P#M50.0 // Cargar el puntero CON la zona de memoria
L W [AR1, P#10.0] // Decir el operando y la direccin.
Resultado?
Pues bsicamente el mismo. La diferencia es que en el direccionamiento de tipo intrarea, el contenido del
AR1 va a tener la misma pinta que el direccionamiento por memoria que veamos en el captulo I. No tiene
el rea de memoria asignado (marcas en nuestro caso).
Qu se usa ms?
Personalmente intrarea, pero supongo que es cuestin de gustos. Adems imaginemos que mezclamos las
cosas y hacemos lo siguiente:
LAR1 P#E50.0
L MW[AR1,P#10.0]
Como veis hemos indicado el rea en la carga del registro AR1 y luego hacemos una carga de MW
vamos a mandar la CPU a Stop o crearemos un agujero espacio-tiempo?
Pues no. No s si lamentablemente, pero no.
Simplemente del AR1 tomaremos la direccin, pero no la zona de memoria y ejecutaremos el operando de
carga MW.
Por tanto, y a mi juicio, es mejor siempre usar el intrarea. Me parece ms metdico ya que siempre vas a
construir los punteros de la misma forma, independientemente del uso que le vayas a dar posteriormente.
Muy bien, me parece estupendo pero me he perdido en el L MW [AR1, P#10.0] qu significa?
Muy sencillo. Lo que hay entre corchetes es la direccin inicial ms un desplazamiento. De tal forma que
en nuestro ejemplo, realmente estamos leyendo la MW60 (50 del AR1 +10 del offset por as decirlo).
Es obligatorio poner ese offset siempre?
Si. Siempre. Sin excepcin. Pones un P#0.0 si no lo quieres y listo.
Qu pasa si cargo un P#50.0 en el AR1, cargo un offset P#0.1 y hago una lectura MB, MW o MD?
Pues que estaras provocando un bonito error de runtime. Ya que para hacer una lectura de byte, word o
doble word, necesitas que el bit del puntero sea 0 (ojo, el bit, no el byte). No puedes crear un MW50.1
como puedes imaginar. As que cuidadn con eso.

Qu ms puedo hacer con los registros?


Como no slamente del AR1 vive el hombre, existe tambin un segundo registro, el AR2 . Con esta pareja,
podemos jugar indistintamente para cargar nuestros punteros e incluso combinarlos en las operaciones.
As, para seguir con el ejemplo anterior, podramos hacer:
LAR1 P#50.0
LAR2 P#10.0
L MW[AR1,AR2] : No se puede usar ambos AR para hacer este tipo de direccionamiento
L MW[AR1,p#0.0]
T MW[AR2,P#10.0]
Qu operaciones puedo hacer con los registros?
LARn : Cargar el contenido del ACU1 en el registro ARn, siendo n=1 o 2.
Offtopic: Y no, no es un 102, es un 1 O 2. A la RAE le ha parecido buena idea no tener que acentuar desde
hace un tiempo la O entre nmeros. Qu pas.
TARn: Transferir desde el registro n, su contenido al ACU1.
+ARn: Sumar al contenido del ARn, el contenido del ACU1.
Pero como hemos visto, podemos hacer cargas y transferencias directas:
LARn <Direccin>: Cargamos la direccin al ARn. Por ejemolo LAR1 P#50.0
TARn <Direccin>: Cargamos el contenido del ARn en la direccin. Por ejemplo TAR1 MD50
+ARn <Puntero>: Aadimos al ARn el puntero que queramos. Por ejemplo, +AR1 P#10.0
Para rizar el rizo, podemos copiar la informacin entre los AR haciendo:
LAR1 AR2, con lo que cargaremos en el AR1 el contenido del AR2
TAR1 AR2, con lo que recuperamos el contenido del AR1 y se lo cargamos en el AR2.
Como ves las combinaciones son unas cuantas si bien se pueden resumir en asignacin y suma.

Y todo esto, ya sirve para algo?


Pues aunque pueda parecer lo contrario, el direccionamiento indirecto sirve para muchas cosas, pero sobre
todo para recorrer informacin y tratarla.

En qu se diferencian las operaciones para el direccionamiento indirecto entre el STEP 7 y el STEP 5?


Mostrar referencias
http://support.automation.siemens.com/WW/llisapi.dll?func=cslib.csinfo&objId=24520698&nodeid0=37
217116&load=treecontent&lang=es&siteid=cseus&aktprim=0&objaction=csview&extranet=standard&vi
ewreg=WW

Instrucciones:
En el direccionamiento indirecto en el STEP 7, se diferencia entre:
1. El direccionamiento indirecto por memoria con un nmero:
Para el direccionamiento de temporizadores, contadores, y mdulos,
2. El direccionamiento indirecto por registro con un puntero de rea:
Para el direccionamiento de zonas de memoria: Periferia, entradas, salidas, marcas, datos
globales (DBX), datos de instancia (DIX) y datos locales.
direccionamiento indirecto por memoria con un nmero
Ejemplos:

STEP 7

Analoga en el STEP 5

L2

Carga un nmero

L KF+2

Carga un nmero

T MW 33

Guardar en la palabra
de marcas 33

T MW 33

Guardar en la palabra
de marcas 33

L T [MW33]

Carga en valor de
tiempo actual del
temporizador 2

B MW33

Elabora la palabra de
marcas 33

L T0

Carga en valor de
tiempo actual del
temporizador 2

.......
AUF DB[MW33]

.......
CC FC[MW33]

.......
Abre el DB2

.......

.......

B MW33

Elabora la palabra de
marcas 33

A DB0

Abre el DB2

.......

.......

.......

Llama al FC2 si VKE = B MW33


1:

Elabora la palabra de
marcas 33

Slo funciona,
si FC2 no tiene
parmetros

Llamada al FC2 si VKE


= 1:
Slo funciona si FC2 no
tiene parmetros

SPB FC0

El operando de la direccin, en la que se guarda el nmero (en este caso, la MW33), puede estar en la
zona de Marcas, datos globales (DBX), datos de instancia (DIX) y datos Locales. La utilizacin de los
datos de instancia de zona (DIX) para el operando de la direccin solo es posible en los mdulos de
funcin (FBs) con CODE_VERSION1 (no en los FBs con capacidad de multinstancia).
Direccionamiento indirecto por registros con ayuda del puntero de rea
Ejemplo con un puntero de rea interno

STEP 7
L P#4.5

Analoga en el STEP 5

Carga el puntero para el L KF +4


Byte4, Bit 5

Carga el nmero de
Byte

L KF +5

Carga el nmero de Bit

SLW 8

Desplaza el nmero de
Bit al Byte alto

OW

Bit en el Byte alto, Byte


en el Byte bajo

Ejemplo para un puntero de rea externo:

STEP 7
L P#M 2.3

Carga el puntero para la


M2.3

Analoga en el STEP 5

Clculos del puntero


Una propiedad decisiva del puntero de rea es que los clculos del puntero se pueden realizar con las
operaciones normales para coma fija. Esto quiere decir lo siguiente en cualquier puntero:

Suma de 1: El puntero aumenta al siguiente Bit


Suma de 8: El puntero aumenta al siguiente Byte, el nmero de Bit permanece invariante.

Ejemplos:

STEP 7

Analoga en el STEP 5

L P#M 2.3

Carga el puntero para


la M2.3

L P#4.5

Carga el puntero para


el Byte4, Bit 5

.......

+D

Resultado: El puntero
apunta a la M7.0, es

.......

decir, estas 3
instrucciones tienen el
mismo significado
que: L P#M7.0
.......

.......

L P#DBX 2.3

Carga el puntero para


el Bit de datos global
2.3

L 16

Carga 16

-D

El puntero se reduce
en 16 Bits, es decir,
estas 3 instrucciones
tienen el mismo
significado que: L
P#DBX0.3

.......

.......

.......

En los clculos con punteros de rea, slo se puede utilizar un puntero con denominacin de rea
(diferente a cero). En caso contrario, las posiciones del identificador de rea se "suman" o "restan", y
aparece una identificacin no vlida.
Direccionamiento indirecto por memoria con ayuda del puntero de rea
Ejemplos:

STEP 7

Analoga en el STEP 5

L P#2.0

Carga el puntero para el L KF +2


Byte2, Bit 0

Carga el nmero de
Byte

T MD44

Se guarda en la doble
palabra de marcas 44

L KF +0

Carga el nmero de Bit

U E [MD44]

Consulta de la entrada
2.0 para saber si vale
"1"

SLW 8

Desplaza el nmero de
Bit al Byte alto

OW

Bit en el Byte alto, Byte


en el Byte bajo

T MW44

Se guarda en la palabra
de marcas 44

B MW44

Elabora la palabra de
marcas 44

U E 0.0

Consulta de la entrada
2.0
para saber si vale "1"

.........

..........

.......

.......

L 123

Carga 123

L KF +123

Carga 123

T MW [MD44]

Guarda el 123 en la
palabra de marcas 2

B MW44

Edita la palabra de
marcas 44

T MW 0

Guarda el 123 en la
palabra de marcas 2

Para la colocacin de los operandos de las direcciones (en este caso, la MD44) en las posibles reas de
memoria, son vlidas las mismas declaraciones que con el direccionamiento indirecto con un nmero
(consulte arriba). La diferencia es que se necesita una doble palabra.
En el direccionamiento indirecto por memoria, el identificador de rea en el puntero tiene que ser 0.
Slo se pueden utilizar punteros internos de rea.
En el acceso indirecto a un Byte, palabra o doble palabra, la direccin del Bit en el puntero tiene que
ser 0.
Direccionamiento indirecto por registros con ayuda del puntero de rea
Ejemplos:

STEP 7

Analoga en el STEP 5

Ejemplo a
L P#2.0

Carga el puntero para el


Byte2, Bit 0

LAR1

Carga el puntero en el
registro de direcciones
1

.......

// Direccionamiento indirecto por registro con un


rea interna
U E [AR1, P#0.0]

Consulta de la entrada
2.0 para saber si vale
"1"

Ejemplo b
LAR1 P#E 2.0

Carga el puntero para la


entrada 2.0

// Direccionamiento indirecto por registro con un


rea externa

.......

U [AR1, P#0.0]

.......

Consulta de la entrada
2.0 para saber si vale
"1"


Ejemplo c
LAR1 P#DBX 2.0

Carga el puntero para el


bit de datos globales 2.0

L MW [AR1, P#0.0]

Carga la palabra de
marcas 2

.......

.......

Ejemplo d1
LAR1 P#A 2.0

Carga el puntero para la


salida 2.0 en el AR1

= [AR1, P#2.2]

Asigna el VKE actual a


la salida 4.2

Ejemplo d2
+AR1 P#2.0

Aumenta el puntero en
el registro en 2 Bytes

T W [AR1, P#0.0]

Escribe desde la palabra


baja del acumulador 1
en la palabra de salida
4.0

.......

L P#4.5

Carga el puntero para el


Byte4, Bit 5

+AR1

Aumenta el puntero en
el registro con el
AKKU1

S [AR1, P#1.0]

Activa la salida 9.5 si


VKE = 1

En el direccionamiento indirecto por registros, el puntero puede tener un identificador de rea:

Si falta el identificador (ejemplo a), hay que indicarlo en las instrucciones indirectas por registro
Si el identificador est dentro del puntero (ejemplo b), puede faltar en las instrucciones
indirectas por registro. Tenga en cuenta en este caso que hay que indicar el ancho de acceso
Byte, Word, Doble Word en las operaciones de carga y transferencia (ejemplo d2).

Si el identificador est dentro del puntero y se indica en la instruccin (ejemplo c), vale el rea indicada
en la instruccin; El identificador en el puntero se ignora.
En las instrucciones indirectas por registro, se puede indicar un OFFSET (ejemplo d). ste se suma al
puntero del registro en caso de ejecutarse el acceso. El contenido del registro permanece invariante.
La utilizacin del identificador de rea L en el puntero no es posible en las CPUs antiguas.

El OFFSET indicado entre corchetes [AR1, <OFFSET>] puede estar dentro del rango P#0.0 .....
P#8191.7.
La instruccin "+AR1" slo tiene en cuenta la palabra baja del OFFSET indicado en el AKKU1 o
como operando, e interpreta los 16 Bits como un nmero con signo:

P#0.0 ..... P#4095.7


es un OFFSET positivo para el "+AR1" y
P#4096.0 ..... P#8191.7
es un OFFSET negativo para el "+AR1".

Ejemplos:

L P#0.1

OFFSET positivo ms pequeo para el "+AR1"

+AR1

Aumenta el contenido de AR1 en P#0.1


.........

.........

L P#4095.7

OFFSET positivo ms grande para el "+AR1"

+AR1

Aumenta el contenido de AR1 en P#4095.7

.......

.......

L P#4096.0

OFFSET negativo ms grande para el "+AR1": Se


corresponde con "P#-4096.0"

+AR1

Se reduce el contenido AR1 en P#4096.0

.......

.......

L P#M 8191.0

Se corresponde con "P#-1.0" ("+AR1" ignora el identificador


"M")

+AR1

Se reduce el contenido AR1 en P#1.0 !

.......

.......

L P#8191.7

OFFSET negativo ms pequeo para el "+AR1": Se


corresponde con "P#-0.1"

+AR1

Se reduce el contenido AR1 en P#0.1 !

.......

.......

L P#E 8192.0

Se corresponde con P#0.0" ("+AR1" ignora el identificador


"E")

+AR1

El contenido del AR1 no se modifica

Debido a que la operacin "+AR1" slo tiene en cuenta la palabra baja del AKKU1, tambin se
pueden utilizar punteros con identificador de rea: El identificador no molesta en la palabra alta; Al
contrario que en el clculo del puntero con operaciones con enteros.

Por favor, tenga en cuenta que, independientemente de las posibilidades para aumentar y disminuir el
registro de direcciones en una instruccin indirecta por registros, el contenido del registro siempre tiene
que estar dentro del rango P<identificador eventual> 0.0 ..... P<identificador eventual> 65535.7.
Indicacin general
De forma anloga al registro de direcciones 1, en las CPUs existe un segundo registro AR2 con las
mismas posibilidades de utilizacin.
Si se utiliza el registro de direcciones, existen limitaciones, que si no se tienen en cuenta pueden
provocar reacciones inesperadas en el programa de usuario. Informacin ms detallada se puede ver en
la ayuda del STEP 7, bajo la palabra de bsqueda "AR1".
Ayuda para elegir las posibilidades del direccionamiento indirecto:

Si se utiliza el registro de direcciones, es preferible elegir el direccionamiento indirecto por


registros con punteros de rea internos
El rea de memoria llamada por la instruccin se ve en la misma. De esta forma, el programa es
ms claro, hay menos posibilidades de fallo y ser mejor para el mantenimiento;
En este caso, no hay que tener en cuenta la vida til de los operandos de las direcciones. La
utilizacin del registro de direcciones es posible actualmente, independientemente del DB
abierto o los datos locales.

Las ventajas de la utilizacin del direccionamiento indirecto por memoria, con un puntero en la zona de
marcas, son las siguientes:

No se tienen en cuenta las limitaciones para la utilizacin del registro;


Tampoco hay que tener en cuenta la vida til de los operandos de las direcciones, porque la zona
de marcas est disponible sin limitaciones en todos los puntos del programa.
Se pueden utilizar varios punteros en paralelo.
Sin embargo, no se dispone de la cmoda posibilidad del "+ARi" ni de la indicacin de un
OFFSET.

Una advertencia para trabajar con punteros o punteros ANY:

Ambos contienen el puntero de rea en los 32 bits ms bajos, tal como se ha mostrado arriba.

Al utilizar el direccionamiento indirecto, los errores de programacin no suelen aparecer tan


rpidamente como cuando se utiliza el direccionamiento directo. Adems, no solo puede que la zona de
memoria deseada aparezca en un punto que no se ha tenido en cuenta, sino que se pierdan datos sin
querer de otras zonas de memoria. Por tanto, proceda con cuidado, y compruebe el programa con
profundidad.
Advertencia:
En la ayuda Online del STEP 7, se dispone de informacin adicional y ejemplos en

Formato del tipo de parmetro ANY,


Formato del tipo de parmetro POINTER,
Utilizacin del tipo de parmetro POINTER,
Utilizacin del tipo de parmetro ANY

Cmo se pueden abrir indirectamente bloques de datos en STEP 7 V5.x y cmo se pueden llamar,
arrancar y evaluar temporizadores de manera indexada?
Mostrar referencias
Instrucciones
Se disponen de las siguientes posibilidades para abrir indirectamente un mdulo de datos:

Programando parmetros formales del tipo "BLOCK_DB (ejemplo 1)


A travs de la pila de datos locales (variables temporales del mdulo) (ejemplo 2)
Por medio del direccionamiento indirecto de memoria (ejemplo 3)

La figura 01 muestra 3 ejemplos para la apertura indirecta de un bloque de datos en AWL:

Figura 01

Ejemplo 1
Para el parmetro de entrada "Data2" aqu se asigna el parmetro formal del tipo "BLOCK_DB". El
contenido de "Data2" se corresponde con el nmero del bloque de datos a abrir.
Ejemplo 2
El parmetro de entrada "InWord" del tipo "WORD" se asigna a la variable temporal "Data1". El
nmero que se tiene en la variable temporal "Data1" de tipo WORD es el nmero del bloque de datos
global. El bloque de datos global se carga con la instruccin AUF DB[Data1].

Ejemplo 3
Con el direccionamiento indirecto de memoria, en la palabra de marcas MW20 se carga, por ejemplo, el
nmero 10 de DB. Con la instruccin AUF DB[MW20] se abre el bloque de datos global, cuyo nmero
est disponible en la palabra de marcas MW20. AUF DB[MW20] es lo mismo que la instruccin AUF
DB10.
Otras instrucciones para abrir un bloque de datos mediante direccionamiento indirecto es posible con
AUF DB[DBW <Nmero>] y AUF DB[DIW <Nmero>].
Si no se utilizan FBs, se pueden utilizar libremente los 2 registros de DB, es decir, todas las variantes se
pueden abrir con AUF DI ....
Indicacin
Tenga tambin en cuenta para el tipo de parmetro "BLOCK_DB" la informacin indicada en la ayuda
online del STEP 7, bajo el punto "Tipos de datos admisibles al asignar parmetros".

Llamar, arrancar y evaluar un temporizador de manera indexada


Un temporizador se puede llamar de manera indexada a travs de una variable de tipo WORD. Esta
variable puede ser:
Una variable global [MW] o
Una variable local en un DB [DBW] o
Una variable temporal dentro de un mdulo.
El acceso se realiza de la siguiente manera (ejemplo):
SI

T[MW2]

SI

T[DBW2]

SI

T[#zeit_x]

// El nmero de temporizador se encuentra en la palabra de marcas 2, codificado en


hexadecimal.
// El nmero de temporizador se encuentra en la palabra del mdulo de datos 2,
codificado en hexadecimal. El DB tiene haberse abierto anteriormente de manera
explcita.
// La variable "#zeit_x" es una variable temporal de tipo WORD.

Conceptos de bsqueda
Direccionamiento indirecto, llamada a un DB

puntero a DB

Supongamos que tu DB es el DB1, con datos byte ( Valen tambien nombres simblicos)
AUF DB1 // ABRO EL BLOQUE EN EL QUE VOY A LEER
LAR1 P#DBX0.0 // MANDO EL PUNTERO AL INICIO DEL BLOQUE O DONDE SEA NECESARIO
L 100 // ULTIMO VALOR A LEER DEL BLOQUE
L #actual //VALOR ACTUAL DEL PUNTERO AL BLOQUE : VARIABLE DE MEMORIA MWxx
==I // COMPARO LOS VALORES
SPBN SIG // SI NO SON IGUALES SIGO
L 0 // SI SON IGUALES CARGO 0
T #actual // Y REINICIO EL CONTADOR
SIG: NOP 0
L4
L #actual
+I // SUMO 4 AL VALOR ACTUAL
T #actual
L #actual // CARGO EL VALOR ACTUAL
L 4 // CARGO 4
-I // RESTO 4 DEL VALOR ACTUAL
SLW 3 //AGREGO DESPLAZAMIENTO DEL POINTER. EN ESTE CASO ASUMO BYTE.
+AR1 // SUMO EL VALOR OBTENIDO AL REGISTRO DE DIRECCIONES,CON LO CUAL MI PUNTERO AHORA ESTA
DONDE LO NECESITO
L DBD [AR1,P#0.0] // LEO EL VALOR EN PALABRA DOBLE
// DE LA DIRECCION ACTUAL
a partir de aqu colocas las instrucciones de lo que hars con el valor obtenido, en el prximo scan el puntero se
incrementar en 4 con lo que iras a parar a la siguiente palabra doble del DB.
Por supuesto la variable #actual debe ser esttica o bien puede ser una marca, para que no se pierda al salir del
bloque en el que coloques tu cdigo, el valor que puse de 100 para el ltimo valor es simplemente un ejemplo,
ah colocas tu ltimo valor a leer +4.
Si en vez de leer los valores de la tabla quisiera escribirlos en una tabla de igual tamano, en la ultima instruccion
tendria que poner:
T DBD [AR1,P#0.0]
en vez de:
L DBD [AR1,P#0.0]
Gracias y perdon por preguntar tanto

Puntero a DB
por Ricardo Dom Jun 15, 2003 3:53 am

Cuando yo puse #actual lo que quise indicar es que esa ser la variable en la que se va almacenando un valor
auxiliar, que es el que se me ir sumando al puntero que fijo al principio para ir avanzando a lo largo del DB, este
valor auxiliar lo puedes tranquilamente almacenar ( si no quieres usar variables estticas del bloque) en una
palabra de marcas, o sea para el caso es lo mismo que en lugar de #actual coloques por ejemplo MW10, esta
variable es unvalor dinmico que ir cambiando a medida que tu programa vaya leyendo los sucesivos valores se
incrementar como ves de 4 en 4(0, 4, 8, 12, 16,...).
Esto es mas facil de ver si analizas como funciona el cdigo:
Lo primero que haces es fijar un puntero al comienzo de la zona del bloque de datos de la que quieras leer:
LAR1 P#DBX0.0
Con esto lo que haces es decirle a tu programa "bien, ahora voy a comenzar a trabajar a partir del Byte 0 Bit 0 del
bloque que tengo abierto", este es el concepto del puntero, le indico el punto de referencia sobre el que voy a
trabajar, si por ejemplo quisieras empezar a trabajar a partir de tu segundo dato obviando el primero, el puntero
sera P#DBX4.0 ( ya que cada palabra ocupa 4 Bytes), o sea le dira a mi programa: " comenzamos a leer el bloque
pero a partir del Byte 4 Bit 0".
En el primer ciclo de lectura el valor de #actual es 0 ya que no tena ningun valor previo. Lo primero que hago a
continuacion es verificar si llegue al final de la lectura, obviamente esto no es as ya que #actual ( o MW10 si
usaste una marca) es 0, sumo ahora 4 al valor de #actual para ya prepararlo para el siguiente ciclo, obviamente si
usara el valor que ahora tiene #actual para sumarle al puntero leera la palabra doble que empieza en 4.0 en el
DB, es decir estara saltandome el primer dato, por lo cual ejecuto un pequeo truco: le resto 4 al valor de #actual
pero no transfiero el valor a #actual, con lo cual el resultado solo me queda en el ACU1 este resultado lo desplazo
3 lugares a la izquierda y lo sumo al puntero con la instruccion +AR1 con lo cual ahora estoy posicionado en---->
DBX0.0 + #actual - 4, como en este primer ciclo #actual es 4 --->AR1 es 0 por lo que no me mov del inicio del
bloque y leo la primera palabra doble del DB con la instruccin:
L DBD [AR1,P#0.0]
En el siguiente ciclo sumo 4 a #actual con lo que ahora valdr 8 y, luego de la resta y la suma, AR1 ser 4 con lo
cual leo mi segundo valor, y as sucesivamente (el ciclo se repite hasta que el valor de #actual sea = al fin del
bloque +4), y luego reinicia desde 0 nuevamente.
Respecto del valor de control para verificar si llegaste al final de tu DB, debes tener en cuenta lo siguiente: Las
direcciones de los PLCs estan expresadas en Bytes, y las correspondientes a los DB no son la excepcin, por lo
que si consideras que las palabras dobles ocupan 4 Bytes y tu quieres leer 15 valores de palabras dobles deben
hacer:
15*4= 60
Es decir tu bloque de datos tendr una longitud de 60 Bytes, por lo que le valor de control ser precisamente ese,
es decir debers contrastar #actual contra 60 para verificar si llegaste al final del bloque, ya que no debes poner
tu nmero de dato (1,2,3,4,etc.) sino la direccion en el DB ( ya que trabajas con punteros a direcciones).
Espero te haya aclarado algo mas, sino pregunta nuevamente.
Saludos
Ricardo

Tipo y
descripcin

Tamao
en Bits

FormatoOpciones

Rango y notacin numrica

Ejemplo

(Valores mximo y mnimo)

BOOL (Bit)

Texto Booleano

TRUE/FALSE

TRUE

BYTE (Byte)

Nmero
Hexadecimal

B#16#0 a B#16#FF

B#16#10

WORD (Palabra)

16

Nmero Binario

2#0 a 2#1111_1111_1111_1111

2#0001_0000_0000_0000

Nmero
Hexadecimal

W#16#0 a W#16#FFFF

W#16#1000

BCD

C#0 a C#999

C#998

Nmero Decimal
sin signo

B#(0,0) a B#(255,255)

B#(10,20)

Nmero Binario

2#0 a
2#1111_1111_1111_1111_1111_1111
_1111_1111

2#1000_0001_0001_1000_10
11_1011_0111_1111

Nmero
Hexadecimal

DW#16#0000_0000 a
DW#16#FFFF_FFFF

DW#16#00A2_1234

Nmero Decimal
sin signo

B#(0,0,0,0) a B#(255,255,255,255)

B#(1,14,100,120)

DWORD (Doble
Palabra)

32

INT (Entero)

16

Nmero Decimal
con signo

-32768 a 32767

DINT (Int,32 bit)

32

Nmero Decimal
con signo

L#-2147483648 a L#2147483647

L#1

REAL (Nmero en
coma flotante)

32

Nmero en coma Mximo: +/-3.402823e+38


flotante IEEE
Mnimo: +/-1.175495e-38

1.234567e+13

S5TIME
(Tiempo Simatic)

16

Tiempo S7 en
pasos de 10 ms

S5T#0H_0M_0S_10MS a
S5T#2H_46M_30S_0MS and
S5T#0H_0M_0S_0MS

S5T#0H_1M_0S_0MS
S5TIME#1H_1M_0S_0MS

TIME
(Tiempo IEC)

32

Tiempo IEC en
pasos desde
1ms, entero con
signo

-T#24D_20H_31M_23S_648MS a
T#24D_20H_31M_23S_647MS

T#0D_1H_1M_0S_0MS
TIME#0D_1H_1M_0S_0MS

DATE
(Fecha IEC)

16

Fecha IEC en
pasos de 1 da

D#1990-1-1 a D#2168-12-31

DATE#1994-3-15

TIME_OF_DAY
(Fecha y Hora)

32

Tiempo en pasos TOD#0:0:0.0 a TOD#23:59:59.999


de 1ms

TIME_OF_DAY#1:10:3.3

CHAR (Carcter)

Caracteres ASCII

A, B etc.

Existen tres posibilidades de acceso a los datos:

1. Acceso por Direccionamiento Directo:

Se puede acceder a un elemento de un DB con las siguientes instrucciones:

Ejemplo:
L

DB 20. DBB2

Cargamos el byte de datos 2 del DB20 en el ACCU 1

DB 22. DBW4

Cargamos el byte de datos 4 del DB22 en el ACCU 1

DB 2. DBX5.6

Consultamos el estado del bit de datos 5.6 del DB2.

2. Accesso a un elemento de un DB que ya se encontraba abierto:

Para poder acceder a un elemento de datos, primero se debe abrir su correspondiente DB a


travs de las instrucciones OPN DB o OPN DI. Una vez hecho esto, varios bits de datos
(DBX/DIX),bytes de datos (DBB/DIB), palabras de datos (DBW/DIW) o dobles palabras de
datos (DBD/DID) pueden ser procesadas en diferentes operaciones binarias o aritmticas.
Al utilizar la instruccin OPN DI se abre un DB de Instancia. Esta instruccin puede utilizarse
tambin con DBs globales, cuando 2 DBs permanecen abiertos al mismo tiempo.

Ejemplo:
OPN

DB 20

Abrimos el DB20

OPN

DI 22

Abrimos el DB22

DBW 0

Cargamos la palabra de datos 0 del DB20 en el ACCU 1

T
1

MW 1

Transferimos el contenido del ACCU 1 a la palabra de marcas

DIX 0.0

Operacin AND sobre el bit de datos 0.0 del DB22 con

E 1.0

el bit de entradas 1.0

A 4.0

Asignamos el resultado al bit de salidas digitales 4.0

3. Acceso a datos de un DB de Instancia a travs de la llamada de un Bloque de


Funcin:

Los datos pueden ser transferidos a un DB de Instancia a travs de la llamada a su


correspondiente bloque de funcin con la instruccin CALL FB1, DB19. La asignacin de las

variables, que deberan de haber sido previamente definidas en la tabla de definiciones del
FB, y cuyo contenido se almacena en el DB de instancia, son tomadas de las direcciones
asignadas a los parmetros del FB (p.e. EW0, M 10.0 o AW4) con la instruccin CALL.

Ejemplo:
CALL

FB1, DB19

CONTADOR:=
0.

EW 0

La Variable CONTADOR corresponde con la direccin EW

SALIDA:=

A 4.0

La variable SALIDA corresponde con la direccin A 4.0.

Nota:

El formato de las variables del DB de Instancia y la direccin asignada en el


parmetro del FB deben de ser iguales.

Direccionamiento en STEP 7
Automatizacin Industrial

ndice
TEMA Direccionamiento en STEP7
1. Tipos de Direccionamiento
1.1 Direccionamiento Inmediato
1.2 Direccionamiento Directo
1.3 Direccionamiento Indirecto
2. Punteros y Tipos de Punteros
2.1 Punteros de Nmero
2.2 Punteros a rea
2.3 Punteros a DB
2.4 Punteros ANY
3. Direccionamiento Indirecto por Memoria
4. Direccionamiento Indirecto por Registro
5. Operaciones Relacionadas con Registros

Tipos de Direccionamiento
Tipos de Direccionamiento
Direccionamiento Inmediato
Direccionamiento Directo
Direccionamiento Indirecto

Direccionamiento Inmediato
El valor del operando est codificado directamente en la operacin
Ejemplo: L W#16#3478

Direccionamiento Directo
La direccin del operando se encuentra codificada en la operacin
Ejemplo: L
MW 122; A I 1.2

Direccionamiento Indirecto
El operando indica la direccin del valor que va a procesar la operacin.
Ejemplo: A I[MD 2];

Direccionamiento Inmediato
Direccionamiento Inmediato
El valor del operando est codificado directamente en la operacin, es decir que la operacin
va seguida directamente del operando con el que operar. Por otra parte, una operacin
tambin puede aportar su propio valor.

Direccionamiento Directo
Direccionamiento Directo
La direccin del operando se encuentra codificada en la operacin, es decir, el operando
indica la direccin del valor que va a procesar la operacin. El operando se compone de dos
partes:
un identificador (p. ej. IB para byte de entrada)
una direccin exacta dentro del rea de memoria indicada por el identificador.
El operando indica directamente la direccin del valor.

Direccionamiento Directo
rea

Ejemplo Tipo de Acceso

Descripcin

I 0.0

Bit, Byte, Palabra, Doble palabra

Imagen de Proceso de Entradas

QB 4

Bit, Byte, Palabra, Doble palabra

Imagen de Proceso de Salidas

PI

PI W 10 Byte, Palabra, Doble palabra

Entradas de periferia

PQ

PQ D 24 Byte, Palabra, Doble palabra

Salidas de periferia

M 100.0 Bit, Byte, Palabra, Doble palabra

Marcas

T 15

Temporizadores

C 80

DB

DBX0.0 Bit, Byte, Palabra, Doble palabra

Datos de un DB global

DI

DIW20

Bit, Byte, Palabra, Doble palabra

Datos de un DB de instancia

LB 34

Bit, Byte, Palabra, Doble palabra

Datos locales

Contadores

Direccionamiento Indirecto
Direccionamiento Indirecto
Permite asignar direcciones que no son conocidas hasta la ejecucin
Permite mltiples procesamientos de partes del programa
Como las direcciones no son calculadas hasta la ejecucin hay un riesgo de que reas de la
memoria sean sobrescritas.

Tipos de Direccionamiento Indirecto


Direcciones Indirectas
Direcciones que pueden ser especificadas de Modo Indirecto Direccionamiento

Puntero

E/S de Periferia, Entradas, Salidas, Bits de Memoria, Datos Globales,


Datos de Instancia, Datos Locales, Datos Temporales

Indirecto por Memoria


Indirecto por Registro

Puntero de rea

Temporizadores (T), Contadores (C ), Funciones (FCs), Bloques


Funcionales (FBs), Boques de Datos (DBs)

Indirecto por Memoria

Nmero de 16 bits

Tipos de Direccionamiento Indirecto

Direccionamiento Indirecto por Memoria con Nmero


Direccionamiento Indirecto por Memoria con Puntero de rea
Direccionamiento Indirecto por Registro e Intrarea (rea interna)
Direccionamiento Indirecto por Registro e Interrea (rea cruzada)

Punteros y Tipos de Punteros


Punteros
Un puntero se usa para apuntar a una direccin

Tipos de Punteros
Punteros a rea: son de 32 bits de longitud y contiene una direccin especfica
Punteros a DB: son de 48 bits de longitud y contienen el nmero de DB adems del
puntero a rea

Punteros ANY: son de 80 bits de longitud y contienen especificaciones adicionales


(como tipo de dato de la direccin) adems del puntero a DB

Punteros a rea (I)


Definicin
El puntero a rea contiene la direccin y es posible tambin el rea direccionada:

Tipos de Punteros a rea


1. Intrarea (rea Interna): El puntero no especifica el rea direccionada
2. Interrea (rea Cruzada): El puntero especifica el rea direccionada

Notacin Constante
1. Intrarea (rea Interna): P#y.x
2. Interrea (rea Cruzada): P#Zy.x

Ejemplo: P#22.0
Ejemplo: P#M22.0
x=direccin bit; y=direccin byte, Z=rea
Con el rea se especifica el identificador de la direccin

Punteros a rea (II)


Puntero a
Intrarea

Byte n
00000000

Byte n+1

Byte n+2

00000yyy yyyyyyyy yyyyyxxx


Direccin byte

Puntero a
Interrea

Byte n+3

Byte n

Byte n+1

Byte n+2

Direccin bit

Byte n+3

10000RRR 00000yyy yyyyyyyy yyyyyxxx


rea operando

Cdigo:

Direccin byte

Direccin bit

Bit 31=1 El registro contiene una direccin y la zona de memoria .


Bit 31=0 El registro contiene una direccin y no la zona de memoria .
Zonas de acceso (reas de Operando):
RRR
Identificador:
000
001
010
011
100
101
110
111
Rango de direcciones:
Y...Y
Direccin Byte
XXX
Direccin Bit

Periferia
Entradas (PII)
Salidas (PIQ)
Marcas
Datos en DB Global (DB)
Datos en DB de instancia (DI)
Datos locales del mdulo (L)
Datos locales del mdulo anterior (V)

Punteros a DB
Definicin
Un puntero a DB, adems de un puntero a rea, contiene un nmero de bloque de datos
como un nmero positivo INT en adicin al puntero a rea.
Se especifica el Bloque de Datos si el puntero de rea contiene las reas de direccin de DB
global o DB de instancia. En los dems casos los dos primeros bytes son cero.

Notacin Constante
P#DataBlock.DataAddress
Puntero a DB
Byte n
Byte n+1

Nmero de
Bloque de Datos

Byte n+2
Byte n+3
Byte n+4
Byte n+5

Puntero a
rea

Ejemplo: P#DB10.DBX 20.5

Punteros ANY (I)


Definicin
Un puntero ANY, adems de un puntero a DB, contiene un tipo de datos y un factor de
repeticin.

Tipos de Punteros ANY


1. Variables con Tipos Datos:
El puntero contiene un puntero DB
2. Variables con Tipos Parmetros: El puntero contiene un nmero (temporizadores,
Contadores y Bloques)

Notacin Constante
1. Variables con Tipos Datos:
P#[Bloque de Datos.] Direccin Tipo Cantidad
2. Variables con Tipos Parmetros : L#Nmero Tipo Cantidad

Ejemplos:

P#DB11.DBX 30.0 INT 12 ;


P#M 16.0 BYTE 8
;
P#I 18.0 WORD 1
;
P#I 1.0 BOOL 1
;
L#10 TIMER 1
;
L#2 COUNTER 1
;

rea con 12 palabras en DB11 desde DBB30


rea con 8 Bytes desde MB16
Palabra de Entradas IW18
Entrada I1.0
Temporizador T10
Contador C2

Punteros ANY (II)


Puntero ANY
Puntero ANY
para Tipos Datos para Temp/Cont
Byte n
Byte n+1
Byte n+2
Byte n+3
Byte n+4
Byte n+5

16#10

16#10

16#10

Tipo

Tipo

Tipo

Cantidad

Cantidad

Cantidad

Nmero de
Bloque de Datos

16#0000

16#0000

Tipo

Byte n+6
Byte n+7
Byte n+8
Byte n+9

Puntero ANY
para Bloques

Puntero a
rea

16#00

Nmero

16#0000

Nmero

Campo Tipo en el Puntero ANY


Tipos de Datos
Elementales
01 BOOL
02 BYTE
03 CHAR
04 WORD
05 INT
06 DWORD
07 DINT
08 REAL
09 DATE
0A TOD
0B TIME
0C S5TIME

Tipos de Datos
Complejos
0E DT
13 STRING
Tipos Parmetro
17 BLOCK_FB
18 BLOCK_FC
19 BLOCK_DB
1A BLOCK_SDB
1C COUNTER
1D TIMER
Puntero Cero
00 NIL

Direccionamiento Indirecto por Memoria (I)


En el direccionamiento indirecto por memoria, el operando indica la direccin del valor que
va a procesar la operacin. El operando se compone de las siguientes partes:
Un identificador (p. ej. IB para byte de entrada)
Una palabra que contiene el nmero de un temporizador (T), de un contador (Z), de
un bloque de datos (DB), de una funcin (FC) o de un bloque de funcin (FB)
Una palabra doble que contiene la direccin exacta de un valor del rea de memoria,
indicada por el identificador.
Si utiliza un operando indirecto por memoria que est almacenado en el rea de memoria del
bloque de datos, deber abrir primero el bloque de datos, utilizando a tal efecto la operacin
Abrir bloque de datos.
Ejemplo:

OPN DB10
L
IB [DBD20]

Direccionamiento Indirecto por Memoria (II)


El operando indica la direccin del valor o del nmero de forma indirecta, es decir,
utilizando el puntero. Esta palabra o palabra doble puede encontrarse en una de las
siguientes reas:
Marca (M)
Bloque de datos (DB)
Bloque de datos de instancia (DI)
Datos locales (L).

Direccionamiento Indirecto por Memoria con un Nmero (III)


El direccionamiento indirecto con un nmero puede considerarse como otro tipo de
direccionamiento el Direccionamiento Indexado.
Es necesaria la utilizacin de un valor numrico de 16 bits (WORD) que debe de encontrarse
en una de las siguientes reas: Marcas (MW)
Bloques de Datos Globales (DBW)
Datos Locales (LW) Bloques de Datos Instancia (DIW)
Los Punteros de Palabra contienen nmeros y se utilizan para direccionar elementos como:
Temporizadores (T)
Funciones (FCs)
Contadores (C )
Bloques de Funcin (FBs)
Bloques de Datos (DBs)

Formato del Puntero de Palabra

Direccionamiento Indirecto por Memoria (IV)


Direccionamiento Indirecto por Memoria con Nmero
L 133
T MW 20
OPN DB[MW20]
.....
SP T[MW 20]

//cargar puntero en ACU1


//salvar en palabra de memo.
//abrir DB global
//arrancar temporizador

OPN

DB

[MW 20]
MW 20
133

OPN

DB

133

Direccionamiento Indirecto por Memoria con Puntero a rea


L P#30.0
T MD 10
L MW[MD10]
.....
A M[MD 10]

//cargar puntero en ACU1


//salvar en palabra doble
//asignar direccin digital
//asignar direccin binaria

[MD 10]
MD 10
P#30.0

30.0

Direccionamiento Indirecto por Registro (I)


Direccionamiento Indirecto por Registro e Intrarea
La direccin del rea interna est definida en uno de los dos registros de direcciones (AR1 AR2).
El contenido del registro de direcciones es un puntero a rea interna
Con el direccionamiento indirecto por registro, se especifica un offset que se suma al registro de
direcciones
La suma se realiza cuando la operacin es ejecutada sin modificar el contenido del registro de
direcciones
El offset tiene el formato de un puntero a rea
En direccionamiento indirecto de direcciones digitales, el offset debe tener como direccin bit 0
El mximo valor es: P#8191.7

Direccionamiento Indirecto por Registro (II)


Direccionamiento Indirecto por Registro e Interrea
La direccin general est definida en uno de los dos registros de direcciones (AR1 AR2).
El contenido del registro de direcciones es un puntero en general
Con el direccionamiento general, se escribe el rea de direcciones junto con el puntero a rea dentro
del registro de direcciones
Con direccionamiento indirecto slo se especifica un identificador para la direccin:
No especificar un bit, B para byte, W para palabra y D para doble palabra
Se especifica con un offset con direccin bit

Direccionamiento Indirecto por Registro (III)


Direccionamiento Indirecto por Registro e Intrarea
LAR1 P#10.0
//cargar puntero dir. reg. 1
.......
T MW[AR1,P#4.0] //asignar direccin digital
.....
A I[AR1,P#2.1]
//asignar direccin binaria

AR1
P#10.0
A

[AR1, P#2.1]

P#2.1
A

12.1

Direccionamiento Indirecto por Registro e Interrea


LAR1 P#M12.0
......
L B[AR1,P#4.0]
.....
= [AR1, P#0.7]

AR1

//cargar puntero dir. reg. 1

P#M12.0
//asignar direccin digital

[AR1, P#4.0]

// asignar direccin binaria

P#4.0
L

M B

16.0

Operaciones Relacionadas con los Registros


Operaciones relacionadas con AR1 y AR2
Operacin

Operando

LAR1

Funcin
Cargar contenido de ACU1 en registro de direcciones AR1.

LAR1

AR2

Cargar contenido del AR2 en registro de direcciones AR1.

LAR1

<Direccin>

Carga el contenido del rea direccionada en el registro de direcciones AR1.

LAR1

P#{rea}, byte{.bit}

Cargar el contenido de la direccin en registro de direcciones AR1.

LAR2

Cargar contenido de ACU1 en registro de direcciones AR2.

LAR2

<Direccin>

Carga el contenido del rea direccionada en el registro de direcciones AR2.

LAR2

P#{rea}, byte{.bit}

Cargar el contenido de la direccin en registro de direcciones AR2.

TAR

Intercambia el contenido de AR1 y AR2.

TAR1

Transfiere el contenido del registro de direcciones 1 AR1 al ACU1.

TAR1

AR2

Transfiere contenido del AR1 en registro de direcciones AR2.

TAR1

<Direccin>

Transfiere el contenido del registro de direcciones 1 AR1 al destino direccionado.

TAR2
TAR2

Transfiere el contenido del registro de direcciones 2 AR2 al ACU1.


<Direccin>

+AR1
+AR1

Suma el contenido de la palabra baja del ACU 1 al contenido del registro AR1.
P#Byte.Bit

+AR2
+AR2

Transfiere el contenido del registro de direcciones 2 AR2 al destino direccionado.

Suma una constante puntero al contenido del registro de direcciones AR1.


Suma el contenido de la palabra baja del ACU 1 al contenido del registro AR2.

P#Byte.Bit

Suma una constante puntero al contenido del registro de direcciones AR2.

Ejemplos: Direccionamiento Indirecto (I)


Ejemplo 1:

Ejemplo 2:

L
T
OPN

L
T
L

11
MW 60
DB[MW60]

OPN DB 11

P#24.0
MD 50
IW [MD50]

L IW 24

Direccin
Tipo de Acceso
Zona de Acceso

Ejemplos: Direccionamiento Indirecto (II)


Ejemplo 3:

AR1

31
00000000

23
00000000

15
00000000

7
0
01010000

00000RRR

00000BBB

BBBBBBBB

BBBBBXXX

LAR1 P#10.0
// Preseleccin
L MW [AR1,P#200.0]

+200
L

Tipo
Dato

Ejemplo 4:

AR1

Zona de Registro Constante de


Acceso Direccin Desfase

MW 210
Instruccin
Ejecutada

31
10000001

23
00000000

15
00000011

7
0
00100000

10000RRR

00000BBB

BBBBBBBB

BBBBBXXX

LAR1 P#I 100.0 // Preseleccin


L B [AR1,P#110.0]

+210
L

Zona de Registro Constante de


Acceso Direccin Desfase

IB 210
Instruccin
Ejecutada

Ejemplos de Direccionamiento (III)


Ejemplo 5: Memoria con Nmero
L
T
A

L
T
A
L

Ejemplo 7: Registro Intrarea


M01:

Ejemplo 6: Memoria con Puntero

5
DBW100
T[DBW100]

LAR1 P#0.0
L 8
T MW 20
A I[AR1, P#0.0]
=
Q[AR1, P#4.0]
+AR1
P#0.1
L MW 20
LOOP M01

P#0.0
MD 100
I[MD 100]
MD[MD 100]

Ejemplo 8: Registro Interrea

M02:

LAR1 P#I0.0
LAR2 P#Q4.0
L 8
T MW 20
A [AR1, P#0.0]
= [AR2, P#0.0]
+AR1 P#0.1
+AR2 P#0.1
L MW 20
LOOP M02

Ejemplos: Direccionamiento Indirecto (IV)


Comparacin STEP5 STEP7

Ejemplo 9:
STEP 7

STEP 5

L 11
T MW 60
OPN DB[MW 60]

L
T
B
A

KF11
MW 60
MW 60
DB 0

L
T
B
L

KF 24
MW 50
MW 50
IW 0

L
P#24.0
T
MD 50
L IW [MD50]

OPN DB 11
(A DB 11)

L IW 24

Curso SIMATIC S7 Nivel II

Direccionamiento indirecto
Abril 2003

SIMATIC S7 NIVEL II
Dir_indirecto.ppt

Direccionamiento directo (I)

Zona de
memoria:

E -> Entrada
A -> Salida
T -> Temporizador
M -> Marca
DB -> Mdulo de datos
P -> Acceso directo (PA, PE)

.0
Nmero de
bit (0 - 7)
Nmero de
byte (cada zona
tendr su rango)

SIMATIC S7 NIVEL II
Dir_indirecto.ppt

Direccionamiento directo (II)

rea Ejemplo Tipo de Acceso

Descripcin

E 0.0

Bit, Byte, Palabra, Doble Palabra Imagen de Proceso Entradas

AB 4

Bit, Byte, Palabra, Doble Palabra Imagen de Proceso Salidas

PE

PEW 10

Byte, Palabra, Doble Palabra

Entradas de Periferia

PA

PAD 24

Byte, Palabra, Doble Palabra

Salidas de Periferia

M 100.0

Bit, Byte, Palabra, Doble Palabra Marcas

T15

Temporizadores

Z80

Contadores

SIMATIC S7 NIVEL II
Dir_indirecto.ppt

Direccionamiento directo (III)


Dentro de cada byte, palabra o doble palabra, los bits se
numeran de derecha a izquierda, de 0 al 7.
Dir. byte: rea de memoria + B + n de byte

E 124.0
EB124

Dir. palabra: rea de memoria + W + n de su 1er byte


EW124 => EB124 EB125
Dir. doble palabra: rea de memoria + D + n de su 1er byte
MD0 => MB0 MB1 MB2 MB3

SIMATIC S7 NIVEL II
Dir_indirecto.ppt

Direccionamiento directo (IV)


Direccionamiento directo
Es necesario especificar:
Zona de memoria
Tipo de acceso
Posicin de byte
Posicin de bit
U E 125.3
L E B 124
T M B 12

U T0
U Z3
UC FC1
CALL FC3
L DB2.DBW3

SIMATIC S7 NIVEL II
Dir_indirecto.ppt

Direccionamiento indirecto
Se puede acceder de forma indirecta a las posiciones de memoria.
L
T
L

P#124.0
MD 50
W

L P#124.0 carga la direccin byte 124, bit 0 en formato de puntero.


OJO: es la direccin, no el contenido. No se ha indicado la zona de
memoria, que se especificar al utilizar la direccin.

[MD50]

Zona Tipo de Direccin


acceso
L 11
T MW 60
AUF DB[MW 60]

L E W 124

En el puntero se almacena la direccin de bit.


El tipo de acceso (bit, byte, palabra y doble
palabra) y a que zona de memoria se refiere, se
especifican en la instruccin.

AUF DB 11

SIMATIC S7 NIVEL II
Dir_indirecto.ppt

Direccionamiento Indirecto
Direccionamiento indirecto con marcas
MW o palabra de DB
Se pueden utilizar con llamadas a mdulos o para direccionar
contadores, temporizadores, FCs, FBs y DBs. En la marca
almacenamos el nmero del contador, temporizador o DB.
L8
T MW10
U Z [MW10]

// Carga un 8 en ACU1
// Lo transfiere a la palabra de marcas 10
// Equivale a U Z 8: comprueba el contador 8

MD o doble palabra de DB
Se pueden utilizar para el resto de direccionamientos. El valor del
puntero deber de ser introducido como constante de puntero en
una doble palabra.
L P#124.0
T MD50
L EW[MD50]

---

SIMATIC S7 NIVEL II
Dir_indirecto.ppt

L EW124

Direccionamiento indirecto
Registros de direcciones (AR1 y AR2)
Registros de 32 bits utilizados para direccionamiento indirecto
Contiene la direccin interna de memoria para realizar los direccionamientos.
Cuando hacemos p#E124.0, se genera un puntero, que tiene la siguiente forma:
Configuracin:
31
10000 RRR
Cdigo:

23
00000 BBB

15
BBBBBBBB

7
0
BBBBBXXX

Bit 31=1 El registro contiene una direccin y la zona de memoria .


Bit 31=0 El registro contiene una direccin y no la zona de memoria .
Zonas de memoria (si est disponible):
RRR
Identificador:
000
Periferia
001
Entradas (PAE)
010
Salidas (PAA)
011
Marcas
100
Datos en DB 1 (DB)
101
Datos en DB 2 (DI)
110
Datos locales del mdulo (variables de un FC)
Rango de direcciones:
B...B
Direccin Byte
XXX

Direccin Bit

SIMATIC S7 NIVEL II
Dir_indirecto.ppt

Direccionamiento indirecto

La carga del registro se realiza con las instrucciones LAR1 y LAR2.


Las instrucciones TAR1 y TAR2 se utilizan para ver el contenido de
los registros de direcciones.
El formato puntero P# hace posible el introducir la direccin de
memoria en el registro de direcciones (byte/bit).
Ejemplo:

LAR1 P# E 100.0
El registro 1 contiene la direccin de la entrada 100.0 .

Carga del registro de direcciones


L P#125.0 - 0000 0000 0000 0011 1110 1000
LAR1
L P#E125.0 - 1000 0001 0000 0011 1110 1000
LAR1
SIMATIC S7 NIVEL II
Dir_indirecto.ppt

}
}

LAR1 P#125.0
LAR1 P#E125.0

Direccionamiento Indirecto
Una vez almacenado el puntero con LAR1, podemos
utilizarlo con una instruccin indirecta.
En la instruccin indirecta hay que especificar una zona
de acceso (E, A, M, T, C, etc..), un tipo de acceso (byte,
palabra, etc.) y un desfase.
LAR1 P#10.0

// Preseleccin

L M

[AR1,

10

+ 200

P#200.0]
L MW 210

Tipo
Dato

Tipo
Registro Constante de
Acceso Direccin Desfase

SIMATIC S7 NIVEL II
Dir_indirecto.ppt

Instruccin
Ejecutada

10

Direccionamiento Indirecto

Tambin es posible utilizar el direccionamiento indirecto


para direccionar bits.
Ejemplo:
LAR1 P#E 100.0
U [AR1, P#110.5] // Se quiere acceder no a la entrada 100.0
:
// si no a la 100.0+110.5 =210.5
:
:
U E 210.5

// Equivale a esta instruccin

SIMATIC S7 NIVEL II
Dir_indirecto.ppt

11

Direccionamiento Indirecto
Otras funciones
LAR1
LAR1 P#valor
LAR2
LAR2 P#valor
LAR1 AR2
TAR1
TAR1 MD20
TAR
+AR1
+AR2
+AR1 P#valor

AR2 --> AR1


AR1 --> ACU1
AR1 --> MD20
Intercambia AR1 y AR2
AR1 + ACU1 --> AR1
AR1 + valor --> AR1

En estas funciones, cuando se utiliza una marca, sta debe ser de


32 bits, porque el AR1 y AR2 lo son.
Los valores que se introducen o suman a AR1 y AR2 deben ser
punteros.
SIMATIC S7 NIVEL II
Dir_indirecto.ppt

12

Ejercicio 1

Realice un programa que active el bit de


la palabra de salida AW124 que indique
el valor que haya en el EB124. Para
valores no vlidos se apagarn todos los
bits de salida. (Realice el ejercicio
primero con saltos y posteriormente
utilizando direccionamiento indirecto)

SIMATIC S7 NIVEL II
Dir_indirecto.ppt

13

Ejercicio 2
Realice un programa que lea de un DB su
contenido a travs de dir. Indirecto. Para ello
suponga que en dicho DB se registra el
contenido de una tabla y que se desea
acceder a cualquier posicin de esa tabla
mediante EB124, y que en AB124 se
representa el contenido de dicha tabla.

SIMATIC S7 NIVEL II
Dir_indirecto.ppt

14

Ejecucin Especial
Automatizacin Industrial

ndice
TEMA Ejecucin Especial
1. Ejecucin de Programas
2. Ejecucin Cclica de Programas
2.1 Tiempos de Ciclo
2.2 Programacin del OB1
3. Ejecucin en el Arranque
4. Ejecucin por Interrupciones
5. Ejecucin por Tiempo Alarmas Cclicas
6. Ejecucin por Tiempo Alarmas Horarias
7. Ejecucin por Tiempo Alarmas de Retardo
8. Ejecucin por Error Alarmas de Error

Ejecucin de Programas Mdulos de Organizacin

OB10 :
Interrupcin
Horaria
OB1
se ejecuta
continuamente
OB82:
Error
Asncrono

... a menos que sea


interrumpido por otro OB

Mdulos de Organizacin (OBs)


OB1
Programa Principal
Ejecucin cclica
hasta ser interrumpido
por un OB con una ms
alta prioridad.
Una vez interrumpido
por el sistema operativo
el OB1 rompe su ciclo
y ejecuta el OB
requerido.

El sistema operativo
llama a otros OBs
para utilizarlos:

Ejemplo de OB10:
Ejecuta este mdulo
cada minuto.
Empieza a las 9:00
Ejemplo de OB20:
Ejecuta este mdulo
2.35 despus de
detectar un evento
Ejemplo de OB82:
Ejecuta este mdulo
si hay un cortocircuito
en la entrada
analgica PIW532

Almacenamiento de Datos de un OB Interrumpido


Pila de Interrupcin (Pila I)
Contenido acumuladores ACCU1,ACCU2
El sistema llama a un
nuevo OB

Antes de ejecutar el
nuevo OB, se salvan
los registros del
mdulo interrumpido

Contenido registros direcciones AR1, AR2


Contenido registros mdulos datos DB, DI
Puntero en la Pila L
Palabra Estado, Registro MCR, Puntero Pila B

Pila de Mdulo (Pila B)


Registros DB y DI
Puntero de datos temporales (pila L)
Nmero de Mdulo
Direccin de retorno

OBs de Error y de Interrupcin

Los OBs se encuadran dentro de dos categoras; sus respectivas funciones determinan
qu dispara el punto de ruptura del OB que se est ejecutando.
OBs que realizan tareas peridicas (Interrupcin Horaria)
Se ejecuta en una fecha u hora del da especificada
Se ejecuta tras una demora especificada despus de un evento
Se ejecuta en un ciclo especificado
OBs que reaccionan a condiciones de error (Interrupcin Error)
Se ejecuta si la CPU detecta un error de proceso o de hardware
Se ejecuta si la CPU detecta un error que no est relacionado con una
instruccin especfica del programa
Se ejecuta si la CPU detecta un error que puede ser asociado al procesamiento
de una instruccin especfica del programa

Mdulos de Organizacin de Alarmas


Tipo de Alarma
Ciclo libre
Alarmas horarias
Alarmas de retardo
Alarmas cclicas
Alarmas de proceso
Errores asncronos
Arranque
Errores sncronos

OBs
Prioridad Comentarios
OB1
1
Bloque de organizacin para la
(OB1)
ejecucin cclica
OB 10 a OB 17
2
Bloques de organizacin para la
(OB 10)
alarma horaria (OB 10 a OB 17)
OB 20 a OB 23
3a6
Bloques de organizacin para
(OB 20)
alarma de retardo (OB 20 a OB 23)
OB 30 a OB 38
7 a 15
Bloques de organizacin de alarma
(OB 35)
cclica (OB 30 a OB 38)
OB 40 a OB 47
16 a 23 Bloques de organizacin de alarma
(OB 40)
de proceso (OB 40 a OB 47)
OB 80 a OB 87
26 28 Bloques de organizacin para el
(OB 82)
tratamiento de errores
OB 100 a OB 102
27
Bloques de organizacin de
(OB 100)
arranque (OB 100/OB 101/OB 102)
OB 121 y OB 122
Bloques de organizacin para el
tratamiento de errores

Otros OBs soportados por la CPU 315:


OB 80, OB 81, OB 85, OB 87, OB 121 y OB122

Ejecucin Cclica de Programas


La ejecucin ms comn es la ejecucin cclica
Existen otros tipos de ejecuciones conducidas por eventos
En la mayora de los casos, la ejecucin de un programa conducido por eventos es un
aadido a la ejecucin cclica
El programa principal es invocado desde el OB1:
se ejecuta con el nivel ms bajo de prioridad
puede ser interrumpido por todos los otros tipos de procesamiento
del programa
Al finalizar la ejecucin del OB1 se actualizan las imgenes del proceso
Si se presenta un error en la actualizacin de las imgenes se llama al OB 85
(programa que se ejecuta ante errores)
Si no existe el OB 85, la CPU pasa a STOP

Tiempo de Ciclo (I)

El tiempo de ejecucin del programa del OB 1 es supervisado


El valor por defecto es 150 mseg.
Se puede ajustar desde 1 mseg a 6 segundos en la configuracin de la CPU
Si el tiempo de procesamiento del programa principal es mayor que el tiempo fijado, llama
al OB 80 (error de tiempo). Si el OB 80 no existe la CPU pasa a modo STOP.
El tiempo de ciclo ajustado debe cubrir:
El tiempo de procesamiento del OB1. Actualizacin de las imgenes
El tiempo de procesamiento de interrupciones de alta prioridad
Procesos de comunicacin del sistema operativo
Acceso a la CPU desde un dispositivo de programacin

SFC 43 RE_TRIGR: Arrancar de nuevo el tiempo de vigilancia de ciclo


Inicia de nuevo el tiempo de vigilancia de ciclo
No tiene parmetros

Tiempo de Ciclo (II)


El tiempo de ciclo es el tiempo que el S.O. necesita para:
ejecutar el programa cclico
partes del programa que interrumpen al cclico (ejecucin otros OBs)
actividades del sistema (p.e. actualizacin de imgenes, ..)
El tiempo de ciclo se vigila
El tiempo de ciclo no es igual para cada ciclo

Tiempo de Ciclo (III) Marcas de Ciclo

Variables Locales del OB1


Variable

Tipo de datos Descripcin

OB1_EV_CLASS
OB1_SCAN_1

BYTE
BYTE

OB1_PRIORITY
OB1_OB_NUMBR
OB1_RESERVED_1
OB1_RESERVED_2
OB1_PREV_CYCLE
OB1_MIN_CYCLE
OB1_MAX_CYCLE
OB1_DATE_TIME

Clase de evento e identificadores: B#16#11: activo


Informacin de arranque
B#16#01: Conclusin del rearranque completo(caliente)
B#16#02: Conclusin del rearranque
B#16#03: Conclusin del ciclo libre
B#16#04: Conclusin del arranque en fro
BYTE
Prioridad: 1
BYTE
Nmero de OB (01)
BYTE
Reservado
BYTE
Reservado
INT
Tiempo de ejecucin del ciclo anterior (ms)
INT
Tiempo de ciclo mnimo (ms) desde el ltimo arranque
INT
Tiempo de ciclo mximo (ms) desde el ltimo arranque
DATE_TIME Fecha y hora en que se solicit el OB

SFCs Diagnstico
SFC 6 RD_INFO: Leer informacin de arranque del OB actual
Parmetro
RET_VAL
TOP_SI

Declaracin Tipo de datos Area de memoria Descripcin


OUTPUT
INT
E, A, M, D, L
Informacin de error
OUTPUT
STRUCT
D, L
Informacin de arranque
del OB actual
START_UP_SI OUTPUT
STRUCT
D, L
Informacin de arranque del
ltimo OB activado

SFCs Gestin del Reloj en Tiempo Real


SFC 0 SET_CLK. Ajustar la hora
Parmetro Declaracin Tipo de datos Area de memoria Descripcin
PDT
INPUT
DT
D, L,
Entrada PDT para indican fecha
y hora que se desea ajustar
RET_VAL OUTPUT
INT
E, A, M, D, L
Parmetro con cdigo de error.

SFC 1 READ_CLK. Leer la hora


Parmetro Declaracin Tipo de datos Area de memoria Descripcin
RET_VAL OUTPUT
INT
E, A, M, D, L
Parmetro con cdigo de error
CDT
OUTPUT
DT
D, L
En la salida CDT se emiten la
fecha y la hora actuales.

SFC 64 TIME_TCK: Leer el cronmetro del sistema


Parmetro Declaracin Tipo de datos Area de memoria Descripcin
RET_VAL OUTPUT
TIME
E, A, M, D, L
El parmetro tiene el cronometro
del sistema, comprendido entre
0 a 2elevado a 311 ms.

SFCs Gestin del Contador de Horas de Funcionamiento (I)


SFC 2 SET_RTM: Ajustar contador de horas de funcionamiento
Parmetro Declaracin Tipo de datos Area de memoria Descripcin
NR
INPUT
Byte
E, A, M, D, L,
Nmero del contador de horas
Const.
de funcionamiento que se desea
ajustar. Valores posibles: 0a 7.
PV
INPUT
INT
E, A, M, D, L,
Contiene ajuste para el contador
Const.
de horas de funcionamiento.
RET_VAL OUTPUT
INT
E, A, M, D, L
Parmetro con cdigo de error

SFC 3 CTRL_RTM: Arrancar y parar contador de horas de funcionamiento


Parmetro Declaracin Tipo de datos Area de memoria Descripcin
NR
INPUT
Byte
E, A, M, D, L,
Nmero del contador de horas
Const.
de funcionamiento que se desea
arrancar o parar. Valores (0 - 7)
S
INPUT
BOOL
E, A, M, D, L,
Arranca o para el contador
Const.
Se para con 0, arranca con1
RET_VAL OUTPUT
INT
E, A, M, D, L
Parmetro con cdigo de error

SFCs Gestin del Contador de Horas de Funcionamiento (II)


SFC 4 READ_RTM: Leer el contador de horas de funcionamiento
Parmetro Declaracin Tipo de datos Area de memoria
NR
INPUT
Byte
E, A, M, D, L,
Const.
CQ
OUTPUT BOOL
E, A, M, D, L
CV
OUTPUT
RET_VA L OUTPUT

INT
INT

E, A, M, D, L
E, A, M, D, L

Descripcin
Nmero del contador de horas de
funcionamiento. Valores: 0 a 7.
Indica si contador est en marcha
o parado. Un 0 indica parado.
Un 1 indica en marcha.
Emite el valor actual del contador.
Parmetro con cdigo de error

SFCs Varios
SFC 25 COMPRESS: Comprimir la memoria de usuario
Parmetro Declaracin Tipo de datos Area de memoria Descripcin
RET_VAL OUTPUT
INT
E, A, M, D, L
Informacin de error
BUSY
OUTPUT
BOOL
E, A, M, D, L
Informacin si est activada la
compresin con la SFC 25 (1si)
DONE
OUTPUT
BOOL
E, A, M, D, L
Informa. si proceso a finalizado
con con xito (1 significa xito)

SFC 46 STP. Poner la CPU en stop


No tiene parmetros

SFC 47 WAIT:. Retarda el tratamiento del programa de usuario


Parmetro Declaracin Tipo de datos Area de memoria Descripcin
WT
INPUT
INT
E, A, M, D, L
El parmetro WT contiene el
tiempo de retardo en ms.

Ejecucin en el Arranque
Previamente a que la CPU ejecute el programa principal se puede
ejecutar una rutina de arranque
Mediante los mdulos de ejecucin en el arranque es posible fijar el
comportamiento del autmata antes de la primera ejecucin del programa
El mdulo de organizacin asignado a cada tipo de arranque se ejecuta
una sola vez en cada arranque
Mientras se ejecutan los mdulos asignados al arranque no est activada la
vigilancia de tiempo de ciclo
La CPU tiene 4 posibles estados, STOP, STARTUP, HOLD y RUN
El relacionado con la fase de arranque se denomina STARTUP

Modos de Operacin de las CPUs (I)


2
5
1

STARTUP

STOP
8
4

HOLD

RUN
6

(1) Alimentacin al equipo. La CPU pasa a modo STOP


(2) Si la llave esta en RUN o RUN-P, la CPU pasa a modo STARTUP
(3) Posteriormente a modo RUN
(4)(5) Error no reconocido o cambio de posicin de la llave, paso a STOP
(6)(7) En el modo HOLD el programa de usuario es testeado. Se puede
conmutar a este modo desde STARTUP o RUN y retornar al modo
original cuando el test es interrumpido
(8) Se puede llevar la CPU a STOP desde el modo HOLD
El comportamiento en el arranque se define en la configuracin de la CPU

Modos de Operacin de las CPUs (II)


Existen tres modos de arrancar el equipo
arranque en fro (cold restart)
arranque completo
arranque en caliente (warm restart)
En el arranque en fro o completo, el programa principal se ejecuta desde el
comienzo. En un arranque en caliente, continua el programa principal en el
punto de interrupcin y finaliza el ciclo.
Cada modo de arranque tiene asignado un mdulo de organizacin
arranque completo, OB 100
arranque en fro, OB 102
arranque en caliente, OB 101
si no existen ninguno de estos mdulos se pasa al programa principal
En los modos STOP o HOLD los mdulos de salida no estn operativos
Cuando la ejecucin cclica comienza, los mdulos estn liberados
En el arranque en fro o completo, las imgenes del proceso son puestas a cero
Desde el OB 100 y OB 102, se pueden consultar entradas y activar salidas
accediendo a periferia.

Modo STOP
Las CPUs se ponen en STOP:
cuando esta seleccionado este modo con la llave
cuando se conmuta de RUN a STOP
cuando se presenta un error no reconocible en la ejecucin del programa
cuando se ejecuta la SFC 46 (STOP)
cuando se solicita desde el dispositivo de programacin
La CPU introduce la razn del STOP en el buffer de diagnstico, que puede
ser consultado con el aparato de programacin
En modo STOP el programa de usuario no es ejecutado
En modo STOP se puede hacer un reset de la memoria de usuario:
desde el selector de la CPU
desde el aparato de programacin

Variables Locales de los OBs de Arranque


Variable
OB100_EV_CLASS
OB100_STRTUP

Tipo de datos
Descripcin
BYTE
Clase de evento e indicativos: B#16#13: activado
BYTE
Solicitud de arranque:
B#16#81: Sol. manual de rearranque completo (en caliente)
B#16#82: Sol. automtica de rearranque completo (en caliente)
B#16#83: Sol. manual de rearranque
B#16#84: Sol. automtica de rearranque
B#16#85: Sol. manual de arranque en fro
B#16#86: Sol. automtica de arranque en fro

OB100_PRIORITY
BYTE
OB100_OB_NUMBR BYTE
OB100_RESERVED_1 BYTE
OB100_RESERVED_2 BYTE
OB100_STOP
WORD
OB100_STRT_INFO DWORD

Prioridad: 27
Nmero de OB (100, 101 102)
Reservado
Reservado
Nmero del evento que ha llevado la CPU a STOP
Informaciones complementarias sobre el arranque actual
(tabla)
OB100_DATE_TIME DATE_TIME Fecha y hora a las que se solicit el OB

Arranque Completo
Arranque
completo
Inhibir mdulos
de salida

Borrar datos
no remanentes

RUN

Inicializar
mdulos

Transferir imagen
proceso de salidas

Ejecutar
OB 100

Actualizar imagen
proceso de entradas

Borrar imagen del


proceso de salidas

Actualizar imagen
proceso de entradas

Programa principal
OB 1

Reset salidas
del proceso

Liberar mdulos
de salida

Borrar imagen del


proceso de entradas

SFCs Para Programar OBs de Arranque


Las Funciones de Sistema integradas (SFCs) permiten direccionar mdulos
y realizar comprobaciones previas a la ejecucin cclica del programa

SFCs para direccionar mdulos:


SFC 5
GADR_LGC
SFC 49
LGC_GADR
SFC 50
RD_LGADR

Determinar la direccin lgica de un canal


Determinar el slot de una direccin lgica
Determinar direcciones lgicas de un mdulo

SFCs para transferir a registros:


SFC 54
RD_DPARM
SFC 55
WR_PARM
SFC 56
WR_DPARM
SFC 57
PARM_MOD
SFC 58
WR_REC
SFC 59
RD_REC

Leer parmetros definidos


Escribir parmetros dinmicos
Escribir parmetros predefinidos
Parametizar mdulo
Escribir registros
Leer registro

SFC 5
Parmetro Declaracin Tipo de datos Area de memoria Descripcin
SUBNETID INPUT
BYTE
E, A, M, D, L
Identificador del rea:
Const.
- 0, en caso que el slot est en
bastidor central o de ampliacin
RACK
INPUT
WORD
E, A, M, D, L, Nmero del bstidor en el caso de
Const.
Identificador de rea = 0
SLOT
INPUT
WORD
E, A, M, D, L, No de slot
Const.
SUBSLOT INPUT
BYTE
E, A, M, D, L, Receptculo de submdulo
Const.
(sin submdulo 0)
SUBADDR INPUT
WORD
E, A, M, D, L, Offset en el espacio de direcciones
Const.
de datos tiles del mdulo
RET_VAL OUTPUT
INT
E, A, M, D, L
Informaciones de error
IOID
OUTPUT
BYTE
E, A, M, D, L
Identificador del rea:
B#16#54: Entrada de periferia (PE)
B#16#55: Salida de periferia (PA)

LADDR

OUTPUT

WORD

E, A, M, D, L

Direccin lgica del canal

SFC 49
Parmetro Declaracin Tipo de datos Area de memoria Descripcin
IOID
INPUT
BYTE
E, A, M, D, L,
Identificador del rea:
B#16#54: Entrada de periferia (PI)
Const.
B#16#55: Salida de periferia (PQ)

LADDR

INPUT

RET_VAL
AREA

OUTPUT INT
OUTPUT BYTE

RACK
OUTPUT
SLOT
OUTPUT
SUBADDR OUTPUT

WORD

WORD
WORD
WORD

E, A, M, D, L,
Const.
E, A, M, D, L
E, A, M, D, L
E, A, M, D, L
E, A, M, D, L
E, A, M, D, L

Direccin lgica
Informaciones de error
Identificador del rea: Indica
cmo interpretar el resto
de los parmetros de salida.
No. de bastidor
No. de slot
Offset en el espacio de direccin
de datos tiles del mdulo

SFC 50
Parmetro Declaracin Tipo de datos Area de memoria Descripcin
IOID
INPUT
BYTE
E, A, M, D, L,
Identificador del rea:
B#16#54: Entrada de periferia (PI)
Const.
B#16#55: Salida de periferia (PQ)

LADDR

INPUT

WORD

RET_VAL
PEADDR

OUTPUT
OUTPUT

INT
ANY

E, A, M, D, L,
Const.
E, A, M, D, L
E, A, M, D, L

PECOUNT OUTPUT

INT

E, A, M, D, L

PAADDR

OUTPUT

ANY

E, A, M, D, L

PACOUNT OUTPUT

INT

E, A, M, D, L

Una direccin lgica


Informaciones de error
Campo para direcciones PI,
elementos de campo deben
ser del tipo de datos WORD.
Cantidad de direcciones PI
devueltas
Campo para las direcciones PA;
los elementos de campo deben
ser del tipo de datos WORD.
Cantidad de direcciones PA
devueltas

Ejecucin por Interrupciones


El manejo de las interrupciones es siempre llevada por eventos
Cuando se presenta un evento, el sistema operativo interrumpe la
ejecucin del programa principal y llama a la rutina de atencin
al evento particular
Cuando finaliza la rutina de atencin al evento, el sistema operativo
retorna al programa principal continuando en el punto en el que se
produjo la interrupcin
Existen varios tipos de ejecuciones conducidas por eventos
En la mayora de los casos, la ejecucin de un programa conducido por
eventos es un aadido a la ejecucin cclica
Las ejecuciones conducidas por eventos admiten una prioridad
La ejecucin se puede permitir o inhibir con las SFCs de gestin de
eventos de alarma:
SFC 39 DIS_IRT
SFC 40 EN_AIRT
SFC 41 DIS_AIRT SFC 42 EN_IRT

Interrupciones del Hardware (I)


Las interrupciones de hardware permiten detectar inmediatamente en el
programa de usuario eventos ocurridos en el control del proceso
STEP 7 ofrece los OB 40 a OB 47 para la ejecucin por interrupcin
En la CPU 315 soporta nicamente el OB 40 con prioridad 16 por defecto
Las interrupciones se parametrizan en la configuracin del hardware
Se pueden parametrizar los mdulos con capacidad de interrupcin en fase de
ejecucin con las SFCs para transferir registros:
SFC 55 WR_PARM
Escribir parmetros dinmicos
SFC 56 WR_DPARM
Escribir parmetros predefinidos
SFC 57 PARM_MOD
Parametrizar mdulo
Por defecto las interrupciones de hardware no estn permitidas
se puede especificar si se tiene que producir la interrupcin con el evento
se permite modificar los parmetros dinmicamente (RUN) con SFCs
Las interrupciones de hardware son reconocidas en el mdulo cuando el mdulo
de organizacin que contiene la rutina de atencin a la interrupcin ha finalizado
su ejecucin

Interrupciones del Hardware (II)


En la rutina de arranque los mdulos no generan interrupciones hardware
El manejo de las interrupciones comienza con la transicin a RUN
Si una interrupcin hardware es generada pero no hay OB de atencin a la
misma, el S.O. llama al OB 85 (ejecucin por error). Si el OB 85 no ha sido
programado la CPU se va a stop
Las llamadas a los OBs pueden ser bloqueadas o habilitadas con las SFCs:
SFC 39 DIS_IRT Bloquear tratamiento de nuevos eventos de alarma
SFC 40 EN_IRT Habilitar tratamiento de nuevos eventos de alarma
Pueden ser retrasadas y habilitadas con los SFCs:
SFC 41 DIS_AIRT Retardar el tratamiento de eventos de alarmas
SFC 42 EN_AIRT Habilitar el tratamiento de eventos de alarmas

Configuracin Hardware de Alarmas del Proceso

Variables Locales de OBs de Alarma del Proceso


Variable
OB40_EV_CLASS

Tipo de datos
Descripcin
BYTE
Clase de evento e identificadores:

OB40_STRT_INF

BYTE

OB40_PRIORITY
OB40_OB_NUMBR
OB40_RESERVED_1
OB40_IO_FLAG

BYTE
BYTE
BYTE
BYTE

B#16#11: Alarma est activada


B#16#41: Alarma a travs de lnea de interrupcin 1
B#16#42: Alarma a travs de lnea de interrupcin 2 (S7400)
B#16#43: Alarma a travs de lnea de interrupcin 3 (S7400)
B#16#44: Alarma a travs de lnea de interrupcin 4 (S7400)

Prioridad parametrizada; valor prefijado: de 16 a 23


Nmero de OB (40 hasta 47)
Reservado
Mdulo de entradas: B#16#54
Mdulo de salidas: B#16#55
OB40_MDL_ADDR
WORD
Direccin bsica lgica del mdulo que ha activado
la alarma
OB40_POINT_ADDR DWORD
En mdulos digitales: Mapa de bits con los estados de
las entradas en el mdulo
En mdulos analgicos, CPs o IMs: Estado de alarma
del mdulo
OB40_DATE_TIME DATE_TIME Fecha y hora a las que se solicit el OB

SFCs Relacionados con Interrupciones (I)


SFC 39 DIS_IRT: Bloquea tratamiento de alarma
Parmetro Declaracin Tipo de datos Area de memoria
MODE
INPUT
BYTE
E, A, M, D, L,
Const.
OB_NR
INPUT
INT
E, A, M, D, L,
Const.
RET_VAL OUTPUT
INT
E, A, M, D, L

Descripcin
Define los eventos de alarma y de
error asncrono que se bloquean
N del OB
Si ocurre un error al procesar
la funcin, el valor de retorno
contiene el cdigo.

SFC 40 EN_IRT: Habilita el tratamiento de alarma


Parmetro Declaracin Tipo de datos Area de memoria
MODE
INPUT
BYTE
E, A, M, D, L,
Const.
OB_NR
INPUT
INT
E, A, M, D, L,
Const.
RET_VAL OUTPUT
INT
E, A, M, D, L

Descripcin
Define los eventos de alarma y
error asncrono que se habilitan
N del DB
Si ocurre un error al procesar la
funcin, el valor de retorno
contiene el cdigo.

SFCs Relacionados con Interrupciones (II)


SFC 41 DIS_AIRT: Retarda el tratamiento de alarma
Parmetro Declaracin Tipo de datos Area de memoria Descripcin
RET_VAL OUTPUT
INT
E, A, M, D, L
Cantidad de retardos (= cantidad de
llamadas de la SFC 41)

SFC 42 EN_AIRT: Habilita el tratamiento de eventos de alarmas


Parmetro Declaracin Tipo de datos Area de memoria Descripcin
RET_VAL OUTPUT
INT
E, A, M, D, L
Cantidad de retardos programados tras la
ejecucin de SFC 42 o cdigo de error

Interrupciones de Proceso (I)


Mdulo de Entradas Analgicas

Si el valor del transmisor de nivel PIW 288


es mayor que el lmite superior (8 voltios)
o menor que el lmite inferior (2 voltios)
habilitados para esta entrada analgica, llama
al OB40.

+27648 = 10V.
+ 8 V. Lmite superior para la interrupcin
0

+ 2 V.

Lmite inferior para la interrupcin

Interrupciones de Proceso (II)


Tarjeta de Entradas Analgicas

+27648

Si el valor de la PIW 288 es mayor


que el lmite superior para este canal
analgico, llama al OB40.
Visualiza un mensaje de error.

+20000
Lmite superior
para la interrupcin
0

AW0

SFCs Relacionados con Interrupciones (III)


SFC 55

SFCs Relacionados con Interrupciones (IV)


SFC 56

SFCs Relacionados con Interrupciones (V)


SFC 57 PARM_MOD: Parametrizar mdulo
Parmetro Declaracin Tipo de datos Area de memoria Descripcin
REQ=1: Peticin de escritura
REQ
INPUT
BOOL
E, A, M, D, L,
Const.
IOID
INPUT
BYTE
E, A, M, D, L,
Identificador del rea:
Const.
B#16#54 = Entrada de periferia (PI)
B#16#55 = Salida de periferia (PQ)

LADDR

INPUT

WORD

E, A , M, D, L,
Const.

Direccin base lgica del mdulo. En

E, A, M, D, L

Si ocurre un error al procesar la funcin,

un mdulo mixto es necesario indicar


la menor de las dos direcciones.

RET_VAL OUTPUT

INT

el valor de retorno contiene un cdigo


de error.

BUSY

OUTPUT

BOOL

E, A, M, D, L

BUSY = 1: La operacin de escritura


no ha finalizado an.

Ejecucin por Tiempo Alarmas Cclicas

Una alarma cclica es una interrupcin que es generada en intervalos


peridicos de tiempo.
La alarma permite ejecutar un programa concreto peridicamente,
independientemente del tiempo de ejecucin del programa cclico
En STEP 7 se dedican a esta funcin desde el OB 30 al OB 38
La CPU 315 dispone nicamente del OB 35 que tiene la prioridad 12
Se puede fijar el intervalo de tiempo en el rango de 1 mseg a 1 minuto
El comienzo del tiempo para el intervalo de tiempo es el instante de la
transicin START UP a RUN
La ejecucin se puede permitir o inhibir con las SFCs:
SFC 39 DIS_IRT
SFC 40 EN_AIRT
SFC 41 DIS_AIRT SFC 42 EN_IRT

Interrupciones Cclicas

El OB de interrupciones cclicas (OB35) permite interrumpir el


programa a intervalos de tiempo fijos.
Una vez activado, el OB35 se ejecutar segn un intervalo de tiempo
fijado al Configurar el HW.

OB35

OB35
OB1
se ejecuta
continuamente

OB35

...interrumpe el OB1 y se
ejecuta el OB35 cada 250ms

OB35

Configuracin de Interrupciones Cclicas

Variables Locales de OB de Alarma Cclica


Variable
OB35_EV_CLASS

Tipo de datos
BYTE

Descripcin
Clase de evento e identificadores:

OB35_STRT_INF

BYTE

B#16#11: Alarma est activada


(B#16#31: Solicitud de arranque para OB 30)

:
B#16#36: Solicitud de arranque para OB 35

:
(B#16#39: Solicitud de arranque para OB 38)

OB35_PRIORITY

BYTE

OB35_OB_NUMBR
OB35_RESERVED_1
OB35_RESERVED_2
OB35_PHASE_OFFSET
OB35_RESERVED_3
OB35_EXC_FREQ
OB35_DATE_TIME

BYTE
BYTE
BYTE
WORD
INT
INT
DATE_TIME

Prioridad parametrizada; valor prefijado:


de 7 (OB 30) a 15 (OB 38)
Nmero de OB (30 hasta 38)
Reservado
Reservado
Desfase en ms
Reservado
Cadencia temporal en ms
Fecha y hora a las que se solicit el OB.

Ejecucin por Tiempo Alarmas Horarias


Una alarma horaria es una interrupcin que permite ejecutar un programa
en un tiempo concreto, una sola vez o peridicamente.
En STEP 7 se dedican a interrupciones horarias del OB 10 al OB 17
La CPU 315 dispone nicamente del OB 10 que tiene la prioridad 2
Las interrupciones horarias se pueden parametrizan:
en la configuracin del hardware
en fase de ejecucin usando SFCs
Se puede arrancar una interrupcin horaria:
una sola vez: el OB es llamado una sola vez en el momento especificado
peridicamente: depende de la configuracin (cada minuto, hora, da,...

Interrupciones Horarias (I)

El OB Horario (OB10 en el S7-315) permite interrumpir el OB cclico y ejecutar un


cdigo en una fecha especificada o a intervalos especificados. Se puede programar este
OB para que se ejecute en los siguientes intervalos:
Una vez: se ejecuta una vez, en el momento especificado.
Cada minuto: Se ejecuta en intervalos de 1 minuto, empezando desde el momento
especificado
Cada hora: Se ejecuta en intervalos de 1 hora, empezando desde el momento
especificado
Cada da: Se ejecuta 1 vez al da, desde el momento especificado
Cada semana: Se ejecuta 1 vez por semana, empezando desde el momento
especificado
Cada mes: Se ejecuta 1 vez al mes, empezando desde el momento especificado
Cada ao: Se ejecuta 1 vez al ao, empezando desde el momento especificado

Interrupciones Horarias (II)


En el arranque en fro o en el arranque completo, el sistema operativo
borra todas las activaciones realizadas mediante SFCs.
Las realizadas en la configuracin del hardware son mantenidas
Se puede consultar el estado de la alarma horaria con la SFC 31 y
posteriormente, activar o desactivar la interrupcin
Las interrupciones horarias son atendidas slo en modo RUN
Si el OB de una interrupcin horaria es llamado pero no est programado:
el S.O. primero llama la OB 85 (programa de ejecucin por error)
si OB 85 no est programado, la CPU se va a STOP
La ejecucin se puede anular, activar, ajustar y consultar con las SFCs:
SFC 28 SET_TINT SFC 29 CAN_TINT
SFC 30 ACT_TINT SFC 31 QRY_TINT

Configuracin de Interrupciones Horarias

Variables Locales de OB de Alarma Horaria


Variable
OB10_EV_CLASS
OB10_STRT_INFO

OB10_PRIORITY
OB10_OB_NUMBR
OB10_RESERVED_1
OB10_RESERVED_2
OB10_PERIOD_EXE

OB10_RESERVED_3
OB10_RESERVED_4
OB10_DATE_TIME

Tipo de datos
Descripcin
BYTE
Clase de evento e identificadores:
B#16#11: Alarma activada
BYTE
B#16#11: Solicitud de arranque para OB 10
(B#16#12: Solicitud de arranque para OB 11)
:
(B#16#18: Solicitud de arranque para OB 17)
BYTE
Prioridad parametrizada; valor por defecto: 2
BYTE
Nmero de OB (10 hasta 17)
BYTE
Reservado
BYTE
Reservado
WORD
El OB se ejecuta en el intervalo indicado:
W#16#0000: Una vez
W#16#0201: Cada minuto
W#16#0401: Cada hora
W#16#1001: Cada da
W#16#1201: Cada semana
W#16#1401: Cada mes
W#16#1801: Cada ao
INT
Reservado
INT
Reservado
DATE_TIME Fecha y hora a las que se solicit el OB

SFCs para Programar OBs de Alarmas Horarias (I)


Funciones del Sistema integradas (SFCs) se pueden utilizar para controlar y supervisar las
interrupciones asociadas a alarmas horarias. Las SFCs relacionadas con alarmas horarias
son las siguientes.

SFC 28 SET_TINT: Ajustar hora de arranque de la alarma horaria


Parmetro Declaracin Tipo de datos Area de memoria Descripcin
OB_NR
INPUT
INT
E, A, M, D, L,
Nmero del OB que se activa en el
Const.
instante SDT(fecha y hora de arranque)
SDT
INPUT
DT
D, L
Fecha y hora de arranque
PERIOD
INPUT
WORD
E, A, M, D, L,
Periodicidad desde el instante SDT:
Const.
W#16#0000 = una vez
W#16#0201 = cada minuto
W#16#0401 = cada hora
W#16#1001 = diaria
W#16#1201 = semanal
W#16#1401 = mensual
W#16#1801 = anual
W#16#2001 = al final del mes
RET_VAL OUTPUT INT
E, A, M, D, L
Parmetro de cdigo de error.

SFCs para Programar OBs de Alarmas Horarias (II)


SFC 29 CAN_TINT: Anular alarma horaria activada
Parmetro Declaracin Tipo de datos Area de memoria Descripcin
OB_NR
INPUT
INT
E, A, M, D, L,
Nmero del OB cuya fecha
Const
y hora de arranque se han de
borrar (OB10 a OB17).
RET_VAL OUTPUT
INT
E, A, M, D, L
Parmetro de cdigo de error

SFC 30 ACT_TINT: Activar un OB de alarma horaria


Parmetro Declaracin Tipo de datos Area de memoria Descripcin
OB_NR
INPUT
INT
E, A, M, D, L,
Nmero del OB que se desea
Const.
activar (habilitar)
(OB10 a OB17)
RET_VAL OUTPUT
INT
E, A, M, D, L
Parmetro de cdigo de error.

SFCs para Programar OBs de Alarmas Horarias (III)


SFC 31 QRY_TINT: Consultar alarma horaria
Parmetro Declaracin Tipo de datos Area de memoria Descripcin
OB_NR
INPUT
INT
E, A, M, D, L,
Nmero del OB cuyo estado
Cons.
se ha de consultar
(OB10 a OB17).
RET_VAL OUTPUT INT
E, A, M, D, L
Parmetro de cdigo de error.
STATUS
OUTPUT WORD
E, A, M, D, L
Estado de la alarma horaria

Programacin de una Alarma Horaria

Tarjeta de Entradas Analgicas

La CPU tiene una


llamada a un OB que
verifica y controla la
temperatura para este
tanque una vez cada
minuto, comenzando a
una fecha y hora especfica.

PIW288
+14000 = Temperatura Superior
+13000 = Temperatura Inferior
Q5.7
Calentador

Ejecucin por Tiempo Alarmas de Retardo


AR
R ET

DO

Una alarma de retardo es una interrupcin que permite ejecutar un programa


despus de una espera determinada independientemente de los temporizadores
En STEP 7 se dedican a interrupciones de retardo del OB 20 al OB 23
La CPU 315 dispone nicamente del OB 20 que tiene la prioridad 3

Configuracin de Interrupciones de Retardo


AR
R ET

DO

Variables Locales de OB de Alarma de Retardo


O
RD
Tipo de datos Declaracin Descripcin
ETA
R
BYTE
TEMP
Clase de evento e identificadores:
B#16#11: Alarma est activada
OB20_STRT_INF
BYTE
TEMP
B#16#21: Solicitud arranque OB 20
B#16#22: Solicitud arranque OB 21
B#16#23: Solicitud arranque OB 22
B#16#24: Solicitud arranque OB 23
OB20_PRIORITY
BYTE
TEMP
Prioridad; valor prefijado: de 3 (OB20)
OB20_OB_NUMBR BYTE
TEMP
Nmero de OB (20 hasta 23)
OB20_RESERVED_1 BYTE
TEMP
Reservado
OB20_RESERVED_2 BYTE
TEMP
Reservado
OB20_SIGN
WORD
TEMP
Identificador de usuario: parmetro de
entrada SIGN de la llamada de SFC 32
SRT_DINT
OB20_DTIME
TIME
TEMP
Tiempo de retardo transcurrido en ms
OB20_DATE_TIME DATE_TIME TEMP
Fecha y hora a las que se solicit el OB

Variable
OB20_EV_CLASS

SFCs para Programar OBs de Alarmas Horarias de Retardo (I)


Funciones del sistema integradas (SFCs) se pueden utilizar para arrancar y
supervisar las interrupciones asociadas a alarmas de retardo.
Las SFCs relacionadas con alarmas de retardo son las siguientes.

AR
R ET

DO

SFC 32 SRT_DINT: Arrancar alarma de retardo


Parmetro Declaracin Tipo de datos Area de memoria Descripcin
OB_NR
INPUT
INT
E, A, M, D, L,
Nmero del OB que se arrancar
Const.
al transcurrir el tiempo de retardo
(OB 20 a OB 23).
DTIME
INPUT
TIME
E, A, M, D, L,
Valor del retardo (1 a 60000 ms)
Const.
SIGN
INPUT
WORD
E, A, M, D, L,
Identificador que, al llamar el OB
Const.
de alarma de retardo, aparece en
la informacin de eventos de
arranque del OB.
RET_VAL OUTPUT
INT
E, A, M, D, L
Parmetro de cdigo de error

SFCs para Programar OBs de Alarmas Horarias de Retardo (II)

SFC 33 CAN_DINT: Anular alarma de retardo


Parmetro Declaracin Tipo de datos Area de memoria
OB_NR
INPUT
INT
E, A, M, D, L,
Const.
RET_VAL OUTPUT
INT
E, A, M, D, L

AR
R ET

DO

Descripcin
Nmero del OB que se ha de
anular (OB20 a OB23).
Parmetro de cdigo de error

SFC 34 QRY_DINT: Consultar estado de alarma de retardo


Parmetro Declaracin Tipo de datos Area de memoria
OB_NR
INPUT
INT
E, A, M, D, L,
Const.
RET_VAL OUTPUT
INT
E, A, M, D, L
STATUS
OUTPUT
WORD
E, A, M, D, L

Descripcin
Nmero del OB, cuyo STATUS
se ha de consultar (OB 20 a 23)
Parmetro de cdigo de error.
Estado de la alarma de retardo

Interrupciones de Retardo
AR
R ET

El OB20 se arranca mediante una llamada al SFC32 (SRT_DINT). Se define la


demora en los parmetros que le pasa al SFC de la siguiente forma:
OB_NR
Nmero del OB que arrancar despus de retardo
DTIME
Duracin de la demora (desde 1 hasta 60000 ms)
SIGN
Identificador que se pone en la informacin de
arranque del OB cuando se llama al OB de retardo
RET_VAL
Contiene el cdigo de error si se produce un error
mientras el OB se procesa

M0.1
20
T#500ms

EN
OB_NR
DTIME

W#16#01

SIGN

SFC32
(SRT_DINT)

ENO
RET_VAL

M2.0
MW10

DO

Interrupciones por Error del Hardware


Mdulo de Entradas Analgicas

X
+27648

Si el mdulo analgico ha sido configurado


para habilitar la rotura de hilo como
interrupcin hardware, se utilizar cualquier
problema de hardware en el transmisor
para llamar a un OB de deteccin de errores
(por ejemplo, el OB82)

Interrupciones por Error en el Programa/Sistema

El STEP7 proporciona otros OBs utilizados para interrumpir el programa adems de


las interrupciones por errores en el hardware. Los errores que llaman a esos OBs se
consideran errores en tiempo de ejecucin; se detectan mediante los diagnsticos
internos del PLC.

Errores en Tiempo de Ejecucin


Errores Asncronos
Errores Sncronos
OB de Error

OB de Error

OB80 Error de Tiempo (por ejemplo,


tiempo de ciclo excedido)
OB85 Error de Secuencia de Programa
(por ejemplo, OB no cargado)
OB87 Fallo de Comunicaciones
(por ejemplo, Datos Globales)

OB121 Error de Programacin (por


ejemplo, DB no cargado)
OB122 Error de Acceso
(por ejemplo, intento de
acceder a un mdulo
perifrico no presente)

SFCs para Programar OBs de Error

Las Funciones de Sistema integradas (SFCs) se pueden utilizar para controlar y


monitorizar las interrupciones asociadas a errores sncronos y asncronos. Estas
SFCs proporcionan los parmetros formales listados debajo los cuales pueden ser
programados con valores actuales mediante la instruccin de llamada a SFC.

SFCs para manejo de Errores Sncronos


SFC36 MSK_FLT
Enmascarar errores de sincronizacin
SFC37 DMSK_FLT
Desenmascarar errores de sincronizacin
SFC38 READ_ERR Leer el registro de estado de eventos

SFCs para manejo Errores Sncronos y Asncronos


SFC39 DIS_IRT
Inhabilitar Interrupcin
SFC40 EN_IRT
Habilitar Interrupcin
SFC41 DIS_AIRT
Inhabilitar Interrupciones de Alarma
SFC42 EN_AIRT
Habilitar Interrupciones de Alarma

Trabajar con analgicas


*

Cmo funcionan las analgicas.

Las tarjetas analgicas de S7 convierten:

Para la lectura de entradas analgicas, un valor analgico procedente de un sensor


o transductor en un valor digital de 16 bits que se almacena en la periferia del S7
(no confundir estos 16 bits con la resolucin de la entrada analgica). Esta
resolucin oscilar segn los casos entre 11 bits mas signo y 8 bits.

Para las salidas analgicas, un valor digital de 16 bits de la periferia de salidas en


una seal analgica mediante un conversor digital-analgico.
Existen dos parmetros que determinan una entrada o una salida analgica:

El tipo de sonda (en el caso de entradas), o el tipo de actuador (en el caso de


salidas), a conectar (4-20 mA, 0-10 V, etc...)

La resolucin a alcanzar en la lectura o escritura. Cuanta mayor sea la resolucin,


mayor ser la exactitud de la lectura y menor el error entre el valor real y el
almacenado en el autmata. Por contra, tambin ser mayor el tiempo de
conversin analgico / digital y por lo tanto las variaciones en el proceso tardarn
ms en reflejarse en el PLC.

Tipos de seales analgicas.

Las tarjetas analgicas del S7 soportan una gran cantidad de tipos de medidas,
configurndose desde Hardware de Step 7 a travs de los adaptadores de margen
laterales de la tarjeta (para ms informacin, ver manual Datos de los mdulos S7).
Sin embargo, es muy importante tener en cuenta que las entradas analgicas de los
S7 300 se agrupan en grupos de 2 canales, por lo que ambos deben de estar configurados
de la misma manera, ya sea para 0-10 V, para 4-20 mA, etc... Por lo tanto, no se puede
mezclar en el canal 0 una seal de 0-10 V, p . ej., y en el canal 1 una de 4-20 mA. Deber
de dejarse vaco dicho canal si no se dispone de ninguna sonda de 0-10 V, y cablear la de
4-20 mA en el siguiente grupo libre.
Vamos a realizar un repaso a las conexiones ms usuales con S7 de sensores de
campo.

Medidas de tensin.

La ms utilizada en la industria es 0-10 V. El Simatic S7 300 posee el rango +/-10 V,


que es el adecuado para esta lectura. Como la sonda no va a dar tensin negativa, se va a
comportar de manera unipolar, por lo siempre vamos a tener un valor de 0 al valor mximo
que hayamos seleccionado de resolucin.
El inconveniente de este tipo de lectura es que al ser una tensin, las distancias sin
atenuacin de la seal debido a cadas de tensin en el cable son relativamente cortas,
por lo que la sonda debe estar cerca del cuadro elctrico donde se encuentre el mdulo
analgico.
Los lmites de lectura son:
Lectura +/-10 V:

Estado de lectura
Desbordamiento positivo

Tensin en la entrada anal.

Valor de la entrada anal.

>= 11,759

32.767

Rebase positivo

De 11,7589 a 10,0004

De 32511 a 27649

Valor nominal

De 10,0 a 10,0

De 27648 a 27648

Rebase negativo

De -10,0004 a -11,759

De 27649 a 32512

Desbordamiento negativo

<= -11,76

-32.768

Medidas de intensidad.

Dentro de las medidas de intensidad se suelen gastar principalmente dos tipos: 020 mA y 4-20 mA. Este ltimo tipo es el ms utilizado en la lectura analgica, ya que
permite grandes distancias al ser la lectura por corriente, y a la vez es fcil reconocer la
rotura del hilo, ya que por debajo de 4 mA es que no llega lectura del elemento.
Lectura 0 a 20 mA:

Estado de lectura
Desbordamiento positivo

Corriente (mA)

Valor de la entrada anal.

>= 23,516

32.767

Rebase positivo

De 23,515 a 20,0007

De 32511 a 27649

Valor nominal

De 20 a 0

De 27648 a 0

Rebase negativo

De 0,0007 a 3,5185

De -1 a 4864

Desbordamiento negativo

<= -3,5193

-32.768

Lectura 4 a 20 mA:

Estado de lectura

Corriente (mA)

Valor de la entrada anal.

Desbordamiento positivo

>= 22,815

32.767

Rebase positivo

De 22,810 a 20,0005

De 32511 a 27649

Valor nominal

De 20 a 4

De 27648 a 0

Rebase negativo

De 3,9995 a 1,1852

De -1 a 4864

Desbordamiento negativo

<= 1,1845

-32.768

Medidas PT100.

Las sondas PT100 se utilizan para la medida de la temperatura en procesos que


oscilen entre 850C y 200C. Una PT100 es una termoresistencia que vara su
resistividad en funcin de la temperatura que exista en contacto con la misma. A travs de
dos hilos (1 canal del mdulo de entradas analgicas), se hace circular por la PT100 una
corriente constante. Otros dos hilos toman la medida de la resistencia en los extremos de
la sonda, con lo que se obtiene la variacin de resistencia, y al ser conocida su linealidad
con respecto a la temperatura en los mrgenes anteriormente citados, se obtiene sta.
Lectura PT100:

Estado de lectura

Temperatura

Valor de la entrada anal.

Desbordamiento positivo

>= 1000,1

32.767

Rebase positivo

De 1000 a 850,1

De 1000 a 850,1

Valor nominal

De 850 a 200

De 8500 a 2000

Rebase negativo

De 200,1 a -243

De 2000 a 2430

Desbordamiento negativo

<= -243,1

-32.768

Observar que lgicamente una sonda PT100 consumir dos canales de entradas
analgicas: 1 para la lectura en extremos de la sonda, y otro para la corriente constante
que se suministra a la misma. Si la lectura se realizara por el mismo cable con el que se
alimenta la PT100, las fluctuaciones de la resistencia del cable de cobre que une el PLC a
la sonda con respecto a la temperatura variaran la magnitud de lectura. Por lo tanto, en
una tarjeta de 8 entradas analgicas slo se podrn conectar 4 sondas PT100.

Tratamiento Analgico
Automatizacin Industrial

ndice
TEMA Tratamiento Analgico
1. Conversiones D/A, A/D
2. Tarjetas de Entradas y Salidas Analgicas
3. Representacin Digital de Valores Analgicos
4. Configuracin de las Tarjetas de Entradas y Salidas Analgicas
5. Tiempos de Ciclo y Conversin
6. Ajuste de Valores Analgicos
7. Normalizacin de Valores Analgicos

Convertidor Digital-Analgico, D/A


23

22

20 Ve 5 v

21

a
Amplificador sumador

R/8

R/4

R/2

Rf

Ve
V
= s
Re
Rf

Vs

SALIDA
ANALOGICA

Red de resistencias

i=

A=

Rf
Vs
=
Ve
Re

Convertidor Digital-Analgico, D/A


A=

R
Vs
= f
Ve
Re

- Supongamos Rf = 20 K, y R = 150 K, sin tener en cuenta el cambio signo queda:


a) A =

20
= 0.133
150

Vs = Ve * 0.133 = 5 * 0.133 = 0.665

b) A =

20
= 0.266
75

Vs = Ve * 0.266 = 5 * 0.266 = 1.33

c) A =

20
= 0.533
37.5

Vs = Ve * 0.533 = 5 * 0.533 = 2.665

d)A =

20
= 1.066
18.7

Vs = Ve *1.066 = 5 *1.066 = 5.33

byc) A =

37.5 * 75
20
= 25 byc) Av = = 0.8
37.5 + 75
25

Vs = Ve * 0.8 = 5 * 0.8 = 4

Convertidor Analgico-Digital, A/D Convertidor en Rampa

RELOJ

ENTRADA
ANALOGICA

RESET

&

+
-

CONTADOR DE
N BITS

B S
U A
FDL
FE I
E D
R A

COMPARADOR

SALIDA
DIGITAL

Convertidor
D/A
- Lentos en la conversin
- Tiempo de conversin variable
- Aumenta con el valor que se tiene que convertir

Convertidor Analgico-Digital, A/D Convertidor por Aproximaciones Sucesivas


REGISTRO DE
APROXIMACIONES
SUCESIVAS

RELOJ
ENTRADA
ANALOGICA

+
-

CIRCUITO DE
CONTROL

REGISTRO DE
DESPLAZAMIENTO

COMPARADOR

B S SALIDA
U A DIGITAL
FDL
FE I
E D
R A

Convertidor
D/A
- Rpidos
- Tiempo de conversin fijo

Convertidor A/D MK 50808 de MOSTEK

Control de Convertidores A/D (I)


Por sondeo
I0

I7

M
U
L
T
I
P
L
E
X
O
R

P
A/D

Puerto

OE
START

3
ALE

- Hay que programar un tiempo de espera necesario para la conversin

Control de Convertidores A/D (II)


Por interrupcin

I0

I7

M
U
L
T
I
P
L
E
X
O
R

P
A/D

Puerto

OE
EOC
START

INT

3
ALE

- No hay que programar tiempo de espera

Tarjetas de Entradas Analgicas Diagrama de Bloques


La conversin A/D se realiza mediante tarjetas de entradas analgicas

Tarjetas de Entradas Analgicas Mdulo SM 331

Tarjetas de Salidas Analgicas Diagrama de Bloques


La conversin D/A se realiza mediante tarjetas de salidas analgicas

Tarjetas de Salidas Analgicas Mdulo SM 332

Direccionamiento de Tarjetas Analgicas


El identificador de direcciones es:
- PIW para las entradas analgicas
Rack Fuente de IM
3 alimentac. (Receptor)

Rack Fuente de IM
2 alimentac. (Receptor)

Rack Fuente de
1 alimentac.

Rack
0

CPU
y
fuente de
alimentac.

- PQW para las salidas analgicas

640
a
654

656
a
670

672
a
686

688
a
702

704
a
718

720
a
734

736
a
750

752
a
766

512
a
526

528
a
542

544
a
558

560
a
574

576
a
590

592
a
606

608
a
622

624
a
638

384
a
398

400
a
414

416
a
430

432
a
446

448
a
462

464
a
478

480
a
494

496
a
510

256
a
270

272
a
286

288
a
302

304
a
318

320
a
334

336
a
350

352
a
366

368
a
382

IM
(Receptor)

IM
(Emisor)

Valores Analgicos de Trabajo


Valores en Tensin
Unipolares
1a5V
Bipolares
10 V
500 mV

0 a 10 V
5V
250 mV

2,5 V
80 mV

1V

Valores en Intensidad
Unipolares
0 a 20 mA
Bipolares
20 mA

4 a 20 mA
10 mA

3,2 mA

Valores en Resistencia
10 k

150

300

100

Representacin Digital Resolucin

La resolucin mxima es de 15 bits


La resolucin es inferior, los dgitos insignificantes se rellenan con 0
La resolucin depende del tipo de tarjeta analgica y de su parametrizacin
La misma tarjeta se puede parametrizar:
para intensidad o tensin. Unipolar o bipolar
el signo: 0 -->+, 1 --> las direcciones utilizadas son: PIW 288 y PIW 290. PQW 304 y PQW 306

Valor analgico

Resolucin

Nmero del bit 15 14 13 12 11 10 9 8


Peso del bit

S 214 213 212 211 210 29 28 2 7 2 6 25 2 4 23 2 2 21 2 0

Cod. 14 bits (+S) 0

X X X

X X X X X X X

Cod. 12 bits (+S) 0

X X X

X X X X X

Cod. 9 bits (+S) 0

X X X

X X

Representacin Digital Mrgenes Bipolares

Representacin Digital Mrgenes Unipolares

Representacin de Valores de Medida de E/A


Valores Analgicos en los valores de entrada de 0 a 10V y 1 a 5V

Representacin de Valores de Medida de E/A


Valores Analgicos en los valores de salida de 0 a 10V y 1 a 5V

Ejemplo
Se trata de que se active la salida Q 4.0 para valores de tensin , en la entrada
analgica PIW 288 , entre 2 y 4 o entre 6 y 8 voltios
L PIW 288
T MW 10
A(
L MW 10
L 5530
>I
)
A(
L MW 10
L 11060
<I
)
O
A(
L MW 10
L 16589
>I
)
A(
L MW 10
L 22118
<I
)
= Q 4.0

// Leer valor E/A

//Comparacin con 2 V.

L PIW 288 // Leer valor E/A


ITD
DTR
L 2.764800e+004
/R
L 1.000000e+001
*R
RND
T MD 10

//Comparacin con 4 V.

//Comparacin con 6 V.

//Comparacin con 8 V.

A(
L MD 10
L 2
>I
)
A(
L MD 10
L 4
<I
)
O
A(
L MD 10
L 6
>I
)
A(
L MD 10
L 8
<I
)
= Q 4.0

//Comparacin con 2 V.

//Comparacin con 4 V.

//Comparacin con 6 V.

//Comparacin con 8 V.

Tiempo de Conversin y de Ciclo de E/A


Tiempo de Conversin de Entradas Analgicas
El tiempo de conversin se compone de:
tiempo de conversin bsico

9 depende directamente del tipo de conversin (por integracin, o valores


instantneos).
9 en el caso de integracin, el periodo de integracin se considera directamente
en el tiempo de conversin
9 el periodo de integracin tiene efecto directo sobre la resolucin
9 el periodo de integracin depende de la supresin de frecuencias perturbadoras.
9 los periodos de conversin bsicos son 2.5, 16.6, 20 y 100 mseg.

tiempos suplementarios
9 tiempo para la medida de resistencia
9 tiempo para la vigilancia de rotura de hilo

Tiempo de Ciclo
La conversin A/D y la transferencia a la CPU se realiza secuencialmente
El tiempo de ciclo es el tiempo que tarda en convertir todos los canales activos en un
mdulo

Tiempos de Conversin, Ciclo, Establecimiento para S/A


Tiempo de Conversin
El tiempo de conversin de un canal de salida analgica es el tiempo que transcurre entre
la consideracin de un valor de salida digitalizado de la memoria interna y la conversin
digital-analgica

Tiempo de Ciclo
La conversin de canales de salida analgica se realiza secuencialmente
El tiempo de ciclo es el tiempo que tarda en convertir todos los canales activos en un
mdulo de salida analgica

Tiempo de Establecimiento
El tiempo de establecimiento (t2 a t3) es el tiempo que transcurre entre la aplicacin del
valor convertido y el momento en que alcanza el valor especificado en la salida analgica.
El tiempo de establecimiento depende de la carga.
Hay que distinguir entre cargas resistivas, capacitivas e inductivas.

Tiempos de Respuesta de S/A


Tiempo de Respuesta
El tiempo de respuesta (t1 a t3) es el tiempo que transcurre entre la escritura de los valores
de salida en la memoria interna y el momento en que se alcanza el valor especificado en la
salida analgica fsica.
En el caso ms desfavorable, es la suma de los tiempos de ciclo y de establecimiento.

Parmetros de los Mdulos Analgicos


Los mdulos analgicos se parametrizan off-line con el STEP 7
Algunos parmetros pueden modificarse tambin en el programa de usuario por medio de
las SFC 55, SFC 56 y SFC 57.
Hay que distinguir entre:
parmetros estticos. Se ajustan con el aparato de programacin
parmetros dinmicos. Se ajustan con el aparato de programacin o SFC 55

Propiedades Parametrizables de Canales de Entrada

habilitaciones de alarma (del proceso, de diagnstico) (dinmico)


alarmas de valor lmite (lmite superior, lmite inferior) (dinmico)
alarmas de diagnstico (colectivo, deteccin rotura de hilo) (esttico)
medida (tipo, margen, supresin frecuencias perturbadoras) (dinmico)

Propiedades Parametrizables de Canales de Salida

habilitaciones de alarma (de diagnstico) (dinmico)


alarma de diagnstico (colectivo) (esttico)
valores de sustitucin (comportamiento en STOP de la CPU) (dinmico)
salida (tipo, margen de salida) (dinmico)

Configuracin de las Tarjetas Analgicas

Diagnosis de los Mdulos Analgicos


La funcin de diagnstico permite determinar si los valores analgicos se han tratado sin
errores, y en caso contrario, qu error ha aparecido.
El diagnstico se parametriza con el STEP 7
La evaluacin se realiza si est habilitada la funcin de diagnstico
Los mensajes de diagnstico evaluados provocan las siguientes acciones:
indicacin luminosa en mdulo analgico.
transmisin de mensaje de diagnstico a la CPU
activacin de alarma de diagnstico (slo si esta habilitada)

Mensajes de
Diagnstico
para Entradas
Analgicas
Mensajes de
Diagnstico
para Salidas
Analgicas

Alarmas de los Mdulos Analgicos (I)


Los mdulos analgicos tienen la capacidad de emitir alarmas
Se distinguen dos tipos de alarmas:
alarma de diagnstico
alarma de proceso
Las alarmas se parametrizan con el STEP7
Por defecto estn bloqueadas

Alarma de Diagnstico
Cuando se detecta un fallo o desaparece ste, el mdulo emite una alarma de diagnstico
siempre que est habilitada
La CPU interrumpe el tratamiento del programa de usuario y procesa el mdulo de
tratamiento de alarma de diagnstico OB 82

Alarmas de los Mdulos Analgicos (II)


Alarma de Proceso
La parametrizacin de los lmites superior e inferior define un margen de trabajo
Cuando la seal de proceso abandona dicho margen, el mdulo activa una alarma de
proceso siempre que est habilitada
La CPU interrumpe el tratamiento del programa de usuario y procesa el mdulo de
tratamiento de alarma de proceso OB 40
Para detectar qu canal ha rebasado el lmite consultar informacin del byte 4 de la
informacin adicional de alarma de proceso del OB 40

Procesamiento de Valores Analgicos en S7

El bus P (bus perifrico) permite acceder directamente a los valores analgicos


como entradas desde el campo o como salidas al campo.
Al bus perifrico se puede acceder en formato de byte, palabra y doble palabra

Tratamiento de Seales Analgicas

Nivel alto

Sensor de
Nivel
PIW 288
LT

Nivel bajo

Conversin de Seales Analgicas de Entrada


Tarjeta de Entradas Analgicas
Cuando la tarjeta de entradas analgicas
recibe desde campo una seal de tensin o
corriente, la tarjeta convierte la seal a un
valor binario (A/D) al que puede acceder el
programa de CPU a travs del bus P.

Valor despus de la conversin A/D

1000 L

0 0 1 0 1 0 1 0 1 1 0 1

PIW 288 = +10960


0L

0 0 0 0

Presentacin de Valores Analgicos

STEP7 permite ver o usar valores analgicos tanto de entrada como de salida en
mltiples formatos numricos. La tabla de variables de abajo muestra: PIW288 y
PIW290 (entradas analgicas) como dec, hex, bin.

Conversin de Seales Analgicas de Salida


Tarjeta de Salidas Analgicas
Cuando el programa de CPU enva un valor a
la tarjeta de salidas analgicas a travs del
bus P, la tarjeta ejecuta la conversin D/A.
El resultado de la tarjeta es una variacin en
voltaje o intensidad, que se usa para el control
de dispositivos externos de campo.

CPU -> Tarjeta Analgica


L +13824
T PQW 304

Vlvula de posicin variable


Flujo de control
Suponiendo tarjeta de salida analgica de 0 a +10 V
para el valor digital 13824, despus de la conversin
D/A debe sacar 5 V.

Valores Analgicos para Observacin de Alarmas


- Si sensor de nivel menos de 1 V. --> abrir vlvula de llenado
- Si sensor de nivel ms de 9 V. --> abrir vlvula de drenaje
L PIW 288
L 2765
<=I
= Q 4.0

Q 4.0
Vlvula de llenado

Nivel alto: 9 voltios 24883

Sensor de
Nivel
PIW 288
LT

Nivel bajo:1 Voltio 2765


L PIW 288
L 24883
>=I
= Q 5.7

Q 5.7
Vlvula de drenaje

Uso del Offset con Seales de Entrada Analgicas

Cuando las caractersticas del dispositivo de campo analgico tiene un 20%


offset o puesta a cero, se hace necesario un offset del valor analgico en la
CPU para compensar.
PIW 288
sensor de
nivel:
midiendo
un valor de
4 a 20 mA

+ 27648

+5530
(20% de rango)

20 mA

1000 L

4 mA

0L

Suponiendo un offset del 20%, el valor equivalente si tener en cuenta el offset es:
(valor analgico medido - 20% del rango usado en la CPU) x 125 / 100
Ejemplo: Para PIW 288 = 16.589, el valor representa:
(16.589 - 5530) x 1.25 = 13.824, que representan un volumen del 50% del tanque

Uso del Offset con Seales de Salida Analgicas

Cuando las caractersticas del dispositivo de campo analgico tiene un 20% offset
o seala cero, se hace necesario un offset del valor analgico en la CPU para
compensar.
Tarjeta de Salidas Analgicas

Transductor de corriente a presin


I

Salida PQW 304


valor de 4 a 20 mA

Vlvula de
posicionamiento
en 3 a 15 psi

Suponiendo un offset de salida del 20%, el valor


que hay que enviar es:
(valor de la seal analgica sin offset x 100) / 125 + 20 % del rango utilizable
Ejemplo: Para abrir la vlvula a la mitad:
PQW 304 = ( (MW 20 x 100) / 125) + 5530,
Donde MW 20 = 27648/2=13824

Ajuste de Valores Analgicos

El ajuste de los valores analgicos nos permite trabajar y comparar en las mismas
unidades que la variable controlada, en vez de trabajar con los valores numricos
dados por la conversin A/D. Mediante ecuaciones matemticas, se puede usar
unidades de ingeniera tales como grados, metros, gramos, litros......

Rango Nominal de
la Conversin

Temperatura
Rango bipolar

Nivel
Rango unipolar

+27648

100 grados

500 litros

0 grados

0 litros

-27648

-100 grados

Ajuste de Valores Analgicos Unipolares

Para calcular el valor ajustado de una seal unipolar, se usa la siguiente


ecuacin:
Valor ajustado = (Medida de la entrada PV x PV medido en unidades de
ingeniera / rango de CPU) + PV offset

Ejemplo:
PIW 288

Ajuste:
MD10 = (PIW 288 x 400) / 27648

+27648
Rango de CPU
(unipolar)
0 -> +27648
0

Si el recipiente est al 50 %, el
valor analgico de entrada de
PIW 288=+13824 ;
MD10 igual a 200.

400 L

Rango deseado en
unidades de ingeniera
0 -> 400 L
0L

Funcin de Ajuste de Valores Analgicos Unipolares


FC 28

in
in
in
out
temp
temp

PV
PV_Superior
PV_Inferior
Valor_Graduado
PV_Real
Rango_Ing

INT
REAL
REAL
REAL
REAL
REAL

Segmento 1 L
ITD
DTR
T

#PV

//Carga el valor medido dela E/A


//Convierte de entero a entero doble
//Convierte de entero doble a real
//Valor analgico de entrada en formato n real

Segmento 2 L
L
-R
T

#PV_Superior
#PV_Inferior

Segmento 3 L
L
/R
L
*R
L
+R
T

#PV_Real
2.764800e+04

#PV_Real

0
0
0
0
0
0

Palabra de la E/A medido


Lmite superior del rango en unid. ing.
Lmite inferior del rango en unid. ing.
Resultado del valor graduado
PV convertido a valor real
PV_Superior - PV_Inferior

//Rango en unidades de ingeniera

#Rango_Ing

#Rango_Ing
#PV_Inferior
#Valor_Graduado

//Entrada analgica en formato de n real


//Cargar rango de CPU para la conversin (+27648)
//Divide
//Cargar rango en unidades de ingeniera
//Multiplicar
//Cargar el PV_Inferior para calcular el offset PV
//Sumar
//Resultado final

Ajuste del Offset de Valores Analgicos Unipolares


Para calcular el valor ajustado del 20 % offset de una seal unipolar, use la
siguiente ecuacin:
Valor ajustado con 20% offset = ((Medida de la entrada analgica PV - 20%
del rango de la CPU) x PV medido en / rango de CPU - 20%) + PV offset

Ejemplo:

Ajuste:
MD20 = ((PIW 288 - 5530) x 200) /
22118

PIW 288

+27648
Rango de CPU
(unipolar)
+5530 -> +27648
+5530

Si el recipiente est al 50%, la


entrada analgica de
PIW 288=+16589 ;
MD20 igual a 100.

200 L

Rango deseado en
unidades de ingeniera
0 -> 200 L
0L

Funcin Ajuste del Offset de Val. Analg. Unipolares


FC 29

in
in
in
out
temp
temp
temp

PV
PV_Superior
PV_Inferior
Valor_Graduado_20
PV_Real
PV_Real_20
Rango_Ing

INT
REAL
REAL
REAL
REAL
REAL
REAL

L
ITD
DTR
T
L
L
-R
T
L
L
-R
T
L
L
/R
L
*R
L
+R
T

#PV

//Carga del valor medido dela E/A


//Convierte de entero a entero doble
//Convierte de entero doble a real
//Valor analgico de entrada en formato n real
//
//Cargar 20% del rango de conversin de la CPU (5530)

#PV_Real
#PV_Real
553000e+03
#PV_Real_20
#PV_Superior
#PV_Inferior
#Rango_Ing
#PV_Real_20
2.211800e+04
#Rango_Ing
#PV_Inferior
#Valor_Graduado

0
0
0
0
0
0
0

Palabra de la E/A medida


Lmite superior del rango en unid. ing.
Lmite inferior del rango en unid. ing.
Valor graduado resultante del offset 20%
PV convertido a valor real
PV_Real offset por 20%
PV_Superior - PV_Inferior

//Almacenar el valor real del offset del PV


//Rango en unidades de ingeniera

//Cargar valor real PV con offset 20% del rango de CPU


//Cargar rango de CPU menos 20%(27648-5530)
//Divide
//Cargar rango en unidades de ingeniera
//Multiplicar
//Cargar el PV_Inferior para calcular el offset PV
//Sumar
//Resultado final

Ajuste de Valores Analgicos Bipolares

Para calcular el valor ajustado de una seal bipolar, se usa la siguiente ecuacin:
Valor bipolar ajustado = (Medida de la entrada PV x PV medido / rango de CPU x2) +
Medio rango PV

Ejemplo:
PIW 288
medida del
sensor de
temperatura
de +10 a 10V

Ajuste:
MD30 = (PIW 288 x 100) / 55296
+27648

Rango de CPU
(bipolar)
de -27648 a +27648
-27648

+ 50 grados

Si la entrada analgica PIW 288


medida +13824 , MD30 = +25

Rango deseado en
unidades de ingeniera
de -50 a +50 grados
-50 grados

Funcin de Ajuste de Valores Analgicos Bipolares


FC 34

in
in
in
out
temp
temp
temp
L
ITD
DTR
T
L
L
-R
T
L
L
/R
L
+R
T
L
L
*R
L
/R
L
+R
T

PV
PV_Superior
PV_Inferior
Valor_Graduado_Bi
PV_Real
PV_Mid
Rango_Ing_Bi
#PV
#PV_Real
#PV_Superior
#PV_Inferior
#Rango_Ing_Bi
#Rango_Ing_Bi
2.00000e+00

INT
0
Palabra de la E/A medido
REAL
0
Lmite superior del rango en unid. ing.
REAL
0
Lmite inferior del rango en unid. ing.
REAL
0
Resultado del valor graduado
REAL
0
PV convertido a valor real
REAL
0
(PV Superior-PV Inferior) / 2 +PV Inferior
REAL
0
PV_Superior - PV_Inferior
//Carga del valor medido dela E/A
//Convierte de entero a entero doble
//Convierte de entero doble a real
//Valor analgico de entrada en formato n real
//Rango en unidades de ingeniera
//Variable PV medio rango
//
//
//

#PV_Inferior
#PV_Mid
#PV_Real
#Rango_Ing_Bi
5529600e+4
#PV_Mid
#Valor_Graduado_Bi

//
//Almacena la variable PV medio rango
//Cargar valor real PV
//Cargar rango en unidades de ingeniera bipolares
//Multiplicar
//Cargar el rango de CPU bipolar (27648 x 2)
//
//Cargar la variable PV rango medio
//Sumar
//Resultado final

Llamada a Mdulos y Ajuste de Valores


Con el uso de un mdulo de ajuste, tal como un FC, el OB1 puede llamar el
mdulo y pasar los parmetros para resolver el ajuste del valor. En este ejemplo, un
sensor de temperatura mide un rango de 0 a 100 grados (conectado a la PIW 288).
FC28
in
in
in
out
temp
temp

FC28

PIW288
100
0

INT
REAL
REAL
REAL
REAL
REAL

O
O
O
O
O
O

Segmento 1:
Convierte un valor analgico de entrada
a real

PV
PV_Superior
PV_Inferior Valor_Graduado

PV
PV_Superior
PV_Inferior
Valor _Ajustado
PV_Real
Rango_Ing

MD10

Segmento 2:
Determina el rango en unidades de
ingeniera
Segmento 3:
Ajuste del valor analgico

Lectura y Normalizacin de un Valor Analgico


FC 105 SCALE: Escalar valores

FC para Desescalar Valores para S/A


FC 106 UNSCALE: Desescalar valores