Sie sind auf Seite 1von 85

Tema 4: Programacin de Autmatas SIMATIC S7-300

Tipos de datos y operandos


Direccionamiento de la memoria.
Leguajes de programacin en STEP7
Combinaciones binarias.
Operaciones de asignacin.
Operaciones de memorizacin
Creacin de un programa simple. Smbolos
Deteccin de flancos y otras operaciones
Temporizadores y contadores.
Operaciones aritmticas.
Programacin modular
Ejemplos.

ISA - Vigo 2015 Programacin de Autmatas 2


Variables binarias: Tipos de datos

BOOL Los datos de este tipo consisten en combinaciones de


BYTE bits: desde un nico bit en el tipo BOOL hasta 32 bits
WORD en el tipo DWORD
DWORD
CHAR Son caracteres del cdigo ASCII. Cada carcter
ocupa un byte (8 bits).
INT Datos escalares. Se utilizan para almacenar y
DINT procesar valores. (Por ejemplo para clculos
REAL aritmticos).

S5TIME Los datos de este tipo representan intervalos de


TIME tiempo, horas y fechas. (Por ejemplo para establecer
DATE el valor inicial de un temporizador)
TIME_OF_DAY

ISA - Vigo 2015 Programacin de Autmatas 3


Variables binarias: Operandos

 E(I): Entradas.
 A(Q): Salidas.
 M : Marcas. (voltiles y no-voltiles, parametrizable)
 D : Datos.
 T : Temporizadores.
 Z(C) : Contadores.
 Constantes: TRUE, FALSE, +3100, -1.5e+34, #2, B#, W#,
L#, S5T#, C#, ...
Adems
 OB, FC, FB, DB: Mdulos organizativos.

ISA - Vigo 2015 Programacin de Autmatas 4


SIMATIC S7-300: Espacios de direccionamiento - Operandos

rea de direcciones Acceso al rea Abrev. Mx. direcc. rea


Imagen de proceso E/S entrada / salida bit E/A 0.0 a 65535.7
entrada / salida byte EB / AB 0 a 65535
entrada / salida palabra EW / AW 0 a 65534
entrada / salida doble palabra ED / AD 0 a 65532

Marcas bit de memoria M 0.0 a 255.7


byte de memoria MB 0 a 255
palabra de memoria MW 0 a 254
doble palabra de memoria MD 0 a 252
Acceso a periferia E/S byte E/A, periferia PEB / PAB 0 a 65535
palabra E/A, periferia PEW/PAW 0 a 65534
doble palabra E/A, periferia PED/PAD 0 a 65532
Temporizador Temporizador (T) T 0 a 255
Contador Contador (Z) Z 0 a 255

Mdulo de datos Bit,byte,palabra,doble palabra DBX,DBB 0a 65532


DBW,DBD
Mdulo de datos
de instancia Bit,byte,palabra,doble palabra DIX,DIB 0a 65532
DIW,DID

ISA - Vigo 2015 Programacin de Autmatas 5


SIMATIC S7-300: Direccionamiento de la memoria de E/S

 Entradas y salidas digitales : bytes 0..127.


32 bits (4 bytes) por mdulo => hasta 32 mdulos.
Byte Origen : puesto de enchufe * 4.

 Entradas y salidas analgicas : bytes 256..752.


16 bytes por mdulo => hasta 16 mdulos.
Mdulos de 4 canales de 16 bits.
Byte Origen: 256 + puesto de enchufe * 16.

 Hay zonas de memoria de E/S que quedan sin usar.

ISA - Vigo 2015 Programacin de Autmatas 6


SIMATIC S7-300: Direccionamiento de la memoria de E/S

 Direccionamiento digital (bytes PAA de direccin 0 - 127)

CPU IM
y
0.0 4.0 8.0 12.0 16.0 20.0 24.0 28.0
fuente de a a a a a a a a
alimentacin (emisor)
3.7 7.7 11.7 15.7 19.7 23.7 27.7 31.7

IM

(receptor
32.0 36.0 40.0 44.0 48.0 52.0 56.0 60.0
y a a a a a a a a
fuente de
alimentacin)
35.7 39.7 43.7 47.7 51.7 55.7 59.7 63.7

... las restantes direcciones digitales se dividen en grupo de cuatro bytes sucesivos por mdulo
desde 64,0 a 127,7 (16 mdulos adicionales en dos racks adicionales)

 Direccionamiento analgico (bytes PAA de direccin 256 - 752)

CPU IM 256 272 288 304 320 336 352 368


y
fuente de a a a a a a a a
alimentacin (emisor) 271 287 303 319 335 351 367 383

ISA - Vigo 2015 Programacin de Autmatas 7


Programacin en Step7: Lenguajes bsicos de programacin

KOP (LD) FUP (FBD) AWL (IL)


Diagrama de contactos Diagrama de funciones Lista de instrucciones

E 0.0
U E 0.0
&
E 0.1
U E 0.1
E 0.0 E 0.1 A 4.0 1
O
E 0.2 A 4.0
E 0.2 E 0.3 & U E 0.2
=
E 0.3
U E 0.3

= A 4.0

ISA - Vigo 2015 Programacin de Autmatas 8


Programacin en Step7: Lenguajes avanzados de programacin

S7-GRAPH (SFC) SCL (Pascal) HIGRAPH


Diagrama funcional de secuencias Lenguaje de control estructurado Especfico siemens
ORGANIZATION_BLOCK OB1 No IEC 1131
VAR_TEMP // Variables temporales
info : ARRAY[0..19] OF BYTE;
END_VAR

// Instrucciones
BEGIN
IF E0.0=1 then
A0.0:=1;
A0.1:=1;
ELSE
AB0:=0;
END_IF;
END_ORGANIZATION_BLOCK

ISA - Vigo 2015 Programacin de Autmatas 9


Lista de instrucciones: Formato de las instrucciones en AWL

Operacin Operando Comentario

U E 0.1 // A I 0.1
Posicin en memoria
Tipo de operando del operando

* NOTA: Se puede utilizar la nemotecnia alemana o la internacional. En la


anterior instruccin el comentario muestra la nemotecnia internacional. En
esta presentacin se aplicar de forma preferente la alemana.

ISA - Vigo 2015 Programacin de Autmatas 10


Programacin bsica: Operaciones Binarias - O lgica

Esquema elctrico
Diagrama de funciones (FUP)
S3 S5 E 5.0 >=1
(E 5.0) (E 8.1)
E 7.1 = A 1.2
OR S4
(E 7.1) E 8.1

L3 (A 1.2)
Diagrama de contactos (KOP)

Lista de instrucc. (AWL)


O E 5.0
E 5.0 A 1.2

O E 7.1 E 7.1
ON E 8.1
= A 1.2 E 8.1

ISA - Vigo 2015 Programacin de Autmatas 11


