Beruflich Dokumente
Kultur Dokumente
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
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
Ttulo
Contenidos
Parte 1
Informacin general
Parte 2
Especificaciones
y ensayos de los
equipos
Parte 3 Lenguajes de
programacin
Parte 4
Parte 5
Comunicaciones
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
Programas de Usuario
Bloque en el Programa de Usuario
STEP 7 permite estructurar el programa. Esto aporta las siguientes ventajas:
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
Salidas
Marcas
Datos
Tiempos
Contadores
Periferia
Locales
Mdulos
OB, FB, FC
SFB, SFC
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.1
H1
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)
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.
..
..
..
.
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
I 0.2
&
I 0.3
Q 4.1
I 0.4
I 0.2
I 0.3
I 0.4
Q 4.1
Programacin Dividida
FC
OB1
Ingrediente_A
Ingrediente_B
>=1
&
=
(CALL)
&
(CALL)
>=1
FC
Mezclador
Descarga
(CALL)
>=1
(CALL)
&
FC
=
>=1
FC
OB
Mdulo subrutina
Procesamiento
del programa
Instruccin que llaman
otros mdulos
Procesamiento
del programa
Fin de mdulo
FC
Sistema Operativo
Programacin Estructurada I
OB1
FC
FB
FB
FC
SFC
SFB
Otros
OBs
Programacin Estructurada II
Motor
OB1
>=1
&
=
Descarga
>=1
&
=
&
=
=
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
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
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
13
14
8 Kby
128
128 (0-127)
8 Kby
Funcin (FC)
128
128 (0-127)
8 Kby
8 Kby
127
127(1-127)
48
53
Mdulos de Usuario
Tipo de Mdulo
Caractersticas
Organizacin (OB)
Mdulo de
funcin (FB)
Funcin (FC)
Mdulo de Datos
(DB)
Caractersticas
Funcin del
Sistema
(SFC)
Mdulos de
Funciones
del Sistema
(SFB)
Dato de Sistema
(SDB)
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
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
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
Ejecucin
del programa
Instruccin que llama a
otro mdulo
Mdulo llamado
(FB, FC, SFB, SFC)
Ejecucin
del programa
Fin de mdulo
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)
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
FC 10
FC 11
FC 12
DB
global
(DB 20)
Acceso desde
todos los bloques
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:
DB45
FBD/FUP
FB7
EN
Direccin actual
de los datos
I 1.0
I 1.1
MW20
ENO
Start
ejecutar
Stop
Longitud
M2.1
FB parmetro formal
LT
LT
LT
Botn de la seleccin
del tanque
LT
0 0 0 0
LT A
Ingrediente
Ingrediente B
Mdulo de entrada
Mdulo OB 1
A I 0.1
A I 1.1
= Q 4.0
.
.
.
.
Mdulo de salida
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
.
.
.
.
Tipo de Alarma
OBs de alarma
Aplicacin
Alarma horaria
OB 10 a OB 17
Alarma de retardo
OB 20 a OB 23
Alarma cclica
OB 30 a OB 38
Alarma de proceso
OB 40 a OB 47
CON
Procesamiento Cclico
procesamiento normal. OB1
Alarma
del proceso
Alarma de Proceso
Alarma
cclica
Alarma cclica
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.
PII
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
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
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
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.
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
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.
Espero que esto no se te haya pasado siquiera por la cabeza crcel directamente. Punto. Y sin galletas
en el desayuno hasta nuevo aviso.
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?
Por ejemplo:
U E0.1
U E0.2
SET
= 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.
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
BR
I 0.0
&
I 0.1
BR
Q 4.0
UO
OV
OS
I 0.0
IW0
IW2
SUB_I
EN
IN1 OUT
IN2 ENO
>=0
MW10
&
Q 4.1
AN
ON
XN
>0
>=0
<0
<=0
[(CC1 = 0)]
<>0
Resultado distinto de 0
==0
Resultado igual a 0
UO
OV
Overflow
[OV = 1]
OS
Overflow Memorizado
[OS = 1]
BR
Resultado Binario
[BR = 1]
BR
CC0
CC1
OV
OS
JCN, JNB
JBI
JNBI
JUO
JO
JOS
Establece el RLO a 1
CLR
Establece el RLO a 0
NOT
SAVE
T STW
Ejemplos
Ejemplo 1:
SET
S
R
CLR
S
;
M
M
;
C
// 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
-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)
DATE
(fecha IEC)
16
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
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
B#(0,0,0,0) hasta
B#(255,255,255,255)
Caracteres ASCII
'A','B' etc.
W
Nmero hexadecimal
DWORD
(palabra doble)
32
DW
Nmero hexadecimal
Variable ASCII
(carcter)
'E'
www.campusabierto.es
AdolfoMolina
PLCs
Curso 2009/10
Pgina 1
Tipos de datos
elementales
(hasta 32 bits)
Tipos de datos
complejos
(mayores de 32 bits)
Tiempo (DATE_AND_TIME)
Array (ARRAY)
Estructura (STRUCT)
Cadena de Caracteres (STRING)
PLCs
Curso 2009/10
Pgina 2
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)
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
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
PLCs
Curso 2009/10
Pgina 7
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
(1/2)
...
...
23 22 21
- Signo (S)
- Mantisa (M)
Pgina 9
Estndar IEEE754:
(2/2)
Ejemplo:
1#10000000#11000000000000000000000
(-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)
Pgina 11
ACUMULADORES (2/2)
PLCs
Curso 2009/10
Pgina 12
-->
T -->
Pgina 13
(BCD)
PLCs
Curso 2009/10
Pgina 14
00
EB8
EB9
00
00
EB8
PLCs
Curso 2009/10
Pgina 15
LAR1 R2 ----> Carga el reg. de direccin AR1 con el contenido de reg AR2
TAR
Tendr como
resultado:
TAR
PLCs
Curso 2009/10
Pgina 16
EB124
MB32 MB33
L ED124
EB124
T MB32
MB32
PLCs
Curso 2009/10
Pgina 17
L L#523123
Ver ayuda
Adm. Simatic
L B#16#EF
Tipos de datos
simples
NOTA:
T MB0
T AD256
PLCs
Curso 2009/10
Pgina 18
PLCs
Curso 2009/10
Pgina 19
EJERCICIO (Entregable 4)
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
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)
Valor
inicial
Datablock c:\class\machine1\db10
Tipo de datos
Comentario
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
U DBX 3.1
L DB19.DBW4
L valores.N1
BOOL
BYTE
WORD
DWORD
CHAR
STRING
INT
DINT
REAL
TIME
DATE
TOD
S5TIME
1
8
16
32
8
BIT
Longitud = 1 BIT
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
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)
Byte m
8 7
12 11
15
10 2
Signo
4 3
101
100
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
7 6 5 4 3 2 1 0
Cdigo ASCII
100
.......0
..... 2 2 21 2 0
S 214.....
S 2 .....
.......16 15.....
16
15
....2 2 ....
.......0
..... 2 21 2 0
2
31 30....
7
S 2 ...
.......0
.23 22.....
0
1 2
..... 2 23
....2 2 2 ....
Exponente
Mantisa
.......0
0
10
10
Base de tiempo
S5TIME#500ms
S5T#2h46m30s
10
10
Valor de tiempo
(=0050hex)
(=3999hex)
.......0
14
..... 2 21 20
15
2 2 .....
Ejemplos:
DATE#1990-01-01
D#2168-12-31
(=0000hex)
(=FF62hex)
.......16 15.....
30
16
.......0
15
....2 2 ....
..... 2 2 21 20
TIME#24d20h31m23s647ms
TIME#0ms
(=7FFF_FFFFhex)
(=0000_0000hex)
S 2 .....
Ejemplos:
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)
Ejemplo: DT#1995-02-02-08:30:01.999
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
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
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)
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
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
L 'E'
CHAR
(Character
)
8 ASCII
characters
S5TIME NOTES
S5TIME Format
00
100 ms
01
1s
10
10 s
11
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
0 to 65534
ID
ED
0 to 65532
Output bit
BOOL
0 to
65535.7
QB
AB
Output byte
BYTE, CHAR
0 to 65535
QW
AW
Output word
0 to 65534
QD
AD
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
0 to 65534
MD
MD
0 to 65532
Peripheral I/O
PIB
PEB
BYTE, CHAR
0 to 65535
PIW
PEW
0 to 65534
PID
PED
0 to 65532
PQB
PAB
BYTE, CHAR
0 to 65535
PQW
PAW
0 to 65534
PQD
PAD
0 to 65532
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
SFB
0 to 65535
SFC
SFC
System function
SFC
0 to 65535
DB
Data block
1 to 65535
Logic Blocks
Data Blocks
DB
UDT
UDT
UDT
0 to 65535
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:
Pgina 3
Posibles anidamientos
O(U
Posibles anidamientos
or exclusiva
asignacin
PLCs
Curso 2009/10
Pgina 4
PLCs
Curso 2009/10
Pgina 5
PLCs
Curso 2009/10
Pgina 6
PLCs
Curso 2009/10
Pgina 7
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
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
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
KOP
AWL
PLCs
Curso 2009/10
Pgina 11
PLCs
Curso 2009/10
Pgina 12
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
SET
SAVE
SAVE almacena el RLO (resultado lgico) en el bit RB (bit de resultado binario).
PLCs
Curso 2009/10
Pgina 14
U E 124.0
S A 125.0
Curso 2009/10
Pgina 15
PLCs
Curso 2009/10
Pgina 16
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
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)
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
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
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).
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
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
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
&
>=1
&
Q 4.0
I 0.3
>=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
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
Conector
&
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)
.
Q 1.0
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
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.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
RLO
1
Flanco Positivo
Flanco Negativo
Tiempo
I 1.0
M 1.0
Q 4.0
Flanco Positivo
RLO
1
Flanco Negativo
Tiempo
I 1.0
M 1.0
Funciones lgicas
M 1.0
I 1.0
N
Q 4.0
Q 4.0
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
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
....
....
....
....
estado de seal
....
....
....
....
Primera consulta
Tema 4
Instrucciones Bsicas:
Operaciones lgicas con bits
Div.. Ingeniera
Div
Ingeniera de
Sistemas y Automtica
Automtica
Bibliografa
l
l
l
l
l
ndice
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 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 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
Operaciones bsicas
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)
10
Operaciones bsicas
l
Contactos negados
SOLUCIN EN AWL
UN E
0.0
U
E
0.1
=
A
4.0
11
ndice
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
13
Instrucciones de terminacin de
cadenas lgicas
14
Instrucciones de terminacin de
cadenas lgicas
l
l
15
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
....
....
....
....
....
....
....
....
Primera consulta
16
Instrucciones de terminacin de
cadenas lgicas
17
ndice
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
19
Combinacin de operaciones
bsicas
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
Rs
Rb
b
FCb
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
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)
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
25
ndice
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
27
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
M0.3
M0.4
28
14
Funcin Memoria
l
S1
K1
S3
S4
K2
S2
K1
prioridad a la
desconexin
K2
prioridad a la
conexin
29
Flip -flop
Funcin Memoria
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
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
31
Funcin Memoria
l
Ejemplo
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
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
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
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
36
18
Ejemplo:solucin
l
37
Ejemplo:solucin
38
19
Ejemplo:Manual
39
Ejemplo:Automtico
40
20
Ejemplo:Automtico
Funcionamiento Incorrecto
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
4.0
0.1
0.3
4.1
42
21
Ejemplo: Automtico
43
44
22
Ejemplo: solucin
l
0.7
0.0
0.1
45
Ejemplo: solucin
l
l
0.0
UN
R
R
E
A
A
0.1
4.0
4.1
46
23
ndice
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
NOT
l
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.
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
48
24
ndice
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
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
50
25
Flancos
l
l
l
51
26
PLCs
Curso 2009/10
Pgina 1
ACCU-1
Pgina 2
PLCs
Curso 2009/10
Pgina 3
PLCs
Curso 2009/10
Pgina 4
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
PLCs
Curso 2009/10
Pgina 6
acumulacin de alarmas
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
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
Pgina 9
Pgina 10
PLCs
Curso 2009/10
Pgina 11
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
U E124.7
R Z5
L Z5
T MW4
LC Z5
T MW7
U Z5
= A124.3
Curso 2009/10
Pgina 4
EJERCICIO (Entregable 3)
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
Operacin Operando Significado
S
Activar (cargar) un contador
El contador se activa con el flanco creciente del RLO.
CU
CD
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
12 11
0000hex
102
4 3
101
100
C1
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
15
12
11
Operacin
Operando
L C# 38
Preseleccin de Tiempo
(codificado en BCD)
- 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
S_CDU
PV CV
CV_BCD
R
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
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
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
0
24 23
16 15
8 7
Byte alto
Byte bajo
Byte alto
Byte bajo
Palabra alta
Memoria trabajo
Temporiz. Contadores
Bloque de datos
Palabra de estado
Reg. direcciones
Constantes, punteros
Acumulador 1
Memoria sistema
Periferia de entradas
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
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
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
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
TAK
PUSH
POP
Acumulador 2
Acumulador 1
Acumulador 1
Acumulador 2
Acumulador 1
Acumulador 2
Acumulador 1
Acumulador 2
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
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
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
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
PLCs
Curso 2009/10
Pgina 1
Tipos de datos
elementales
(hasta 32 bits)
Tipos de datos
complejos
(mayores de 32 bits)
Tiempo (DATE_AND_TIME)
Array (ARRAY)
Estructura (STRUCT)
Cadena de Caracteres (STRING)
PLCs
Curso 2009/10
Pgina 2
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)
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
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
PLCs
Curso 2009/10
Pgina 7
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
(1/2)
...
...
23 22 21
- Signo (S)
- Mantisa (M)
Pgina 9
Estndar IEEE754:
(2/2)
Ejemplo:
1#10000000#11000000000000000000000
(-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)
Pgina 11
ACUMULADORES (2/2)
PLCs
Curso 2009/10
Pgina 12
-->
T -->
Pgina 13
(BCD)
PLCs
Curso 2009/10
Pgina 14
00
EB8
EB9
00
00
EB8
PLCs
Curso 2009/10
Pgina 15
LAR1 R2 ----> Carga el reg. de direccin AR1 con el contenido de reg AR2
TAR
Tendr como
resultado:
TAR
PLCs
Curso 2009/10
Pgina 16
EB124
MB32 MB33
L ED124
EB124
T MB32
MB32
PLCs
Curso 2009/10
Pgina 17
L L#523123
Ver ayuda
Adm. Simatic
L B#16#EF
Tipos de datos
simples
NOTA:
T MB0
T AD256
PLCs
Curso 2009/10
Pgina 18
PLCs
Curso 2009/10
Pgina 19
EJERCICIO (Entregable 4)
PLCs
Curso 2009/10
Pgina 20
PLCs
Curso 2009/10
Pgina 1
PLCs
Curso 2009/10
Pgina 2
Ejemplo:
L MW 32
L EW 124
==I
=A 124.0
>I
=A 124.1
<I
=A 124.2
Curso 2009/10
Pgina 3
Ejemplo:
L MD 16
L 1.359E+02
<=R
=A 124.7
>R
=A 124.0
S M 124.0
PLCs
Curso 2009/10
Pgina 4
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)
xI xD xR
L MW 32
L EW 124
-I
PLCs
Curso 2009/10
Pgina 5
Pgina 6
PLCs
Curso 2009/10
Pgina 7
PLCs
Curso 2009/10
Pgina 8
SQRT
LN, LOG
Valor absoluto:
ABS
Exponencial:
EXP
Incrementos:
+ 1
- 1
=> ACU1=ACU1+1
=> ACU1=ACU1-1
PLCs
Curso 2009/10
Pgina 9
PLCs
Curso 2009/10
Pgina 10
PLCs
Curso 2009/10
Pgina 11
BTI
T MW 20
L MW 10
ITD
T MD 20
PLCs
Curso 2009/10
Pgina 12
doble
inferior
mayor
superior
un real en entero de 32 bits
PLCs
Curso 2009/10
Pgina 13
PLCs
Curso 2009/10
Pgina 14
RND
T MD 20
L EW 124
NEGI
T MW 20
PLCs
Curso 2009/10
Pgina 15
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
Ejemplos:
L ED 124
L MD 20
UD
T AD 124
L EW 124
UW
W#16#AA55
T MW 20
PLCs
Curso 2009/10
Pgina 17
R (right)
W (word)
R (Rotate)
L (left)
D (double)
n (N Despl.)
Los desplazamientos rellenan con 0, aunque hay instrucciones que permiten mantener el signo:
SSD
SSI
Cuando no se indique n, ste ser el contenido del byte bajo del ACU2
PLCs
Curso 2009/10
Pgina 18
Pgina 19
(III)
Ejemplos de Desplazamiento:
L EW 124
SLW 6
T MW 20
L MW 10
SSI 4
T MW 20
L +3
L MD 10
SRD
T MD 20
PLCs
Curso 2009/10
Pgina 20
Ejemplos de Rotacin:
L MD 10
RLD 3
T MD 20
L +6
L MD 10
RRD
T MD 20
PLCs
Curso 2009/10
Pgina 21
EJERCICIO (Entregable 5)
y MD4
y MD12
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
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
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
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
I 0.0
15
10
5
I 0.1
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
I 0.2
0
1
8x
12x
I 0.0
I 0.1
0
1
Q 4.0
0
1
Q 4.1
Tiempo
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
Representacin General
La estructura semntica de una operacin aritmtica es:
Funcion
Cargar
Direccin1
Cargar
Direccin2
Funcin aritmtica
Transferir
Resultado
EN
ENO
IN1
IN2 OUT
Tipo de dato
INT
DINT
REAL
+I
+D
+R
Resta
-I
-D
-R
Multiplicacin
*I
*D
*R
Divisin
/I
/D
/R
MOD
ADD_I
EN
IN1 OUT
IN2 ENO
EN
ENO
( )
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
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
MUL_I
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
ADD_DI
L
L
+I
T
MD4
MD10
MD16
SUB_DI
EN
IN1 OUT
IN2 ENO
MUL_DI
EN
IN1 OUT
IN2 ENO
DIV_DI
EN
IN1 OUT
IN2 ENO
MOD_DI
EN
IN1 OUT
IN2 ENO
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
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
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
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
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
Estado de seal de los bits de la palabra de estado para resultados de operaciones en coma flotante dentro del rea no vlida
Estructura semntica
Cargar
Direccin1
Adicin Constante
Transferir Resultado
+ B#16#bb
+ +/-w
+ L#+/-d
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
Ejemplos:
L
INC
T
ValorInicial
5
ValorInicial
L
DEC
T
ValorFinal
7
ValorFinal
Representacin General
La estructura semntica de una operacin aritmtica avanzada es:
Cargar
Direccin1
Funcin matemtica
Transferir
Resultado
Funcion
EN
ENO
IN
OUT
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
Ejemplo:
Arco seno en grados
L
0.343
ASIN
L
57.2958
*R
T
Angulo_grados
ENO
Ejemplo: ab = eb ln a
EXP
EN OUT
IN
ENO
L
LN
L
*R
EXP
T
Valor_a
Valor_b
Potencia
Cuadrado (SQR)
SQR
EN OUT
IN
ENO
L
SQR
L
*R
L
*R
T
Radio
Altura
3.141592
Volumen
Ejemplo:
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)
REAL
ABS
NEGR (NEG_R)
Conversin de Enteros
Estructura Semntica
Funcin
EN ENO
Cargar
Direccin1
Funcin de conversin
Transferir Resultado
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
ROUND
EN ENO
IN
OUT
ABS
EN ENO
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
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
como parmetro
en ACU2
en ACU2
como parmetro
SLD n (SHL_DW)
SLD
SRD n (SHR_DW)
SRD
SSI
SSD n (SHR_DI)
SSD
Rotar a la izquierda
RLD n (ROL_DW)
RLD
Rotar a la derecha
RRD
RRD n (ROR_DW)
RLDA
RRDA
Desplazamientos
Desplazamiento izquierda (palabra) SLW
CC1
ACU1
CC1
ACU1
CC1
CC1
ACU1
ACU1
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
CC1
CC1
ACU1
ACU1
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:
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
Funcin
ENO
EN
Cargar
Valor1
Cargar
Valor2
Funcin lgica sin constante
Transferir
Resultado
IN1
IN2
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#
WOR_W
ENO
EN
MW32
IN1
MW44
IN2
OUT
MW34
L
L
OW
T
MW32
MW44
MW34
WXOR_W
ENO
EN
MW26
IN1
MW28
IN2
OUT
L
L
XOW
T
MW24
MW26
MW28
MW24
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:
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
JNB
Etiqueta
JBI
Etiqueta
Salto si BR = 1
JNBI
Etiqueta
Salto si BR = 0
JZ
Etiqueta
JN
Etiqueta
JP
Etiqueta
JPZ
Etiqueta
JM
Etiqueta
JMZ
Etiqueta
JUO
Etiqueta
JO
Etiqueta
Salto si overflow
JOS
Etiqueta
JL
Etiqueta
Distribuidor de saltos
LOOP
Etiqueta
Condicion
Salto condicional
Programa si no
se cumple condicin
Programa si se
cumple la condicin
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
.
.
.
.
.
.
.
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
Salta si RLO = 1
A I 0.0
A I 1.0
JC NEW1
Salta si RLO = 0
A I 0.0
A I 1.0
JCN REC2
A I 0.0
A I 1.0
JNB REC2
Salto si BR = 1 (JBI)
Salto si BR = 0 (JNBI)
Salto si OV = 1 (JO)
Salto si OS = 1 (JOS)
CC0
CC1
Salto ejecutado
JZ
JMZ
JPZ
JM
JMZ
JN
Salto si no cero
JP
JPZ
JN
Salto si no es cero
JUO
Numero_de_posiciones
END
M0
M1
Mx
ERR
MW 30
Seccin de Programa
que va a ser ejecutado
varias veces
Contador de
Bucle <>0 ?
No
Continuar
L +4
NEXT:T MB10
.
.
.
.
.
L MB10
LOOP NEXT
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
I
MET1
0.0
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
I
PRI1
0.0
A
JC
I
PRI2
0.1
A
JC
I
PRI3
0.2
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
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
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
10.0
Cdigo de Programa Principal
PB
MB
M
M
ALA0
M
0
0
0.0
10.1
10.1
Cdigo de Programa Principal
PB
MB
M
M
ALA0
M
0
0
0.0
10.2
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
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
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
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.
.
SPA pepe
(cdigo que no se ejecutar)
pepe: NOP 0
(Cdigo que continuar ejecutndose)
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
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:
Como veis estas instrucciones empiezan a ser interesantes ya que nos van a dar bastante juego a la hora de
realizar nuestros programas.
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
[/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"]
PLCs
Curso 2009/10
Pgina 1
MOT1: L EB 124
PLCs
Curso 2009/10
Pgina 2
SPL
Ejemplo:
PLCs
Curso 2009/10
Pgina 3
PLCs
Curso 2009/10
Pgina 4
salto si RLO = 1
vinculadas a RB
SPO y SPS
<>0
>0
<0
<=0
>=0
PLCs
Curso 2009/10
Pgina 5
Ejemplo:
PLCs
Curso 2009/10
Pgina 6
PLCs
Curso 2009/10
Pgina 7
L MB 10
LOOP PROX decrementa ACU1-L y salta si ACU1-L <>0
PLCs
Curso 2009/10
Pgina 8
PLCs
Curso 2009/10
Pgina 9
EJERCICIO (Entregable 6)
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
S7-300/400
E 0.0
S5T#45s
T2
T2
A 0.1
E 0.2
S5T#85s
T 9
T 9
A 9.1
E 0.7
S5T#65s
T 4
T 4
A 8.1
E 1.2
S5T#32s
T 2
T 2
A 3.1
E 4.2
S5T#32s
T 7
T 7
A 1.1
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
10
E 2.0
T 1
E 2.1
S5T#5s
T 1
T 1
A 4.0
E 2.0
T 1
E 2.1
S5T#5s
T 1
T 1
A 4.0
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
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.
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
17
Temporizadores SE y SI S7-300/400
18
19
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.
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
M
M
A
M
M
A
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
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
E
E
A
A
0.0
0.1
4.0
4.1
.......
23
24
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)
Retraso a la conexin
memorizado (SS)
Retraso a la
desconexin (SF)
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 >>
12 11
Irrelevante Base de
tiempo
4 3
101
102
100
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
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
L S5T#00H02M23S00MS
L S5TIME#10s;
L S5T#1m10ms;
L
T
.......
L
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
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
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
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
TV
S5TIME
BOOL
BI
BCD
Q
WORD
WORD
BOOL
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
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
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
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
FBD
LAD
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
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
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
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
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
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
Seal del
Temporizador 17
0
L S5T#1S
SP T 17
1s - n * tp
A T 17
= Q 4.5
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
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)
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
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
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
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
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
Nombre
IN
PT
Q
ET
Descripcin
Entrada de arranque
Longitud del pulso o duracin de espera
Estado del temporizador
Tiempo pasado
PLCs
Curso 2009/10
Pgina 1
Simblicos
Pgina 2
Simblicos
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
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
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.
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.
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
tipo n timer
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
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
U E 124.1
R T0
U T0
= A124.0
SE
SA
SS
PLCs
Curso 2009/10
Pgina 18
EJERCICIO (Entregable 2)
- Verde vehculos
- Rojo Peatones.
A124.1
A124.2
A125.0
A125.1
E124.0
Press
butto
n
PLCs
Curso 2009/10
Pgina 19
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.
Se puede decir que esta es una solucin muy "elctrica" similar a la utilizada en los
automatismos cableados con rels.
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).
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).
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.
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
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).
FB10
Programacin estructurada
DB10
Programacin estructurada
OB1
Programacin estructurada
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
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
PGINA:
1.
Introduccin..................................................................................................
2.
3.
Informacin
Programacin
Ejercicio Ejemplo
Notas
T I A Manual de Formacin
Edicin: 02/2002
Pgina 3 de 18
Mdulo B4
Bloques de Datos
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
Requirements:
Requisitos:
Para el correcto aprovechamiento de este mdulo, se requieren los siguientes conocimientos:
T I A Manual de Formacin
Edicin: 02/2002
Notas
Pgina 4 de 18
Mdulo B4
Bloques de Datos
2
3
4
.
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
Mdulo B4
Bloques de Datos
2.
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
Mdulo B4
Bloques de Datos
3.
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
Mdulo B4
Bloques de Datos
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.
Indice
T I A Manual de Formacin
Edicin: 02/2002
Notas
Pgina 8 de 18
Mdulo B4
Bloques de Datos
3.
4.
Indice
T I A Manual de Formacin
Edicin: 02/2002
Notas
Pgina 9 de 18
Mdulo B4
Bloques de Datos
5.
6.
Indice
T I A Manual de Formacin
Edicin: 02/2002
Notas
Pgina 10 de 18
Mdulo B4
Bloques de Datos
7.
8.
Indice
T I A Manual de Formacin
Edicin: 02/2002
Notas
Pgina 11 de 18
Mdulo B4
Bloques de Datos
Nota:
Indice
T I A Manual de Formacin
Edicin: 02/2002
Notas
Pgina 12 de 18
Mdulo B4
Bloques de Datos
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
Nombre simblico
con el que se
accede a la
direccin absoluta
asignada.
Tipo de dato
asignado (ver
tabla abajo) al
registro.
Comentario
para
documentacin
( opcional ).
Nota:
Indice
T I A Manual de Formacin
Edicin: 02/2002
Notas
Pgina 13 de 18
Mdulo B4
Bloques de Datos
Tipo y
descripcin
Tamao
en Bits
FormatoOpciones
Ejemplo
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
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
B#(1,14,100,120)
INT (Entero)
16
32
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
Mdulo B4
Bloques de Datos
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
Notas
Pgina 15 de 18
( Valor Actual
).
Mdulo B4
Bloques de Datos
Indice
T I A Manual de Formacin
Edicin: 02/2002
Notas
Pgina 16 de 18
Mdulo B4
Bloques de Datos
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).
Indice
T I A Manual de Formacin
Edicin: 02/2002
Notas
Pgina 17 de 18
Mdulo B4
Bloques de Datos
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
Indice
T I A Manual de Formacin
Edicin: 02/2002
FB1, DB19
EW 0
A 4.0
Pgina 18 de 18
Mdulo B4
Bloques de Datos
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
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)
Fin de Mdulo:
BEC. Fin de mdulo condicionado al RLO
BEU. Fin de mdulo incondicional
BE. Fin de mdulo. ltima sentencia del mdulo
Partes de un Mdulo
Tabla de
Declaracin
de Variables
Seccin de
Cdigo
ENO
Datos Locales
Smbolo
Tipo de Declaracin
Valor Inicial
Tipo de Datos
Comentario
Direccin
Declaracin
Nombre
Valor inicial
Comentario
0.0
temp
temporal1
Tipo
INT
Variable temporal
2.0
temp
temporal2
REAL
Variable temporal
Smbolo
Tipo de Declaracin
Valor Inicial
Tipo de Datos
Comentario
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
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.
Mdulo Subrutina FC
Ejecucin
del programa
Ejecucin del
Programa
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
// 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 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
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
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
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
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
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 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
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
DBLG // longitud de un DB
DBNO // nmero de un DB
DILG // longitud de un DI
DINO // nmero de un DI
CDB
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
Usar este
rea despus
Variables usadas:
setpoint_value: real
sum: real
actual_value: real
DB Multi instancia
PLCs
Curso 2009/10
Pgina 1
Introduccin
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)
Funcin (FC)
Mdulos de Funcin
del Sistema (SFB)
Funcin del
Sistema (SFC)
Bloques de Datos
del Sistema (SDB)
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
E/A
M/T/Z
almacenamiento temporal
almacenamiento permanente
reas de DB
en la L stack
en DBs.
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
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
El
OB1
Se
ejecuta
contnuamente .....
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
manual
S7-300
Alimentacin STOP->RUN
S7-400
STOP->RUN
+ CRST
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
fin de bloque
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
Pgina 14
Curso 2009/10
Pgina 15
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
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.
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
PLCs
Curso 2009/10
Pgina 22
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
Pgina 23
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
U DBX 3.1
PLCs
Curso 2009/10
Pgina 25
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: ...
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)
Leche
Levadura
Azcar
T mezcla
Magdalenas 3
Sobaos
Donuts
Pgina 28
EJERCICIO (Entregable 7)
PLCs
Curso 2009/10
Pgina 29
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
Dentro de la DB creamos una variable que llamaremos "Temperatura" y ser del tipo Array[1..10] of Int
## 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
## 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
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
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:
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
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:
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.
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
.......
.......
.......
Elabora la palabra de
marcas 33
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 nmero de
Byte
L KF +5
SLW 8
Desplaza el nmero de
Bit al Byte alto
OW
STEP 7
L P#M 2.3
Analoga en el STEP 5
Ejemplos:
STEP 7
Analoga en el STEP 5
L P#M 2.3
L P#4.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
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 nmero de
Byte
T MD44
Se guarda en la doble
palabra de marcas 44
L KF +0
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
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
LAR1
Carga el puntero en el
registro de direcciones
1
.......
Consulta de la entrada
2.0 para saber si vale
"1"
Ejemplo b
LAR1 P#E 2.0
.......
U [AR1, P#0.0]
.......
Consulta de la entrada
2.0 para saber si vale
"1"
Ejemplo c
LAR1 P#DBX 2.0
L MW [AR1, P#0.0]
Carga la palabra de
marcas 2
.......
.......
Ejemplo d1
LAR1 P#A 2.0
= [AR1, P#2.2]
Ejemplo d2
+AR1 P#2.0
Aumenta el puntero en
el registro en 2 Bytes
T W [AR1, P#0.0]
.......
L P#4.5
+AR1
Aumenta el puntero en
el registro con el
AKKU1
S [AR1, P#1.0]
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:
Ejemplos:
L P#0.1
+AR1
.........
L P#4095.7
+AR1
.......
.......
L P#4096.0
+AR1
.......
.......
L P#M 8191.0
+AR1
.......
.......
L P#8191.7
+AR1
.......
.......
L P#E 8192.0
+AR1
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:
Las ventajas de la utilizacin del direccionamiento indirecto por memoria, con un puntero en la zona de
marcas, son las siguientes:
Ambos contienen el puntero de rea en los 32 bits ms bajos, tal como se ha mostrado arriba.
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:
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".
T[MW2]
SI
T[DBW2]
SI
T[#zeit_x]
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
Ejemplo
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
32
Nmero Decimal
con signo
L#-2147483648 a L#2147483647
L#1
REAL (Nmero en
coma flotante)
32
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
TIME_OF_DAY#1:10:3.3
CHAR (Carcter)
Caracteres ASCII
A, B etc.
Ejemplo:
L
DB 20. DBB2
DB 22. DBW4
DB 2. DBX5.6
Ejemplo:
OPN
DB 20
Abrimos el DB20
OPN
DI 22
Abrimos el DB22
DBW 0
T
1
MW 1
DIX 0.0
E 1.0
A 4.0
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
SALIDA:=
A 4.0
Nota:
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
Descripcin
I 0.0
QB 4
PI
Entradas de periferia
PQ
Salidas de periferia
Marcas
T 15
Temporizadores
C 80
DB
Datos de un DB global
DI
DIW20
Datos de un DB de instancia
LB 34
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.
Puntero
Puntero de rea
Nmero de 16 bits
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
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
Byte n
00000000
Byte n+1
Byte n+2
Puntero a
Interrea
Byte n+3
Byte n
Byte n+1
Byte n+2
Direccin bit
Byte n+3
Cdigo:
Direccin byte
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
Notacin Constante
1. Variables con Tipos Datos:
P#[Bloque de Datos.] Direccin Tipo Cantidad
2. Variables con Tipos Parmetros : L#Nmero Tipo Cantidad
Ejemplos:
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
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
OPN DB10
L
IB [DBD20]
OPN
DB
[MW 20]
MW 20
133
OPN
DB
133
[MD 10]
MD 10
P#30.0
30.0
AR1
P#10.0
A
[AR1, P#2.1]
P#2.1
A
12.1
AR1
P#M12.0
//asignar direccin digital
[AR1, P#4.0]
P#4.0
L
M B
16.0
Operando
LAR1
Funcin
Cargar contenido de ACU1 en registro de direcciones AR1.
LAR1
AR2
LAR1
<Direccin>
LAR1
P#{rea}, byte{.bit}
LAR2
LAR2
<Direccin>
LAR2
P#{rea}, byte{.bit}
TAR
TAR1
TAR1
AR2
TAR1
<Direccin>
TAR2
TAR2
+AR1
+AR1
Suma el contenido de la palabra baja del ACU 1 al contenido del registro AR1.
P#Byte.Bit
+AR2
+AR2
P#Byte.Bit
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
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
MW 210
Instruccin
Ejecutada
31
10000001
23
00000000
15
00000011
7
0
00100000
10000RRR
00000BBB
BBBBBBBB
BBBBBXXX
+210
L
IB 210
Instruccin
Ejecutada
L
T
A
L
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]
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
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
Direccionamiento indirecto
Abril 2003
SIMATIC S7 NIVEL II
Dir_indirecto.ppt
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
Descripcin
E 0.0
AB 4
PE
PEW 10
Entradas de Periferia
PA
PAD 24
Salidas de Periferia
M 100.0
T15
Temporizadores
Z80
Contadores
SIMATIC S7 NIVEL II
Dir_indirecto.ppt
E 124.0
EB124
SIMATIC S7 NIVEL II
Dir_indirecto.ppt
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
[MD50]
L E W 124
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
Direccin Bit
SIMATIC S7 NIVEL II
Dir_indirecto.ppt
Direccionamiento indirecto
LAR1 P# E 100.0
El registro 1 contiene la direccin de la entrada 100.0 .
}
}
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
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
12
Ejercicio 1
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
OB10 :
Interrupcin
Horaria
OB1
se ejecuta
continuamente
OB82:
Error
Asncrono
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
Antes de ejecutar el
nuevo OB, se salvan
los registros del
mdulo interrumpido
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
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
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
SFCs Diagnstico
SFC 6 RD_INFO: Leer informacin de arranque del OB actual
Parmetro
RET_VAL
TOP_SI
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)
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
STARTUP
STOP
8
4
HOLD
RUN
6
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
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
Actualizar imagen
proceso de entradas
Programa principal
OB 1
Reset salidas
del proceso
Liberar mdulos
de salida
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
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
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
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.
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.
+27648 = 10V.
+ 8 V. Lmite superior para la interrupcin
0
+ 2 V.
+27648
+20000
Lmite superior
para la interrupcin
0
AW0
LADDR
INPUT
WORD
E, A , M, D, L,
Const.
E, A, M, D, L
RET_VAL OUTPUT
INT
BUSY
OUTPUT
BOOL
E, A, M, D, L
Interrupciones Cclicas
OB35
OB35
OB1
se ejecuta
continuamente
OB35
...interrumpe el OB1 y se
ejecuta el OB35 cada 250ms
OB35
Tipo de datos
BYTE
Descripcin
Clase de evento e identificadores:
OB35_STRT_INF
BYTE
:
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
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
PIW288
+14000 = Temperatura Superior
+13000 = Temperatura Inferior
Q5.7
Calentador
DO
DO
Variable
OB20_EV_CLASS
AR
R ET
DO
AR
R ET
DO
Descripcin
Nmero del OB que se ha de
anular (OB20 a OB23).
Parmetro de cdigo de error
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
M0.1
20
T#500ms
EN
OB_NR
DTIME
W#16#01
SIGN
SFC32
(SRT_DINT)
ENO
RET_VAL
M2.0
MW10
DO
X
+27648
OB de Error
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.
Estado de lectura
Desbordamiento positivo
>= 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)
>= 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)
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.
Estado de lectura
Temperatura
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
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
R
Vs
= f
Ve
Re
20
= 0.133
150
b) A =
20
= 0.266
75
c) A =
20
= 0.533
37.5
d)A =
20
= 1.066
18.7
byc) A =
37.5 * 75
20
= 25 byc) Av = = 0.8
37.5 + 75
25
Vs = Ve * 0.8 = 5 * 0.8 = 4
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
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
I7
M
U
L
T
I
P
L
E
X
O
R
P
A/D
Puerto
OE
START
3
ALE
I0
I7
M
U
L
T
I
P
L
E
X
O
R
P
A/D
Puerto
OE
EOC
START
INT
3
ALE
Rack Fuente de IM
2 alimentac. (Receptor)
Rack Fuente de
1 alimentac.
Rack
0
CPU
y
fuente de
alimentac.
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)
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
Valor analgico
Resolucin
X X X
X X X X X X X
X X X
X X X X X
X X X
X X
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
//Comparacin con 2 V.
//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.
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
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.
Mensajes de
Diagnstico
para Entradas
Analgicas
Mensajes de
Diagnstico
para Salidas
Analgicas
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
Nivel alto
Sensor de
Nivel
PIW 288
LT
Nivel bajo
1000 L
0 0 1 0 1 0 1 0 1 1 0 1
0 0 0 0
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.
Q 4.0
Vlvula de llenado
Sensor de
Nivel
PIW 288
LT
Q 5.7
Vlvula de drenaje
+ 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
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
Vlvula de
posicionamiento
en 3 a 15 psi
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
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
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
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
#Rango_Ing
#Rango_Ing
#PV_Inferior
#Valor_Graduado
Ejemplo:
Ajuste:
MD20 = ((PIW 288 - 5530) x 200) /
22118
PIW 288
+27648
Rango de CPU
(unipolar)
+5530 -> +27648
+5530
200 L
Rango deseado en
unidades de ingeniera
0 -> 200 L
0L
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
#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
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
Rango deseado en
unidades de ingeniera
de -50 a +50 grados
-50 grados
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
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