Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TUUTTO
E PROGRAMACIN
DE
ALL D
RIIA
OR
E
C S7
TIIC
AT
N SIIM
MA
EN
Versin 22/01/2002
Pg. 1 de 154
Introduccin .......................................................................................................... 9
2.1. PLCs ................................................................................................................... 9
2.2. Funcionamiento bsico........................................................................................ 9
2.3. Control ............................................................................................................... 11
2.4. Autmata ........................................................................................................... 11
2.5. Ventajas............................................................................................................. 11
2.6. Autmatas Siemens........................................................................................... 12
2.7. Ciclo de trabajo en el autmata ......................................................................... 13
2.8. Lenguajes de programacin .............................................................................. 13
3.
Sistemas de numeracin.................................................................................... 15
3.1. Sistema Decimal................................................................................................ 15
3.2. Sistema Binario.................................................................................................. 15
3.3. Convertir el binario............................................................................................. 16
3.4. Bits, bytes, y palabras (words)........................................................................... 16
3.5. 0 lgico, 1 lgico ................................................................................................ 17
3.6. BCD ................................................................................................................... 17
3.7. Hexadecimal ...................................................................................................... 18
3.8. Conversin de nmeros..................................................................................... 19
4.
Sistemas de numeracin.................................................................................... 20
4.1. Estructura de la memoria en Simatic S7 ........................................................... 20
4.2. Tipos de mdulos .............................................................................................. 21
4.3. Tipos de datos ................................................................................................... 22
4.4. Marcas de memoria ........................................................................................... 22
4.5. Entradas y salidas ............................................................................................. 22
4.6. Registros............................................................................................................ 23
Versin 22/01/2002
Pg. 2 de 154
6.
7.
8.
Operaciones de temporizacin.......................................................................... 39
8.1. Operaciones con temporizadores...................................................................... 39
8.2. Cargar un valor de temporizacin...................................................................... 39
8.3. Consulta del estado de temporizadores. ........................................................... 40
8.4. Temporizador como impulso (SI)....................................................................... 41
Curso Step 7 Mabe de Mexico S de RL de CV
Versin 22/01/2002
Pg. 3 de 154
Versin 22/01/2002
Pg. 4 de 154
Versin 22/01/2002
Pg. 5 de 154
Versin 22/01/2002
Pg. 6 de 154
Versin 22/01/2002
Pg. 7 de 154
1.1. Distribucin
Este documento es de libre distribucin y empleo. El autor no se responsabiliza de cualquier
modificacin efectuada al original.
Se permite la copia parcial o integra de su contenido.
Simatic S7 es propiedad de Siemens AUT, todos los derechos son reservados. Siemens no se
responsabiliza de este documento.
1.2. Objetivos
Con este tutorial se pretende ensear los conocimientos necesarios para programar en los
autmatas de la serie Simatic S7 de Siemens AUT.
No se va a mostrar la utilizacin del programa Step7, ya que este programa es comercial e
incluye los manuales necesarios para su empleo.
Todo lo aqu expuesto ha sido obtenido de los manuales del autmata, pero se ha estructurado
de distinta forma, tratando que la persona que lo utilice no se pierda en ningn momento y que
acceda de forma rpida a lo que busca.
Por supuesto, este tutorial no es una alternativa al manual que incorpora el autmata, se debe
tomar como una gua complementaria. El manual proporciona ms ejemplos y mayor detalle
que el expuesto aqu.
Es necesario que el lector est familiarizado con el lgebra de Boole, y si se est familiarizado
con algn otro lenguaje de programacin (como basic o ensamblador) ser mucho ms sencillo
y rpido. Si no conoce los conceptos de lgebra de Boole puede recurrir al tutorial disponible en
la seccin de electrnica industrial en esta misma web.
Versin 22/01/2002
Pg. 8 de 154
2. Introduccin
2.1. PLCs
Los Controladores Lgicos Programables (PLCs), tambin llamados autmatas programables,
forman parte de la familia de los ordenadores. Se usan en aplicaciones comerciales e
industriales. Un autmata monitoriza las entradas, toma decisiones basadas en su programa, y
controla las salidas para automatizar un proceso o mquina. Este curso trata de suministrar la
informacin bsica sobre las funciones y las configuraciones de los autmatas programables.
Versin 22/01/2002
Pg. 9 de 154
Los pulsadores (sensores), del siguiente ejemplo, conectados a las entradas del autmata,
pueden usarse para arrancar y parar un motor conectado a un autmata a travs de un arrancador
(actuador).
Versin 22/01/2002
Pg. 10 de 154
2.3. Control
2.4. Autmata
Lo mismo, adems de tareas ms complejas, se puede hacer con un autmata. El cableado entre
dispositivos y los contactos entre rels se hacen en el programa del autmata. Aunque todava
se requiere el cableado para conectar los dispositivos de campo, ste es menos intensivo. La
modificacin de la aplicacin y la correccin de errores son ms fciles de realizar. Es ms fcil
crear y cambiar un programa en un autmata que cablear y recablear un circuito.
2.5. Ventajas
Versin 22/01/2002
Pg. 11 de 154
Siemens fabrica varios lneas de autmatas de la familia SIMATIC S7. Son: S7-200, S7-300,
y S7-400.
S7-200
Al S7-200 se le denomina microsistema a causa de su pequeo tamao. El S7-200 tiene un
diseo compacto que significa que la fuente de alimentacin y las Entradas/Salidas las lleva
incorporadas. El S7-200 puede usarse en pequeas aplicaciones independientes como
ascensores, lavado de coches, o mquinas mezcladoras. Tambin puede utilizarse en
aplicaciones industriales ms complejas como mquinas de embotellado y empaquetado.
S7-300 y S7-400
Estos autmatas se usan en aplicaciones ms complejas que necesitan de un mayor nmero de
Entradas/Salidas. Ambos son modulares y ampliables. La fuente de alimentacin y las
Entradas/Salidas consisten en mdulos independientes conectados a la CPU. La eleccin entre
el S7-300 y el S7-400 depende de la complejidad de la tarea y de una posible ampliacin futura.
Versin 22/01/2002
Pg. 12 de 154
OPERANDO: indica una constante o direccin con la que debe trabajar la operacin. Si
se trata de una direccin se puede manejar en modo bit, byte o palabra (tal y como
veremos ms adelante).
Versin 22/01/2002
Pg. 13 de 154
Operacin
|
| Identificador del operando
| |
U E 32.0
//Operacin AND lgica
|
|
Operando
Comentarios
Versin 22/01/2002
Pg. 14 de 154
3. Sistemas de numeracin
Dado que un autmata es un ordenador, almacena informacin en forma de condiciones On y
Off (1 0), refirindose a dgitos binarios (bits).
A veces los dgitos binarios se usan individualmente y otras son utilizados para representar
valores numricos.
Versin 22/01/2002
Pg. 15 de 154
En el siguiente ejemplo las columnas cuarta y quinta desde la derecha contienen un 1. El valor
decimal de la cuarta columna desde la derecha es 8, y el valor decimal de la sexta columna
desde la derecha es 32. El decimal equivalente de este nmero binario es 40.
Versin 22/01/2002
Pg. 16 de 154
Los controladores programables slo pueden entender una seal que sea On o Off (presente o no
presente). El sistema binario es un sistema en el cual slo hay dos nmeros, 1 y 0. El binario 1
indica que una seal est presente, o el interruptor est On. El binario 0 indica que la seal no
est presente, o el interruptor est Off.
3.6. BCD
El cdigo BCD (Binary-Coded Decimal) son nmeros decimales en los que cada dgito est
representado por un nmero binario de 4 bits. Un contador de vueltas es un ejemplo de un
dispositivo de entrada de 4 bits. El BCD se usa comnmente con dispositivos de entrada y
salida. Los nmeros binarios se rompen en grupos de 4 bits, cada grupo representa un decimal
equivalente. Un contador de vueltas de 4 dgitos, como el que se muestra abajo, podra controlar
16 (4 x 4) entradas al autmata.
Versin 22/01/2002
Pg. 17 de 154
3.7. Hexadecimal
D = 13
E = 14
F = 15
Versin 22/01/2002
Pg. 18 de 154
Versin 22/01/2002
Pg. 19 de 154
4. Sistemas de numeracin
4.1. Estructura de la memoria en Simatic S7
La memoria del autmata est estructurada en las siguientes zonas:
MEMORIA DE PROGRAMA:
Tal y como vimos en 2.1, el autmata maneja una imagen en memoria de las entradas y
las salidas, actualizando stas al final del ciclo y recogiendo su estado al principio de
otro.
MARCAS DE MEMORIA:
Aqu almacenaremos los datos intermedios que deseemos preservar. Solo se admiten
datos de 1 bit, aunque pueden manejarse en modo bit, byte, etc.
E/S DE LA PERIFERIA:
Esta zona se emplea para tener acceso directo a los mdulos de E/S externos que pueden
ser aadidos a la CPU.
ESTADO DE TEMPORIZADORES Y CONTADORES:
El valor de temporizacin y de contaje, preseleccin y estado actual, se almacena en esta rea.
Por batera se pueden retener los valores de contaje y temporizacin que deseemos.
MODULOS DE DATOS:
Aqu podemos almacenar constantes y valores obtenidos mediante operaciones de cualquier
longitud (bit, byte, etc.). Estos mdulos pueden ser accesibles desde cualquier mdulo de
programa.
DATOS TEMPORALES:
Aqu se almacenan distintos datos, como las pilas de salto, que se utilizan durante la ejecucin
del programa y se pierden al final de cada ciclo.
Versin 22/01/2002
Pg. 20 de 154
===> +-----+
|
|
<=== +-----+
===> +-----+
|
| ===> +-----+
|
|
|
|
|
| <=== +-----+
<=== +-----+
OB de error y alarma: son los que contienen la secuencia de acciones a realizar en caso
de que se produzca una alarma o error programado (ver 4.6).
OB de arranque: en este mdulo podemos introducir valores por defecto que permiten el
arranque definido a la instalacin, bien en un arranque inicial o tras un fallo en la
alimentacin.
Mdulos de datos globales: se pueden utilizar por cualquier mdulo del programa.
Versin 22/01/2002
Pg. 21 de 154
entrada
salida
marca
periferia (acceso directo)
datos locales
temporizador
contador
mdulo de datos
Cada uno de estos tipos se pueden direccionar en 4 posibles modos (salvo T y Z):
B: byte (8 bits).
M
MB
MW
MD
0.0
0 a
0 a
0 a
a 255.7
255
254
252
Versin 22/01/2002
Pg. 22 de 154
E
EB
EW
ED
0.0
0 a
0 a
0 a
a 65535.7
65535
65534
65532
A
AB
AW
AD
0.0
0 a
0 a
0 a
a 65535.7
65535
65534
65532
ENTRADAS EXTERNAS:
Byte de entrada de la periferia
Palabra de entrada de la periferia
Palabra doble de entrada de la periferia
PEB
PEW
PED
0 a 65535
0 a 65534
0 a 65532
PAB
PAW
PAD
0 a 65535
0 a 65534
0 a 65532
SALIDAS EXTERNAS:
Byte de salida de la periferia
Palabra de salida de la periferia
Palabra doble de salida de la periferia
E/S digitales: son las e/s ms frecuentes y que en mayor cantidad vamos a tener.
Ocupan 4 bytes de memoria de direcciones, comenzando desde la 0.0 hasta la 127.7.
E/S analgicas: estas si son e/s adicionales, pero no obstante hay que configurarlas
tambin desde Step7 para especificar el rango de direcciones que van a ocupar. Ocupan
2 bytes de memoria de e/s (16 bytes por mdulo) y se sitan en el rango de direcciones
256 a 383.
4.6. Registros
Todas las CPU Simatic S7 disponen de una serie de registros que se emplean durante la
ejecucin del programa de usuario. No vamos a comentar todos ellos, slo los que realmente
empleemos en la programacin:
Acumuladores (ACU1 y ACU2)
El acumulador 1 (ACU 1) y el acumulador 2 (ACU 2) son dos registros universales de 32 bits
que se emplean para procesar bytes, palabras y palabras dobles. En estos acumuladores se
pueden cargar constantes o valores depositados en la memoria como operandos y ejecutar
operaciones lgicas con ellos. Tambin es posible transferir el resultado en ACU 1 a una
direccin (un mdulo de datos, una salida, etc.).
Cada acumulador puede descomponerse en dos palabras de 16 bits (palabra baja y alta). La
palabra baja contiene los bits de menor peso y la alta los de mayor peso lgico.
Versin 22/01/2002
Pg. 23 de 154
Cargar: que siempre acta sobre ACU 1 y guarda el antiguo contenido en ACU 2
(perdindose el valor antiguo de ACU 2). La carga de una palabra acta sobre la palabra
baja del ACU 1.
Realizar una operacin entre los acumuladores, almacenando el resultado en ACU 1 sin
variar ACU 2. Las operaciones pueden ser de comparacin, de lgica digital y de
aritmtica.
Palabra de estado
Es un registro de 16 bits que contiene algunos bits a los que puede accederse en el operando de
operaciones lgicas de bits y de palabras. Solo nos sern de utilidad los 9 primeros bits, estando
reservados el uso de los 7 ltimos. A continuacin pasaremos a describir cada bit:
BIT 0 (ER): 0 indica que la siguiente lnea se ejecuta como nueva consulta (inhibida).
En este estado la consulta se almacena directamente en RLO (ver 4.1).
BIT 1 (RLO): resultado lgico. Aqu se realizan las operaciones a nivel de bit (como
AND, OR, etc.).
BIT 3 (OR): se requiere para el proceso Y delante de O. Este bit indica que una
operacin Y ha dado valor 1, en las restantes operaciones es 0.
BIT 4 (OV): bit de desbordamiento. Se activa (1) por una operacin aritmtica o de
comparacin de coma flotante tras producirse un error (desbordamiento, operacin no
admisible, o relacin incorrecta).
BIT 5 (OS): bit de desbordamiento memorizado. Se activa junto con OV e indica que
previamente se ha producido un error. Solo puede cambiar a cero con la instruccin
SPS, una operacin de llamada a mdulo, o porque se ha alcanzado el fin del mdulo.
BITS 6 (A0) y 7 (A1): cdigos de condicin. Dan informacin sobre los resultados o
bits siguientes:
- resultado de una operacin aritmtica.
- resultado de una comparacin.
- resultado de una operacin digital.
- bits desplazados por una instruccin de desplazamiento o rotacin.
Versin 22/01/2002
Pg. 24 de 154
Registros 1 y 2 de direcciones
Son dos registros de 32 bits cada uno. Se emplean como punteros en operaciones que utilizan un
direccionamiento indirecto de registros.
Pila de parntesis
Aqu se almacenan los bits RB, RLO y OR, adems del cdigo de funcin que especifica que
instruccin lgica ha abierto el parntesis. Tiene un tamao de 8 bytes (mximo anidamiento).
Pila Master Control Relay (MCR)
Almacena los bits que indican si se opera dentro de un rea MCR. Para el caso de emplear saltos
guarda los datos en una pila (8 niveles).
Generar impulsos.
Para la utilizacin de los temporizadores vamos a disponer de una serie de instrucciones que nos
permitirn emplear los temporizadores de distintas formas para adecuarnos a nuestras
necesidades, tal y como veremos en captulos posteriores.
Vamos a disponer de 256 temporizadores, los cuales direccionaremos como:
T 0 a T 255
CONTADORES (Z):
Al igual que los temporizadores vamos a disponer de una serie de contadores que nos permitirn
efectuar contajes, tanto hacia adelante como hacia atrs.
Tambin vamos a emplear una serie de instrucciones que permitirn manejarlos, las cuales se
vern en siguientes captulos.
Disponemos de 256 contadores, los cuales podemos direccionar como:
Z 0 a Z 255
Versin 22/01/2002
Pg. 25 de 154
5. Programacin en AWL
5.1. Tratamiento de los resultados
Dependiendo del tipo de operando que empleemos, se har uso de uno o varios de los siguientes
registros:
Un operando del tipo bit sera una entrada o salida digital, por ejemplo.
Un operando del tipo byte o superior sera la lectura de una entrada analgica, por ejemplo.
5.3. ASIGNACION
Instruccin "="
Se copia el contenido del RLO al operando especificado, sin perder el contenido del RLO.
Posibles operandos: E, A, M, DBX, DIX, L
Registros afectados: ER, STA
ej. =
2.0
Esquema elctrico:
+24V
+24V
E0.0
E0.0
A4.0
A4.0
Contacto normalmente abierto
Versin 22/01/2002
Pg. 26 de 154
Tabla de verdad
E0.0
E0.1
A4.0
0
0
0
0
1
0
1
0
0
1
1
1
E0.0
E0.1
A4.0
Instruccin "U"
Realiza la funcin lgica AND entre el RLO y el operando especificado, almacenando el
resultado en RLO (se pierde el valor anterior). Se puede operar con el negado del operando si se
adjunta "N" (UN).
Posibles operandos: E, A, M, DBX, DIX, L, T, Z
Registros afectados: RLO, STA
ej. U E
ej. UN A
negada
0.0
1.2
E0.1
Tabla de verdad
E0.0
E0.1
A4.0
0
0
0
0
1
1
1
0
1
1
1
1
A4.0
Instruccin "O"
Realiza la funcin lgica OR entre el RLO y el operando especificado, almacenando el
resultado en RLO (se pierde el valor anterior). Se puede operar con el negado del operando si se
adjunta "N" (ON).
Curso Step 7 Mabe de Mexico S de RL de CV
Versin 22/01/2002
Pg. 27 de 154
ej. ON M
5.0
E0.1
E0.0
E0.1
E0.0
0
0
1
1
Tabla de verdad
E0.1
A4.0
0
0
1
1
0
1
1
0
A4.0
Instruccin "X"
Realiza la funcin lgica XOR entre el RLO y el operando especificado, almacenando el
resultado en RLO (se pierde el valor anterior). Se puede operar con el negado del operando si se
adjunta "N" (XN).
Posibles operandos: E, A, M, DBX, DIX, L, T, Z
Registros afectados: RLO, STA
ej. X Z
ej. XN A
0
1.0
Versin 22/01/2002
Pg. 28 de 154
Ejemplo:
U(
O E
U E
)
= A
0.0
0.1
2.0
Efecta un AND en primera consulta, con lo que el resultado de las operaciones dentro
del parntesis se introducir directamente en RLO.
Se cierra el parntesis, con lo que el RLO de las operaciones efectuadas dentro se opera
segn la instruccin que inicia el parntesis (en este caso la instruccin U). Tal y como
comentamos, al estar la instruccin de inicio al principio del programa se ejecuta como
primera consulta, con lo que el RLO pasar a valer lo que el resultado dentro del
parntesis.
En pocas palabras, si ejecutramos este programa la salida 2.0 valdra 0 a menos que E 0.0 y E
0.1 valiesen 1, con lo que pasara a valer 0.
Un programa equivalente sera (en este caso):
O
U
=
E
E
A
0.0
0.1
2.0
5.8. Y antes de O
Instruccin "O" sin operando
Si introducimos una instruccin "O" sin operando seguida de una o varias instrucciones AND se
evala en primer lugar las instrucciones AND y el resultado se combina con el RLO segn un
OR.
Esta operacin equivale a emplear "O(" con instrucciones del tipo AND dentro del parntesis.
Registros afectados: RLO, STA, OR, pila de parntesis
Ejemplo:
U
O
U
U
=
0.0
E
M
A
0.1
0.3
4.0
Versin 22/01/2002
Pg. 29 de 154
E 0.0
E 0.3
E 0.5
E 0.1
E 0.4
E 0.2
E 0.6
E 0.7
E 1.0
E 1.2
E 1.1
E 1.3
A 4.0
E 1.4
Versin 22/01/2002
Pg. 30 de 154
1.0
1.0
4.0
En este ejemplo cada vez que introduzcamos un flanco positivo en la entrada 1.0 se producir
un impulso de longitud un ciclo en la salida 4.0, tal y como se muestra en la siguiente figura:
E 1.0: 0 0 1 1 1 0 0 0 1 1 0
M 1.0: 0 0 1 1 1 0 0 0 1 1 0
A 4.0: 0 0 1 0 0 0 0 0 1 0 0
ciclo:
1 2 3 4 5 6 7 8 9 10
0 0 1 1 1 0 0 0 1 1 0
0 0 1 1 1 0 0 0 1 1 0
0 0 0 0 0 1 0 0 0 0 1
1 2 3 4 5 6 7 8 9 10
ATENCION:
Es obligatorio no emplear los operandos ocupados por FP y FN para otros fines, ya que
entonces se falsifica el RLO almacenado en ellos y por lo tanto se produce un funcionamiento
incorrecto del programa.
Versin 22/01/2002
Pg. 31 de 154
Ejemplo:
U
S
U
R
E
A
E
A
1.0
4.0
1.1
4.0
//copiamos
//si RLO=1
//copiamos
//si RLO=1
al
se
al
se
RLO el
fuerza
RLO el
fuerza
En este ejemplo (bscula S-R) tiene preferencia el reset sobre el set, ya que esta ltima
instruccin se ejecuta al despus, es decir si las entradas 1.0 y 1.1 fuesen 1 la salida 4.0 sera 0.
Versin 22/01/2002
Pg. 32 de 154
Ejercicio 1: Taladradora
Funcionamiento:
En el estado de reposo la taladradora estar arriba, pisando el final de carrera (E0.1)
Si se pulsa la marcha (E0.0) la taladradora bajar accionado por el motor de bajada (A4.0).
Cuando se active el final de carrera de abajo (E0.2), la taladradora subir de nuevo. Si en algn
momento se pulsa el interruptor de parada (E0.3), la taladradora deber subir.
E 0.1
E 0.2
Ejercicio 2: Motor
Funcionamiento:
El motor podr girar a derechas (A 4.0) o izquierdas (A 4.1) segn le demos al pulsador
correspondiente. Adems existe un pulsador de paro (E0.3), y un rel trmico normalmente
cerrado (E0.2) que se abrir cuando en el motor se produzca una sobretemperatura.
Versin 22/01/2002
Pg. 33 de 154
Marcas
Temporizadores y contadores
reas de datos
E1.0
3
//Carga el nmero entero 3 (16 bits) en el ACU1
EB0 //Carga el byte de entradas 0 en ACU1
MB20 //Carga el byte de marcas 20 en ACU1
31
3
2
5
//ACU1=3
//ACU1=2 ; ACU2=3
//ACU1=5 ; ACU2=2
se pierde
Versin 22/01/2002
Pg. 34 de 154
Instruccin "T"
Transfiere el contenido de ACU1 a una direccin de operando. La transferencia no cambia el
contenido de los acumuladores. Transferimos nicamente desde ACU1.
Ejemplo:
T
T
AB10
MW4
Los acumuladores sirven para ejecutar operaciones lgicas entre ACU1 y ACU2
(comparacin, aritmeticas, AND, OR...). El resultado siempre se almacena en ACU1,
sobreescribiendo lo que hubiese en ACU1 pero el contenido de ACU2 permanece intacto.
Ejemplo:
L
8
T
2
-I
T MW10
//ACU1=8
//ACU1=2 ; ACU2=8
//ACU2-ACU1 ACU1=6 ; ACU2=8
//Transfiero el resultado de la resta a MW10
Ejemplo:
T
L
MW10
5
Versin 22/01/2002
Pg. 35 de 154
7. Operaciones de contaje
7.1. Operaciones con contadores
Los contadores permiten distintas operaciones, que debemos emplear en su manejo:
Borrar el contaje.
Todas estas operaciones sern explicadas con profundidad en los siguientes puntos.
C#3
E 1.0
Z 1
E
Z
1.0
1
Versin 22/01/2002
Pg. 36 de 154
0.0
1
U E
ZR Z
1.0
1
C#5
E 2.0
Z 1
U E
ZR Z
1.0
1
U
=
1
0.0
Z
A
Versin 22/01/2002
Pg. 37 de 154
Ejemplos:
L Z
LC Z
1
2
Salida
Entrada
Automatizar un garaje de cinco plazas de tal forma que si ste se encuentra lleno, se encienda
una luz indicndolo y no suba la barrera. En caso contrario deber estar encendida otra luz
indicando LIBRE.
El garaje consta de 5 plazas.
Disponemos de una clula fotoelctrica y una barrera en la entrada y lo mismo en la salida.
Asignacin de variables
E0.0
E0.1
A4.0
Barrera de entrada
A4.1
Barrera de salida
A4.2
A4.3
Versin 22/01/2002
Pg. 38 de 154
8. Operaciones de temporizacin
8.1. Operaciones con temporizadores
Los temporizadores permiten distintas operaciones, que debemos emplear en su manejo:
Borrar la temporizacin.
Impulso (SI).
Todas estas operaciones sern explicadas con profundidad en los siguientes puntos.
0
1
2
3
Versin 22/01/2002
Pg. 39 de 154
Ejemplo:
L
W#16#210
L S5T#aH_bbM_ccS_ddMS
a = horas, bb= minutos, cc = segundos, dd = milisegundos
En este caso la base de tiempos se selecciona de forma automtica, tomndose la de valor ms
bajo posible. Debido a esto los valores de resolucin demasiado alta se redondean por defecto,
alcanzando el rango pero no la resolucin deseada.
Las posibles resoluciones y rangos son:
0,01 s
0,1 s
1 s
10 s
10MS a 9S_990MS
100MS a 1M_39S_900MS
1S a 16M_39S
10S a 2H_46M_30S
S5T#00H02M23S00MS
Versin 22/01/2002
Pg. 40 de 154
E 0.0
S5T#45s
T 2
T 2
A 0.1
Versin 22/01/2002
Pg. 41 de 154
E 0.2
S5T#85s
T 9
T 9
A 9.1
Versin 22/01/2002
Pg. 42 de 154
E 0.7
S5T#65s
T 4
T 4
A 8.1
Versin 22/01/2002
Pg. 43 de 154
E 1.2
S5T#32s
T 2
T 2
A 3.1
Versin 22/01/2002
Pg. 44 de 154
E 4.2
S5T#32s
T 7
T 7
A 1.1
Versin 22/01/2002
Pg. 45 de 154
Versin 22/01/2002
Pg. 46 de 154
E 0.0
S5T#2s
T 2
E 0.1
T 2
T 2
A 3.1
E 2.0
T 1
E 2.1
S5T#5s
T 1
T 1
A 4.0
Versin 22/01/2002
Pg. 47 de 154
LC T
BCD
Versin 22/01/2002
Pg. 48 de 154
A 4.0
A 4.1
A 4.2
A 5.0
A 5.1
E 0.0
Pulse verde
Versin 22/01/2002
Pg. 49 de 154
1 ciclo de scan
1 seg
1 seg
Funcionamiento: Basndose en el generador de pulsos realizar una onda cuadrada peridica de
1 seg.
Versin 22/01/2002
Pg. 50 de 154
9. Operaciones de salto
9.1. Operaciones de salto incondicional
Instrucciones: "SPA" y "SPL"
Las operaciones de salto incondicional (SPA) interrumpen el desarrollo normal del programa,
haciendo que el mismo salte a una meta determinada (operando de la operacin SPA). La meta
define el punto en que deber continuar el programa. El salto se efecta independientemente de
condiciones.
Ejemplo de salto SPA:
AQUI:
U
SPA
NOP
U
=
E 1.0
AQUI
0
E 2.0
A 3.0
La operacin Salto a meta (SPL) es un distribuidor de saltos seguido de una serie de saltos
incondicionales a metas determinadas (lista de saltos). El salto de la lista se escoge segn el
valor contenido en el ACU1, es decir si el acu1 vale 0 se escoger el primer salto incondicional
(SPA), si vale 1 se saltar al segundo salto... Si el valor se encuentra fuera de la lista se salta a la
meta especificada en SPL.
Una meta se compone de 4 caracteres como mximo. El primer carcter debe ser siempre una
letra, no importando si el resto son nmeros o letras. La meta se especifica normalmente en el
operando de la instruccin de salto, y seguida de dos puntos frente a la lnea que posee la meta
(ver ejemplos).
Registros afectados: ninguno
Estructura:
L MB100
SPL DEF
SPA CERO
SPA UNO
SPA DOS
DEF:
//cargamos
//saltamos
//se salta
//se salta
//se salta
en el ACU1 un byte
a DEF si el valor de ACU1 no est en la list
a CERO si ACU1 vale 0
a UNO si ACU1 vale 1
a UNO si ACU1 vale 2
...
...
BEA
CERO: ...
...
BEA
UNO:
...
...
BEA
DOS:
...
...
BEA
Versin 22/01/2002
Pg. 51 de 154
NORM:
UNO:
DOS:
CONT:
MB100
NORM
UNO
CONT
DOS
CONT
E 0.0
CONT
E 1.0
CONT
A 2.0
AQUI:
U
SPB
U
U
=
E 2.0
AQUI
E 1.0
E 3.0
A 0.0
Como podemos observar en el ejemplo, el resultado de la salida 0.0 depende primeramente del
valor de la entrada 2.0, ya que ella decide si se tiene en cuenta tambin la entrada 1.0 en el
resultado final.
Versin 22/01/2002
Pg. 52 de 154
AQUI:
SEGU:
U
=
E
A
3.0
0.0
A0
igual a 0
SPZ
1
o
0
0
o
1
distinto de 0
SPN
mayor que 0
SPP
menor que 0
SPM
0
o
1
0
o
0
SPPZ
0
o
0
0
o
1
SPMZ
UO (no admisible)
SPU
Versin 22/01/2002
Pg. 53 de 154
NEXT:
E 1.0
NEXT
EW 4
EW 10
E 6.0
E 6.1
M 12.0
Ejemplo 2 :
U
SPB
L
T
U
U
S
BEA
NOP
BEA
U
S
NEXT:
E 1.0
NEXT
EW 4
EW 10
E 6.0
E 6.1
M 12.0
//fin de mdulo
//estas instrucciones nunca se ejecutaran
BEB finaliza la ejecucin del mdulo actual y devuelve el control al mdulo que llam al
mdulo finalizado. Esta accin se realiza si el RLO es 1. Si no es as se continua la ejecucin
del actual mdulo, pero con el RLO a 1.
Ejemplo:
U
E
BEB
U
E
=
A
BEA
1.0
2.0
3.0
//aqu finaliza el mdulo de forma incondicional
Si el mdulo que finaliza es el OB1 se finaliza el ciclo de ejecucin del programa, volviendo a
comenzar uno nuevo.
Versin 22/01/2002
Pg. 54 de 154
9.6. Loop
Instruccin: "LOOP"
La operacin LOOP sirve para llamar varias veces un segmento del programa. Esta operacin
decrementa la palabra baja del ACU 1 en 1. Despus se comprueba el valor depositado en la
palabra baja del ACU 1. Si no es igual a 0, se ejecuta un salto a la meta indicada en la operacin
LOOP. En caso contrario, se ejecuta la siguiente operacin normalmente.
Observaciones :
L
T
MW
L
MW
LOOP
+5
10
10
PROX
Hay que tener precaucin con el valor que haya en el ACU 1, ya que si ejecutamos LOOP con
un valor de ACU 1 igual a 0 el bucle se ejecutar 65535 veces. Tampoco se recomienda
introducir valores enteros negativos en el ACU 1.
Ejercicio 1: SPL
Segn el contenido de EB0 :
Si 0 => AW4= FFFF
Si 1 => AW4=AAAA
Si 2 => AW4=5555
Si 3 => AW4=0000
Versin 22/01/2002
Pg. 55 de 154
FB40,DB41
= E1.0
= MW2
= MD20
DB20
En el ejemplo anterior se ha supuesto que los parmetros formales pertenecen a los siguientes
tipos de datos:
ON1: BOOL (binario)
ON2: WORD (palabra)
OFF1: DWORD (palabra doble)
Ejemplo de llamada a un FC con parmetros de mdulo:
CALL
INK1:
INK2:
OFF:
FC80
= M1.0
= EW2
= AW4
Versin 22/01/2002
Pg. 56 de 154
En el ejemplo anterior se ha supuesto que los parmetros formales pertenecen a los siguientes
tipos de datos:
INK1: BOOL (binario)
INK2: INT (entero)
OFF: WORD (palabra)
Es posible crear una funcin que d un valor de retorno. Si se desea crear por ejemplo una
operacin aritmtica con nmeros de coma flotante, entonces puede utilizar este valor de retorno
como salida para el resultado de la funcin. Como nombre de la variable puede introducirse
"RE_VAL" y como tipo de datos REAL. Al llamar despus esta funcin en el programa se ha de
proveer la salida RET_VAL de una direccin de palabra doble de forma que pueda acoger el
resultado de 32 bits de la operacin aritmtica.
0 a 65535
0 a 65534
El nombre del parmetro formal o nombre simblico para el caso de llamar una FC a travs de
una FC transferida como parmetro es BLOCK_FC (los parmetros de tipo BLOCK_FC no
pueden utilizarse con la operacin CC en mdulos FC).
Registros afectados: ninguno
Ejemplos:
CC FB12 //llamar a FB12 si RLO=1
UC FB12 //llamar a FB12 independientemente del RLO
Versin 22/01/2002
Pg. 57 de 154
Versin 22/01/2002
Pg. 58 de 154
Asignacin = : Escribe 0.
Ejemplo:
MCRA
U
E0.0
MCR(
U
=
E0.1
A4.0
U
S
U
R
E0.2
A4.1
E0.3
A4.1
L
T
MW20
AW10
)MCR
MCRD
U
=
//Como est fuera del rea MCR no depende del bir MCR
E1.0
A5.0
Versin 22/01/2002
Pg. 59 de 154
11.1. Binario
Representa nmeros naturales mayores o iguales que cero.
0; 01; 10; 11; 100...
Lmite 32 bits => 232 1 = 4.294.967.295
Ejemplo:
L
2#0110
Rango:
Palabra: 2#0 2#1....1 (16 unos)
Doble palabra: 2#0 2#1....1 (32 unos)
11.2. Hexadecimal
Ejemplo:
L
L
L
B#16#1A
//Cargo una constante hexadecimal de 8 bits en ACU1
W#16#FAFB
//Cargo una constante hexadecimal de 16 bits en ACU1
DW#16#1FFE_1ABC //Cargo una constante hexadecimal de 32 bits en ACU1
Rango:
Byte:
B#16#0 B#16#FF
11.3. BCD
BCD Decimal codificado en binario. Cada 4 bits representan un dgito.
Hay 2 formatos de BCD, de 3 cifras y de siete cifras.
Palabra (16 bits): BCD de 3 cifras con signo
Versin 22/01/2002
Pg. 60 de 154
Ejemplo: +310
0000 0011 0001 0000
+
2#0000_0011_0001_000
T1
LC
Z1
15
15 bits
-3
Versin 22/01/2002
Pg. 61 de 154
15 bits
31
byte
32 bits
Lmite:
N positivos: 231-1 = 2147483647 (El 0 se considera positivo)
N negativos: 231 = -21474863648
Ejemplo:
L
mantisa
Versin 22/01/2002
Pg. 62 de 154
Ejemplo:
L
4.83
Ejemplo:
L
4780000000.0
4.780000e+010
el punto es obligatorio
Versin 22/01/2002
Pg. 63 de 154
Operac
in
Comparacin efectuada
==I
El entero (16 bits) de la palabra baja del ACU2 es igual al entero (16 bits) de la palabra baja del
ACU 1.
==D
El entero doble (32 bits) del ACU2 es igual al entero doble (32 bits) del ACU1.
<>I
El entero (16 bits) de la palabra baja del ACU2 no es igual al entero (16 bits) de la palabra baja
del ACU 1.
<>D
El entero doble (32 bits) del ACU2 no es igual al entero doble (32 bits) del ACU1.
>I
El entero (16 bits) de la palabra baja del ACU2 es mayor que el entero (16 bits) de la palabra
baja del ACU 1.
>D
El entero doble (32 bits) del ACU2 es mayor que el entero doble (32 bits) del ACU1.
<I
El entero (16 bits) de la palabra baja del ACU2 es menor que el entero (16 bits) de la palabra
baja del ACU 1.
<D
El entero doble (32 bits) del ACU2 es menor que el entero doble (32 bits) del ACU1.
>=I
El entero (16 bits) de la palabra baja del ACU2 es mayor o igual al entero (16 bits) de la
palabra baja del ACU 1.
Versin 22/01/2002
Pg. 64 de 154
>=D
El entero doble (32 bits) del ACU2 es mayor o igual al entero doble (32 bits) del ACU1.
<=I
El entero (16 bits) de la palabra baja del ACU2 es menor o igual al entero (16 bits) de la
palabra baja del ACU 1.
<=D
El entero doble (32 bits) del ACU2 es menor o igual al entero doble (32 bits) del ACU1.
Estas operaciones afectan al estado de los bits A1 y A0, en funcin de la condicin que se haya
cumplido, tal y como se muestra en la tabla siguiente:
Condicin
A1
A0
ACU2 = ACU1
0
o
1
1
o
0
1
o
0
0
o
0
0
o
0
1
o
0
MW10
EW0
==I
=
A
>I
1.0
2.0
Comparacin efectuada
==R
El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es igual al nmero de coma flotante
de 32 bits IEEE-FP del ACU 1
<>R
El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 no es igual al nmero de coma
flotante de 32 bits IEEE-FP del ACU 1
Versin 22/01/2002
Pg. 65 de 154
>R
El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es mayor que el nmero de coma
flotante de 32 bits IEEE-FP del ACU 1
<R
El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es menor que el nmero de coma
flotante de 32 bits IEEE-FP del ACU 1
>=R
El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es mayor o igual que el nmero de
coma flotante de 32 bits IEEE-FP del ACU 1
<=R
El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es menor o igual que el nmero de
coma flotante de 32 bits IEEE-FP del ACU 1
A1
A0
OV
OS
==
no aplicable
<>
0
o
1
1
o
0
no aplicable
>
no aplicable
<
no aplicable
>=
1
o
0
0
o
0
no aplicable
<=
0
o
0
1
o
0
no aplicable
UO
MD24
+1.00E+00
>R
=
1.0
Versin 22/01/2002
Pg. 66 de 154
Versin 22/01/2002
Pg. 67 de 154
0,5 s
0,5 s
7
2
6
1,6
5
1
4
0,8
3
0,5
2
0,4
1
0,2
0
0,1
Ejemplo:
U M100.3
= A4.0
Versin 22/01/2002
Pg. 68 de 154
8
9
10
3
//ACU2-ACU1 ACU1=7; ACU2=10
L#2
L#100
//ACU2*ACU1 ACU1=200; ACU2=2
Versin 22/01/2002
Pg. 69 de 154
1111
1111
Resto
Palab. alta ACU1
Cociente
Palab. baja de ACU1
//Almaceno el cociente
//Almaceno el resto
La instruccin de suma +R, suma el contenido de ACU2 (32bits) con ACU1 (32bits) y el
resultado lo almacena en ACU1 (32 bits).
Ejemplo:
L
L
+R
1.0
2.4
25.0
13.4
//ACU2-ACU1 ACU1=11.6; ACU2=25.0
Versin 22/01/2002
Pg. 70 de 154
10.0
2.0
//ACU2*ACU1 ACU1=5.0; ACU2=10.0
Versin 22/01/2002
Pg. 71 de 154
Instruccin DTB : Convierte un entero doble (32 bits) de ACU1 en un BCD de 7 dgitos.
Resultado de la conversin:
Bits 0 27 N BCD
Bits 28 31 Bit de signo: + = 0000
= 1111
Instruccin DTR : Convierte un entero doble (32 bits) de ACU1 en real (32 bits). Si es
necesario se redondea el resultado. Un entero de 32 bits es ms exacto que un real.
Versin 22/01/2002
Pg. 72 de 154
Instruccin ITB : Convierte un entero (16 bits) de ACU1 en BCD de 3 dgitos. El resultado lo
guarda en la palabra baja del ACU1.
Resultado de la conversin:
Bits 0 11 N BCD
Bits 12 15 Bit de signo: + = 0000
= 1111
Instruccin ITD : Convierte un entero (16 bits) de la palabra baja de ACU1 en doble entero
(32 bits).
Observacin: No hay una instruccin que convierta de entero a real. Hay que hacer dos
conversiones consecutivas: ITD y DTR.
Instruccin RND : Redondea un nmero real (32 bits) a entero (32 bits). Primero lo convierte
y luego lo redondea al entero ms prximo. Si el primer decimal despus de la coma es de 0 a 4,
redondea a la baja; si el decimal es de 5 a 9, redondea al alza.
Ejemplos:
Instruccin RND+ y RND: RND+ redondea el resultado al nmero entero mayor o igual
que el real convertido. RND+ redondea el resultado al nmero entero menor o igual que el real
convertido.
Ejemplos:
Instruccin TRUNC : Convierte un real (32 bits) a doble entero (32 bits) y lo redondea al
entero de menor valor absoluto.
Ejemplos:
8.34 RND = 8
TRUNC = 8
8.7
RND = 9
TRUNC = 8
8.7 RND = 9
TRUNC = 8
Versin 22/01/2002
Pg. 73 de 154
A la izquierda:
SLD <n de bits> Desplaza el contenido de ACU1 n bits (0-32) a la izquierda. Los bits vacos
se rellenan con cero.
SLD Desplaza a la dcha. segn el n de el byte ms bajo de ACU2.
Versin 22/01/2002
Pg. 74 de 154
A la derecha:
SSI <n de bits> Desplaza la palabra baja (bits 0 al 15) de ACU1 n bits (0-15) a la derecha.
Los bits vacos se rellenan con el bit de signo (el bit 15) Nota: SSI 0 = NOP
SSI Desplaza a la dcha. segn el n de el byte ms bajo de ACU2.
A4.0
A4.7
A5.0
A5.7
Versin 22/01/2002
Pg. 75 de 154
17. Operaciones
de rotacin
Versin 22/01/2002
Pg. 76 de 154
Bloque
Bloques de organizacin
(OB)
Los FBs son bloques con "memoria" que puede programar el mismo
usuario.
Funciones (FC)
Bloques de datos de
instancia
(DBs de instancia)
Los DBs son reas de datos para almacenar los datos de usuario.
Adicionalmente a los datos asociados a un determinado bloque de
funcin, se pueden definir tambin datos globales a los que pueden
acceder todos los bloques.
Los OBs, FBs, SFBs, FCs y SFCs contienen partes del programa, por lo que se denominan
tambin bloques lgicos. El nmero permitido de bloques de cada tipo y su longitud admisible
dependen de la CPU.
Versin 22/01/2002
Pg. 77 de 154
CALL FC2
FC3
CALL FC3
FC2
Los mdulos de funcin, tambin llamados FC, son mdulos en los que podemos incluir parte
del programa de usuario, as obtenemos un programa mucho ms estructurado.
A estos mdulos se puede acceder desde el OB1 o cualquier otro FC o FB.
En el FC podemos almacenar variables temporales temp, pero se pierden tras el tratamiento
del FC. Por ello para memorizar los datos se suelen utilizar bloques de datos globales.
Las funciones se pueden utilizar para:
ejecutar una funcin tecnolgica (ejemplo: control individual con combinacin binaria).
Creacin de un FC : Hacer clic con el botn izquierdo del ratn en la carpeta de Bloques e
Insertar nuevo objeto... -> Funcin. Se le puede dar un nombre simblico. Para abrirlo
hacer doble clic sobre l.
Tiene una tabla de declaracin de variables estndar.
En las tabla de declaracin de variables se definen las variables locales, que pueden ser
temporales temp y estticas stat (slo FBs) y los parmetros formales de bloque, que
pueden ser de entrada in, de salida out o de entrada_salida in_out.
Versin 22/01/2002
Pg. 78 de 154
Parmetros:
in: Son valores de entrada al bloque. Pueden ser constantes, direcciones absolutas o
simblicas.
out: Son valores que devuelve el bloque al programa que lo llam despus de la ejecucin
del bloque. Pueden ser direcciones absolutas o simblicas.
Variables:
temp.: Variables o datos locales que se usan dentro del bloque y no salen fuera. Pierden su
valor cuando salimos del bloque.
stat: Variables que mantienen su valor al salir del mdulo. Los FC no permiten este tipo de
variables. Slo para bloques FB.
Parmetros formales
3. Hay que asignar a esos parmetros formales los parmetros actuales del bloque invocante.
CALL FC1
Num de motor:= MW100
Velocidad:= MW110
Potencia:= A0.1
Parmetros actuales
En el caso de los bloques FC no se puede dejar ningn parmetro actual sin definir.
Versin 22/01/2002
Pg. 79 de 154
E0.0
FC1
#valor1
#valor2
#resultado
Guardamos el OB1.
Curso Step 7 Mabe de Mexico S de RL de CV
Versin 22/01/2002
Pg. 80 de 154
Para terminar hay que transferir al autmata los dos bloques, OB1 y FC1.
Versin 22/01/2002
Pg. 81 de 154
Bloques de datos globales: A sus datos pueden acceder todos los bloques.
OB1
FC1
DB
Global
Los DB Globales sirven para depositar datos con los que trabaja el programa de usuario. Estos
datos los puede utilizar cualquier tipo de bloque (OB, FC y FB) para leer datos o escribir datos
que se conservan an despus de salir del DB.
Un DB no tiene rea de instrucciones S7, sino que es una tabla de datos que forma una
estructura:
Creacin de un DB : Hacer clic con el botn izquierdo del ratn en la carpeta de Bloques e
Insertar nuevo objeto... -> Bloque de datos. Se le puede dar un nombre simblico. Para
abrirlo hacer doble clic sobre l.
1. Seleccione el bloque de datos global, es decir, un bloque no asociado a ningn UDT o
FB.
2. Active la vista "Declaracin" (en men Ver) del bloque de datos en caso de que sta
no se visualice todava.
3. Defina la estructura rellenando la tabla visualizada conforme a los datos que se indican
a continuacin:
Versin 22/01/2002
Pg. 82 de 154
Columna
Explicacin
Direccin
Tipo
Valor inic.
Comentario
DB1
Datos
//Abre el DB1
//Abre el bloque de datos cuyo simblico es Datos
Una vez abierto el DB el acceso a los datos se hace mediante carga (L) y transferencia (T)
Se puede consultar un bit de la siguiente forma : U DBXByte.Bit
De bloque de datos
significa bit
Ejemplo:
U
DBX3.1
DBB1
L
T
5
DBW4
//Cargo 5 en ACU1
//y lo transfiero a la palabra 4 del DB abierto
L
T
L#3
DBD2
Versin 22/01/2002
Pg. 83 de 154
No existe ninguna instruccin para cerrar un DB, slo se cierra abriendo otro DB.
Ejemplo:
AUF
L
AUF
T
DB5
DBW8
DB7
DBW6
//Abro DB5
//Carga en ACU1 la palabra 8 del DB5
//Abro DB5
//Transfiero el contenido de ACU1 a la palabra 6 del DB7
DB1.DBX3.0
DB1.DBB7
DB2.DBW4
DB1.DBD4
Datos.Dato
//Consulto
//Carga en
//Carga la
//Cargo la
//Cargo la
2. El siguiente paso es declarar los datos. Para ello vamos al men Ver y marcamos
Declaracin. Definimos la estructura rellenando la tabla:
El valor inicial es valor predeterminado del tipo de variable que el programa usar si no hemos
definido nosotros ningn valor actual.
Versin 22/01/2002
Pg. 84 de 154
Para definir los valores actuales vamos a men Ver y marcamos Datos. Los valores
actuales son en realidad los que estn almacenados en el DB y que podemos leer mediante la
instruccin L de carga y escribir mediante la instruccin T de transferencia.
A la variable valor1 le damos valor actual 2. Si a la variable valor2 no le damos valor actual
alguno, al guardar el DB el valor inicial se transferir al actual, o sea, 3.
Guardamos el DB.
Datos.valor2
Datos.valor1
Datos.resultado
WORD: W#16#AF
Permite introducirlo de la forma 2#1001..., pero lo traduce a W#16#..
DWORD: DW#16#FFFFAF2D
Permite introducirlo de la forma 2#1001..., pero lo traduce a W#16#..
Versin 22/01/2002
Pg. 85 de 154
CHAR: Formato: C
Slo un carcter que ocupa 1 byte
Datos compuestos:
DATE_AND_TIME: DT#00-11-21-23:59:59.999
ARRAY: Matrices
STRUCT: Es una estructura dentro del DB. Sirve para agrupar conjuntos de datos de
distinto tipo, simples o complejos. Empieza en STRUCT y acaba en END_STRUCT. Se
pueden anidar hasta 8 subestructuras.
Ejemplo:
Datos.Ficha.Nombre
Datos.Ficha.telefono.fijo
DB5.DB8.DW0
//accede a Datos.Ficha.telefono.fijo
Versin 22/01/2002
Pg. 86 de 154
DB1
CALL FB1,DB1
Creacin de un FB :
1. Hacer clic con el botn izquierdo del ratn en la carpeta de Bloques e Insertar nuevo
objeto... -> Bloque de funcin. Se le puede dar un nombre simblico.
Rellenar su tabla de declaracin de variables (vase captulo 16.3)
2. Crear un bloque de datos DB y asignarlo como bloque de datos de instancia a ese FB:
Al asociar el DB a ese FB, el DB ser una tabla de variables copia exacta de la tabla de
declaracin de variables del FB.
Versin 22/01/2002
Pg. 87 de 154
18.11. Llamada al FB
Instruccin: "CALL FBn ,DBn
CALL FBn , DBn llama al FB independientemente del RLO.
Hay que asignarle un bloque de datos de instancia.
Una vez procesado el FB invocado, el programa del bloque invocante seguir siendo procesado.
Ejemplo:
CALL FB1,DB1
Parmetros formales
6. Hay que asignar a esos parmetros formales los parmetros actuales del bloque invocante.
CALL FB1,DB1
Num de motor:= MW100
Velocidad:= MW110
Potencia:= A0.1
Parmetros actuales
Observaciones:
Si se llama varias veces al FB, slo hay que introducir los parmetros actuales que han
cambiado respecto a la ltima llamada, ya que estos se han guardado en el DB de instancia
una vez procesado el FB.
Versin 22/01/2002
Pg. 88 de 154
Un mismo DB puede estar asociado a varios DBs, a estos DBs se les llama instancias, y cada
una de esas instancias contiene distintos datos; dependiendo de cmo se llame al FB ste
utilizar un DB u otro.
Por ejemplo, si se asignan varios bloques de datos de instancia aun bloque de funcin FB que
controle un motor, se puede utilizar el mismo FB para controlar varios motores.
OB1
FB1
DB1
DB2
DB3
Ejemplo: Dependiendo de si es motor 1 (E0.0) o motor 2 (E0.1) activamos ese motor (con E0.2)
un tiempo de 2 seg. o 5 seg. respectivamente.
Primero creamos un FB1. Y en su tabla de declaracin de variables declaro la variable
tiempocomo parmetro tipo in o stat:
E0.2
#tiempo
T0
T0
A4.0
Ahora es el momento de crear el DB asociado al FB: despus de definir las variables en la tabla
de declaracin de variables del FB. Creamos pues un DB1 asociado al FB1. Al abrir el DB1
vemos que contiene la variable tiempo, en la cual introducimos el valor actual de tiempo para
el motor 1 (men Ver Datos):
Versin 22/01/2002
Pg. 89 de 154
U
SPB
U
SPB
BEA
E0.0
mot1
E0.1
mot2
Versin 22/01/2002
Pg. 90 de 154
En el caso anterior si tuviramos 100 motores, habra que hacer 100 instancias = 100 DBs de
instancia. Esto consume mucha memoria en el autmata.
A un FB se pueden transferir conjuntamente en un DB de instancia los datos de instancia para
diferentes motores. A tal efecto, la llamada de los controles de motores se ha de efectuar en otro
FB y en el rea de declaracin del FB invocante se deben declarar las variables estticas con el
tipo de datos de un FB para las diferentes instancias.
Utilizando un DB de instancia para varias instancias de un FB se ahorra capacidad de memoria
y optimiza el uso de los bloques de datos.
OB1
FB1
CALL motor1
CALL motor2
CALL motor3
.
.
.
CALL motor100
FB2
Versin 22/01/2002
DB1
Pg. 91 de 154
El programa consiste en un mezclador de repostera . Hay una vlvula para introducir leche
(A4.0) y otra para introducir harina (A4.1); la mezcla se agita mediante una paleta accionada
por un motor (A4.2). Dependiendo de los tiempos de introduccin de los ingredientes y de
funcionamiento de la paleta, podremos hacer tres diferentes productos segn la tabla siguiente:
Leche A4.0
Harina A4.1
Agitador A4.2
Magdalenas
5 seg
2 seg
4 seg
Bizcochos
2 seg
3 seg
5 seg
Rosquillas
3 seg
4 seg
2 seg
A 4.0
A 4.1
Harina
Leche
1) Usando FCs
2) Usando un DB global
3) Usando FBs con DBs de instancia
4) Usando DB de multiinstancia
Versin 22/01/2002
Pg. 92 de 154
Seal analgica
Seal digital
E0.0
5V
300
100
0V
El autmata incorpora un convertidor analgico digital (A/D), en cada ciclo muestrea un valor y
despus lo traduce a bit. Cuantos ms bits, ms definicin y precisin.
20 mA (1000 l)
4 mA (0 l)
t
Estos valores van a ser un nmero entero, con la siguiente resolucin mxima:
216 = 65536 unipolar
-32767 a +32767 bipolar
Versin 22/01/2002
Pg. 93 de 154
Para un mdulo de entradas de 12 bits la resolucin ser: 212 = 4096. Pero nosotros veremos X
cantidad de resolucin, dependiendo de la tarjeta analgica.
Tarjeta 8 bits= 28 =256 de resolucin x 128 =32768 cantidad de resolucin
Tarjeta 12 bits= 212 =4096 de resolucin x 8 =32768 cantidad de resolucin
La resolucin en la prctica es 27648.
As, y en el ejemplo, con 0 litros obtendr el entero 0, con 500 litros obtendr 13824, y con
1000 litros obtendr 27648.
Despus escala esos valores y los convierte en un nmero real.
1000.0
00
Medidor de nivel
Programa
Autmata
Versin 22/01/2002
Pg. 94 de 154
ENTRADAS EXTERNAS:
Byte de entrada de la periferia
Palabra de entrada de la periferia
Palabra doble de entrada de la periferia
PEB 0 a 65535
PEW 0 a 65534
PED 0 a 65532
SALIDAS EXTERNAS:
Byte de salida de la periferia
Palabra de salida de la periferia
Palabra doble de salida de la periferia
PAB 0 a 65535
PAW 0 a 65534
PAD 0 a 65532
Si p.ej. el primer mdulo analgico est enchufado en el slot 4, tiene la direccin inicial
prefijada 256. La direccin inicial de cada mdulo analgico aadido se incrementa en 16 por
cada slot.
Un mdulo de entrada/salida analgica tiene las mismas direcciones iniciales para los canales de
entrada y salida analgicos.
Ejemplo para mdulos analgicos:
Versin 22/01/2002
Pg. 95 de 154
Formula:
OUT =
K1 K 2
Bipolar: Se supone que el valor entero de entrada deber estar entre K1= 27648 y
K2= 27648.
Por ejemplo, cuntos litros se corresponden con el valor interno de tarjeta de 10000?
HI_LIM = 1000 l
K2 = 27648
OUT = Litros
IN = 10000
LO_LIM = 0 l
K1 = 0
Litros =
Observaciones:
Los nmeros reales (32 bits) se introducen con el formato correspondiente. Ej.: 10.0
La OUT al ser un nmero real se deber guardar como doble palabra. Ej.: MD100
Versin 22/01/2002
Pg. 96 de 154
La funcin toma en la entrada IN un valor real que est ajustado a escala entre un rango
comprendido entre un lmite inferior y un lmite superior (LO_LIM y HI_LIM), y lo convierte a
un valor entero. El resultado se escribe en la salida (OUT).
Formula:
OUT =
Versin 22/01/2002
Pg. 97 de 154
Parmetros:
Habilitar :
Versin 22/01/2002
Pg. 98 de 154
Margen : Haga clic en este campo para hacerse mostrar los mrgenes de medida disponibles
para el respectivo tipo de medicin y elija uno de ellos.
Cuando la seal del detector de humo, para nosotros la entrada del potencimetro del entrenador
(rango 0 10V), sea mayor de 5V, activar la seal de alarma A4.0.
10V
27
Simular una salida analgica en diente de sierra, pero utilizando instrucciones digitales (no
entradas analgicas).
10V
t
4 seg.
Versin 22/01/2002
Pg. 99 de 154
OB
Alarmas horarias
OB 10 a OB 17
Alarmas de retardo
OB 20 a OB 23
Alarmas cclicas
OB 30 a OB 38
Alarmas de proceso
OB 40 a OB 47
Alarmas de comunicacin
OB 50 y OB 51
OB 80 a OB 87 (siguiente tabla)
OB 121 y OB 122
El tratamiento de las alarmas de
error asncrono se enmascara o
desenmascara con las SFC 36 a 38.
La siguiente tabla contiene los eventos de error asncrono, a los cuales se puede reaccionar
llamando el OB correspondiente en el programa de usuario.
Eventos de error asncrono
OB
OB 80
OB 81
OB 82
OB 83
OB 84
Versin 22/01/2002
OB 85
OB 86
OB 87
1
35
10
40
100
ciclo libre
control por tiempo
control en tiempo real
interrupcin (alarma)
recomienzo
En estos casos el OB100 slo se ejecutar una vez, un ciclo, y despus se ejecuta el OB1
cclicamente.
El OB100 nos puede ser til para inicializar valores, por ejemplo inicializar un contador:
OB100
L C#5
S Z0
Versin 22/01/2002
Periodicidad :
Una vez: Se ejecuta una vez, en el momento especificado.
Cada minuto: Se ejecuta en intervalos de 1 minuto, desde el momento especificado.
Cada hora : Se ejecuta en intervalos de 1 hora, desde el momento especificado.
Cada da : Se ejecuta 1 vez al da, desde el momento especificado.
Cada mes
Cada semana
Cada ao
Si ponemos una fecha en pasado con respecto al reloj interno de la CPU y de periodicidad
una sola vez, el OB de alarma horaria se ejecutara 1 sola vez tras un rearranque completo
(caliente) o un rearranque en fro.
Para ajustar el reloj de la CPU:
Administrador Simatic Sistema de destino Ajustar la hora...
Versin 22/01/2002
Parmetros de entrada:
OB_NR (INT) : Nmero del OB que se arrancar al transcurrir el tiempo de retardo
(OB20OB23)
DTIME (TIME) : Valor del retardo (1 a 60000 ms) Ej.: T #200MS
SIGN (WORD) : Signo que, al llamar el OB de alarma de retardo, aparece en la
informacin de eventos de arranque del OB.
Parmetros de salida:
RET_VAL (INT) : Cdigo de error, si ocurre un error al procesar la funcin. Cdigos:
0000 No ha ocurrido ningn error.
8090 Parmetro OB_NR errneo.
8091 Parmetro DTIME errneo.
20.5. Ms OBs
Versin 22/01/2002
T[MW2]
En este ejemplo la instruccin es una carga en ACU1 del valor del temporizador cuyo nmero
est contenido en MW2.
Segn el identificador del operando, la operacin evala los datos depositados en la direccin
como puntero en formato palabra o doble palabra.
Puntero en formato palabra, indica el nmero en formato decimal de:
Temporizadores (T)
Contadores (Z)
L
T
L
5
MW2
T[MW2]
Ej.:
//Carga 5 en ACU1
//Transfiero 5 a MW2
//Carga el valor actual del temporizador T5 en ACU1
Bit
Byte
Palabra
Doble palabra
Versin 22/01/2002
P#Byte.Bit
Ej.:
L
T
U
=
P#4.1
MD2
E[MD2]
A[MD2]
Para direccionar byte, palabra y doble palabra el bit de puntero siempre debe ser 0.
Ej.:
L
T
L
P#4.0
MD2
EB[MD2]
Observaciones:
1
MW10
P#4.0
MD2
DB[MW10]
DBD[MD2]
//Cargo 1 en ACU1
//Transfiero 1 a MW10
//Cargo el puntero en ACU1
//Transfiero el puntero a MD2
//Abro el DB1
//En ACU1 cargo DBD4 (La doble palabra 4 del DB)
P#124.2
P#0.7
//Cargo puntero
//Cargo puntero
//Los sumo: 124.2 + 0.7 = P#125.1
L
L
+D
P#124.2
3
//Cargo puntero
//Sumo 3 bits
//Resultado: P#124.5
Ej.:
Versin 22/01/2002
A[AR1,P#1.1]
(*)
(**)
Con la funcin carga (L) que direcciona bytes palabras y doble palabras: E, A, M, L, D y
PE
Con la funcin transferencia (L) que direcciona bytes palabras y doble palabras: E, A,
M, L, DB, DI y PA
(**) Puntero de doble palabra, es el offset (desplazamiento) que se suma al contenido del
registro de direcciones donde previamente debe estar cargado otro puntero en formato
doble palabra (intruccin LAR1). La suma de los dos punteros es byte+byte y bit+bit.
Ej.:
L P#8.7
LAR1
U E[AR1,P#0.0]
=
A[AR1,P#1.1]
Para acceder a un byte, palabra o doble palabra el n de bit del puntero debe ser cero, ej.:
L P#4.0
LAR1
L EB[AR1,P#10.0] //Cargo en ACU1 el byte de entradas EB14.0
Versin 22/01/2002
Es similar al direccionamiento indirecto por registro intrarea, pero ahora el rea de memoria
del operando va incluida en el puntero, por ejemplo:
= [AR1,P#E8.7]
rea puntero interrea
Ej.:
L P#E8.7
LAR1
L P#A8.7
LAR2
U [AR1,P#0.0]
= [AR2,P#1.1]
Para acceder a un byte, palabra o doble palabra, el n de bit de puntero debe ser 0:
L P#MB0
LAR1
L B[AR1,P#10.0]
Otro ejemplo:
L P#MD1
LAR2
T D[AR2,P#53.0]
+AR1 P#Byte.Bit me suma el puntero P#Byte.Bit al puntero contenido en AR1, por ejemplo:
L P#4.1
LAR1
+AR1 P#5.0
U E0.0
= A[AR1,P#0.0]
Versin 22/01/2002
Se supone que nos van llegando datos mediante comunicacin con otro autmata, y se van
almacenando desde la palabra marca MW0, MW2, MW4... hasta la MW10. Crear una funcin
FC1 la cual se encargue de pasar esos datos al bloque de datos DB1 (mediante flanco positivo
de E0.0) donde quedarn almacenados en DBW0...DBW10.
Versin 22/01/2002
lm. superior
Ejemplo:
valor inicial
Versin 22/01/2002
Observaciones:
Las matrices se pueden usar como parmetros. Si es as, se debe transferir como array
completo y no como elementos individuales
Ej.: Declaro en el OB1 una variable temporal tipo Array, y en el FC1 un parmetro de
entrada in tipo Array y de las mismas dimensiones.
OB1:
FC1:
CALL FC1
Datos_temp:=#Datos
Versin 22/01/2002
Marcas
Las reas de la periferia (PE y PA) y los datos locales no se pueden utilizar para la
comunicacin mediante datos globales.
El intercambio de datos globales se realiza de la siguiente forma:
No se acusa recibo de los datos globales. El emisor no recibe informacin alguna acerca de si
hay un receptor que ha recibido los datos globales enviados y, en caso de haberlo, cul es.
Versin 22/01/2002
1. Establecer la direccin MPI para la PG (Ajustar interface PG/PC) y la CPU (En HWConfig
doble clic sobre la CPU Pestaa General Propiedades del Interface).
3. Con el programa NetPro configuramos la red MPI. Para acceder al NetPro: Men
Herramientas --> Configurar red, o bien haciendo clic en el icono
Si todava no hemos configurado la red MPI lo podemos hacer en el NetPro. Haciendo doble
clic sobre el cuadrado rojo, que representa el puerto MPI, o tambin simplemente haciendo clic
sobre ese puerto y arrastrando hasta encontrar a la lnea roja que representa la red MPI,
conectaremos la CPU a la red MPI. Adems nos aparecer una ventana para configurar el
interface MPI para esa CPU. Es importante asignarle a cada CPU una direccin MPI distinta
dentro de la red.
4. Guardar y compilar y, pinchando en cada equipo, cargar esta configuracin en las dos
CPUs con el icono: :
5. Ahora habr que configurar la Tabla de Datos Globales para el intercambio de datos. A la
tabla podemos acceder de dos maneras:
Versin 22/01/2002
Insertamos los equipos de nuestra red por columnas. Seleccionamos la primera columna, y con
el botn derecho del ratn --> CPU..., y en la ventana siguiente escogemos la CPU de un
equipo.
Despus rellenamos los datos globales lnea a lnea. Un dato que se emite por un equipo se
deposita en un rea de memoria de otro equipo. El dato que se emite se identifica por el smbolo
> delante de l. El nmero de datos que se envan se indica con el smbolo :.
En este ejemplo el equipo 1 transfiere el estado de su entrada E0.0 a la salida A4.0 del equipo 2;
el equipo 1 transfiere las 5 primeras palabras de su DB1 a 5 palabras del DB2 (empezando por
la palabra 10) del equipo 2; el equipo 2 transfiere el byte 200 y 201 al byte 200 y 201 del equipo
1.
Observacin: Para cambiar los datos de una casilla utilizar la tecla F2.
Despus de rellenar la tabla se hace una primera compilacin (men Tabla GD -->
Compilar, o icono
).
Versin 22/01/2002
Lnea de estado (GSD): Se puede definir para cada paquete de GD un palabra doble de
estado para cada CPU.
Lnea de estado global (GST): Se puede definir para cada paquete de GD un palabra
doble de estado para cada CPU. Es una combinacin OR de todas las lneas de estado.
Estas lneas se pueden ver despus de la primera compilacin mediante el men Ver -->
Estado GD.
Tambin podemos insertar la Lnea de Factor de Ciclo (SR): Indica despus de cuantos ciclos
la CPU debe actualizar los datos globales. Para ver/modificar los factores de ciclo predefinidos:
Men Ver --> Factores de ciclo. Factores de ciclo validos: 0;1-255. Hay que tener en cuenta
que factores de ciclo demasiado bajos sobrecargan la CPU.
Versin 22/01/2002
En el ejemplo el Equipo 1 emite cada 8 ciclos (al final de ciclo) y recibe cada 3 ciclos (al
principio de ciclo).
Para terminar hay que hacer una segunda compilacin y cargar la tabla GD en cada CPU
mediante el icono correspondiente o el men Sistema de destino --> Cargar en mdulo....
Resumen :
Abrir tabla GD
Rellenar tabla GD
Cargar la tabla GD
Versin 22/01/2002
Se le da un nombre a la fuente.
4. En la ventana que se abre, seleccionar con los bloques con los que quiere generarse la
fuente:
Versin 22/01/2002
Versin 22/01/2002
Se pueden observar/forzar:
Entradas
Marcas
Salidas
Temporizadores
Periferia
Contadores
Contenido de bloques
Pasos:
1) Hay que elaborar una tabla de las variables cuyos valores se quiere visualizar/forzar.
2) Hay que definir el punto de disparo y la condicin de disparo para definir cuando y con
qu frecuencia se debe observar/forzar la variable.
Versin 22/01/2002
Electrobomba (A4.0)
E0.0
ON
A5.0
A5.1
Servicio
dispuesto
Salt
trmico
OFF
Servicio
ON/OFF
Sensor de mn.
(E0.2)
Versin 22/01/2002
Disear un automatismo para el llenado de botellas hasta un cierto nivel, de acuerdo con el
siguiente programa de trabajo:
Cuando la botella pese lo deseado, el sensor S pasar a 1, mandando una seal de paro a
la electrovlvula.
Asignacin de variables
Electrovlvula (E)
Fotoclula (F)
Marcha (m)
Paro (P)
Sensor (S)
Versin 22/01/2002
Fotoclula
Sensor
botellas
llenas
Marcha
Paro
Manual /automtico
Acuse de recibo
Adelante /atrs
Sensor de
peso
Motor cinta 1
Disear un automatismo para el llenado de botellas hasta un cierto nivel, de acuerdo con el siguiente
programa de trabajo:
Al pulsar sobre E0.0 (marcha) el motor de la cinta transportadora arrancar y funcionar hacia
delante.
Cuando la fotoclula E1.0 detecte una botella, el motor se parar y se activar la electrovlvula
A4.2 para el llenado de la botella.
Cuando la botella pese lo deseado, el sensor de peso E1.1 mandar una seal de paro a la
electrovlvula.
Pasados 2 seg. el motor se pondr de nuevo en marcha.
Las botellas que se llenen van pasando a la cinta transportadora 2 (A4.3) la cual funcionar
durante 4 seg.
Cada vez que se contabilicen 5 botellas, el proceso deber detenerse, y el operario deber pulsar
el botn de acuse de recibo E0.3 para que el proceso pueda continuar.
La cinta podr pararse en cualquier momento mediante un pulsador de paro E0.1, y rearrancarlo,
si se desea, a continuacin mediante el pulsador de marcha.
Funcionamiento similar al automtico, pero el operario tendr que mandar la cinta transportadora
1 mediante los botones de adelante y atrs.
Adems, y con el fin de evitar atascos en la lnea, mediante los dos sensores de botellas vacas y llenas se
ha de comprobar que las botellas que salen se corresponden con las que han entrado. Si se detectase un
atasco, activar una luz de fallo, que se detenga el proceso, y para reiniciar el ciclo habr que pulsar antes
el botn de acuse de recibo.
Asignacin de variables
Marcha = E0.0
Paro = E0.1
Electrovlvula = A4.2
Cinta 2 = A4.3
Fotoclula = E1.0
Versin 22/01/2002
E 0.4 Pulsador de
emergencia
E 0.2
Fotoclula
E0.1
E0.5
A4.1
Servicio
ON
Servicio
OFF
Rearme
Servicio
dispuesto
A 4.0 Motor
Versin 22/01/2002
E 0.0
E 0.1
E 0.2
A 5.0
A 4.0
Contenedor cintas
grandes (7 mx.)
A 4.1
A 5.1
Cinta para cajas pequeas (4 seg.)
Contenedor cintas
pequeas (5 mx.)
Si la caja es grande se activaran los 2 sensores a la vez, por lo que la caja se desplazara
por la cinta transportadora A5.0 que funcionara durante 5 seg.
Si la caja es pequea nunca se activaran los dos sensores a la vez, y pasara a la cinta
para cajas pequeas A5.1 que funcionara 4 seg.
Una vez que la caja salga de la cinta intermedia A4.1 podremos procesar otra caja activando
A4.0.
Las cajas van llenando dos contenedores. Como opcin, se podr poner dos contadores que
cuenten las cajas grandes y pequeas, y que cuando lleguen a 7 cajas grandes y 5 pequeas, se
detenga el proceso hasta que el operario sustituya los contenedores por otros vacos y le d a un
pulsador de acuse de recibo.
Versin 22/01/2002
Malboro
Fortuna
Ducados
LM
2
Inserte
monedas
Funciona
Fin de existencias
Interruptor de
ON/OFF
Malboro
3,5
Ducados
LM
2,8
La introduccin de las monedas la simulamos con pulsos de las siguientes entradas del
autmata:
E 0.0
2 Euros
E 0.1
1 Euro
E 0.2
50 ctms.
Versin 22/01/2002
25.7. Gasolinera
Funciona
Sin plomo
Sper
Gasoil
Sin plomo Sper
15 Euros
Pulsador manguera
Gasoil
17,5 l
6 euros
3 euros
Anular
1,2 euros
Gasoil
0,88 euros
Cuando usemos la manguera, que simularemos como pulsador, nos saldrn X litros de gasolina
a razn de 1 litro por segundo (la salida de gasolina la simulamos temporizando una salida del
autmata).
Botn 6 euros
A4.0
Botn 3 euros
A5.0
Anular
A5.1
A5.2
Pulsador sper
Pulsador gasoil
E0.5
Versin 22/01/2002
E0.0
E0.1
E0.2
E0.3
E0.4
E0.5
E0.6
E1.0
E1.1
E1.2
E0.7
U(
O
O
)
E1.3
E1.4
A4.0
Versin 22/01/2002
//Bajada de taladradora:
U(
U
U
O
)
UN
UN
=
E 0.0
E 0.1
A 4.0
//(Si marcha y
//final de carrera arriba pisado
//O el motor ya est bajando)
E 0.2
E 0.3
A 4.0
//Subida de taladradora:
U(
O
O
O
)
UN
=
E 0.2
E 0.3
A 4.1
E 0.1
A 4.1
Diagrama de contactos :
E 0.0
E 0.1
E 0.2 E 0.3
A 4.0
A 4.0
E 0.2
E 0.1
A 4.1
E 0.3
A 4.1
Versin 22/01/2002
Programa AWL:
//Giro derechas:
U
UN
U
S
R
E
E
E
A
A
0.0
0.2
0.3
4.0
4.1
//Giro izquierdas:
U
UN
U
S
R
E
E
E
A
A
0.1
0.2
0.3
4.1
4.0
E
E
A
A
0.2
0.3
4.0
4.1
Programa KOP:
E 0.0
E 0.2
E 0.3
A 4.0
S
A 4.1
R
E 0.1
E 0.2
E 0.3
A 4.1
S
A 4.0
R
E 0.2
A 4.0
R
E 0.3
A 4.1
R
Versin 22/01/2002
UN
UN
=
A 4.0
A 4.1
A 4.2
U
U
L
SV
E 0.0
A 4.2
S5T#3S
T0
//Si pulso
//y est en verde
//temporizo 3 seg.
U
=
U
FN
L
SV
T0
A 4.1
A 4.1
M 100.1
S5T#6S
T1
U
=
T1
A 4.0
U
=
A 4.0
A 5.1
UN
=
A 4.1
A 5.0
Versin 22/01/2002
UN
UN
=
A 4.0
A 4.1
A 4.2
U
U
S
E 0.0
A 4.2
A 4.1
//Si pulso
//y est en verde
//activo amarillo
U
L
SE
A 4.1
S5T#3S
T0
U
R
S
T0
//cuando se cumplan los 3 seg de T0
A 4.1 //apago amarillo
A 4.0 //enciendo rojo
U
L
SE
A 4.0
S5T#6S
T1
U
R
T1
A 4.0
U
=
A 4.0
A 5.1
UN
=
A 4.1
A 5.0
Versin 22/01/2002
Generador de pulsos:
UN
L
SE
U
=
=
M0.0
S5T#1s
T1
T1
M0.0
A4.0
UN
L
SE
U
=
UN
BEB
UN
=
M0.0
S5T#1s
T1
T1
M0.0
M0.0
A4.0
A4.0
Versin 22/01/2002
U E 0.1
ZR Z1
UN Z1
= A 4.0
U
=
Z1
A 4.1
L +5
L Z1
<=I
= A 4.2
L +9
>=I
= A 4.3
L Z1
L 10
>=I
= A 4.4
Versin 22/01/2002
1
MD100
7
//Inicializo
//y lo guardo
//Cargo para el primer bucle
FACT: T
MW104
//Guardo
MD100
MD100
MW104
FACT
7
MD100
6
//Inicializo
//y lo guardo
//Cargo para el primer bucle
MW104
MD100
//Guardo el valor del contador del bucle (=6 para el primer bucle)
//Cargo el valor de la multiplicacin (=7 en el primer bucle)
//Multiplico (en el primer bucle = 7 de ACU1 x 6 de ACU2)
//Guardo el valor de la multiplicacin
//Cargo el valor de contador del bucle en ACU1
//Decremento en 1 en ACU1 y salto a meta FACT si <>0
L
*I
T
L
LOOP
2)
L
T
L
FACT: T
L
*I
T
L
LOOP
MD100
MW104
FACT
Versin 22/01/2002
U
FP
SPB
U
FP
SPB
U
FP
SPB
BEA
E0.5
M10.0
CARG
E0.0
M10.1
MUL
E0.1
M10.2
DIV
CARG: L
T
BEA
EB1
MW100
MUL: L
L
<=I
SPB
L
*I
T
BEA
255
MW100
DIV: L
L
>=I
SPB
L
/I
T
BEA
1
MW100
fin:
//Salto a carga
//Salto a multiplicacin
//Salto a divisin
//Fin de mdulo
//Cargo el valor en una palab. de marca donde ir
guardando el resultado
fin
2
MW100
fin
2
MW100
BEA
Versin 22/01/2002
OB 100
L
T
1
AB5
OB1
UN
L
SE
U
=
M30.0
S5T#250MS
T0
T0
M30.0
U
R
U
S
A5.0
M20.0
A4.7
M20.0
U
U
SPBN
L
SRW
T
BEA
M20.0
M30.0
IZQ
AW4
1
AW4
IZQ: UN
U
SPBN
L
SLW
T
M20.0
M30.0
FIN
AW4
1
AW4
FIN: BE
Versin 22/01/2002
Programa:
A4.1
A4.0
E0.0
A4.1
E0.1
E0.2 //Si se activan los dos sensores
M0.0 //Es que es una caja grande, lo guardo en una marca
U
FN
=
M0.2
M0.0
S5T#5S
T1
T1
A5.0
U
UN
L
SV
U
=
M0.2
M0.0
S5T#4S
T2
T2
A5.1
U
R
R
M0.2
A4.1
M0.0
Versin 22/01/2002
CALL "SCALE"
IN
:=PEW128
HI_LIM :=10.0
LO_LIM :=0.0
BIPOLAR:=FALSE
RET_VAL:=MW100
OUT
:=MD102
L
L
>=R
=
MD102
5.0
L
T
PEW128
PAW128
A124.0
U
ZV
E124.0
Z0
L
ITD
DTR
T
Z0
L
L
==I
R
Z0
28
MD100
Z0
CALL "UNSCALE"
IN
:=MD100
HI_LIM :=27.0
LO_LIM :=0.0
BIPOLAR:=FALSE
RET_VAL:=MW104
OUT
:=PAW128
UN
L
SE
T0
S5T#4S
T0
L
ITD
DTR
T
T0
MD100
Versin 22/01/2002
CALL "UNSCALE"
IN
:=MD100
HI_LIM :=40.0
LO_LIM :=0.0
BIPOLAR:=FALSE
RET_VAL:=MW103
OUT
:=PAW128
Versin 22/01/2002
1) Usando FCs
OB1
UC
U
ZV
L
L
==I
CC
Z0
0
L
L
==I
CC
Z0
1
L
L
==I
CC
Z0
2
L
L
>=I
R
Z0
3
FC1
FC2
FC3
Z0
FC1
FC2
FC3
L
T
S5T#5S
MW10
L
T
S5T#2S
MW10
L
T
S5T#3S
MW10
L
T
S5T#2S
MW12
L
T
S5T#3S
MW12
L
T
S5T#4S
MW12
L
T
S5T#4S
MW14
L
T
S5T#5S
MW14
L
T
S5T#2S
MW14
FC4
U
L
SV
E0.1
MW10
T1
L
SV
MW12
T2
Versin 22/01/2002
L
SV
MW14
T3
U
=
T1
A4.0
U
=
T2
A4.1
U
=
T3
A4.2
Versin 22/01/2002
2) Usando un DB Global
OB1
UC
FC4
U
ZV
E4.0
Z0
L
L
==I
CC
Z0
0
L
L
==I
CC
Z0
1
L
L
==I
CC
Z0
2
L
L 3
>=I
R
Z0
FC1
FC2
FC3
Z0
FC1
L
T
"Tiempos".Magdalenas.Leche // L
MW10
DB1.DBW
L
T
"Tiempos".Magdalenas.Harina
MW12
// L
DB1.DBW
L
T
"Tiempos".Magdalenas.Agitador
MW14
// L
DB1.DBW
FC2
L
T
"Tiempos".Bizcochos.Leche // L
MW10
DB1.DBW
L
T
"Tiempos".Bizcochos.Harina // L
MW12
DB1.DBW
L
T
"Tiempos".Bizcochos.Agitador
MW14
Versin 22/01/2002
// L
DB1.DBW
10
FC3
L
T
"Tiempos".Rosquillas.Leche // L
MW10
DB1.DBW
12
L
T
"Tiempos".Rosquillas.Harina
MW12
// L
DB1.DBW
14
L
T
"Tiempos".Rosquillas.Agitador
MW14
// L
DB1.DBW
16
FC4
U
L
SV
E124.1
MW10
T1
L
SV
MW12
T2
L
SV
MW14
T3
U
=
T1
A4.0
U
=
T2
A4.1
U
=
T3
A4.2
Versin 22/01/2002
STRUCT: Tipo de datos compuestos cuyos elementos pueden ser simples o compuestos. Se
pueden anidar hasta 8 niveles. El tipo de datos STRUCT debe comprender uno o varios
componentes que se encuentren entre STRUCT y END_STRUCT. Una estructura dentro de una
estructura es considerada como un solo componente.
Definir los valores actuales : (Ver > Datos)
Versin 22/01/2002
OB1
U
ZV
E0.0
Z0
L
L
==I
SPB
Z0
0
L
L
==I
SPB
Z0
1
L
L
==I
SPB
Z0
2
L
L
>=I
R
Z0
3
magd
bizc
rosq
Z0
BEA
magd: CALL
BEA
FB1 , DB1
bizc: CALL
BEA
FB1 , DB2
rosq: CALL
BEA
FB1 , DB3
FB1
U
L
SV
E0.1
#leche
T1
Versin 22/01/2002
L
SV
#harina
T2
L
SV
#agitador
T3
U
=
T1
A4.0
U
=
T2
A4.1
U
=
T3
A4.2
DB1
DB2
DB3
Versin 22/01/2002
OB1
FB1
U
ZV
E0.0
Z0
L
L
==I
SPB
Z0
0
L
L
==I
SPB
Z0
1
L
L
==I
SPB
Z0
2
L
L
>=I
R
Z0
3
magd
bizc
rosq
Z0
BEA
Versin 22/01/2002
FB2
U
L
SV
E0.1
#leche
T1
L
SV
#harina
T2
L
SV
#agitador
T3
U
=
T1
A4.0
U
=
T2
A4.1
U
=
T3
A4.2
Versin 22/01/2002
OB1:
U E 0.0
FP M123.6
CC FC1
P#0.0
6
MW50
MW [AR1,P#0.0]
DB1
DBW [AR1,P#0.0]
P#2.0
MW50
bucl
P#0.0
MD20
6
MW50
MW [MD20]
DB1
DBW [MD20]
MD20
P#2.0
MD20
MW50
bucl
Versin 22/01/2002
Aplicaciones
Diseo
Funciones
Datos tcnicos
Aplicaciones
La CPU 314 IFM est provista con funciones extendidas y entradas/salidas especiales para
aplicaciones concretas, como:
Contaje rpido
Medida de frecuencia
Interrupciones de proceso
Diseo
Todas las CPUs estn recubiertas en una robusta caja de plstico. En el frontal encontraremos:
Entradas/salidas analgicas
Versin 22/01/2002
Funciones
reas de remanencia
Marcador de reloj
Nivel de proteccin
Interrupciones producidas
Sealizacin de funciones
Funciones de testeo
Funciones de informacin
Funciones integradas
Contador
Medida de frecuencia
Entrada de interrupciones
Versin 22/01/2002
Datos tcnicos
Unidad de proceso central
Memoria principal
24 KB
Memoria de carga:
Interna
Externa
40 KB RAM
40 KB FEPROM
Lenguaje de programacin
STEP 7
Tipos de bloques
- Ciclo libre
- Controlado por tiempo
- Controlado por la hora del dia
- Controlado por interrupciones
- Inicio de programa
Tiempos de proceso
- Operaciones de bit
- Operaciones de palabra
0.3 to 0.6 s
1 s
Flags (marcas)
2,048
Contadores
64
Temporizadores
128
Funciones integradas
- Contaje
- Medida de frecuencia hasta 10 kHz
- Control de posicin en lazo abierto
- Bloques de funcin integrados
Entradas/salidas integradas
20 entradas digitales
16 salidas digitales
4 entradas analgicas
1 salida analgica
Si
Voltaje de entrada
DC 24 V
Corriente consumida
1A
Potencia consumida
16 W
Peso
900 g
Versin 22/01/2002
CPU 313
CPU 314
Memoria de
programa en
lneas/bytes
2 K / 6 Kbytes
4 K / 12 Kbytes
8 K / 24 Kbytes 16 K / 48 Kbytes
16 K / 48 Kbytes
Copia de
seguridad con
submdulos de
memoria
No
Tiempo de
proceso para
1024 lneas,
binario
0.6 ms
0.6 ms
0.3 ms
0.3 ms
0.3 ms
Tiempo de
proceso para
1024 lneas,
mezcladas
1.2 ms
1.2 ms
0.8 ms
0.8 ms
0.8 ms
Entradas y
salidas digitales
integradas
10 DI / 6 DO
No
No
No
No
Entradas y
salidas digitales
mximas
128
128
512
1024
1024
Entradas y
salidas analgicas 32
mximas
32
64
128
128
Configuracin
Rack
1 fila
1 fila
4 filas
4 filas
4 filas
Mdulos de
expansin,
mximo
8 mdulos
8 mdulos
32 mdulos
32 mdulos
32 mdulos
Nmero de bits
internos de
memoria
1024/mx.
40,000
1024/mx.
40,000
2048/mx.
190,000
2048/> 200,000
2048/> 200,000
Nmero de
contadores (no
retentivos)
32 (16)
32 (16)
64 (64)
64 (64)
64 (64)
Versin 22/01/2002
CPU 315
CPU 315-2DP
Nmero de
temporizadores
(no retentivos)
64 (0)
4 nodos activos
MPI,
direccionable
32
32
32
32
32
Otros
10 DI/6 DO
funciones
integradas
SINEC L2-DP
integrado
Set de
instrucciones
Bloques de
funciones
configurables
si
64 (0)
128 (128)
128 (128)
128 (128)
Organizacin del
Lineal o estructurado
programa
Proceso del
programa
Fuente de
alimentacin
integrada
(voltaje regulado) 24 V DC
Temperatura
ambiente
0 to 60 C (sin condensacin)
Carga de la
fuente de
alimentacin
(suministrada)
120 / 230 V AC
Carga de la
fuente de
alimentacin
(24V DC)
2 A / 5 A / 10 A
Submdulos
combinados (e/s
digitales)
8 x 24 V DC / 8 x 24 V 0.5 A
Mdulos de
funciones
Versin 22/01/2002
Rels de salida
Entradas
analgicas
10...12...14-bit,
parametrizables
8 x entradas analgicas / 2 x entradas analgicas con +/-10 V, +/-50 mV, +/-1 V, +/-20 mA,
4...20 mA, Pt 100, Ni 100, termoacopladores E, N, J, K (linearizados)
Tiempo de codificacin por canal: 10 bits = 2,5 ms; 12 bits = 25 ms; 14 bits = 100 ms
Salidas
4 x salidas analgicas / 2 x salidas analgicas con +/-10 V, +/-50 mV, +/-1 V, +/-20 mA, 4...20
analgicas, 12-bit mA
Entradas/salidas
analgicas 8-bit
Software de
programacin
(IEC 1131-3)
Software
opcional
Programacin por
interface MPI
With PG 720 / PG 720 C / PG 740 / PG 760 y PC's AT-compatibles
187.5 Kbit/s
Trabajo en red
MPI (para OP/SIMATIC S7), PROFIBUS: SINEC L2-DP (para DIN E 19245, Parte 3)
Paneles de
operacin
compatibles
Versin 22/01/2002