Programacin bsica: Operaciones Binarias
AWL RTL Descripcin del comportamiento
O A 5.1 RLO A5.1 Selecciona la variable de salida externa
A5.1
O E 3.1 RLO RLO + E3.1 O lgica entre A5.1 y E3.1
O M 7.1 RLO RLO + M7.1 O lgica de M7.1 con el resultado de la
operacin lgica O anterior
= A 0.1 A0.1 RLO Asigna a la salida externa A0.1 el
resultado anterior
AWL RTL Descripcin del comportamiento
UN E 1.0 RLO E1.0 Selecciona la variable de entrada E1.0
invertida y transfiere su valor lgico al
RLO.
U E 1.1 RLO RLO E1.1 Realiza la operacin lgica Y entre el
contenido del RLO y la variable lgica
E1.1, y almacena el resultado en el RLO.
U M 1.7 RLO RLO M1.7 Realiza la operacin lgica Y entre el
contenido del RLO y la variable lgica
M1.7, y almacena el resultado en el RLO.
U A 2.3 RLO RLO A2.3 Realiza la operacin lgica Y entre el
contenido del RLO y la variable lgica
A2.3, y almacena el resultado en el RLO. El
valor final del RLO es igual a
E1.0 E1.1 M1.7 A2.3
ISA - Vigo 2015 Programacin de Autmatas 12
Programacin bsica: Operaciones Binarias - Varias salidas

Diagrama de funciones (FUP)


AWL
O E 5.0
E 5.0 >=1
A 7.1 = A 8.1
O A 7.1
= A 8.1 = A 1.2

= A 1.2

E 5.0 A 8.1

Plano de contactos A 7.1 A 1.2


(KOP)

ISA - Vigo 2015 Programacin de Autmatas 13


Programacin bsica: Operaciones Binarias - Y delante de O

Diagrama de funciones (FUP)

AWL
E 5.0 &
A 7.1 >=1 A 1.2
U E 5.0
UN A 7.1 E 8.1 &
O( M 7.1
U E 8.1
U M 7.1
) Plano de contactos (KOP)
= A 1.2 E 5.0 A 7.1 A 1.2

E 8.1 M 7.1

ISA - Vigo 2015 Programacin de Autmatas 14


Programacin bsica: Operaciones Binarias - O delante de Y

Diagrama de funciones (FUP)

AWL E 5.0 >=1


& A 1.2
U(
E 8.1

O E 5.0
A 7.1 >=1
O E 8.1 M 7.1
)
U(
ON A 7.1 Plano de contactos (KOP)
O M 7.1 E 5.0 A 7.1 A 1.2
)
= A 1.2 E 8.1 M 7.1

ISA - Vigo 2015 Programacin de Autmatas 15


Ejemplo: Operaciones Binarias

La luz debe encenderse cuando S1 est activado y S2 no est activado


Hardware

S1 S2 S1 S2 S1 S2

I1.0
E 1.0 I1.1
E 1.1 I1.0
E 1.0 I1.1
E 1.1. I1.0
E 1.0 I1.1
E 1.1
Controlador programable Controlador programable Controlador programable
A 4.0 A 4.0 A 4.0

Luz Luz Luz

ISA - Vigo 2015 Programacin de Autmatas 16


Programacin bsica: Operaciones Binarias O exclusiva lgica

KOP FUP AWL

E 0.4 & U E 0.4


E 0.4 E 0.5 A 8.0 A 8.0 UN E 0.5
E 0.5 >=1 O
=
UN E 0.4
E 0.4 & U E 0.5
E 0.4 E 0.5 E 0.5 = A 8.0

A 8.0 X E 0.4
E 0.4 XOR X E 0.5
=
E 0.5 = A 8.0

ISA - Vigo 2015 Programacin de Autmatas 17


Programacin bsica: Instrucciones que operan con variables lgicas

Operador Modificador Operando Descripcin


UO N Variable lgica Carga en el RLO la primera variable.
(Boolean)
= N Variable lgica Acta sobre una variable de salida.
S Variable lgica Si RLO=1 pone a 1 una variable.
R Variable lgica Si RLO=1 pone a 0 una variable.

