automatica 2015 uco
description
Transcript of automatica 2015 uco
-
Tema 6
Programacin de los
autmatas programables
-
Automtica
Representacin de sistemas de
control
-
Automtica
Representacin de sistemas de
control
-
Automtica
Representacin de sistemas de
control
-
Automtica
Representacin de sistemas de
control
-
Automtica
Representacin de sistemas de
control
-
Automtica
Representacin de sistemas de
control
-
Automtica
Programacin del autmata
La programacin de un autmata
programable o PLC consiste en el
establecimiento de una secuencia
ordenada de instrucciones que resuelven
una determinada tarea de control.
Dicha secuencia establece la relacin entre
las distintas variables lgicas y constituye
el programa del autmata programable.
-
Automtica
Lenguaje de programacin
Un lenguaje de programacin es el conjunto de smbolos y textos inteligibles por la unidad de programacin que le sirven al usuario para codificar sobre un cierto autmata las leyes de control deseadas.
[Balcells]
-
Automtica
Lenguajes de programacin de PLC
Los lenguajes de programacin que se suelen emplear en los autmatas programables son: Lenguajes literales
Instrucciones formadas por letras, nmeros y smbolos especiales.
Lenguajes booleanos y de lista de instrucciones (nemnicos) [STL] (AWL)
Lenguajes de texto estructurado (SCL)
Lenguajes grficos Las instrucciones se representan mediante smbolos grficos
Lenguaje de diagrama de contactos [LAD] (KOP)
Lenguaje de diagrama lgico o plano de funciones [FBD] (FUP)
Lenguaje funcional de secuencia [SFC] (S7- GRAPH).
-
Automtica
Programacin bsica en diagrama
de contactos
La tarea que debe realizar el autmata
programable se especifica grficamente
mediante un diagrama o esquema de
contactos.
Facilita el cambio de sistemas de control
lgico implementados con rels
Facilita el diseo de sistemas sencillos a
tcnicos habituados a sistemas de control con
rels
-
Automtica
-
Automtica
Asignacin de variables
I124.0 I124.0
Q124.0
-
Automtica
KOP Diagrama de contactos
Operaciones con contactos
Operaciones lgicas
Operaciones de memorizacin
Operaciones de inversin
Operaciones con contactos y bloques
Operaciones con flancos
Operaciones de temporizacin y contaje
-
Automtica
KOP - Ejemplo bsico
-
Automtica
Programacin bsica en lista de
instrucciones
El lenguaje de lista de instrucciones
(AWL) de STEP 7 consiste en un conjunto
de cdigos simblicos, cada uno de los
cuales corresponde a una o ms
operaciones o instrucciones de lenguaje
mquina.
-
Automtica
AWL - Lista de instrucciones
Ms de 130 instrucciones bsicas
Nombres de variables e instrucciones:
Denominacin inglesa
Denominacin alemana
Diferencias poco significativas con IEC 1131-3
Instrucciones:
Operador [Modificador] Operando
-
Automtica
STEP7 inglesa (Internacional) STEP7 alemana (SIMATIC)
Variables
predefinidas
Entradas I, IB, IW, ID E, EB, EW, ED
Salidas Q, QB, QW,QD A, AB, AW, AD
Marcas M, MB, MW, MD M, MB, MW, MD
Operaciones
lgicas
bsicas
Carga inicial A O U O
Y A U
NO-Y AN UN
O O O
NO-O ON ON
O-exclusiva X X
NO-O-exclusiva XN XN
Operaciones
con
parntesis
Y A( U(
NO-Y AN( UN(
O O( O(
NO-O ON( ON(
O-exclusiva X( X(
NO-O-exclusiva XN( XN(
Cerrar parntesis ) )
Terminar
una cadena
lgica
Asignar = =
Desactivar R R
Activar S S
Operaciones
con flancos
Flanco negativo FN FN
Flanco positivo FP FP
-
Automtica
AWL. Instrucciones segn
acciones que ejecutan
Instrucciones que operan con variables lgicas
Instrucciones de temporizacin
Instrucciones de contaje
Instrucciones que operan con combinaciones binarias
Instrucciones de control
-
Automtica
AWL Ejemplo bsico
O(
A I 124.0
AN I 124.1
A Q 124.2
)
O(
A M 0.0
A I 124.3
A M 0.2
)
= Q 124.5
-
Automtica
Programacin bsica en diagrama
de funciones
Lenguaje simblico en el que las distintas
combinaciones entre variables se
representan mediante los smbolos de las
puestas lgicas correspondientes.
FUP para Siemens
-
Automtica
FUP Diagrama de funciones
Operaciones lgicas
Operaciones de memorizacin
Operaciones con flancos
Operaciones de temporizacin
Operaciones de contaje
-
Automtica
FUP Ejemplo bsico
-
Tema 6
Programacin de los
autmatas programables
Parte prctica
-
Automtica
Tipos de datos en Step 7Denominacin Bit
s
Ejemplo Descripcin
BOOL 1 FALSE o TRUE Variable binaria o lgica (Boolean)
INT 16 -32768 .. 32767 Nmero entero con signo
DINT 32 -231 .. +231 - 1 Nmero entero doble con signo
REAL 32 0.4560 Nmero real
BYTE 8 0 ..255 Conjunto de 8 bits
WORD 16 0 ..65535 Conjunto de 16 bits
DWORD 32 0 .. 231 -1 Conjunto de 32 bits (Double Word)
TIME 32 T#5d2h2m38s3.5ms Duracin
DATE 16 D#2002-01-01 Fecha
TIME_OF_DAY 32 TOD#15:35:08.36 Hora del da
S5TIME 16 S5T#2h2m38s Duracin
DATE_AND_TIME 64 DT#2002-01-01-15:35:08.36 Fecha y hora
CHAR 8 A Carcter
STRING AUTOMATA Cadena de caracteres
-
Automtica
Siemens S7 314C-2DP
La direccin de una entrada o salida de un mdulo digital se compone de la
direccin de byte y la direccin de bit:
E 124.0 (N. Alemana) I 124.0 (N. Inglesa)
-
Automtica
Concepto de instruccin
Instruccin(unidad ms pequea del programa)
Operacin(qu debe hacerse?)
Operando(con qu?)
Ubicacin Parmetro
A I 124.0
A I 124.0
I 124.0
Direccin byte Direccin Bit
Concepto de Instruccin
A I124.0
-
Automtica
Tipos de datos
Los operandos de las instrucciones se componen de un dato que puede ser de distintos tipos, atendiendo a su ubicacin en memoria. Los tipos de datos posibles son:
Alemn Ingls
E I entrada
A Q salida
M M marca
P P periferia (acceso directo)
L L datos locales
T T temporizador
Z C contador
DB DB mdulo de datos
-
Automtica
Tipos de datos
Cada uno de estos tipos se pueden direccionar
en 4 posibles modos (salvo T y Z):
Por defecto (X para DB): Bit.
B: byte (8 bits).
W: palabra (16 bits).
D: palabra doble (32 bits).
-
Automtica
Tipos de datos Por defecto (X para DB): Bit. B: byte (8 bits).
W: palabra (16 bits).
D: palabra doble (32 bits).
-
Automtica
Direccionamiento simblico
Operando
Direccionamiento absoluto
Ubicacin en memoria
I 124 . 0
Direccin byte
Direccin Bit
(I/Q/M/P/L/C/DB)
Operando
Direccionamiento simblico
Smbolo
I 124.0 Bolla_nivel_alto
-
Automtica
Direccionamiento simblico
Es posible asignar nombre simblico a los siguientes operandos:
I/Q (E/A) Entradas/salidas
M, MB, MW, MD Marcas (bit, byte, palabra y doble palabra)
T y C (T y Z) Temporizadores y contadores
FB, FC, SFB, SFC, OB, DB Bloques de programa
-
Automtica
Q
-
Automtica
I
-
Automtica
-
Automtica
-
Automtica
Programacin bsica en diagrama
de contactos
Operaciones lgicas con bits. Contacto normalmente abierto
Contacto normalmente cerrado
Bobina de rel, salida
Activar salida
Desactivar salida
Desactivar flip-flop de activacin SR
Activar flip-flop de desactivacin RS
Detectar flanco decreciente N
Detectar flanco creciente P
-
Automtica
Contactos
---| |--- (Contacto normalmente abierto) se cierra si el valor del bit consultado, que se almacena en el indicado, es "1". Si el contacto est cerrado, la corriente fluye a travs del contacto y el resultado lgico (RLO) es "1".
De lo contrario, si el estado de seal en el indicado es "0", el contacto est abierto. Si el contacto est abierto no hay flujo de corriente y el resultado lgico de la operacin (RLO) es "0".
Conexiones en serie, el contacto ---| |--- se combina por medio de una Y lgica con el RLO. Conexiones en paralelo, el contacto se combina con el RLO por medio de una O lgica.
---| / |--- (Contacto normalmente cerrado) se abre si el valor del bit consultado, que se almacena en el indicado, es "0". Si el contacto est cerrado, la corriente fluye a travs del contacto y el resultado lgico (RLO) es "1".
Si el estado de seal en el indicado es "1" , el contacto est abierto. Si el contacto est abierto no hay flujo de corriente y el resultado lgico de la operacin (RLO) es "0".
-
Automtica
Contactos en serie y en paralelo
En serie -> Operacin lgica Y AND
En paralelo -> Operacin lgica O - OR
-
Automtica
Bobina de rel, salida
Opera como una bobina en un esquema de circuitos.
Si la corriente fluye hasta la bobina (RLO = 1), el bit en el se pone a "1".
Si no fluye corriente hasta la bobina (RLO = 0), el bit en el se pone a "0".
Una bobina de salida slo puede colocarse dentro de un esquema de contactos en el extremo derecho de un circuito.
Como mximo puede haber 16 salidas mltiples.
Se puede crear una salida negada anteponiendo a la bobina de salida la operacin ---|NOT|--- (invertir el resultado lgico).
-
Automtica
Salidas mltiples - NOT
-
Automtica
Activar y desactivar salida
---( S ) (Activar bobina) slo se ejecuta si el RLO de las operaciones anteriores es "1" (flujo de corriente en la bobina). Si el RLO es "1", el indicado del elemento se pone a "1".
Un RLO = 0 no tiene efecto alguno, de forma que el estado de seal actual del operando indicado del elemento no se altera.
---( R ) (Desactivar salida) slo se ejecuta si el RLO de las operaciones anteriores es "1 (flujo de corriente en la bobina). Si fluye corriente a la bobina (RLO es "1"), el indicado del elemento se pone a "0". Un RLO de "0" (= no hay flujo de corriente en la bobina) no tiene efecto alguno, de forma que el estado de seal del operando indicado del elemento no vara. El tambin puede ser un temporizador (N. de T) cuyo valor de temporizacin se pone a "0", o un contador (N. de Z) cuyo valor de contaje se pone a "0".
-
Automtica
Flip-flop de desactivacin
RS (Activar flip-flop de desactivacin) se desactiva si el estado en la entrada R es "1" y si el estado en la entrada S es "0".
De no ser as, cuando el estado en la entrada R es "0" y el estado en la entrada S es "1", se activa el flip-flop.
Si el RLO es "1" en ambas entradas, la operacin Desactivar flip-flop de activacin ejecuta en el indicado primero la operacin Desactivar y seguidamente la operacin Activar, de modo que la direccin permanece activada para el resto del ciclo de programa.
Las operaciones S (Activar) y R (Desactivar) slo se ejecutan si el RLO es 1. Si el RLO es 0 estas operaciones no se ven afectadas y el operando indicado no vara.
-
Automtica
Flip-flop de activacin
SR (Desactivar flip-flop de activacin) se activa si el estado en la entrada S es "1" y si el estado de la entrada R es "0". De no ser as, cuando el estado en la entrada S es "0" y el estado de la entrada R es "1", se desactiva el flip-flop. Si el RLO es "1" en ambas entradas, la operacin Desactivar flip-flop de activacin ejecuta en el indicado primero la operacin Activar y seguidamente la operacin Desactivar, de modo que la direccin permanece desactivada para el resto del ciclo de programa.
Las operaciones S (Activar) y R (Desactivar) slo se ejecutan si el RLO es 1. Si el RLO es 0, estas operaciones no se ven afectadas y el operando indicado no vara.
-
Automtica
---( N )--- Detectar flanco
decreciente (1 --> 0)
---( N )--- (Detectar flanco decreciente (1 --> 0)) detecta un cambio del estado de seal en el operando de "1" a "0", e indica este cambio tras la operacin con RLO = 1.
El estado de seal del RLO se compara con el estado de seal del operando, es decir, con la marca de flancos.
Si el estado de seal del operando es "1" y el RLO anterior a la operacin es "0", el RLO posterior a la operacin ser "1" (impulso); en todos los otros casos ser "0".
El RLO anterior a la operacin se almacena en el operando.
-
Automtica
---( P )--- Detectar flanco creciente
RLO (0 --> 1)
---( P )--- (Detectar flanco creciente RLO (0 --> 1)) detecta un cambio del estado de seal en el operando, de "0" a "1", e indica este cambio tras la operacin mediante RLO = 1.
El estado de seal actual del RLO se compara con el estado de seal del operando, es decir, con la marca de flancos.
Si el estado de seal del operando es "0" y el RLO anterior a la operacin es "1", el RLO detrs de la operacin ser "1" (impulso); en todos los dems casos ser "0".
El RLO anterior a la operacin se almacena en el operando.
-
Automtica
Conversin de funciones lgicas a
diagrama de contactos
Producto de variables: contactos en serie.
Suma de variables: contactos en paralelo.
Uso de parntesis
-
Tema 6
Programacin de los autmatas programables
Parte prctica. AWL, temporizadores y contadores
-
Automtica
Programacin bsica AWL
Operaciones lgicas con bits. AND - A
OR - O
OR exclusiva - X
Salida - =
NOT
Activar - S
Desactivar - R
Flip-Flop SR y RS SET, CLR
Flancos FP, FN
-
Automtica
AND
A I 124.0
A I 124.1
= Q 124.1
-
Automtica
AND NOT
AN I 124.0
A I 124.1
= Q 124.1
-
Automtica
OR
O I 124.0
O I 124.1
= Q 124.1
-
Automtica
OR NOT
O I 124.0
ON I 124.1
= Q 124.1
-
Automtica
OR exclusiva
A I 124.0
AN I 124.1
O
AN I 124.0
A I 124.1
= Q 124.2
Equivale a:
X I 124.0
X I 124.1
= Q 124.2
-
Automtica
NOT
A I 124.0
A I 124.1
NOT
= Q 124.2
-
Automtica
Activar - Desactivar
A I 124.0
S Q 124.1
A I 124.1
R Q 124.1
-
Automtica
Flip-Flop
A I 124.0
S M 0.0
A I 124.1
R M 0.0
A M 0.0
= Q 124.2
-
Automtica
SET - CLR
SET
= Q 124.0
= Q 124.1
CLR
= Q 124.3
= Q 124.4
-
Automtica
Flancos creciente y decreciente
A I 124.0
FP M 0.0
= Q 124.1
A I 124.0
FN M 0.1
= Q 124.2
-
Automtica
Carga y transferencia de datosCarga y Transferencia de Datos
KOP
AWL
L - Carga
T - Transferencia
(Todos los tipos de
datos con 8, 16, 32
bits)
Ejemplos:
L +5 // Carga entero de 16-bit
L L#523123 // Carga entero de 32-bit
L B#16#EF // Carga hexadecimal de 8-bit
L 2#0001_0110_1110_0011
// Carga binario de 16-bit
L TOD#1:10:3.3
// Carga tiempo de 32-bit
T MB0 // Transferir valor al byte de
marcas 0
T AD256 // Transferir valor a la
doble palabra de salida 256
MOVE (KOP) Asigna un valor a una variable. Si EN est activa el valor en la entrada IN
se copia en la direccin especificada en la salida OUT. ENO = EN
L y T (AWL) Posibilitan el intercambio entre reas de memoria.
Las instrucciones de carga y transferencia son independientes del RLO.
El intercambio de datos tiene lugar a travs del ACUMULADOR.
-
Automtica
Carga y transferencia de datos
ACUMULADORES:Registros auxiliares (de 32 bits) en la CPU que
se utilizan en el intercambio de datos y para operaciones de comparacin y matemticas.
La instruccin de carga escribe el valor que haya en la direccin de origen en el Acumulador 1, y la instruccin de transferencia copia el contenido del acumulador al destino especificado.
Al realizar la operacin de carga, el valor actual del ACU1 pasa automticamente al ACU 2.
-
Automtica
Temporizadores
S_IMPULS. Parametrizar y arrancar temporizador como impulso [S_PULSE]
S_VIMP. Parametrizar y arrancar temporizador como impulso prolongado [S_PEXT]
S_EVERZ. Parametrizar y arrancar temporizador como retardo a la conexin [S_ODT]
S_SEVERZ. Parametrizar y arrancar temporizador como retardo a la conexin con memoria [S_ODTS]
S_ABRES. Parametrizar y arrancar temporizador como retardo a la desconexin [S_OFFDT]
---( SI ) Arrancar temporizador como impulso
---( SV ) Arrancar temporizador como impulso prolongado
---( SE ) Arrancar temporizador como retardo a la conexin
---( SS ) Arrancar temporizador como retardo a la conexin con memoria
---( SA ) Arrancar temporizador como retardo a la desconexin
-
Automtica
Temporizadores
Tienen un rea reservada en la memoria de la CPU
Una palabra de 16 bits para cada operando de temporizador
256 temporizadores
Decrementa hasta alcanzar el valor 0
Bits 0 a 9 de la palabra de temporizacin contienen el valor de temporizacin en cdigo binario
-
Automtica
Temporizadores
Valor de temporizacin:
binario
hexadecimal
decimal codificado en binario (BCD)
Area de temporizacin va de 0 a 9 990
segundos (2 h, 46 min, 30 s)
-
Automtica
Temporizadores
Formatos del valor de temporizacin
w#16#txyz t= base de tiempo (0-10 ms, 1-100ms, 2-1s, 3-10s)
xyz = valor de temporizacin en formato BCD
S5T#aH_bM_cS_dMS H (horas), M (minutos), S (segundos), MS
(milisegundos)
La base de tiempo se selecciona automticamente y el valor de temporizacin se redondea al prximo nmero inferior con esa base de tiempo
-
Automtica
Temporizadores
Ejemplos
S5TIME#4S --> 4 segundos
s5t#2h_15m --> 2 horas y 15 minutos
S5T#1H_12M_18S --> 1 hora 12 minutos
y 18 segundos
-
Automtica
Temporizadores
Base de tiempo
bits 12 y 13 de la palabra de temporizacin
contienen la base de tiempo en cdigo binario
-
Automtica
Temporizadores
Tiempos mximos para cada base (999
BCD)
Base 10ms= 9s 990ms
Base 100ms= 1 min 39s 900ms
Base 1s= 16min 39s
Base 10s= 2h 46min 30s
-
Automtica
Temporizadores Palabra de temporizacin
bits 0 a 11 almacenan el valor de
temporizacin en BCD
bits 12 a 13 almacenan la base de tiempo en
cdigo binario
-
Automtica
Temporizadores
[S_PULSE]
[S_PEXT]
[S_ODT]
[S_ODTS]
[S_OFFDT]
-
Automtica
Temporizadores
[S_PULSE]
[S_PEXT]
[S_ODT]
[S_ODTS]
[S_OFFDT]
-
Automtica
S_IMPULS [S_PULSE]
Impulso
-
Automtica
S_IMPULS [S_PULSE]
arranca cuando hay un flanco creciente en la entrada de arranque S
funciona mientras el estado de la entrada S sea "1", y como mximo el tiempo indicado en TV/TW
se pone a 0 si la entrada de desactivacin R se pone a "1"
valor de temporizacin actual queda depositado en las salidas BI/DUAL y BCD/DEZ
-
Automtica
S_IMPULS [S_PULSE]
-
Automtica
S_IMPULS [S_PULSE]A I 124.0
L S5T#3S
SP T 1
A I 124.1
R T 1
L T 1
T MW 10
LC T 1
T MW 12
A T 1
= Q 124.1
-
Automtica
S_VIMP [S_PEXT]
Impulso prolongado
-
Automtica
S_VIMP [S_PEXT]
-
Automtica
S_VIMP [S_PEXT]
A I 124.0
L S5T#3S
SE T 1
A I 124.1
R T 1
L T 1
T MW 10
LC T 1
T MW 12
A T 1
= Q 124.1
-
Automtica
S_EVERZ [S_ODT]
Retardo a la conexin
-
Automtica
S_EVERZ [S_ODT]
-
Automtica
S_EVERZ [S_ODT]A I 124.0
L S5T#3S
SD T 1
A I 124.1
R T 1
L T 1
T MW 10
LC T 1
T MW 12
A T 1
= Q 124.1
-
Automtica
S_SEVERZ [S_ODTS]
Retardo a la conexin con memoria
-
Automtica
S_SEVERZ [S_ODTS]
-
Automtica
S_SEVERZ [S_ODTS]A I 124.0
L S5T#3S
SS T 1
A I 124.1
R T 1
L T 1
T MW 10
LC T 1
T MW 12
A T 1
= Q 124.1
-
Automtica
S_AVERZ [S_OFFDT]
Retardo a la desconexin
-
Automtica
S_AVERZ [S_OFFDT]
-
Automtica
S_AVERZ [S_OFFDT]A I 124.0
L S5T#3S
SF T 1
A I 124.1
R T 1
L T 1
T MW 10
LC T 1
T MW 12
A T 1
= Q 124.1
-
Automtica
Temporizadores en AWL
FR Habilitar temporizador (Vuelve a arrancar)
L Cargar valor actual del temporizador en ACU 1 como entero
LC Cargar el valor actual de temporizacin en ACU 1 como nmero BCD
R Desactivar temporizador
SI Temporizador como impulso [SP]
SV Temporizador como impulso prolongado [SE]
SE Temporizador como retardo a la conexin [SD]
SS Temporizador como retardo a la conexin con memoria [SS]
SA Temporizador como retardo a la desconexin [SF]
-
Automtica
Contadores
Los contadores tienen reservada un rea
de memoria propia en la CPU.
Dicha rea de memoria reserva una
palabra de 16 bits para cada contador.
La programacin con AWL permite un
mximo de 256 contadores.
-
Automtica
ZAEHLER [S_CUD]
Incrementar/decrementar
-
Automtica
ZAEHLER [S_CUD]
ZAEHLER (Parametrizar e incrementar/decrementar contador) queda inicializado con el valor de la entrada PV cuando se produce un flanco ascendente en la entrada S.
Si hay un 1 en la entrada R, el contador se pone a cero y el valor de contaje es 0. El contador incrementa en "1" si el estado de seal de la entrada CU cambia de "0" a "1" y el valor del contador era menor que "999".
El contador se decrementa en "1" si en la entrada CD se produce un flanco ascendente y el valor del contador es mayor que "0". Al producirse un flanco ascendente en ambas entradas de contaje se ejecutan ambas operaciones, y el valor de contaje no vara. Si se inicializa el contador y el RLO de las entradas CU/CD = 1, el contador contar as en el siguiente ejemplo aunque no haya habido ningn cambio de flanco.
El estado de seal de la salida Q ser "1" si el valor de contaje es mayor que cero, y ser "0" si el valor de contaje es igual a cero.
-
Automtica
ZAEHLER [S_CUD]A I 124.1
CU C 1
A I 124.2
CD C 1
A I 124.3
L C#5
S C 1
A I 124.4
R C 1
A C 1
= Q 124.1
-
Automtica
Z_VORW [S_CU]
Incrementar
-
Automtica
Z_VORW [S_CU]
S_CU (Parametrizar e incrementar contador) toma el valor predeterminado de la entrada ZW si en la entrada S hay un flanco ascendente.
Si el estado de seal de la entrada R es "1" el contador se pone a 0, y entonces el valor de contaje es cero.
El contador incrementa en "1" si el estado de seal en la entrada CU cambia de "0" a "1", siempre y cuando el valor de contaje sea menor que "999". Si se inicializa el contador y el RLO de las entrada CU = 1, el contador contar as en el siguiente ejemplo aunque no haya habido ningn cambio de flanco.
La salida Q ser "1" siempre que el valor de contaje sea mayor que cero, y ser "0" si el valor de contaje es cero.
-
Automtica
Z_VORW [S_CU]A I 124.1
CU C 1
BLD 101
A I 124.3
L C#5
S C 1
A I 124.4
R C 1
NOP 0
NOP 0
A C 1
= Q 124.1
-
Automtica
Z_RUECK [S_CD]
Decrementar
-
Automtica
Z_RUECK [S_CD]
S_CD (Parametrizar y decrementar contador) toma el valor predeterminado de la entrada ZW si en la entrada S hay un flanco ascendente.
Si el estado de seal de la entrada R es "1" el contador se pone a 0, y entonces el valor de contaje es cero. El contador decrementa en "1" si el estado de seal en la entrada CD cambia de "0" a "1" y el valor de contaje era mayor que cero.
Si se inicializa el contador y el RLO de la entrada CD= 1, el contador contar as en el siguiente ejemplo aunque no haya habido ningn cambio de flanco.
La salida Q ser "1" si el valor de contaje es mayor que cero, y ser "0" si el valor de contaje es cero.
-
Automtica
Z_RUECK [S_CD]A I 124.1
CD C 1
BLD 101
A I 124.3
L C#5
S C 1
A I 124.4
R C 1
NOP 0
NOP 0
A C 1
= Q 124.1
-
Automtica
Contadores en AWL
FR Habilitar contador
L Cargar valor actual del contador en ACU 1 en forma de entero
LC Cargar valor actual del contador en ACU 1 como nmero BCD
R Desactivar contador
S Poner contador al valor inicial
ZV Incrementar contador
ZR Decrementar contador
-
Tema 6
Programacin de los autmatas programables
Formatos de representacin
Operaciones complejas
-
Automtica
3.Formato de representacin
Existen 3 formatos de representacin
numrica:
Binario
Hexadecimal
BCD
Existen 3 formatos de nmeros:
Entero
Doble entero
Real
-
Automtica
3.1 Nmeros binarios
Representa nmeros naturales mayores o
iguales que cero.
Lmite 32 bits => 232 1 = 4.294.967.295
Ejemplo: L 2#0110 //Carga en ACU1 el nmero 6 en formato
binario
Rango:
Byte: B#2#0 B#2#1 ....1 (8 unos)
Palabra: W#2#0 W#2#1....1 (16 unos)
Doble palabra: DW#2#0 DW#2#1....1 (32 unos)
-
Automtica
3.2 Hexadecimal
Representa nmeros naturales mayores o
iguales que cero.
Lmite 32 bits => 232 1 = 4.294.967.295
Ejemplo:
L DW#16#1FFE_1ABC //Carga 536.746.684 (32 bits)
en ACU1
Rango:
Byte: B#16#0 B#16#FF
Palabra: W#16#0 W#16#FFFF
Doble palabra: DW#16#0 DW#16#FFFFFFFF
-
Automtica
3.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
Rango: -999 999
Ejemplo: +310
0000 0011 0001 0000
+ 3 1 0
signo: 0000 -> positivo; 1111 -> negativo
-
Automtica
3.3 BCD
Doble palabra (32 bits): 7 cifras con
signo.
Rango: -9999999 9999999
Ejemplo:
L 2#0000_0011_0001_000 //Cargo +310 en
BCD formato en ACU1
LC T1 //Cargo el valor de temporizacin
de T1 en formato BCD en ACU1
-
Automtica
Los nmeros enteros se denominan como I (de Integer)
Un nmero entero es un nmero binario de 16 bits que
tiene como signo el bit ms significativo.
Lmite:
N positivos: 215-1 = 32767 (El 0 se considera positivo)
N negativos: 215= -32768
3.4 Enteros
-
Automtica
Los nmeros dobles enteros se denominan como D
Son nmeros enteros de 32 bits que tienen como signo el bit ms significativo.
Lmite:
N positivos: 232-1= 2147483647 (El 0 se considera positivo)
N negativos: 232= -2141483648
3.5 Doble entero
-
Automtica
Los nmeros reales se denominan como R
Son nmeros binarios de 32 bits que constan de 2
partes:
Mantisa : los 3 bytes ms altos
Exponente : el byte ms alto
Rango:
Negativos: -3,4028235E+38 a -1,401298E-45
Positivos: 1,401298E-45 a 3,4028235E+38
3.6 Reales
-
Automtica
3.6 Reales
Se pueden expresar de forma exponencial o
como quebrados.
Ejemplo:
L 4.83 //Carga el nmero real 4,83 en ACU1
El editor Step-7 lo pasa automticamente a la
forma exponencial:
L 4.830000e+000
Se redondea con exactitud hasta el 6 dgito
Ejemplo:
L 4780000000.0 = L 4.780000e+009
-
Automtica
4. Operaciones complejas
Operaciones de comparacin
Operaciones aritmticas
-
Automtica
4.1 Operaciones de Comparacin
Las operaciones de comparacin se dividen en tres grupos, segn sea el tamao de las variables a comparar:
Comparacin de nmeros enteros
Comparacin de nmeros enteros dobles
Comparacin de nmeros reales
-
Automtica
4.1.1 Instrucciones de Comparacin (AWL)
Las operaciones Comparar nmeros (enteros, dobles enteros o en coma flotante) comparan el contenido del ACU 2 con el contenido del ACU 1. Los contenidos del ACU 1 y del ACU 2 se evalan como nmeros enteros, dobles enteros o en coma flotante.
El RLO y los bits relevantes de la palabra de estado
indican el resultado de la comparacin.
RLO = 1 indica que el resultado de la comparacin es verdadero.
RLO = 0 indica que el resultado de la comparacin es falso.
Los bits A1 y A0 de la palabra de estado indican la relacin "menor que", "igual que" o "mayor que".
-
Automtica
4.1.1.1 Comp. de enteros (AWL)
Formato: ==I, I, >I, =I, I //Comparar si el ACU2-L (MW10) es mayor (>) que el //ACU1-L (IW24).
= M 2.0 //RLO = 1, si MW10 > IW24.
-
Automtica
4.1.1.2 Comparacin de enteros dobles(AWL)
Formato: ==D, D, >D, =D, D //Comparar si el ACU 2 (MD10) es mayor (>) que el //ACU 1 (ID24).
= M 2.0 //RLO = 1, si MD10 > ID24.
-
Automtica
4.1.1.3 Comparacin de reales (AWL)
Formato: ==R, R, >R, =R, R //Comparar si el ACU 2 (MD10) es mayor (>) que el //ACU 1 (1.359E+02).
= M 2.0 //RLO = 1, si MD10 > 1.359E+02.
-
Automtica
4.1.2 Operaciones de Comparacin (KOP)
Las operaciones comparan las entradas IN1 e IN2 segn los tipos de comparacin siguientes:
== IN1 es igual a IN2
IN1 es diferente a IN2
> IN1 es mayor que IN2
< IN1 es menor que IN2
>= IN1 es mayor o igual a IN2
-
Automtica
4.1.2.1 Comp. de enteros (KOP)
Ejemplo:
La salida Q124.1 se activa si I124.1 es 1 y si MW0 = MW2.
-
Automtica
4.1.2.2 Comparacin de enteros dobles (KOP)
Ejemplo:
La salida Q124.1 se activa si I124.1 es 1 y MD0 > MD4.
-
Automtica
4.1.2.3 Comparacin de reales (KOP)
Ejemplo:
La salida Q124.1 se activa si I124.1 es 1 y MD0 > MD4.
-
Automtica
Problema de comparadores
La figura muestra un sistema con dos cintas transportadoras y un
rea de almacenamiento temporal (capacidad 100 paquetes) colocada
entre ambas.
La cinta transportadora 1 transporta paquetes al rea de
almacenamiento. Una barrera ptica situada al final de la cinta 1 junto
al rea de almacenamiento determina cuntos paquetes se
transportan a dicha rea.
La cinta transportadora 2 transporta paquetes desde el rea de
almacenamiento a una plataforma de carga donde llegan camiones y
los recogen para suministrarlos a los clientes.
Una barrera ptica situada al principio de la cinta transportadora 2
junto al rea de almacenamiento determina cuntos paquetes
abandonan el rea de almacenamiento para ser transportados a la
plataforma de carga.
Un panel indicador con cinco lmparas seala el nivel del rea de
almacenamiento temporal.
-
Automtica
Problema de comparadores
BARRERA1 I 124.1 >= CINCUENTA % Q 124.2
BARRERA2 I 124.2 >= NOVENTA % Q 124.3
VACIO Q 124.0 LLENO Q 124.4
NO VACIO Q 124.1
-
Automtica
4.2 Operaciones aritmticas
Operaciones aritmticas con enteros y
dobles enteros:
Suma, resta, multiplicacin y divisin
Operaciones aritmticas con nmeros
reales:
Suma, resta, multiplicacin y divisin
Otras operaciones
-
Automtica
4.2.1 Operaciones Aritmticas (AWL)
Combinan el contenido de ACU1 y ACU2.
El resultado se deposita en ACU1 y el ACU2
permanece inalterado.
Son operaciones incondicionales del RLO y
no lo afectan.
-
Automtica
4.2.1.1.1 Suma de enteros (AWL)
La instruccin de suma +I, +D suma el contenido de ACU2 con ACU1 y el resultado lo almacena en ACU1.
En el caso de sumar dos enteros esta operacin acta
sobre las palabras bajas de los acumuladores y el
resultado lo almacena en la palabra baja del ACU1.
Ejemplo:
L 8
L 9
+I //ACU2+ACU1; ACU1=17; ACU2=8
-
Automtica
4.2.1.1.2 Resta de enteros (AWL)
La instruccin de resta I, D resta el contenido de ACU2 con ACU1 y el resultado
lo almacena en ACU1.
Ejemplo:
L 10
L 3
-I //ACU2-ACU1; ACU1=7; ACU2=10
-
Automtica
4.2.1.1.3 Multiplicacin de enteros (AWL)
La instruccin de multiplicacin *I, *Dmultiplica el contenido de ACU2 por ACU1 y
el resultado lo almacena en ACU1.
Si se multiplican dos enteros el resultado se
almacena como doble entero en ACU1
Ejemplo:
L 2
L 100
*D //ACU2*ACU1; //ACU1=200; ACU2=2
-
Automtica
4.2.1.1.4 Divisin de enteros (AWL)
La instruccin de divisin /I, /D divide el contenido de ACU2 entre ACU1 y el resultado se almacena de dos formas distintas segn se dividan enteros o
dobles enteros:
En caso de divisin de enteros el resultado se almacena en ACU1
en forma de dos enteros de 16 bits.
Si se dividen enteros dobles el resultado se almacena como doble
entero en ACU1 y el resto de la divisin se obtiene realizando la
operacin MOD. Slo para dobles enteros
L MW0
L MW2
/I //ACU2/ACU1;
L MD0
L MD4
/D //Cociente
T MD20 //Almacena cociente
L MD0
L MD4
MOD
T MD24 //Almacena resto
-
Automtica
4.2.1.2 Ops. Aritm. con reales (AWL)
Las instrucciones +R, -R, *R, /Rcombinan el contenido de ACU2 (32 bits)
con ACU1 (32 bits) y el resultado lo
almacenan en ACU1 (32 bits).
Ejemplo:
L 1.0
L 2.4
+R //ACU2+ACU1
//ACU1=3.4;
//ACU2=1.0
-
Automtica
4.2.1.3 Otras operaciones con reales (AWL) Instruccin ABS: Valor absoluto de ACU1, y el resultado se deposita
en ACU1. Instruccin SQRT: Raz cuadrada de ACU1 (debe ser >= 0), y el
resultado se deposita en ACU1. Instruccin SQR: Cuadrado de ACU1, y el resultado se deposita en
ACU1. Instruccin LN: Logaritmo natural de ACU1 (logaritmo con base e), y
el resultado se deposita en ACU1. Instruccin EXP: Calcula el exponente (valor exponencial con base e)
de ACU1, y el resultado se deposita en ACU1. Instrucciones SIN, COS y TAN: Calculan el seno, coseno o
tangente de un ngulo indicado en radianes, y el resultado se deposita en ACU1.
Instruccin ASIN : Calcula el arcoseno de ACU1 (entre 1 y 1). El resultado es un ngulo indicado en radianes: -pi/2
-
Automtica
4.2.2 Operaciones Aritmticas (KOP)
Combina las entradas IN1 y IN2 si el estado
de seal en la entrada de habilitacin (EN)
es "1". La salida OUT proporciona el
resultado.
Si el resultado es un valor fuera del margen
vlido los bits OV y OS son 1 y ENO es 0,
de forma que otras operaciones que siguen
a esta operacin aritmtica, combinadas a
travs de ENO (ejecucin en cascada), no
se ejecutan.
-
Automtica
4.2.2.1 Suma de enteros (KOP)
Ejemplo:
El cuadro ADD_DI se activa si I 0.0 es 1. El resultado de la suma MD1 + MD5
se deposita en MD10. Si el resultado es un valor fuera del margen vlido para
enteros dobles, o si el estado de seal de I 0.0 es 0, la salida Q0.1 se pone a 0,
si no a 1.
-
Automtica
4.2.2.2 Resta de enteros (KOP)
Ejemplo:
El cuadro SUB_DI se activa si I 0.0 es 1. El resultado de la sustraccin MD1 MD5 se deposita en MD10. Si el resultado es un valor fuera del margen vlido
para enteros dobles, o si el estado de seal de I 0.0 es 0, la salida Q 0.1 se
pone a 0.
-
Automtica
4.2.2.3 Multiplicacin de enteros (KOP)
Ejemplo:
El cuadro MUL_I se activa si I 0.0 es 1. El resultado de la multiplicacin MW0 x
MW2 se deposita en MW4. Si el resultado es un valor fuera del margen vlido
para enteros, o si el estado de seal de I 0.0 es 0, la salida Q 0.1 se pone a 0
-
Automtica
4.2.2.4 Divisin de enteros (KOP)
El cuadro DIV_DI (MOD_DI) se activa si I 0.0 es 1. El cociente (resto) de la
divisin de MD0 entre MD4 se deposita en MD8 (MD12). Si el resultado es un
valor fuera del margen vlido para enteros, o si el estado de seal de I 0.0 es 0,
la salida Q 0.0 (Q0.1) se pone a 0.
Ejemplo:
-
Automtica
4.2.2.2 Ops. Aritm. con reales (KOP)
Ejemplo:
Una vez activada la entrada I0.0, se multiplica el contenido de las marcas MD0
y MD4 y su resultado se divide entre 7,5. El resultado final se almacena en
QD0.
-
Automtica
4.2.2.3 Otras operaciones con reales (KOP)
-
Automtica
5.1 Palabra de estado (16 bits) Es un registro de la memoria de la CPU que contiene bits que pueden
direccionarse en el operando de las operaciones lgicas con bits y con palabras:
-
Automtica
5.1 Evaluacin bits palabra estadooperaciones de enteros
Las operaciones aritmticas bsicas influyen sobre los
siguientes bits de la palabra de datos: A1 y A0
OV
OS
-
Automtica
5.1 Evaluacin bits palabra estado operaciones de enteros
-
Automtica
5.2 Evaluacin bits palabra estadooperaciones en coma flotante
-
Automtica
Relacin entre bits, bytes (B),
palabras (W) y dobles palabras (D)
-
Automtica
6. Instrucciones avanzadas
Operaciones de conversin
Operaciones de control de programa
Operaciones de rotacin y desplazamiento
-
Automtica
6.1 Operaciones de conversin
Las operaciones de conversin son
incondicionales ya que ni afectan ni
dependen del RLO.
Se pueden dividir en:
Conversin de enteros
Conversin de reales
-
Automtica
6.1.1 Conversin de enteros
Las operaciones de conversin de enteros se realizan con
las instrucciones: BTD : Convierte el nmero BCD de 7 dgitos en doble entero.Valores
admisibles: -9999999 9999999. Resultado de la conversin (bits 0-27),
signo (bit 31).
BTI : Convierte el nmero BCD de 3 dgitos de la palabra baja de ACU1 en un entero (16 bits) que se guarda en la palabra baja de ACU1.Valores
admisibles: -999 999. Resultado de la conversin (bits 0-11 ),
signo (bit 15).
DTB : Convierte un entero doble (32 bits) de ACU1 en un BCD de 7 dgitos.Resultado de la conversin (bits 0-27, N BCD), signo (bits 28-
31,+:0000,-:1111)
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-27, N BCD), signo (bits 28-31,+:0000,-:1111)
ITD : Convierte un entero (16 bits) de la palabra baja de ACU1 en doble entero
-
Automtica
6.1.2 Conversin de reales
Las operaciones de conversin de reales se realizan con las
instrucciones:
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.
RND: Redondea un nmero real (32 bits) a entero (32 bits). Primero lo convierte y luego lo redondea al entero ms prximo.
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.
TRUNC : Convierte un real (32 bits) a doble entero (32 bits) y lo redondea al entero de menor valor absoluto.
-
Automtica
Esquema operaciones conversin
-
Automtica
6.1.4 Intercambio
CAW: Cambia el orden de los octetos del
ACU1-L (16 bits)
CAD: Cambia el orden de los octetos del
ACU1 (32 bits)
TAK: Intercambia el contenido del ACU1
con el del ACU2.
-
Automtica
6.2 Operaciones de control de programa
Operaciones de salto
Llamada a funciones o a bloques de
funcin, CALL
Operaciones con las que se va a controlar el orden
de ejecucin de las instrucciones
-
Automtica
6.2.1 Salto incondicional
- JU (SPA): se efecta un salto hacia una meta definida, independientemente de condiciones.
- JL (SPL): Salto utilizando lista de metas. La meta del salto se escoge segn el valor contenido en el ACU1. La lista de metas se indica con la instruccin JU. (Implementa una estructura select case)
-
Automtica
6.2.1 Salto incondicional
A I 1.0 // cargamos en el RLO el valor de la entrada 1.0
JU AQU // saltamos de forma incondicional a la lnea con meta "AQUI"
NOP 0 // esta lnea no se ejecuta (es saltada)
AQUI: A I 2.0 // aqu contina la ejecucin del programa
= Q 3.0 // introducimos el resultado en la salida 3.0
Ejemplo:
JU
L MB100 // cargamos en el ACU1 un byte
JL DEF // saltamos a DEF si el valor de ACU1 no est en la lista
JU CERO // se salta a CERO si ACU1 vale 0
JU UNO // se salta a UNO si ACU1 vale 1
JU DOS // se salta a UNO si ACU1 vale 2
DEF: ...
...
BEU //(fin de bloque incondicionado). Salta al final del bloque
CERO: ...
...
BEU // Fin de bloque incondicionado
UNO: ...
...
BEU // Fin de bloque incondicionado
DOS: ...
...
BEU // Fin de bloque incondicionado
JL
Lista de metas
-
Automtica
6.2.1 Salto incondicional
Ejemplo
FUNCIONAMIENTO:
El estado de la salida salida Q 124.0 ser:
El estado de la entrada (I 124.0), si el byte de entrada IB 4 vale 0
El estado de la entrada (I 124.1), si el byte de entrada IB 4 vale 1
FALSE, si la palabra de entrada no toma ninguno de los valores anteriores
L IB 4 // cargamos en ACU1 un valor del byte de entrada
JL NORM // se salta a NORM si el valor de ACU1
// no est en lista
JU UNO // se salta a UNO si ACU1 vale 0
JU DOS // se salta a CONT si ACU1 vale 1
NORM: CLR
JU CONT // se salta a CONT de forma incondicional
UNO: A I 124.0 // instruccin meta del salto UNO
JU CONT // se salta a CONT de forma incondicional
DOS: A I 124.1 // instruccin meta del salto DOS
JU CONT // se salta a CONT de forma incondicional
CONT: = Q 124.0 // aqu saltamos finalmente,
// continuando el programa
Solucin
-
Automtica
6.2.1 Salto incondicional
Ejemplo
FUNCIONAMIENTO:
Segn el contenido de IB0 :
Si 0 => QW4= FFFF
Si 1 => QW4=AAAA
Si 2 => QW4=5555
Si 3 => QW4=0000
-
Automtica
6.2.2 Salto condicional en funcin del RLO
- JC/JCN (SPB/SPBN): se efecta un salto hacia una meta definida si RLO = 1 RLO = 0 respectivamente.
- JCB/JNB (SPBB/SPBNB): se efecta un salto hacia
una meta definida si RLO = 1 RLO = 0
respectivamente, salvando el RLO en RB.
Ejemplos:
JU
JC A I 1.0 //cargamos en el RLO el valor de la entrada 1.0JCN AQUI //saltamos a la lnea con meta "AQUI si I 1.0 = 0 (RLO=0)
A I 2.0 //esta lnea se ejecutar si el RLO=1
= Q 3.0 //esta lnea se ejecutar si el RLO=1
AQUI: NOP 0
A I 1.0 // cargamos en el RLO el valor de la entrada 1.0
JU AQU // saltamos de forma incondicional a la lnea con meta "AQUI"
NOP 0 // esta lnea no se ejecuta (es saltada)
AQUI: A I 2.0 // aqu contina la ejecucin del programa
= Q 3.0 // introducimos el resultado en la salida 3.0
-
Automtica
6.2.3 Salto condicional en funcin de RB
y OV/OS
- JBI/JNBI (SPBI/SPBIN): se efecta un salto hacia una meta definida si RB = 1 RB = 0 respectivamente.
- JO (SPO): se efecta un salto hacia una meta definida si OV = 1
- JOS (SPS): se efecta un salto hacia una meta definida si OS = 1
-
Automtica
6.2.3 Salto condicional en funcin de RB
y OV/OS- JO (SPO): se efecta un salto hacia una meta definida si OV = 1
- JOS (SPS): se efecta un salto hacia una meta definida si OS = 1
L IW10
L MW12
*I
JO OVER1 // Saltar si hay desbordamiento en el producto anterior, OV = 1
L DBW25
+I
L MW14
-I
JOS OVER2 // Saltar si desbordamiento en una de las 3 operaciones, OS = 1
T MW16 // La ejecucin del programa contina aqu
A M 4.0 // en caso de no ejecutarse el salto
R M 4.0
A M 4.1
R M 4.1
JU NEXT
OVER1: AN M 4.0 // El programa contina aqu despus de saltar a la meta OVER1
S M 4.0
JU NEXT
OVER2: AN M 4.1 // El programa contina aqu despus de saltar a la meta OVER2
S M 4.1
NEXT: NOP 0 // El programa contina aqu despus de saltar a la meta NEXT
Ejemplo:
-
Automtica
6.2.4 Salto condicional en funcin del
Acumulador
- JZ (SPZ): salto si resultado es cero (ACU 1)
- JN (SPN): salto si resultado no es cero
- JP (SPP): salto si resultado es mayor que cero
- JM (SPM): salto si resultado es menor que cero
- JMZ (SPMZ): salto si resultado es menor o igual que cero
- JPZ (SPPZ): salto si resultado es mayor o igual que cero
- JUO (SPU): salto si el resultado no es vlido (uno de los operandos en una operacin de coma flotante no es un nmero en coma flotante)
Se encuentran casi siempre despus de una operacin con el Acumulador
-
Automtica
6.2.4 Salto condicional en funcin del
Acumulador
Los bits A1 y A0 de la
palabra de estado
indican el estado del
acumulador tras una
operacin
-
Automtica
6.2.4 Salto condicional en funcin del
Acumulador
Ejemplo:
L IW8
L MW12
-I //Restar el contenido de MW12 del contenido de IW8.
JZ RES0 //Saltar si resultado = 0 (es decir, si el contenido de ACU 1 = 0).
JM RES1 //Saltar si resultado < 0 (es decir, si el contenido de ACU 1 < 0).
JUO RES2 //Saltar si resultado no vlido
AN M 4.0 //La ejecucin del programa contina aqu en caso de no ejecutarse
S M 4.0 //ningn salto.
JU NEXT
RES0: AN M 4.1 //La ejecucin del programa contina aqu despus de haber
S M 4.1 // saltado a la meta RES0.
JU NEXT
RES1: AN M 4.2 //La ejecucin del programa contina aqu despus de haber saltado
S M 4.2 //a la meta RES1.
JU NEXT
RES2: AN M 4.3 //La ejecucin del programa contina aqu despus de haber saltado
S M 4.3 //a la meta RES2.
JU NEXT
NEXT: NOP 0 //La ejecucin del programa contina aqu despus de haber saltado
//a la meta NEXT.
-
Automtica
6.2.5 Saltos que finalizan bloque:
- BEU (BEA): Fin de bloque incondicionado. Finaliza la ejecucin del mdulo actual y devuelve el control al mdulo que llam al mdulo finalizado. Esta instruccin se ejecuta sin depender del RLO ni de cualquier otra condicin.
- BEC (BEB): Fin de bloque condicionado. 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 pone el RLO a 1.
Si el mdulo que finaliza es el OB1 se finaliza el ciclo de ejecucin del programa, volviendo a comenzar uno nuevo.
-
Automtica
Ejemplo:
A I 1.0 //introducimos en el RLO el valor de la entrada 1.0
BEC //si la entrada 1.0 vale 1 el mdulo acaba aqu
A I 2.0
= Q 3.0
BEU //aqu finaliza el mdulo de forma incondicional
A I 1.1 //estas instrucciones nunca se ejecutaran
S Q 4.0
- BEU (BEA): Fin de bloque incondicionado. Finaliza la ejecucin del mdulo actual y devuelve el control al mdulo que llam al mdulo finalizado. Esta instruccin se ejecuta sin depender del RLO ni de cualquier otra condicin.
- BEC (BEB): Fin de bloque condicionado. 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 pone el RLO a 1.
6.2.5 Saltos que finalizan bloque:
-
Automtica
- La operacin LOOP sirve para llamar varias veces a un segmento del programa.
- Esta operacin decrementa la palabra baja del ACU 1 en 1.
- Despus 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.
Cargar n de
iteraciones en
ACU1 L
META: Grupo de
instrucciones
ACU1 L= ACU1 L -1
ACU1 L=0?
Siguiente
instruccin
SI
NO
6.2.6 Instruccin LOOP
-
Automtica
- La operacin LOOP sirve para llamar varias veces a un segmento del programa.
- Esta operacin decrementa la palabra baja del ACU 1 en 1.
- Despus 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.
L +5 //Hacemos el ACU 1 igual a 5
PROX: T MW 10 //transferimos valor del ACU 1 a la memoria de datos
- //En estos guiones estara el segmento del programa
- //que se va a ejecutar 5 veces
-
L MW 10 //leemos el valor de la memoria de datos en ACU 1
LOOP PROX //decrementamos ACU 1 y saltamos a PROX si no es cero
Ejemplo:
6.2.6 Instruccin LOOP
-
Automtica
Ejemplo
FUNCIONAMIENTO:
Realizar un programa que active el bit del byte de salida QB4 que indique el
valor que haya en el IB0, es decir:
- Si IB0 toma el valor 0, activar el bit 0 de QB124
- Si IB0 toma el valor 1, activar el bit 1 de QB124
- .......
- Si IB0 toma el valor 7, activar el bit 7 de QB124
Para valores no vlidos se apagarn todos los bits de salida
6.2.7 Problemas instrucciones salto
-
Automtica
Ejemplo de estructura if...then
FUNCIONAMIENTO:
Se trata de realizar una estructura if ... else if ... else ... que funcione de la
siguiente manera:
Si I 124.0 = 0 e I 124.1 = 1, resta los valores introducidos en las palabras de entrada IW 4 e IW 6.
Si I 124.0 = 1 e I 124.1 = 0, multiplica los valores introducidos en las palabras de entrada IW 4 e IW 8.
Si I 124.0 = 1 e I 124.1 = 1, suma los valores introducidos en las palabras de entrada IW 6 e IW 8.
Si no se da ninguna de las condiciones anteriores, mostrar un 0 en la palabra de salida QW 4
En todas las acciones anteriores hay que comprobar y actuar del modo y con la
prioridad siguiente:
Si se produce desbordamiento, indicarlo en la salida Q 124.0 Si el resultado es menor de 0, indicarlo en la salida Q 124.1 Si el resultado es igual a 0, indicarlo en la salida Q 124.2 y mostrarlo en la palabra de salida QW 4
Si no se produce desbordamiento y el resultado es mayor que 0, mostrarlo en la palabra de salida QW 4
6.2.7 Problemas instrucciones salto
-
Automtica
Se trata de realizar el siguiente algoritmo con instrucciones de salto:
6.2.7 Problemas instrucciones salto
Inicio
I124.0=1
M1.2 I124.3 Q124.1 Q124.0 I124.0
Q124.2 M1.0
Fin
S No
-
Automtica
Se trata de realizar el siguiente algoritmo con instrucciones de salto:
6.2.7 Problemas instrucciones salto
Inicio
I124.0=1
QW2 MW5
Fin
S No
Q124.0=1S No
M1.0 1 M1.0 0
-
Automtica
6.2.7 Problemas instrucciones salto
Resolver el siguiente
diagrama de flujo:
-
Automtica
6.2.7 Problemas instrucciones salto
Encontrar cul es el fallo de este cdigo
L 0
T MW0
L 5
SALTO: L MW0
L 8
+I
T MW0
LOOP SALTO
L MW0
T QW0
-
Automtica
6.2.7 Problemas instrucciones salto
Explicar qu hace el siguiente cdigoL 5
meta: T MB0
L 5
L MB0
==I
S Q4.0
L 4
L MB0
==I
S Q4.1
L 3
L MB0
==I
S Q4.2
L 2
L MB0
==I
S Q4.3
L 1
L MB0
==I
S Q4.4
L 0
L MB0
==I
S Q4.5
L MB0
LOOP meta
-
Automtica
6.2.8 Instrucciones de salto en KOP
Se dispone de las operaciones de salto
siguientes: --(JMP) Salto absoluto
--(JMP) Salto condicional
--(JMPN) Saltar si la seal es 0
El operando de una operacin de salto es una
meta.
La meta de destino ha de encontrarse siempre
al principio de un segmento. Para introducirla
hay que seleccionar LABEL en el cuadro KOP
-
Automtica
6.2.8 Instrucciones de salto en KOP
--(JMP) Salto absoluto
No hay otro elemento
KOP entre el conductor
izquierdo y la operacin
Cada salto tiene que
tener una meta.
-
Automtica
6.2.8 Instrucciones de salto en KOP
--(JMP) Salto
condicional
Cuando el RLO de la
combinacin lgica
anterior es "1"
Si un salto condicional
no se ejecuta, el RLO
cambia a "1" despus
de la operacin de
salto.
-
Automtica
6.2.8 Instrucciones de salto en KOP
--(JMPN) Saltar si la
seal es 0
Salta cuando el RLO de
la combinacin lgica
anterior es 0"
Si un salto condicional
no se ejecuta, el RLO
cambia a "1" despus
de la operacin de
salto.
-
Tema 6
Programacin de los autmatas programables
Tratamiento de seales analgicas
-
Automtica
Ejemplos de seales analgicas
Temperatura -50 ... +150C
Caudal 0 ... 200 l/min
Revoluciones 500 ... 1500 R/min
Velocidad: 0-150 Km/h
-
Automtica
Conversin en Autmata
Las seales analgicas son convertidas a
valores de voltaje, intensidad o resistencia
normalizados por un transductor.
Ej: Velocidad entre 500 y 1500 rev/min se
traduce a un rango de tensin entre 0-10V.
-
Automtica
Para 865 rev/min, el captador de medida
emitir un voltaje de + 3.65 V.
Como el rango de medida es de 1000
rev/min y el del sensor 10 V, la resolucin
es de 0.01 V/rev/min.
Conversin en Autmata. Ejemplo
-
Automtica
Conversin en Autmata (A/D)
Si se procesan mediciones similares con un
PLC, entonces el voltaje, intensidad o valor de
resistencia introducido debe ser convertido a
informacin digital.
Esta conversin se denomina conversin
Analgico--Digital (Conversin A/D). Esto
significa que, por ejemplo, el valor de voltaje de
3.65V se deposita como informacin en un
registro digital equivalente de unos y ceros
-
Automtica
Conversin en Autmata (A/D)
A mayor nmero de bits utilizados para la
representacin digital, mayor resolucin.
Con un bit de resolucin para el rango de
voltaje 0... +10V, obtenemos dos estados, uno
en el rango de 0...+5V y otro en el de
+5V...+10V.
Con dos bits, el rango se divide en 4 reas
individuales: 0... 2.5 / 2.5...5 / 5...7.5 / 7.5...10V.
Conversores A/D tpicos: 8 y 11 bits (256 y 2048
reas, respectivamente).
-
Automtica
Entradas analgicas en Siemens
Las entradas analgicas son seales de entrada
continuas.
El autmata incorpora un convertidor analgico
digital (A/D), muestrea un valor (seales
industriales homologadas) y lo traduce a bits.
Cuantos ms bits, ms definicin y precisin. La
resolucin de los mdulos utilizados es 27648.
Por tanto, son tratadas como tipo WORD
(entero). Para acceder a dicha palabra, lo
hacemos de forma directa (PIW). Ej: L PIW 752
-
Automtica
Salidas analgicas en Siemens
Las salidas analgicas son seales de salida
continuas.
El autmata incorpora un convertidor digital
analgico (D/A), que es el que realiza la
conversin del valor real.
Estas salidas tienen formato WORD (entero). Su
valor mximo es 27648. Se escriben directamente
en la periferia (PQW). Ej: T PQW 752
-
Automtica
Tratamiento en Siemens
Posibles resoluciones de valores analgicos
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
Con resoluciones
-
Automtica
Tratamiento en Siemens
Rango de entradas bipolares
Representacin binaria de los rangos de entrada
-
Automtica
Tratamiento en Siemens
Rango de entradas unipolares
-
Automtica
Escalado entradas analgicas
Una vez que el autmata tiene a su entrada un valor (0-
27648) asociado al transductor que ha traducido el
rango de la variable del sensor hay que programar el
escalado de dicho entero al valor real que representa. As, se puede establecer una relacin lineal entre el
nmero entero que tenemos asociado a la entrada del
autmata y el valor real que representa.
mnValorEntradabitsRango
mnValormxValorrealValor _
_
___
-
Automtica
Ejemplo escalado entrada analgica
Se tiene un sensor de temperatura cuyo rango de
medida es 10C-90C. Qu temperatura mide si en la
entrada de periferia se lee el valor 10428?
Valor mn.: 10C (entrada=0)
Valor mx.: 90C (entrada=27648); Rango bits= 27648
mnValorEntradabitsRango
mnValormxValorrealValor _
_
___
-
Automtica
Ejemplo escalado entrada analgica
La ecuacin que relaciona la entrada con el valor real es:
CrealValor
EntradarealValor
17.40)10428(_
10*029.0_
10
90
27648
Valor
Entrada
-
Automtica
Ejemplo escalado entrada analgica
Solucin en AWL:
L PIW 752 // Valor analgico de entrada de 0 a 10 V:
// contiene valores enteros de 0 a 27648 (16 Bits)
ITD // Conversin de entero (16 Bits) a entero (32 Bits)
DTR // Conversin de entero (32 Bits) a valor real
L 2.7648e+4 //
/R // Divisin con el nmero real 27648
L 8.000e+1
*R // Multiplicacin con el nmero real 80 (90-10)
L 1.000e+1
+R // Suma con el nmero real 10 (Deriva)
T MD10 // Valor normalizado 10 a 90 en formato real
mnValorEntradabitsRango
mnValormxValorrealValor _
_
___
-
Automtica
Desescalado salida analgica
Si se quiere llevar un actuador a un valor real, es
necesario cargar en una salida analgica el entero que
corresponde a dicho valor.
As, se puede establecer una relacin lineal entre el
valor real deseado y el nmero entero que necesitamos
a la salida del autmata.
_ _( _ )
_ _
Valor real Valor mnSalida Rango bits
Valor mx Valor mn
-
Automtica
Ejemplo desescalado salida analgica
Se quiere imprimir a un motor una velocidad que oscila de
500 rev/min a 1500 rev/min. Qu valor hay que cargar en
la salida de periferia si la velocidad deseada es de 850
rev/min?
Valor mn.: 500 rev/min (salida=0)
Valor mx.: 1500 rev/min (salida=27648); Rango bits= 27648
_ _( _ )
_ _
Valor real Valor mnSalida Rango bits
Valor mx Valor mn
-
Automtica
Ejemplo desescalado salida analgica
La ecuacin que el valor real con la salida es:
y = 27,64x - 13824
-5000
0
5000
10000
15000
20000
25000
30000
0 200 400 600 800 1000 1200 1400 1600
Relacin Salida_aut-Valor_real
(Valor redondeado entero ms prximo)9677)850(
13824_648,27
Salida
realValorSalida
Salida
Valor_real (rpm)
-
Automtica
Ejemplo desescalado salida analgica
Solucin en AWL:
L MD20 // Valor de 500 a 1500 rpm en formato real
L 5.000e+2
-R // Resta el Valor_mn 500.0 (Deriva)
L 1.000e+3
/R // Divisin por Valor_mx-Valor_mn 1000.0
L 2.7648e+4
*R // Multiplicacin por Rango_bits 27648.0
RND // Redondeo a entero
T PQW 288 // El nmero entero de 0 a 27648 (16 Bits)
// corresponde al valor analgico de
// salida de 0 a 10 V
_ _( _ )
_ _
Valor real Valor mnSalida Rango bits
Valor mx Valor mn
-
Automtica
Notas al escalado y desescalado
A la hora de programar ambos procesos en el autmata
hay que trabajar con los tipos de datos correctos
(Enteros y Reales) y hay que utilizar las instrucciones de
conversin correspondientes. Ej: valor redondeado de
salida del valor del problema anterior (9676,8)
Las ecuaciones de las rectas se pueden calcular de la
forma que se considere ms adecuada (punto-
pendiente, dos puntos, continua).
El rango de bits depender de que se trabaje de forma
unipolar (0->27648) o bipolar (-27648->27648).
-
Automtica
Bibliografa
MANDADO, E.; et al. Autmatas programables y sistemas de automatizacin. 2 edicin. Barcelona: Marcombo, 2009. 1085 p. ISBN:978-84267-1575-3.
Siemens; S7-300 CPU 31XC y CPU31x: Configuracin e instalacin. Siemens, 2011.
Siemens; Esquema de contactos (KOP) para S7-300 y S7-400. Manual de referencia. Siemens, 2006.