Anda di halaman 1dari 194

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

Variables
predefinidas
Operaciones
lgicas
bsicas

Operaciones
con
parntesis

Terminar
una cadena
lgica
Operaciones
con flancos

STEP7 inglesa (Internacional)

STEP7 alemana (SIMATIC)

Entradas
Salidas
Marcas
Carga inicial
Y
NO-Y
O
NO-O
O-exclusiva
NO-O-exclusiva
Y
NO-Y
O
NO-O
O-exclusiva
NO-O-exclusiva
Cerrar parntesis

I, IB, IW, ID
Q, QB, QW,QD
M, MB, MW, MD
A O
A
AN
O
ON
X
XN
A(
AN(
O(
ON(
X(
XN(
)

E, EB, EW, ED
A, AB, AW, AD
M, MB, MW, MD
UO
U
UN
O
ON
X
XN
U(
UN(
O(
ON(
X(
XN(
)

Asignar
Desactivar
Activar
Flanco negativo
Flanco positivo

=
R
S
FN
FP

=
R
S
FN
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
AN
A
)
O(
A
A
A
)
=

I
I
Q

124.0
124.1
124.2

M
I
M

0.0
124.3
0.2

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 7


Denominacin

Bit
s

Ejemplo

Descripcin

BOOL

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

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

Carcter

AUTOMATA

Cadena de caracteres

STRING

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
Concepto de Instruccin
Instruccin A I124.0
(unidad ms pequea del programa)

124.0

Operacin

Operando

(qu debe hacerse?)

(con qu?)

124.0

Ubicacin

Parmetro

124.0
Direccin byte

Direccin Bit

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
E
A
M
P
L
T
Z
DB

Ingls
I
Q
M
P
L
T
C
DB

entrada
salida
marca
periferia (acceso directo)
datos locales
temporizador
contador
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
Direccionamiento absoluto

Operando
Ubicacin
en memoria
I

Direccin Direccin
byte
Bit

124 . 0

(I/Q/M/P/L/C/DB)

Direccionamiento simblico
Operando
I 124.0

Smbolo
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
palabra

Marcas (bit, byte,


y doble palabra)

T y C (T y Z)

Temporizadores y
contadores

FB, FC, SFB, SFC, OB, DB Bloques de programa

Automtica
Q

Automtica

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 <operando> 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 <operando> 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 <operando> 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 <operando> 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 <operando> se pone a "1".
Si no fluye corriente hasta la bobina (RLO = 0), el bit en
el <operando> 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 <operando> 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 <operando> 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 <operando>
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 flipflop de activacin ejecuta en el <operando> 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 <operando> 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
OR -

-A
O
OR exclusiva - X
Salida - =
NOT
Activar - S
Desactivar - R
Flip-Flop SR y RS
SET, CLR
Flancos FP, FN

Automtica

AND

A
A
=

I 124.0
I 124.1
Q 124.1

Automtica

AND NOT

AN I 124.0
A I 124.1
= Q 124.1

Automtica

OR

O
O
=

I 124.0
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
AN I
O
AN I
A
I
=
Q

124.0
124.1
124.0
124.1
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
S
A
R

I 124.0
Q 124.1
I 124.1
Q 124.1

Automtica

Flip-Flop

A
S
A
R
A
=

I 124.0
M 0.0
I 124.1
M 0.0
M 0.0
Q 124.2

Automtica

SET - CLR
SET
=
Q
=
Q

124.0
124.1

CLR
=
Q
=
Q

124.3
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 datos


KOP

Carga y Transferencia de Datos


Ejemplos:
L
L
L
L

+5
// Carga entero de 16-bit
L#523123 // Carga entero de 32-bit
B#16#EF
// Carga hexadecimal de 8-bit
2#0001_0110_1110_0011
// Carga binario de 16-bit
L TOD#1:10:3.3
// Carga tiempo de 32-bit

AWL

L - Carga
T - Transferencia

T MB0
T AD256

// Transferir valor al byte de


marcas 0
// Transferir valor a la
doble palabra de salida 256

MOVE (KOP)

(Todos los tipos de


datos con 8, 16, 32
bits)

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
L
SP
A
R
L
T
LC
T
A
=

I
124.0
S5T#3S
T
1
I
124.1
T
1
T
1
MW
10
T
1
MW
12
T
1
Q
124.1

Automtica

S_VIMP [S_PEXT]

Impulso prolongado

Automtica

S_VIMP

[S_PEXT]

Automtica

S_VIMP [S_PEXT]

A
L
SE
A
R
L
T
LC
T
A
=

I
124.0
S5T#3S
T
1
I
124.1
T
1
T
1
MW
10
T
1
MW
12
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
L
SD
A
R
L
T
LC
T
A
=

I
124.0
S5T#3S
T
1
I
124.1
T
1
T
1
MW
10
T
1
MW
12
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
L
SS
A
R
L
T
LC
T
A
=

I
124.0
S5T#3S
T
1
I
124.1
T
1
T
1
MW
10
T
1
MW
12
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
L
SF
A
R
L
T
LC
T
A
=

I
124.0
S5T#3S
T
1
I
124.1
T
1
T
1
MW
10
T
1
MW
12
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
CU
A
CD
A
L
S
A
R
A
=

I
C
I
C
I
C#5
C
I
C
C
Q

124.1
1
124.2
1
124.3
1
124.4
1
1
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
CU
BLD
A
L
S
A
R
NOP
NOP
A
=

I
C
101
I
C#5
C
I
C
0
0
C
Q

124.1
1
124.3

1
124.4
1

1
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
CD
BLD
A
L
S
A
R
NOP
NOP
A
=

I
C
101
I
C#5
C
I
C
0
0
C
Q

124.1
1
124.3

1
124.4
1

1
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
Real

entero

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
en ACU1

(32 bits)

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

3.4 Enteros

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

Automtica

3.5 Doble entero

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

Automtica

3.6 Reales

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

Automtica

3.6 Reales

Se pueden expresar de forma exponencial o


como quebrados.
Ejemplo:
L

El editor Step-7 lo pasa automticamente a la


forma exponencial:
L

4.83 //Carga el nmero real 4,83 en ACU1

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, <=I

Ejemplo:
L MW10
L IW24
>I

= M 2.0

//Cargar el contenido de MW10 (entero de 16 bits).


//Cargar el contenido de IW24 (entero de 16 bits).
//Comparar si el ACU2-L (MW10) es mayor (>) que el
//ACU1-L (IW24).
//RLO = 1, si MW10 > IW24.

Automtica

4.1.1.2 Comparacin de enteros


dobles(AWL)
Formato: ==D, <>D, >D, <D, >=D, <=D

Ejemplo:
L MD10
L ID24
>D

= M 2.0

//Cargar el contenido de MD10 (entero de 32 bits).


//Cargar el contenido de ID24 (entero de 32 bits).
//Comparar si el ACU 2 (MD10) es mayor (>) que el
//ACU 1 (ID24).
//RLO = 1, si MD10 > ID24.

Automtica

4.1.1.3 Comparacin de reales (AWL)

Formato: ==R, <>R, >R, <R, >=R, <=R

Ejemplo:
L MD10
L 1.359E+02
>R

= M 2.0

//Cargar el contenido de MD10 (nmero real).


//Cargar la constante 1.359E+02.
//Comparar si el ACU 2 (MD10) es mayor (>) que el
//ACU 1 (1.359E+02).
//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
IN1
IN1
IN1
IN1
IN1

es igual a IN2
es diferente a IN2
es mayor que IN2
es menor que IN2
es mayor o igual a IN2
es menor o igual a IN2

Si la comparacin es verdadera, el RLO de la


operacin es "1". El RLO se combina mediante una Y
lgica con el RLO del circuito completo siempre que el
elemento de comparacin est conectado en serie, y
mediante una O lgica si el cuadro est conectado en
paralelo.

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

124.1

BARRERA2
VACIO
NO VACIO

I 124.2
Q 124.0
Q 124.1

>= CINCUENTA % Q

124.2

>= NOVENTA %
LLENO

124.3
124.4

Q
Q

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, *D


multiplica 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.

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

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

Automtica

4.2.1.2 Ops. Aritm. con reales (AWL)

Las instrucciones +R, -R, *R, /R


combinan 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 <= arcoseno(ACU1) <= pi/2
Instruccin ACOS : Calcula el arcocoseno de ACU1 (entre 1 y 1). El
resultado es un ngulo indicado en radianes:
0 <= arcocoseno(ACU1) <= pi
Instruccin ATAN : Calcula el arcotangente de ACU1. El resultado es
un ngulo indicado en radianes: pi/2 <= arcotangente(ACU1) <= 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)

Ejemplo:

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.

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 estado


operaciones 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 estado


operaciones 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 2831,+: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 con las que se va a controlar el orden
de ejecucin de las instrucciones

Operaciones de salto
Llamada a funciones o a bloques de
funcin, CALL

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


Ejemplo:
JU
AQUI:

JL

A
JU
NOP
A
=
L
JL
JU
JU
JU

DEF:

CERO:

BEU
...

UNO:

BEU
...

DOS:

BEU
...

I 1.0
AQU
0
I 2.0
Q 3.0

//
//
//
//
//

cargamos en el RLO el valor de la entrada 1.0


saltamos de forma incondicional a la lnea con meta "AQUI"
esta lnea no se ejecuta (es saltada)
aqu contina la ejecucin del programa
introducimos el resultado en la salida 3.0

MB100
DEF
CERO
UNO
DOS
...
...

//
//
//
//
//

cargamos
saltamos
se salta
se salta
se salta

en el ACU1 un byte
a DEF si el valor de ACU1 no est en la lista
a CERO si ACU1 vale 0
a UNO si ACU1 vale 1
Lista de metas
a UNO si ACU1 vale 2

//(fin de bloque incondicionado). Salta al final del bloque


...
// Fin de bloque incondicionado
...
// Fin de bloque incondicionado
...

BEU

// Fin de bloque incondicionado

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


Solucin

NORM:
UNO:

DOS:
CONT:

L
JL

IB 4
NORM

JU
JU
CLR
JU
A
JU
A
JU
=

UNO
DOS
CONT
I 124.0
CONT
I 124.1
CONT
Q 124.0

//
//
//
//
//

cargamos en ACU1 un valor del byte de entrada


se salta a NORM si el valor de ACU1
no est en lista
se salta a UNO si ACU1 vale 0
se salta a CONT si ACU1 vale 1

//
//
//
//
//
//
//

se salta a CONT de forma incondicional


instruccin meta del salto UNO
se salta a CONT de forma incondicional
instruccin meta del salto DOS
se salta a CONT de forma incondicional
aqu saltamos finalmente,
continuando el programa

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
AQUI:

JC

AQUI:

A
JU
NOP
A
=

A
JCN
A
=
NOP

I 1.0
AQU
0
I 2.0
Q 3.0

I 1.0
AQUI
I 2.0
Q 3.0
0

//
//
//
//
//

cargamos en el RLO el valor de la entrada 1.0


saltamos de forma incondicional a la lnea con meta "AQUI"
esta lnea no se ejecuta (es saltada)
aqu contina la ejecucin del programa
introducimos el resultado en la salida 3.0

//cargamos en el RLO el valor de la entrada 1.0


//saltamos a la lnea con meta "AQUI si I 1.0 = 0 (RLO=0)
//esta lnea se ejecutar si el RLO=1
//esta lnea se ejecutar si el RLO=1

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
-

OVER1:

OVER2:
NEXT:

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
L
*I
JO
L
+I
L
-I
JOS
T
A
R
A
R
JU
AN
S
JU
AN
S
NOP 0

IW10
MW12
OVER1
DBW25

Ejemplo:
// Saltar si hay desbordamiento en el producto anterior, OV = 1

MW14
OVER2
MW16
M 4.0
M 4.0
M 4.1
M 4.1
NEXT
M 4.0
M 4.0
NEXT
M 4.1
M 4.1

// Saltar si desbordamiento en una de las 3 operaciones, OS = 1


// La ejecucin del programa contina aqu
// en caso de no ejecutarse el salto

// El programa contina aqu despus de saltar a la meta OVER1

// El programa contina aqu despus de saltar a la meta OVER2


// El programa contina aqu despus de saltar a la meta NEXT

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:

RES0:

RES1:

RES2:

NEXT:

L
L
-I
JZ
JM
JUO
AN
S
JU
AN
S
JU
AN
S
JU
AN
S
JU
NOP 0

IW8
MW12
RES0
RES1
RES2
M 4.0
M 4.0
NEXT
M 4.1
M 4.1
NEXT
M 4.2
M 4.2
NEXT
M 4.3
M 4.3
NEXT

//Restar el contenido de MW12 del contenido de IW8.


//Saltar si resultado = 0 (es decir, si el contenido de ACU 1 = 0).
//Saltar si resultado < 0 (es decir, si el contenido de ACU 1 < 0).
//Saltar si resultado no vlido
//La ejecucin del programa contina aqu en caso de no ejecutarse
//ningn salto.
//La ejecucin del programa contina aqu despus de haber
// saltado a la meta RES0.
//La ejecucin del programa contina aqu despus de haber saltado
//a la meta RES1.
//La ejecucin del programa contina aqu despus de haber saltado
//a la meta RES2.
//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

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.
Ejemplo:

A
BEC
A
=
BEU
A
S

I 1.0

//introducimos en el RLO el valor de la entrada 1.0


//si la entrada 1.0 vale 1 el mdulo acaba aqu

I 2.0
Q 3.0
I 1.1
Q 4.0

//aqu finaliza el mdulo de forma incondicional


//estas instrucciones nunca se ejecutaran

Automtica

6.2.6 Instruccin LOOP


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

NO

ACU1 L=0?
SI
Siguiente
instruccin

Automtica

6.2.6 Instruccin LOOP


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.
-

Ejemplo:
PROX:

L +5
T MW 10
L MW 10
LOOP PROX

//Hacemos el ACU 1 igual a 5


//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
//leemos el valor de la memoria de datos en ACU 1
//decrementamos ACU 1 y saltamos a PROX si no es cero

Automtica

6.2.7 Problemas instrucciones salto


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

Automtica

6.2.7 Problemas instrucciones salto


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

Automtica

6.2.7 Problemas instrucciones salto


Se trata de realizar el siguiente algoritmo con instrucciones de salto:

Inicio
S
M1.2

I124.0=1

I124.3

No
Q124.1

Q124.2

Fin

M1.0

Q124.0 I124.0

Automtica

6.2.7 Problemas instrucciones salto


Se trata de realizar el siguiente algoritmo con instrucciones de salto:

Inicio
S
QW2

No

MW5

S
M1.0

I124.0=1

Q124.0=1

No
M1.0

Fin

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


L0
T MW0
L5
SALTO: L MW0
L8
+I
T MW0
LOOP SALTO
L MW0
T QW0

Automtica

6.2.7 Problemas instrucciones salto

Explicar qu hace el siguiente cdigo


L5
meta: T MB0
L5
L MB0
==I
S Q4.0
L4
L MB0
==I
S Q4.1
L3
L MB0
==I

L2
L MB0
==I
S Q4.3
L1
L MB0
==I
S Q4.4
L0
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

Conversin en Autmata. Ejemplo


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.

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

Con resoluciones <15 bits se ponen a "0" los bits


identificados con "x".
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

Automtica

Tratamiento en Siemens

Representacin binaria de los rangos de entrada

Rango de entradas bipolares

Automtica

Tratamiento en Siemens

Rango de entradas unipolares

Automtica

Escalado entradas analgicas

Una vez que el autmata tiene a su entrada un valor (027648) 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.

Valor _ real

Valor _ mx Valor _ mn
Entrada Valor _ mn
Rango _ bits

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

Valor _ real

Valor _ mx Valor _ mn
Entrada Valor _ mn
Rango _ bits

Automtica

Ejemplo escalado entrada analgica


La ecuacin que relaciona la entrada con el valor real es:

Valor _ real 0.029 * Entrada 10


Valor _ real(10428) 40.17 C
Valor
90

10

Entrada
27648

Automtica

Ejemplo escalado entrada analgica


Valor _ mx Valor _ mn
Valor _ real
Entrada Valor _ mn
Rango _ bits
Solucin en AWL:
L
PIW 752
ITD
DTR
L
/R
L
*R
L
+R
T

2.7648e+4

//
//
//
//
//
//

Valor analgico de entrada de 0 a 10 V:


contiene valores enteros de 0 a 27648 (16 Bits)
Conversin de entero (16 Bits) a entero (32 Bits)
Conversin de entero (32 Bits) a valor real
Divisin con el nmero real 27648

8.000e+1
// Multiplicacin con el nmero real 80 (90-10)
1.000e+1

MD10

// Suma con el nmero real 10 (Deriva)


// Valor normalizado 10 a 90 en formato real

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 _ mn


Salida
( 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 _ mn


Salida
( Rango _ bits)
Valor _ mx Valor _ mn

Automtica

Ejemplo desescalado salida analgica


La ecuacin que el valor real con la salida es:

Salida 27,648 Valor _ real 13824


(Valor redondeado entero ms prximo)

Salida(850) 9677

Relacin Salida_aut-Valor_real

Salida
30000

y = 27,64x - 13824
25000
20000
15000
10000
5000
0
-5000

200

400

600

800

1000

1200

1400

1600

Valor_real (rpm)

Automtica

Ejemplo desescalado salida analgica


Valor _ real Valor _ mn
Salida
( Rango _ bits)
Valor _ mx Valor _ mn
Solucin en AWL:
L
MD20
L
5.000e+2
-R
L
1.000e+3
/R
L
2.7648e+4
*R
RND
T
PQW 288

// Valor de 500 a 1500 rpm en formato real


// Resta el Valor_mn 500.0 (Deriva)
// Divisin por Valor_mx-Valor_mn 1000.0
//
//
//
//
//

Multiplicacin por Rango_bits 27648.0


Redondeo a entero
El nmero entero de 0 a 27648 (16 Bits)
corresponde al valor analgico de
salida de 0 a 10 V

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 (puntopendiente, 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:97884267-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.

Anda mungkin juga menyukai