U N, ( Variable lgica Y lgica.


O N, ( Variable lgica O lgica.
X N, ( Variable lgica O exclusiva.

) Evala la operacin aplazada.


NOT RLO Invierte el contenido del RLO.
CLR RLO Pone a cero el RLO.
SET RLO Pone a uno el RLO.
Variable lgica Flanco positivo o de subida.
FP
Variable lgica Flanco negativo o de bajada.
FN

ISA - Vigo 2015 Programacin de Autmatas 18


Ejemplo: Ecuacin Lgica

A8.1 = [( E 7.1 + E 9.2) * A5.3] + ( M 3.1 * E 6.0 + A6.1)

O E 7.1 // Carga la variable E 7.1 en el RLO.


O E 9.2 // O lgica entre E 7.1 y E 9.2 Primera expresin.
UN A 5.3 // Y lgica entre A5.3 y (E 7.1+E 9.2)
O( // Inicia una nueva expresin
U M 3.1 // Carga el valor de la variable M 3.1
U E 6.0 // Y lgica entre M 3.1 y E 6.0 Segunda expresin.
ON A 6.1 // O lgica entre A 6.1 y M 3.1*E 6.0
) // O lgica entre la primera y la segunda expresin.
= A 8.1 // Asigna el resultado a la salida A 8.1

ISA - Vigo 2015 Programacin de Autmatas 19


Programacin bsica: Operaciones de Memoria

 S : SET (activar) - poner a 1 permanente


 R : RESET (desactivar) - poner a 0 permanente
 = : Asignar - poner el resultado actual
El registro RLO (1 bit) almacena el resultado de las
combinaciones binarias.
Las operaciones Activar y Desactivar solo se ejecutan cuando
RLO es igual a 1.
La operacin Asignar se efecta en cada ciclo.

O-Lgica con dos operaciones de asignacin ?

ISA - Vigo 2015 Programacin de Autmatas 20


Programacin bsica: Operaciones de Memoria Marcha/Paro

 Programacin de un Biestable (Set-Reset).

U(
O E 0.0 U E 0.0
E0.0 A1.0 S A 1.0
 O A 1.0
 U E 0.1
)
E0.1 UN E 0.1 R A 1.0
A1.0 = A 1.0

ISA - Vigo 2015 Programacin de Autmatas 21


Programacin bsica: Operaciones de Memoria - Biestable (Set-Reset)

Diagrama de funciones (FUP)


M 0.0
AWL SR
E 0.0 S
U E 0.0 A 1.0
R Q
S M 0.0
E 0.1 =

U E 0.1
R M 0.0 Diagrama de contactos (KOP)
M 0.0
E 0.0 SR A 1.0
U M 0.0 S Q
= A 1.0 E 0.1
R

En KOP y FUP adems de los biestables SR con prioridad al reset


existen los biestables RS (prioridad al set) y las operaciones S, R
ISA - Vigo 2015 Programacin de Autmatas 22
Ejemplo: Trasvase de lquido en un tanque

 El sistema emplea una vlvula de llenado y otra de vaciado y


sensores de tanque lleno y tanque vaco.
U E 0.1
E0.0

Memorizado
S A 1.1
Parar U E 0.1
O E 0.0

Simple
U E 0.4
E0.2 E0.1
ON E 0.4
UN E 0.0
R A 1.1
llenado vaciado = A 1.1
U E 0.2
A 1.0
E 0.3 U E 0.2 S A 1.0
UN E 0.3
Tanque UN E 0.0
O E 0.0
O E 0.3
E 0.4 = A 1.0
A 1.1 R A 1.0
BE BE
Orientado hacia las salidas Prioridad al reset

ISA - Vigo 2015 Programacin de Autmatas 23


Ejemplo: Trasvase de lquido entre tanques (I)

El sistema emplea una sola bomba y controla el flujo con 2 pares


de electrovlvulas. Los tanques disponen de flotadores destinados
a detectar nivel mnimo y mximo.

A4.1 A4.3
E0.3 E0.5

A4.0
Tanque 1 Tanque 2

E0.4 E0.6

A4.2 A4.4
E0.0 E0.1 E0.2
Tq1 => Tq2 Tq2 => Tq1 PARAR

ISA - Vigo 2015 Programacin de Autmatas 24


Ejemplo: Trasvase de lquido entre tanques (II)

A4.1 A4.3
E0.3 E0.5

A4.0
Tanque 1 Tanque 2

E0.4 E0.6

A4.2 A4.4
E0.0 E0.1 E0.2
Tq1 => Tq2 Tq2 => Tq1 PARAR

U E 0.0 O E 0.2 U M 0.0 O M 0.0


S M 0.0 ON E 0.4 = A 4.2 O M 0.1
R M 0.1 O E 0.5 = A 4.3 = A 4.0
U E 0.1 R M 0.0 U M 0.1 BE
S M 0.1 O E 0.2 = A 4.1
R M 0.0 ON E 0.6 = A 4.4
O E 0.3
R M 0.1
ISA - Vigo 2015 Programacin de Autmatas 25
Ejemplo: Trasvase de lquido entre tanques (II)

U E 0.0 O E 0.2 U M 0.0 O M 0.0


S M 0.0 ON E 0.4 = A 4.2 O M 0.1
R M 0.1 O E 0.5 = A 4.3 = A 4.0
U E 0.1 R M 0.0 U M 0.1 BE
S M 0.1 O E 0.2 = A 4.1
R M 0.0 ON E 0.6 = A 4.4
O E 0.3
R M 0.1
ISA - Vigo 2015 Programacin de Autmatas 26
Programacin bsica: Smbolos

 Se puede asignar un nombre simblico a los operandos


 Existe una tabla de smbolos donde se agrupan todas las
variables
 Los smbolos globales van entre , los locales con # delante
 Hay que especificar a qu se le da prioridad (en caso de que se
modifique), al smbolo o a su direccin. En general conviene
que la prioridad est asignada a Smbolos

 Trabajar con smbolos:


Mejora la legibilidad del programa
Facilita la depuracin
Simplifica la reutilizacin del programa

ISA - Vigo 2015 Programacin de Autmatas 27


Ejemplo: Montacargas sencillo

 Montacargas con dos plantas, un pulsador de llamada en cada


planta, dos pulsadores en la cabina y un fin de carrera en cada
planta.
Subir
MOTOR
Bajar S
S
S

Llamada S Puls. S
Puls. B S
Sensor S

Llamada B
Sensor B

Montacargas
Si se pulsa Subir y Bajar ?
ISA - Vigo 2015 Programacin de Autmatas 28
Programacin bsica: Evaluacin de flancos

 Existen numerosas situaciones en las que lo que interesa no es el estado


de una seal, sino el hecho de que pase de un estado a otro (flanco).
 Para la deteccin de un flanco de subida o de bajada en una seal se
emplea una marca auxiliar, que contiene el estado de la seal en el
ciclo anterior, junto con las instrucciones FP y FN, respectivamente.

AWL FN M 1.0 FP M 1.0

M 1.0 M 1.0
KOP N P

M 1.0 M 1.0
E 1.0 M 1.0 A 4.0 FUP N P
KOP

ISA - Vigo 2015 Programacin de Autmatas 29


Ejemplo: Evaluacin de flancos

A1.6 = E1.0 * E1.3 + E1.1 * E1.2


U E 1.0
FP M 50.1 M50.1 es una marca de flanco de subida
= M 100.1 M100.1 es una marca de impulso (indica el posible flanco de
subida de E1.0)
U E 1.1
FN M 50.0 M50.0 es una marca de flanco de bajada
= M 100.0 M100.0 es una marca de impulso (indica el posible flanco de
bajada de E1.1)
O(
U M 100.1 Selecciona la marca M100.1 que vale uno si se ha producido un
flanco de subida en E1.0
U E 1.3 Y lgica entre M100.1 y E1.3
)
O(
U M 100.0 Selecciona la marca M100.1 que vale uno si se ha producido un
flanco de subida en E1.1
UN E 1.2 Y lgica entre M100.0 y E1.2
)
= A 1.6 Asigna el valor del RLO a la salida A1.6

ISA - Vigo 2015 Programacin de Autmatas 30


Ejemplo: Evaluacin de flancos
A

Entrada Salida Entrada Salida Entrada + Salida Salida + Entrada


incompleta incompleta
U E 1.1 Entrada B
FP M 50.1 M50.1 es una marca de flanco de subida
= M 100.1 M100.1 es una marca de impulso (indica el posible flanco de
subida de E1.1)
U E 1.1 Entrada B
FN M 50.0 M50.0 es una marca de flanco de bajada
= M 100.0 M100.0 es una marca de impulso (indica el posible flanco de
bajada en E1.1)
U E 1.0 Entrada A A B
U M 100.1 Y lgica entre A y la marca M100.1 (Esta marca vale uno si se
ha producido un flanco de subida de B).
= M 1.1 Asigna el valor del RLO a la marca M1.1 que indica que se
debe incrementar el contador de personas
U E 1.0 Entrada A
U M 100.0 Y lgica entre A y la marca M100.0 (Esta marca vale uno si se
ha producido un flanco de bajada de B).
= M 1.0 Asigna el valor del RLO a la marca M1.0 que indica que se
debe decrementar el contador de personas
ISA - Vigo 2015 Programacin de Autmatas 31
Programacin bsica: Otras operaciones que modifican el RLO

 NOT : cambia el estado del RLO


 SET : pone a 1 el RLO
 CLR : pone a 0 el RLO

AWL NOT SET CLR

KOP NOT n.d. n.d.

FUP n.d. n.d.

ISA - Vigo 2015 Programacin de Autmatas 32


Programacin bsica: Operaciones digitales-Tipos de datos numricos

 BCD Decimal Codificado en Binario (16 32 bits)


Con 16 bits: valores enteros de -999 a +999

0000 0011 0100 0111


+ 3 4 7

 ENTERO En cdigo binario (16 o 32 bits)


Los n negativos en complemento a 2

 REAL Representacin normalizada IEE 754


signo x 1, mantisa x 2(exp-127)

ISA - Vigo 2015 Programacin de Autmatas 33


Programacin bsica: Operaciones digitales

 Las operaciones digitales trabajan con bytes, palabras y dobles


palabras de 32 bits.
 Existen 2 acumuladores llamados ACU1 y ACU2, cada uno de 32
bits.
 El resultado de las operaciones se almacena en ACU1.
 Existe adems un bit de desbordamiento (OV : overflow).

EB0 E0.7 E0.6 E0.5 E0.4 E0.3 E0.2 E0.1 E0.0


EW0
EB1 E1.7 E1.6 E1.5 E1.4 E1.3 E1.2 E1.1 E1.0
ED0 EW1
EB2 E2.7 E2.6 E2.5 E2.4 E2.3 E2.2 E2.1 E2.0
EW2 ED1
EB3 E3.7 E3.6 E3.5 E3.4 E3.3 E3.2 E3.1 E3.0
EW3
EB4 E4.7 E4.6 E4.5 E4.4 E4.3 E4.2 E4.1 E4.0

ISA - Vigo 2015 Programacin de Autmatas 34


Programacin bsica: Operaciones digitales - Carga

 L : Carga. Copia el contenido de un byte, palabra o doble palabra de


memoria al ACU1. El contenido de ACU1 pasa a ACU2.
L EB 7 // PAE byte 7 a byte bajo de ACU1
L EW 7 // PAE bytes 7-8 a palabra baja de ACU1
L L#5231 // Cte. entera de 32-bit entero doble
L -312 // Cte. 16-bit entero(-32768..32767)
L 2#1010100101100001 // Cte. 16-bit binario
L W#16#FFFF // Cte. 16-bit hexadecimal
L -1.3e+3 // Coma flotante 32-bit IEEE
L P# E 8.7 // Puntero en ACU1

7 (EB 10) 0 7 (EB 11) 0 L EW 10


(- => FFFF) 7 (AB 10) 0 7 (AB 11) 0 L AW 10
7 (MB 10) 0 7 (MB 11) 0 L MW 10

31 0 24 23 0 16 15 8 7 0 ACU 1

ISA - Vigo 2015 Programacin de Autmatas 35


Programacin bsica: Operaciones digitales - Transferencia

 T : Transferencia. Copia el contenido del ACU1 a un byte, palabra o


doble palabra de memoria. No modifica el ACU2.

T AB 8 // byte bajo de ACU1 a PAA byte 8


T AW 8 // palabra baja ACU1 a PAA bytes 8-9
T MW 5 // ACU1 a Marcas M5.0 .. M6.7
T MD 10 // ACU1 a doble palabra MB10-11-12-13
T DBD 2 // ACU1 a doble palabra de datos DBD2

ISA - Vigo 2015 Programacin de Autmatas 36


Programacin bsica: Resumen de Carga y Transferencia

Las instrucciones de carga y transferencia son incondicionales

Acciones que se realizan al


ejecutar un instruccin L
Ejemplo:
Imagen en memoria
de la entrada EW10
Carga en ACU1

ACU1 ACU2
L EW 10
T MW 27

Transferencia
desde ACU1
Ejemplo:
rea de marcas
MW27
Accin que se realiza al
ejecutar una instruccin T

Memoria Procesador central

ISA - Vigo 2015 Programacin de Autmatas 37


Programacin bsica: Operaciones digitales - Combinacin

 UW : Y lgica bit a bit entre ACU1 y ACU2 (palabra baja, 16 bits).


 OW : O lgica bit a bit entre ACU1 y ACU2 (palabra baja, 16 bits)
 XOW : O-exclusiva lgica bit a bit entre ACU1 y ACU2 (palabra
baja, 16 bits).

L EW 90 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 0 AK2
ACU2-L
L W#16#F0E9 1 1 1 1 0 0 0 0 1 1 1 0 1 0 0 1 ACU1-L
UW 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 ACU1-L

ACUMULADOR 2 OPERACIN ACUMULADOR 1 ACUMULADOR 1


(ACU2) LGICA (ACU1) (ACU1)

ISA - Vigo 2015 Programacin de Autmatas 38


Ejemplo: Operaciones digitales - Combinacin

L MD10 Carga la variable MD10 en el ACU1


L ED10 Carga la variable ED10 en el ACU1. La variable MD10,
previamente cargada en el ACU1 se transfiere al ACU2
T MD10 Transfiere el contenido del ACU1 (variable ED10) a la variable
MD10 para que est disponible en el ciclo siguiente de proceso.
XOD Pone a 1 los bits del ACU1 correspondientes a aquellos en los
que ED10 y MD10 son diferentes
L ED10 Carga la variable ED10 en el ACU1 y transfiere al ACU2 el
contenido del ACU1 (resultado de la XOR)
UD Pone a 0 todos los bits del ACU1 que estn a cero en el ACU2
(slo quedan a 1 los bits del ACU1 que estn a 1 en ED10 y
que han cambiado)
T MD101 Transfiere el contenido del ACU1 a la variable MD101 para que
pueda ser consultada en el resto del programa. Los bits de esta
variable permanecen a 1 durante un nico ciclo de programa

Tabla 2.43 Ejemplo de deteccin simultnea de flancos de


subida en varias variables.

ISA - Vigo 2015 Programacin de Autmatas 39


Programacin bsica: Operaciones digitales - Operaciones aritmticas

 +I : Sumar ACU1 y ACU2 (16 bits)


D: enteros
 -I : Restar ACU1 de ACU2 (16 bits) (32 bits)
 *I : Multiplicar ACU1 y ACU2 (16 bits) R: reales
 /I : Dividir ACU2 por ACU1 (16 bits) (32 bits)
En caso de desbordamiento, se activa OV.

L EW 90 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 0 AK2
ACU2-L
AK2
L Z3 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 ACU1-L
+I 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 ACU1-L

ACUMULADOR 2 OPERACIN ACUMULADOR 1 ACUMULADOR 1


(ACU2) ARITMTICA (ACU1) (ACU1)

ISA - Vigo 2015 Programacin de Autmatas 40


Programacin bsica: Operaciones digitales - Comparaciones

 ==I : ACU2 igual a ACU1 ? (16 bits)


 <>I : ACU2 diferente de ACU1 ? (16 bits) D: enteros
 >I : ACU2 mayor que ACU1 ? (16 bits) (32 bits)
 >=I : ACU2 mayor o igual a ACU1 ? (16 bits) R: reales
(32 bits)
 <I : ACU2 menor que ACU1 ? (16 bits)
 <=I : ACU2 menor o igual a ACU1 ? (16 bits)
El resultado se acumula en el RLO (0=FALSE, 1=TRUE)

L EW 90 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 0 AK2
ACU2-L
AK2
L Z 3 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 ACU1-L
<I RLO = 0
= A 1.2 A 1.2 = 0

OPERACIN RESULTADO
ACUMULADOR 2 ACUMULADOR 1
DE LGICO
(ACU2) (ACU1)
COMPARACIN (RLO)

ISA - Vigo 2015 Programacin de Autmatas 41


Programacin bsica: Operaciones digitales - Comparaciones

KOP FUP AWL

M0.0 CMP ==I A 9.7 CMP ==I U M0.0


U(
L EW0
EW0 IN1
L EW2
EW0 IN1
==I
EW2 IN2 EW2 IN2 )
&
A9.7
= A9.7
=
M0.0

RLO del parntesis

ISA - Vigo 2015 Programacin de Autmatas 42


Programacin bsica: Conversin de datos y manipulacin del acumulador

 ITD : entero (16) a doble entero (32)


 DTR : doble entero a real
 BTI,ITB : BCD 16 a entero (16) y viceversa
 BTD,DTB : BCD 32 a entero (32) y viceversa
 INVI,INVD : complemento a 1 de entero y de doble
 NEGI,NEGD : complemento a 2 de entero y de doble
 NEGR : opuesto de un real
 RND : redondea real al entero doble ms prximo
 RND+,RND- : redondeo al entero doble superior e inferior
 TRUNC : trunca real a entero doble
 TAW : intercambia los 2 bytes del ACU1-L (16 bits) ABDC
 TAD : intercambia los 4 bytes del ACU1 (32 bits) DCBA
 TAK : intercambia los contenidos del ACU1 y del ACU2
 SRW,SRD,SLW,SLD : desplazamiento de bits en el acumulador
 RRD,RLD : rota bits en el acumulador
ISA - Vigo 2015 Programacin de Autmatas 43
Programacin bsica: Operaciones auxiliares - Desplazamiento

 Solo en AWL. Actan sobre el ACU1 y no modifican el ACU2.


SLW d : Desplazar ACU1 d bits a la izquierda D: enteros
SRW d : Desplazar ACU1 d bits a la derecha (32 bits)
d puede valer de 0 a 15. Se rellena con 0
SSD y SSI rellenan con el signo.

0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 AK1
ACU1
SLW 3
0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 ACU1

0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 ACU1
SRW 4
0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 ACU1

Su ejecucin no depende de ninguna condicin especial y no afectan al RLO

ISA - Vigo 2015 Programacin de Autmatas 44


Programacin bsica: Operaciones auxiliares - Otras

 Solo en AWL. Actan sobre el ACU1 y no modifican el ACU2.


INVI : Complemento a uno de entero (16 bits)
NEGI : Complemento a dos de un entero. Equivale a
multiplicar por -1 (en cdigo binario).

0 1 1 1 0 0 0 1 1 0 0 1 1 1 0 0 ACU1
AK1
INVI
1 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 ACU1

0 1 0 1 1 0 0 1 1 1 0 0 0 1 0 1 ACU1
NEGI
1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 ACU1

 NOP 0, NOP 1 : Operaciones nulas. En AWL pueden servir para


mejorar la estructura. Son utilizadas por los esquemas de contactos
(KOP) y diagramas de funciones (FUP).
 Tambin se dispone de otras funciones avanzadas como SIN, ACOS,
EXP, SQRT, LOOP, ...
ISA - Vigo 2015 Programacin de Autmatas 45
Programacin bsica: Contadores

 Los contadores son elementos capaces de almacenar, incrementar y


decrementar el valor de una variable.

Z<n>
 Su inicializacin, incremento o
decremento se realizan mediante la
evaluacin del flanco de subida de
una condicin lgica.

 Cada modelo de CPU dispone de una


cantidad determinada de contadores.

 FR libera ZV, ZR y S,
 Existen mdulos de contadores pero no FR.
rpidos.

ISA - Vigo 2015 Programacin de Autmatas 46


Programacin bsica: Contadores - Inicializacin
U M 0.0 ( )
 Inicializacin constante. Ej. 37
Operacin Operando
Cuenta inicial (0..999)
L C# 37
 Inicializacin variable. Ej. 153
Valor BCD (0..999)
L MW 160
0 0 0 1 0 1 0 1 0 0 1 1

15 14 13 12 11 10 9 8 7 0
 Palabra del Contador 1 0 1 0 0 0 0 1 0 0 1 0 0 1 1 1
en la memoria
Bits de Valor del contador en binario natural
S Z 1 estado
b14=0 Bits de control de la activacin, de la habilitacin, y
Q=b14b15 del contaje ascendente y descendente

ISA - Vigo 2015 Programacin de Autmatas 47


Programacin bsica: Contadores

 S : Inicializar Un flanco de subida de


 ZR : Decrementar E3.0 hace que el contador
 ZV : Incrementar Z1 tome el valor 21
 U Z <n> : Consultar estado U E 3.0
 L Z <n> : Cargar contador Zn como entero
L C#21
 LC Z <n> : Cargar contador Zn en BCD
S Z 1
Un flanco de subida de E3.1 incrementa en 1 el U E 3.1
valor de Z1 ZV Z 1
Un flanco de bajada de E3.2 lo decrementa en 1 UN E 3.2
ZR Z 1
...
A1.0 vale 1 si el valor de Z1 es distinto de 0 U Z 1
= A 1.0
ISA - Vigo 2015 Programacin de Autmatas 48
Programacin bsica: Contadores Equivalencia KOP - AWL

U E 3.1

?
ZV Z 1
...
U E 3.2
ZV Z 1

ISA - Vigo 2015 Programacin de Autmatas 49


Ejemplo: Evaluacin de flancos y Contaje

Entrada Salida Entrada Salida Entrada + Salida Salida + Entrada


incompleta incompleta

M50.1 A & U E 0.1 U E 0.0


B P FP M 50.1 U M 100.0
M50.0 A & = M 100.1 ZR Z 1
B N
U E 0.1 LC Z 1
FN M 50.0 T AB 4
= M 100.0
U E 0.0
U M 100.1
ZV Z 1
a) b)
Figura 2.32 Diagrama de bloques y programa del ejemplo 2.9.

Contaje de dos puertas


ISA - Vigo 2015 Programacin de Autmatas 50
Programacin bsica: Temporizadores

 Los temporizadores son elementos capaces de adoptar un estado


diferente en funcin del tiempo transcurrido desde un instante dado.

 Se disparan mediante la evaluacin del T<n>


flanco de subida (o bajada en un caso) de
una condicin lgica.

 Cada modelo de CPU dispone de una


cantidad determinada de temporizadores.

 Existen cinco tipos (modos de funcionamiento):


SI : Temporizador de impulso
SV : Temporizador de impulso prolongado
SA : Temporizador de retardo a la desconexin
SE : Temporizador de retardo a la conexin
SS : Temporizador de retardo a la conexin memorizado
ISA - Vigo 2015 Programacin de Autmatas 51
Programacin bsica: Temporizadores - Resumen

E Entrada

SI Impulso
t

SV Impulso prolongado
t

SA Retardo a la desconexin
t

SE Retardo a la conexin
t

SS Retardo a la conexin memorizado


t Reset
 U T <n> : Consultar estado
 L T <n> : Cargar temporizador como entero
 LC T <n> : Cargar temporizador en BCD con base de tiempo
ISA - Vigo 2015 Programacin de Autmatas 52
Programacin bsica: Temporizadores - Especificacin del tiempo

U M 0.0 ( )
 Temporizacin constante. Ej. 4.2 s H: horas
M: minutos
Operacin Operando S: segundos
MS: milisegundos

L S5T#4S200MS Base de tiempo


00 : 0.01 s
 Temporizacin variable. Ej. 4.2 s 01 : 0.1 s
Valor (en BCD) 10 : 1 s
L MW 120 11 : 10 s

0 1 0 0 0 0 0 1 0 0 0 0 1 0 Actualizacin
asncrona
Base de tiempo 15 14 13 12 11 10 9 8 7 0
1 0 1 0 0 0 0 1 0 0 1 0 0 1 1 1
 Palabra del temporizador
Base Valor del tiempo
en la memoria Bits de de en binario natural
tiempo Bits de control de la habilitacin
S<> T 1 estado
T>0b15=1 y el arranque
Q=b14b15

ISA - Vigo 2015 Programacin de Autmatas 53


Programacin bsica: Temporizadores Impulso

 SI : Impulso 1
E 0.1
U E 0.1 0

1
L S5T#42S500MS T1
0
SI T1 42.5 s

Cuando E0.1 pasa de 0 a 1 (flanco de subida), T1 toma valor 1 durante


42.5 segundos, mientras E0.1 siga a 1. Resolucin: centsimas de segundo.

 SV : Impulso prolongado 1
E 3.0
U E 3.0 0
L S5T#25S 1
T3
SV T3 0 25 s 25 s

Un flanco de subida en E3.0 hace que T3 tome valor 1 durante 25


segundos, con independencia de E3.0. Es redisparable (si durante el
temporizado hay un nuevo flanco, se reinicia al valor predeterminado).
ISA - Vigo 2015 Programacin de Autmatas 54
Programacin bsica: Temporizadores - Retardo a la conexin

 SE: Retardo a la conexin 1


E 3.5
U E 3.5 0

L S5T#700MS 1
T2
SE T2 0 0,7 s 0,7 s

Cuando E3.5 pasa de 0 a 1 (flanco de subida), T2 toma valor 1 despus de


0.7 segundos, siempre que E 3.5 siga a 1 y hasta que pase a cero.
 SS: Retardo a la conexin con memoria 1
E 0.5
U E 0.5 0

1
L S5T#4S T3
SS T3 0
4s 4s

Cuando E0.5 pasa de 0 a 1 (flanco de subida), R T3


T3 toma valor 1 despus de 4 segundos.
Es redisparable. Se pone a cero con reset (R T3).
ISA - Vigo 2015 Programacin de Autmatas 55
Programacin bsica: Temporizadores - Retardo a la desconexin

 SA : Retardo a la desconexin.
1
U E 3.4 E 3.4
0
L S5T#8S
1
SA T2 T2
0 8s 8s

Cuando E3.4 pasa de 0 a 1 (flanco de subida), T2 toma valor 1.


Cuando E3.4 retorne a 0 (flanco de bajada), T2 tomar valor 0
despus de 8 segundos. Es redisparable.

ISA - Vigo 2015 Programacin de Autmatas 56


Programacin bsica: Temporizadores en KOP y FUP

KOP T<n>  Entradas


Tipo S y R : set y reset (booleano)
S Q TW : temporizacin (S5TIME)

TW BI  Salidas
Q : estado (booleano)
BI : cuenta restante (int)
R BCD
BCD : cuenta restante (BCD)
FUP T<n>
 Tipo
Tipo
S_PULSE : impulso (SI)
S BI
S_PEXT : impulso prolongado (SV)
S_OFFDT : retardo desconexin (SA)
: retardo conexin (SE)
TW BCD
S_ODT
R Q S_ODTS : retardo conexin memoria (SS)

ISA - Vigo 2015 Programacin de Autmatas 57


Generador de impulsos: un pulso cada segundo

a) Con flanco de bajada de M 2.0 se carga el temporizador T7 como


retardo a la conexin. T7 y M2.0 estn a cero durante 1 segundo y
despus se ponen a 1.
b) M 2.0 solo est a 1 durante un ciclo, momento en el que reinicia al
temporizador T7.

1 UN M 2.0
M 2.0
L S5T#1S
0
SE T 7
1
T 7 = M 2.0
1s 1s 1s U T 7
0 = M 2.0

ISA - Vigo 2015 Programacin de Autmatas 58


Generador de impulsos: generador de seal cuadrada

 Periodo 2 segundos (duty cycle 50%). UN M 2.0


a) Flanco de bajada de M2.0 => T7 y M2.0 estn a L S5T#1S
cero durante 1 segundo y despus se ponen a 1. SE T 7
U T 7
M2.0 solo est a 1 durante un ciclo, cada segundo. = M 2.0
b) En el ciclo en que M2.0 vale 1, la salida A4.6
conmuta al valor contrario de M3.0. U M 2.0
UN M 3.0
c) En los dems ciclos, M3.0 tiene valor distinto que S A 4.6
A4.6. U M 2.0
1 U M 3.0
T 7 = M 2.0
1s 1s 1s 1s R A 4.6
0
1 UN M 2.0
M 3.0 U A 4.6
0
1
S M 3.0
UN M 2.0
A 4.6
0 UN A 4.6
R M 3.0
ISA - Vigo 2015 Programacin de Autmatas 59
Generador de impulsos con activacin y desactivacin programable

a) Utiliza dos temporizadores SV (Impulso prolongado).


UN T1
b) Cuando uno de los SV pasa de 1 a 0 y lanza la L S5T#2S
temporizacin del otro, cuya salida pasar a 1 durante el SV T 2
tiempo programado. UN T 2
L S5T#4S
c) La salida se iguala a uno de los 2 temporizadores, con lo
SV T 1
que estar a 1 el tiempo programado en ese temporizador
y a 0 el tiempo programado en el otro. Con ello se puede U T 2
conseguir una seal cuadrada a medida. = A 4.0

1
4s 4s
T 1
0
1
2s 2s 2s
T 2
0
1
A 4.0 2s 4s
0

ISA - Vigo 2015 Programacin de Autmatas 60


Generador de impulsos en FUP

 Base de tiempo realizada con un temporizador y un contador

ISA - Vigo 2015 Programacin de Autmatas 61


Programacin bsica: Semforo

PULSADOR

RC RC A 4.0
AC AC A 4.1
RP
VC VC A4.2 A 4.2
VP
RP A 4.5 A 4.5

PULSADOR VP A 4.6
E 0.0
3s 2s 5s 2s 2s

Nota: Para generar la


T1
intermitencia M5.1 de la
luz Verde Peatones, se T2
puede utilizar un bit del
byte de marcas de
T3
intermitencia o uno de los
generadores de impulsos T4
anteriores
T5

ISA - Vigo 2015 Programacin de Autmatas 62


Programacin bsica: Semforo

ISA - Vigo 2015 Programacin de Autmatas 63


Programacin modular: Operaciones organizativas de salto

 Sirven para saltar dentro de un bloque.


 Se salta a metas identificadas mediante una etiqueta
simblica (meta:).
SPA <meta> : Salto incondicional a una meta
SPB <meta> : Salto condicionado si RLO=1
SPZ <meta> : Salto si resultado de operacin es 0
SPN <meta> : Salto si resultado distinto de 0
SPP <meta> : Salto si signo positivo
SPM <meta> : Salto si signo negativo
SPO <meta> : Salto si desbordamiento (overflow)

ISA - Vigo 2015 Programacin de Autmatas 64


Ejemplo: Operaciones organizativas de salto (I)

Como CALL es incondicional,


U E 0.1 se suele condicionar con SPB
UN E 0.2
SPB ETIQ
CALL FB1,DB1
...
Salta a ETIQ si se
... cumple la condicin
BEA
ETIQ: U E 0.1
= A 1.0 Problema: Aunque no salte a la
U M 0.1 etiqueta, acabar pasando por ETIQ.
U M 0.2 Para evitarlo se utilizan los
finales de mdulo:
= A 1.1
BEA: Fin de mdulo incondicional
BEB: Fin de mdulo condicional(RLO)

ISA - Vigo 2015 Programacin de Autmatas 65


Ejemplo: Operaciones organizativas de salto (II)

INICIO U E 0.0
SPB LAB1
U A 4.0
SI E0.0=1 NO U E 0.0
M1.2 E0.3 A4.1 A4.0 & E0.0 = A 4.1
SPA LAB2

LAB1: U E 0.3
A4.2 M1.0
= M 1.2

FIN LAB2: U M 1.0


= A 4.2

INICIO

SI E2.0=1 NO U E 2.0 OPTIMIZADO:


AW2 MW5 SPB LAB1
!!! SPA LAB2 UN E 2.0
SPB LAB1
LAB1: L MW5 L MW5
SI A4.0=1 NO T AW2 T AW2

M1.0 1 M1.0 0 LAB2: U A 4.0 LAB1: U A 4.0


= M 1.0 = M 1.0

FIN

ISA - Vigo 2015 Programacin de Autmatas 66


Programacin modular: Ejercicio: Calculadora

 OBJETIVO: Realizar las operaciones bsicas (+, -, * y / ) de 2 valores


enteros, introducidos mediante 2 pulsadores.
 Introducir los 2 nmeros enteros. Para ello, el programa contar el N de
pulsaciones realizadas con los pulsadores E124.0 y E124.1. (Mximo N de
pulsaciones admitido en cada pulsador 999).
 Si se pulsa E124.7 se debe poner a 0 el valor acumulado de pulsaciones.
 Para SUMAR los dos nmeros se ha de pulsar el E124.2
 Para RESTAR los dos nmeros se ha de pulsar el E124.3. NOTA: Se restar
siempre el menor valor del mayor.
 Para MULTIPLICAR los dos nmeros se ha de pulsar el E124.4
 Para DIVIDIR los dos nmeros se ha de pulsar el E124.5. NOTA: Se
dividir siempre el mayor valor entre el menor.
 El RESULTADO ha de estar disponible en la DWord MD200 codificado
como un N Real.

ISA - Vigo 2015 Programacin de Autmatas 67


Programacin modular: Ejercicio: Calculadora
Segm.: 1 GESTION DE LOS CONTADORES
U "INCREMENTA_N1" E124.0
ZV Z 1 // E124.0 incrementa Z1
U "INCREMENTA_N2" E124.1
ZV Z 2
U "RESETEAR_NUMEROS" E124.7
R Z 1 // E124.7 pone a cero Z1 y Z2
R Z 2
Segm.: 2 ANLISIS E INTERCAMBIO DE CONTENIDO DE PALABRAS
L Z 1 // Carga Z1 en ACCU1
ITD // No existe paso directo de Integer a Real
DTR // Codifica el contenido de ACCU1 como Real
L Z 2 // Carga Z2 en ACCU1 y Z1 pasa a ACCU2
ITD
DTR
>=R
SPB MENU // Si Z1>=Z2 se va a MENU
TAK // Si Z1<Z2 intercambia ACCU1 y ACCU2

ISA - Vigo 2015 Programacin de Autmatas 68


Programacin modular: Ejercicio: Calculadora
Segm.: 3 SELECCIN DE OPERACIN
MENU: U "SUMAR" E124.2
SPB SUMA // Si SUMAR salta a Etiqueta SUMA
U "RESTAR" E124.3
SPB REST // Si RESTAR salta a Etiqueta REST.
U "MULTIPLICAR" E124.4
SPB MULT // Si MULTIPLICAR, salta a Etiqueta MULT.
U "DIVIDIR" E124.5
SPB DIVI // Si DIVIDIR, salta a Etiqueta DIVI.
BEA // Si no seleccin terminar bloque

Segm.: 4 OPERAR con el contenido de ACCU1 y ACCU2, ya que no


han realizado operaciones con ellos desde que se cargaron
SUMA: +R
T MD 200 // Resultado de la suma como Real
BEA // Terminar bloque
REST: -R MULT: *R DIVI: /R
T MD 200 T MD 200 T MD 200
BEA BEA BEA
ISA - Vigo 2015 Programacin de Autmatas 69
Programacin modular: Operaciones organizativas de mdulo

 Divisin del problema


 Permiten controlar el acceso a  Reutilizacin de bloques de cdigo
mdulos:  Separacin de tareas

UC : Llamada incondicional a FC sin FB 3


OB 1
parmetros
CC : Llamada a FC sin parmetros, BE
FC 1
condicionada a que RLO=1
FC 21
CALL : Llamada incondicional a FC o FB, BE
con o sin parmetros
BE
BE(BEA) : Fin de bloque incondicional FB 5

BEB : Fin de bloque condicionado a FC 54


BE
RLO=1 BE
BE

ISA - Vigo 2015 Programacin de Autmatas 70


Programacin modular: Bloques de Organizacin (OB)

 Llamados por el sistema operativo ante determinadas situaciones:


OB1 : Ejecucin cclica del programa.
OB35 : Ejecucin cclica temporizada.
OB80 : Error de tiempo (p. ej. Perro Guardin).
OB81 : Error alimentacin (p. ej. Pila).
OB82 : Error de diagnstico de mdulo de perif.
...
OB100 : Rearranque completo en caliente (no se inicializan
las variables remanentes)
OB102 : Arranque en fro

ISA - Vigo 2015 Programacin de Autmatas 71


Programacin modular: Funciones (FC) y sistema (SFC)

 Bloques lgicos de programacin sin memoria. Se pueden


desarrollar en KOP, FUP y/o AWL.
 Pueden tener o no parmetros de llamada.
 Se llaman con CALL , UC o CC.

OB1 FC5
U E 2.0 U E 0.0
U E 2.3 UN E 0.1
= A 4.0 = A 4.2
UC FC5 BE
...

ISA - Vigo 2015 Programacin de Autmatas 72


Programacin modular: Bloques de Funcin (FB) y sistema (SFB)

 Bloques de programa que disponen de un bloque de datos


asociado como memoria en el que se memorizan parmetros y
variables temporales.
 Se invocan con CALL
OB1 DB1 FB1
CALL FB1, DB1 U #ent1
ent1:=E0.0 IN ent1 BOOL
IN ent2 BOOL
U #ent2
ent2:=E0.1 OUT sal BOOL = #sal
sal :=A4.0 BE

Declaracin de parmetros: IN, OUT, IN_OUT, ...


Tipos de parmetros: BOOL, BYTE, WORD, ...

ISA - Vigo 2015 Programacin de Autmatas 73


Ejercicio: Llamadas a funciones parametrizadas (I)

 Realizar una funcin FC5 que calcule el mximo de dos nmeros:


IN
Oper1 Int Llamada a la funcin: (OB1)
Oper2 Int
OUT Seg1:
Max Int UN E 0.0
Seg1: SPB LAB0
L #Oper1 CALL FC5
L #Oper2 Oper1 :=MW11
>=I Oper2 :=MW13
SPB LAB1 Max :=MW15
T #Max LAB0: BEA
BEA
LAB1: L #Oper1
T #Max
BE

ISA - Vigo 2015 Programacin de Autmatas 74


Ejercicio: Llamadas a funciones parametrizadas (II)

 Al pulsar E124.7 contar durante 10 UN E 124.0


SPB LLA2
segundos los pulsos positivos del bit 0 del
CALL FC1
byte de marca de ciclo 255. CUENTA:=Z0
E124.6 => RESET CUENTA RESULTADOFC1:=MD100
LLA2: UN E 124.1
 Mediante varias funciones con SPB LLA3
Uparmetros,
E 124.7 realizar las operaciones: CALL FC2
CUENTA:=Z0
L S5T#10S
E124.0 => CUENTA + 70 + L#53 RESULTADOFC2:=MD110
SV T 0 => 35.0 - CUENTA2
 E124.1 LLA3: UN E 124.2
U TE124.2
0 => 15 + CUENTA + L#10 SPB LLA4
U ME124.3
255.0 CALL FC3
=> 10.5 + CUENTA CUENTA:=Z0
ZV Z 0 // CUENTA
RESULTADOFC3:=MD120
 UA cada
E 124.6
funcin se le pasar como LLA4: UN E 124.3
Rparmetro
Z 0 de entrada CUENTA, y SPB FIN
devolver el resultado de la operacin, CALL FC4
en el tipo de dato adecuado. CUENTA:=Z0
RESULTADOFC4:=MD130
FIN: BEA
ISA - Vigo 2015 Programacin de Autmatas 75
Bloque: FC1 OPERACION: CUENTA + 70 + L#53
RESULTADOFC1 parmetro de salida de tipo DINT, ya que
L#53 es un dato de tipo DINT
L #CUENTA
ITD
L 70
ITD
+D
L L#53
+D
T #RESULTADOFC1
Bloque: FC2 OPERACIN: 35.0 - CUENTA^2
RESULTADOFC2 parmetro de salida de tipo REAL, ya que
35.0 es REAL y SQR slo trabaja con REAL
L 3.500000e+001
L #CUENTA
ITD
DTR
SQR
-R
T #RESULTADOFC2
ISA - Vigo 2015 Programacin de Autmatas 76
Bloque: FC3 OPERACIN: 15 + CUENTA + L#10
RESULTADOFC3 parmetro de salida de tipo DINT, ya que
L#10, es un dato de tipo DINT
L 15
ITD
L #CUENTA
ITD
+D
L L#10
+D
T #RESULTADOFC3
Bloque: FC4 OPERACIN: 10.5 + RAIZ CUADRADA(CUENTA)
RESULTADOFC4 parmetro de salida de tipo REAL, ya que
10.5 es REAL y SQRT slo trabaja con REAL
L 1.050000e+001
L #CUENTA
ITD
DTR
SQRT
+R
T #RESULTADOFC4
ISA - Vigo 2015 Programacin de Autmatas 77
Programacin modular: Bloques estndar del sistema (SFC/SFB)

 Algunas libreras estndar:


SFC 0..90 : Funciones del sistema.
SFB 0..43 : Bloques de funcin del
sistema.
FB 41..43 : Desarrollo de reguladores
PID.
FC 1..40 : Bloques de funcin
normalizados en IEC-1131.
FC61..125 : Conversin de programas
S5 a S7.

ISA - Vigo 2015 Programacin de Autmatas 78


Programacin modular: Bloques de Datos (DB) (I)

 Se utilizan para almacenar datos de usuario


 Se distingue entre bloques de datos globales y bloques de instancia
(asociados a FBs)
 La estructura de variables de los DB puede ser definida por el usuario

DB 1

 La creacin y borrado se realiza con un editor incluido en STEP7


 Acceso a los datos: Los DB se abren con la instruccin AUF. Una vez
abiertos, se puede hacer referencia a su contenido.
AUF DB 2 // Abre DB2 como global
L DBW 20 // Carga palabra 20 de DB2 en ACU1
T DBW 4 // Transfiere ACU1 a palabra 4 de DB2
T DBB 1 // Transfiere ACU1 a byte 1 de DB2

ISA - Vigo 2015 Programacin de Autmatas 79


Programacin modular: Bloques de Datos (DB) (II)
 mbito de los DB abiertos
OB 1 FC 7 FC 9

AUF DB10 DB10


vlido DB10
CALL FC7 AUF DB5 vlido
CALL FC9

DB10 DB5
BE Ningn vlido vlido
DB vlido BE BE

 En un FB pueden estar abiertos, de forma simultnea, un bloque de


datos global y un bloque de datos de instancia:
AUF DB 2 // Abre DB2 como global
L DBW 20 // Carga palabra 20 de DB2 en ACU1
T DBW 4 // Transfiere ACU1 a palabra 4 de DB2
AUF DI 20 // Abre DB20 como bloque datos de instancia
L DIB 12 // Carga byte 12 de DB20 abierto
T DBB 1 // Transfiere ACU1 a byte 1 de DB2
ISA - Vigo 2015 Programacin de Autmatas 80
Ejercicio: AWL

Indicar cuando se activar y cuando se desactivar la salida A4.7


en los siguientes casos:

OB 1 OB 1
OB 1 U E 0.0 O E 0.0
U E 0.0 ZV Z 1 O E 0.1
CC FC 5 U E 0.1 ZV Z 1
ZV Z 1 L Z 1
FC 5 L Z 1 L 5
= A 4.7 L 10 >I
>I = A 4.7
= A 4.7

ISA - Vigo 2015 Programacin de Autmatas 81


Ejercicio: Contadores 1

Dados los mdulos de programa: OB 1


U E 2.2
OB 100 FC 9 ZV Z 4
ON M 1.1 O M 5.0 O M 7.7
= M 1.1 ON E 2.2 ON M 1.1
R M 1.1 ZR Z 4 ZV Z 4
O M 5.0 O E 2.2 O M 1.1
ON M 1.1 ZV Z 4 O M 5.0
S M 5.0 ZV Z 4
R Z 4 Tiempo de
ejecucin: 0.5 ms O E 2.2
Tiempo de O M 1.1
ejecucin: 1 ms M1.1=0; M5.0=1; Z4=0 CC FC 9
E2.2 vale 1 entre t=0.1 seg. y t=2 seg. Tiempo de
ejecucin: 0.75 ms
Qu valor tiene el contador en t=2.45 seg.? (sin salto)

ISA - Vigo 2015 Programacin de Autmatas 82


Ejercicio: Contadores 1 M1.1=0; M5.0=1; Z4=0
OB 1 (t<0.1) (t0.1)&(t<2) (t2)
U E 2.2
ZV Z 4
O M 7.7
ON M 1.1
ZV Z 4
O M 1.1
O M 5.0
ZV Z 4
O E 2.2
O M 1.1
CC FC 9
FC 9 0.1 0.001 2.45 2
= 132 = 600
O M 5.0 0.00075 0.00075
ON E 2.2
ZR Z 4
O E 2.2
ZV Z 4
ISA - Vigo 2015 Programacin de Autmatas 83
Ejercicio: Contadores 2

Dados los mdulos de programa: OB 1


U E 2.2
OB 100 FC 9 ZV Z 4
ON M 1.1 O M 5.0 O M 7.7
= M 1.1 ON E 2.2 ON M 1.1
R M 1.1 ZR Z 4 ZV Z 4
O M 5.0 O E 2.2 O M 1.1
ON M 1.1 ZV Z 4 O M 5.0
S M 5.0 ZV Z 4
R Z 4 Tiempo de
ejecucin: 0.5 ms O E 2.2
Tiempo de ON M 1.1
ejecucin: 1 ms M1.1=0; M5.0=1; Z4=0 CC FC 9
E2.2 vale 1 entre t=0.3 seg. y t=2 seg. Tiempo de
ejecucin: 0.75 ms
Qu valor tiene el contador en t=0.3 y en (sin salto)
t=2.2 seg.?
ISA - Vigo 2015 Programacin de Autmatas 84
Ejercicio: Contadores 2 M1.1=0; M5.0=1; Z4=0
OB 1 (t<0.3) (t0.3)&(t<2) (t2)
U E 2.2
ZV Z 4
O M 7.7
ON M 1.1
ZV Z 4
O M 1.1
O M 5.0
ZV Z 4
O E 2.2
ON M 1.1
CC FC 9
FC 9
O M 5.0
ON E 2.2
ZR Z 4
O E 2.2
ZV Z 4
ISA - Vigo 2015 Programacin de Autmatas 85
Tema 4: Bibliografa

Bibliografa principal:
Siemens, Manuales de la familia SIMATIC S7-300, Ed. SIEMENS
AG.
IEC, Norma IEC 61131-3: Programmable Controllers
Programming Languages, Ed. IEC.
E. Mandado, J. Acevedo, C. F. Silva, I. Armesto, Autmatas
Programables y Sistemas de Automatizacin. Ed. Marcombo. 2009.

Bibliografa adicional:
A. Porras y A.P. Montero, Autmatas Programables. Fundamento.
Manejo. Instalacin y Prctica, Ed. Mc. Graw-Hill.
J.P. Romeda et al., Problemas Resueltos con Autmatas
Programables, Ed. Paraninfo.

ISA - Vigo 2015 Programacin de Autmatas 86

Das könnte Ihnen auch gefallen