[go: up one dir, main page]

100% encontró este documento útil (1 voto)
223 vistas45 páginas

T04-Programación de Autómatas

Este documento presenta una introducción a la programación en Step7 (TIA PORTAL) para sistemas S7-300/S7-1500. Explica los tipos de datos y operandos predefinidos, el direccionamiento de la memoria, los lenguajes de programación disponibles y algunas operaciones básicas como operaciones binarias, de memorización, digitales y auxiliares. También cubre temas como símbolos, evaluación de flancos, temporizadores, contadores y estructuras de programación modular.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
223 vistas45 páginas

T04-Programación de Autómatas

Este documento presenta una introducción a la programación en Step7 (TIA PORTAL) para sistemas S7-300/S7-1500. Explica los tipos de datos y operandos predefinidos, el direccionamiento de la memoria, los lenguajes de programación disponibles y algunas operaciones básicas como operaciones binarias, de memorización, digitales y auxiliares. También cubre temas como símbolos, evaluación de flancos, temporizadores, contadores y estructuras de programación modular.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 45

Índice

• Tipos de datos y operandos


Programación en Step7 (TIA PORTAL) de S7-300/S7-1500

• Direccionamiento de la memoria.
• Leguajes de programación de Step7 (TIA PORTAL)
• Operaciones binarias.
• Operaciones de memorización.
• Símbolos.
• Evaluación de flancos.
• Operaciones digitales.
• Operaciones auxiliares.
• Temporizadores y contadores.
• Operaciones organizativas de salto.
• Programación modular.
• Ejercicios.
• Bibliografía

ISA - Vigo 2019 Programación de Autómatas 2

Variables: Tipos de datos predefinidos


Tipo Descripción S7-300/400 S7-1200 S7-1500
Orientado BOOL BYTE si si si
al bit WORD DWORD
LWORD no no si
Carácter CHAR (8 bit) STRING si si si
Numérico INT (16 bit) DINT (32 bit) si si si
Tipos de datos y operandos

REAL (32 bit)


SINT (8 bit) USINT (8 bit) no si si
UINT (16 bit) UDINT (32 bit)
LREAL (64 bit)
LINT (64 bit) ULINT (64 bit) no no si
Tiempo TIME DATE TIME_OF_DAY si si si
S5TIME si no si
LTIME L_TIME_OF_DAY no no si
DT (DATE_AND_TIME) si no si
DTL no si si
LDT (L_DATE_AND_TIME) no no si
Estructura ARRAY STRUCT si si si
Puntero POINTER ANY si no si *)
VARIANT no si si
Bloque TIMER COUNTER si si **) si
BLOCK_FB BLOCK_FC si no si
BLOCK_DB BLOCK_SDB si no no
VOID si si si
ISA - Vigo 2019 Programación de Autómatas 3
Variables predefinidas: Operandos

 E(I): Entradas.
 A(Q): Salidas.
 M : Marcas. (volátiles y no-volátiles, parametrizable)
 D : Datos.
 T : Temporizadores.
 Z(C) : Contadores.
 Constantes: TRUE, FALSE, +3100, -1.5e+34, #2, B#, W#,
L#, S5T#, C#, ...
Además
 OB, FC, FB, DB: Módulos organizativos.

ISA - Vigo 2019 Programación de Autómatas 4

S7-300/S7-1500: Espacio de direccionamiento predefinido


Las variables predefinidas se identifican mediante el símbolo %
Área de direcciones Acceso al área Abrev. Máx. direcc. área
Imagen de proceso E/S entrada / salida bit %E / %A 0.0 a 32766.7
Direccionamiento de la memoria

entrada / salida byte %EB / %AB 0 a 32766


entrada / salida palabra %EW / %AW 0 a 32765
entrada / salida doble palabra %ED / %AD 0 a 32763

Marcas bit de memoria %M 0.0 a 65532.7


byte de memoria %MB 0 a 65535
palabra de memoria %MW 0 a 65534
doble palabra de memoria %MD 0 a 65532
Acceso a periferia E/S byte E/A, periferia %EB:P / %AB:P 0 a 32766
palabra E/A, periferia %EW:P / %AW:P 0 a 32765
doble palabra E/A, periferia %ED:P / %AD:P 0 a 32763
Temporizador Temporizador (T) %T 0 a 65535
Contador Contador (Z) %Z 0 a 65535

Módulo de datos Bit,byte,palabra,doble palabra %DBX,DBB


%DBW,DBD
Módulo de datos
de instancia Bit,byte,palabra,doble palabra %DIX,DIB
%DIW,DID
En adelante, el símbolo % se omite, en general, para mayor claridad (lo coloca automáticamente TIA Portal)
ISA - Vigo 2019 Programación de Autómatas 5
S7-300/S7-1500: Direccionamiento de la memoria de E/S

 Direccionamiento digital S7-300 (bytes PAA de dirección 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
alimentación (emisor)
3.7 7.7 11.7 15.7 19.7 23.7 27.7 31.7

 Direccionamiento analógico S7-300 (bytes PAA de dirección 256 - 752)

CPU IM 256 272 288 304 320 336 352 368


y
fuente de a a a a a a a a
alimentación (emisor) 271 287 303 319 335 351 367 383

 Direccionamiento S7-1500 (Up to 31 modules can be inserted without additional IM)

Max. 32 I/O modules

ISA - Vigo 2019 Programación de Autómatas 6


S7-1512C-1 PN: Direccionamiento de la memoria de E/S

ISA - Vigo 2019 Programación de Autómatas 7


Programación: Lenguajes de programación
Programming language S7-300 S7-1200 S7-1500
Leguajes de programación de Step7 (TIA PORTAL)

Ladder diagram (LAD) (KOP) si si si


Function block diagram (FBD) (FUP) si si si
Structured Control Language (SCL) si si si
Graph si no si
Statement list (STL) (IL) (AWL) si no si

ISA - Vigo 2019 Programación de Autómatas 8

Programación: Lenguajes básicos

KOP (LAD) FUP (FBD) AWL (STL)


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 2019 Programación de Autómatas 9


Programación: Lenguajes avanzados

GRAPH (SFC) SCL (Pascal) HIGRAPH


Diagrama funcional de secuencias Lenguaje de control estructurado Específico 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 2019 Programación de Autómatas 10

Lista de instrucciones: Formato de las instrucciones en STL-AWL

P N AI5: %EW 0 .. %EW 9 (5 x AI)


-1 AO2: %AW 0 .. %AW 3 (2 x AO)
2C
5 1 A4.0 DI16:%EB 10 .. %EB 11 (%E 10.0 .. %E 11.7)
1 EW0 E10.0
E12.0 DO16:%AB 4 .. %AB 5 (%A 4.0 .. %A 5.7)
DI16:%EB 12 .. %EB 13 (%E 12.0 .. %E 13.7)
A6.0 DO16:%AB 6 .. %AB 7 (%A 6.0 .. %A 7.7)

A6.7
EW8 Operación Operando Comentario
A7.0

A7.7
AW0 U %E 8.1 // A %I 8.1
E11.7 E13.7

Posición en memoria
AI5/AO2 DI16/DO16 DI16/DO16
Tipo de operando del operando

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


anterior instrucción el comentario muestra la nemotecnia internacional (A de and,
I de input). En esta presentación se aplicará de forma preferente la alemana.
ISA - Vigo 2019 Programación de Autómatas 11
4 4
4
4 4

4
10 10
10 10
10
4

10
4 10 10

11

11

11

11

ISA - Vigo 2019 Programación de Autómatas 12

Programación básica: Operaciones Binarias - O lógica

Esquema eléctrico
Diagrama de funciones (FUP)
S3 S5 E 5.0 >=1
(E 5.0)
S4
(E 8.1)
E 7.1 = A 1.2
OR
(E 7.1) E 8.1
Operaciones binarias

L3 (A 1.2)
Diagrama de contactos (KOP)

Lista de instrucc. (AWL)


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

ISA - Vigo 2019 Programación de Autómatas 13


Programación básica: Operaciones Binarias

AWL RTL Descripción 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 lógica entre A5.1 y E3.1
O M 7.1 RLO ← RLO + M7.1 O lógica de M7.1 con el resultado de la
operación lógica O anterior
= A 0.1 A0.1 ← RLO Asigna a la salida externa A0.1 el
resultado anterior
AWL RTL Descripción del comportamiento
UN E 1.0 RLO ← E1.0 Selecciona la variable de entrada E1.0
invertida y transfiere su valor lógico al
RLO.
U E 1.1 RLO ← RLO · E1.1 Realiza la operación lógica Y entre el
contenido del RLO y la variable lógica
E1.1, y almacena el resultado en el RLO.
U M 1.7 RLO ← RLO · M1.7 Realiza la operación lógica Y entre el
contenido del RLO y la variable lógica
M1.7, y almacena el resultado en el RLO.
U A 2.3 RLO ← RLO · A2.3 Realiza la operación lógica Y entre el
contenido del RLO y la variable lógica
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 2019 Programación de Autómatas 14

Programación básica: Operaciones Binarias - Varias salidas

Diagrama de funciones (FUP)


AWL
E 5.0 >=1
O E 5.0 A 8.1
A 7.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 2019 Programación de Autómatas 15


Programación básica: Operaciones Binarias - Y delante de O

Diagrama de funciones (FUP)


E 5.0 &
AWL A 1.2
A 7.1 >=1
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 2019 Programación de Autómatas 16

Programación básica: Operaciones Binarias - O delante de Y

Diagrama de funciones (FUP)

AWL E 5.0 >=1


E 8.1 & A 1.2
U(
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 2019 Programación de Autómatas 17


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 E
I1.1
1.1 I1.0
E 1.0 I1.1
E 1.1. E
I1.0
1.0 E
I1.1
1.1
Controlador programable Controlador programable Controlador programable
A 4.0 A 4.0 A 4.0

Luz Luz Luz

Software
E 1.0 E 1.1 A 4.0 E 1.0 E 1.1 A 4.0 E 1.0 E 1.1 A 4.0
KOP

E 1.0 & E 1.0 & E 1.0 &

FUP
E 1.1 A 4.0 E 1.1 A 4.0 E 1.1 A 4.0

....... E 1.0 ....... E 1.0 ....... E 1.0


AWL ....... E 1.1 ....... E 1.1 ....... E 1.1
....... A 4.0 ....... A 4.0 ....... A 4.0

ISA - Vigo 2019 Programación de Autómatas 18

Programación básica: Operaciones Binarias – O exclusiva lógica

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 2019 Programación de Autómatas 19


Programación básica: Instrucciones que operan con variables lógicas

Operador Modificador Operando Descripción


U, O, X N Variable lógica Carga en el RLO la primera variable.
(Boolean) (Biestable /ER de STW)
= N Variable lógica Actúa sobre una variable de salida.
S Variable lógica Si RLO=1 pone a 1 una variable.
R Variable lógica Si RLO=1 pone a 0 una variable.

U N, ( Variable lógica Y lógica.


O N, ( Variable lógica O lógica.
X N, ( Variable lógica O exclusiva.

) Evalúa la operación aplazada.


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

ISA - Vigo 2019 Programación de Autómatas 20

Ejemplo: Ecuación Lógica

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 lógica entre E 7.1 y E 9.2 Primera expresión.
UN A 5.3 // Y lógica entre A5.3 y (E 7.1+E 9.2)
O( // Inicia una nueva expresión
U M 3.1 // Carga el valor de la variable M 3.1
U E 6.0 // Y lógica entre M 3.1 y E 6.0 Segunda expresión.
ON A 6.1 // O lógica entre A 6.1 y M 3.1*E 6.0
) // O lógica entre la primera y la segunda expresión.
= A 8.1 // Asigna el resultado a la salida A 8.1

ISA - Vigo 2019 Programación de Autómatas 21


Programación básica: Operaciones de Memorización

 S : SET (activar) - poner a 1 permanente


 R : RESET (desactivar) - poner a 0 permanente
 = : Asignar - poner el resultado actual
Operaciones de Memorización

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 operación Asignar se efectúa en cada ciclo.

O-Lógica con dos operaciones de asignación ?

ISA - Vigo 2019 Programación de Autómatas 22

Programación básica: Operaciones de Memoria – Marcha/Paro

 Programación 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 2019 Programación de Autómatas



23
Programación básica: 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
%E 0.1 R Q
=
S %M 0.0
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 además de los biestables SR con prioridad al reset


existen los biestables RS (prioridad al set) y las operaciones S, R
ISA - Vigo 2019 Programación de Autómatas 24

Ejemplo: Trasvase de líquido en un tanque

 El sistema emplea una válvula de llenado y otra de vaciado y


sensores de tanque lleno y tanque vacío.
U %E 0.1
Memorizado

E0.0
S %A 1.1
Parar
U %E 0.1
O %E 0.0
Simple

E0.2 E0.1 U %E 0.4


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 O %E 0.0
UN %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 2019 Programación de Autómatas 25


Ejemplo: Trasvase de líquido entre tanques (I)

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


electroválvulas. Los tanques disponen de flotadores destinados a
detectar nivel mínimo y máximo.

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 2019 Programación de Autómatas 26

Ejemplo: Trasvase de líquido 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 2019 Programación de Autómatas 27


Ejemplo: Trasvase de líquido 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 2019 Programación de Autómatas 28

Programación básica: Símbolos

 Se puede asignar un nombre simbólico a los operandos


 Existe una tabla de símbolos donde se agrupan todas las variables
 Los símbolos globales van entre “ ”, los locales con # delante
 Hay que especificar a qué se le da prioridad (en caso de que se
modifique), al símbolo o a su dirección. En general conviene que la
prioridad esté asignada a “Símbolos”
Símbolos

 Trabajar con símbolos:


• Mejora la legibilidad del programa
• Facilita la depuración
• Simplifica la reutilización del programa

ISA - Vigo 2019 Programación de Autómatas 29


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.
U “Llamada S” %E 10.1
Subir
MOTOR O “Pulsador S” %E 10.3
Bajar UN “Sensor S” %E 10.5
S “Subir” %A 4.0

Llamada S Pulsador S
U “Sensor S” %E 10.5
Pulsador B R “Subir” %A 4.0
Sensor S
U “Llamada B” %E 10.0
O “Pulsador B” %E 10.2
UN “Sensor B” %E 10.4
Llamada B S “Bajar” %A 4.1

Sensor B U “Sensor B” %E 10.4


R “Bajar” %A 4.1
Montacargas

ISA - Vigo 2019 Programación de Autómatas 30

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.
U “Llamada S” %E 10.1
Subir
MOTOR O “Pulsador S” %E 10.3
Bajar UN “Sensor S” %E 10.5
S “Subir” %A 4.0

Llamada S Pulsador S
U “Sensor S” %E 10.5
Pulsador B R “Subir” %A 4.0
Sensor S
U “Llamada B” %E 10.0
O “Pulsador B” %E 10.2
UN “Sensor B” %E 10.4
Llamada B S “Bajar” %A 4.1

Sensor B U “Sensor B” %E 10.4


R “Bajar” %A 4.1
Montacargas

ISA - Vigo 2019 Programación de Autómatas 31


Programación básica: Evaluación de flancos

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


de una señal, sino el hecho de que pase de un estado a otro (flanco).
 Para la detección de un flanco de subida o de bajada en una señal se
emplea una marca auxiliar, que contiene el estado de la señal en el
ciclo anterior, junto con las instrucciones FP y FN, respectivamente.
Evaluación de flancos

U %E 1.0 AWL FN %M 1.0 FP %M 1.1


FP %M 1.1

= %A 4.0
%M 1.0 %M 1.1
KOP N P
Nº Ciclo 1 2 3 4 5 6 7 8 9 10 11 12 13

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

ISA - Vigo 2019 Programación de Autómatas 32

Ejemplo: Evaluación 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 lógica 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 lógica entre M100.0 y E1.2
)
= A 1.6 Asigna el valor del RLO a la salida A1.6

ISA - Vigo 2019 Programación de Autómatas 33


Ejemplo: Evaluación de flancos

Entrada S a lida Entrada S a lida Entrada + S a lida S alida + Entrada


inco mple ta inco mple ta
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 lógica 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 lógica 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 2019 Programación de Autómatas 34

Programación básica: 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.

& >=1
%M 0.0 %M 0.1
%M 0.0 %M 0.1
%M 0.0 o = %M 0.1 o =

ISA - Vigo 2019 Programación de Autómatas 35


Programación básica: Operaciones digitales-Tipos de datos numéricos

 BCD Decimal Codificado en Binario (16 ó 32 bits)


Con 16 bits: valores enteros de -999 a +999
0000 0011 0100 0111
+ 3 4 7
Operaciones digitales

 ENTERO En código binario (16 o 32 bits) (64 bits)


Los nº negativos en complemento a 2

 REAL Representación normalizada IEE 754


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

 VARIANT S7-1500

ISA - Vigo 2019 Programación de Autómatas



36

Programación básica: Operaciones digitales

 Las operaciones digitales trabajan con bytes, palabras y dobles palabras


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

ISA - Vigo 2019 Programación de Autómatas 37


Programación básica: 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 DW#16#FFFFFFFF // Cte. 32-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


A data type LWORD (long word) occupies 64 bits. The hexadecimal notation for constants is LW#16#FFFF_FFFF_FFFF_FFFF.
MOVE_LWORD, MOVE_LINT, MOVE_ULINT, MOVE_LREAL transfer data types LWORD, LINT, ULINT, and LREAL between “long” data types.
ISA - Vigo 2019 Programación de Autómatas 38

Programación básica: 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 2019 Programación de Autómatas 39


Programación básica: Resumen de Carga y Transferencia

Las instrucciones de carga y transferencia son incondicionales

Acciones que se realizan al


ejecutar un instrucción 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
Acción que se realiza al
ejecutar una instrucción T

Memoria Procesador central

ISA - Vigo 2019 Programación de Autómatas 40

Programación básica: Operaciones digitales - Combinación

 UW : Y lógica bit a bit entre ACU1 y ACU2 (palabra baja, 16 bits).


 OW : O lógica bit a bit entre ACU1 y ACU2 (palabra baja, 16 bits)
 XOW : O-exclusiva lógica bit a bit entre ACU1 y ACU2 (palabra
baja, 16 bits). UD, OD, XOD: 32 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 OPERACIÓN ACUMULADOR 1 ACUMULADOR 1


(ACU2) LÓGICA (ACU1) (ACU1)

ISA - Vigo 2019 Programación de Autómatas 41


Ejemplo: Operaciones digitales - Combinación

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 están a cero en el ACU2
(sólo quedan a “1” los bits del ACU1 que están 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 detección simultánea de flancos de


subida en varias variables.

ISA - Vigo 2019 Programación de Autómatas 42

Programación básica: Operaciones digitales - Operaciones aritméticas

 +I : ACU2 mas ACU1 (16 bits)


+D, -D, *D, /D:
 -I : ACU2 menos ACU1 (16 bits)
enteros (32 bits)
 *I : ACU2 por ACU1 (16 bits)
+R, -R, *R, /R:
 /I : ACU2 dividido ACU1 (16 bits)
reales (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 OPERACIÓN ACUMULADOR 1 ACUMULADOR 1


(ACU2) ARITMÉTICA (ACU1) (ACU1)

ISA - Vigo 2019 Programación de Autómatas 43


Programación básica: 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

OPERACIÓN RESULTADO
ACUMULADOR 2 ACUMULADOR 1
DE LÓGICO
(ACU2) (ACU1)
COMPARACIÓN (RLO)

ISA - Vigo 2019 Programación de Autómatas 44

Programación básica: 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 paréntesis: La pila de paréntesis almacena los bits RB, RLO y OR
de la palabra de estado además de un código que especifica que tipo de
instrucción lógica ha abierto el paréntesis. Tiene un tamaño de 8 bytes y, por
lo tanto, el máximo anidamiento es de 8 niveles.
ISA - Vigo 2019 Programación de Autómatas

45
Programación básica: Conversión de datos y manipulación del acumulador

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


 DTR : doble entero a real
I→R
 BTI,ITB: BCD 16 a entero (16) y viceversa
Operaciones auxiliares

 BTD,DTB: BCD 32 a entero (32) y viceversa

 NEGR: opuesto de un real


 NEGI,NEGD : complemento a 2 de entero y de doble entero
 INVI,INVD : complemento a 1 de entero y de doble entero
 RND : redondea real al entero doble más próximo
 RND+,RND- : redondeo al entero doble superior e inferior
 TRUNC : trunca real a entero doble
 TAW : intercambia 2 bytes del ACU1-L (16 bits) ABDC
 TAD : intercambia 4 bytes del ACU1 (32 bits) DCBA
 TAK : intercambia contenido del ACU1 y del ACU2
 SRW,SRD,SLW,SLD : desplazamiento de bits en el acumulador
 RRD,RLD : rotación de bits en el acumulador
ISA - Vigo 2019 Programación de Autómatas 46

Programación básica: Operaciones auxiliares - Desplazamiento

 Solo en AWL. Actúan 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 ejecución no depende de ninguna condición especial y no afectan al RLO

ISA - Vigo 2019 Programación de Autómatas 47


Programación básica: Operaciones auxiliares - Otras

 Solo en AWL. Actúan 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 código 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).
 También se dispone de otras funciones avanzadas como SIN, ACOS,
EXP, SQRT, LOOP, ...
ISA - Vigo 2019 Programación de Autómatas 48

IEC
Temporizadores y Contadores

Simatic

IEC

Simatic

ISA - Vigo 2019 Programación de Autómatas 49


Programación básica: Contadores IEC

 Los contadores son elementos capaces de almacenar, incrementar y


decrementar el valor de una variable.
(*) • Declaración de un bloque de datos del tipo
IEC_COUNTER
• Declaración como variable local del tipo IEC_COUNTER
en la sección "Static" de un módulo FB

 Su incremento (CU) o decremento (CD) se realiza mediante la


evaluación del flanco de subida de una condición lógica.
 Su valor inicial (PV) se establece mediante la evaluación de un nivel
lógico "1" en la entrada LD.
 Un nivel lógico "1" en la entrada R establece su valor a cero.
 Un contador IEC puede ser ascendente CTU, descendente CTD o
ambos CTUD.

ISA - Vigo 2019 Programación de Autómatas 50

Programación básica: Contadores IEC


(*)
(*) (*)

 Un flanco de subida en la entrada CU incrementa el contador en uno; un flanco de


subida en la entrada CD lo decrementa en uno. CV contiene el valor del contador.
 El contaje máximo/mínimo se corresponde con el límite superior/inferior del tipo de
datos indicado en la salida CV. Una vez alcanzado el límite superior, el contador no
se incrementa más; lo mismo sucede con el decremento y el límite inferior.
 Si la entrada LD está a nivel "1", el contador adopta el valor del parámetro PV y
mientras LD esté a "1", las entradas CU y CD no tendrán efecto alguno en el
contador. El parámetro PV puede ser una constante.
 Si la entrada R está a nivel "1", el contador adopta el valor "0" y mientras R esté a
"1", las entradas CU, CD y LD no tendrá efecto alguno en el contador.
 El estado lógico del contador ascendente se consulta en la salida Q/QU, que vale "1"
si el valor de contaje es mayor o igual a PV y "0" en caso contrario.
 El estado lógico del contador descendente se consulta en la salida Q/QD, que vale
"1" si el valor de contaje es menor o igual a cero y "0" en caso contrario.
ISA - Vigo 2019 Programación de Autómatas 51
IEC 61131-3 CTUD IEC

(*) • Declaración de un bloque de datos del tipo


IEC_COUNTER
• Declaración como variable local del tipo IEC_COUNTER
en la sección "Static" de un módulo FB
// CU y CD de tipo BOOL R_TRIG
IF R THEN CV := 0;
ELSIF LD THEN CV := PV;
INICIO ELSIF CU AND (CV < PVmax) THEN
CV := CV+1;
SI
R NO ELSIF CD AND (CV > PVmin) THEN
CV := CV-1;
SI LD NO
CV ← 0
END_IF;
QU := (CV >= PV);
CV ← PV SI CU↑ and NO QD := (CV <= 0);
CV<CVMax
CV ← CV+1
SI CD↑ and NO
CV>CVMin
CV ← CV-1
QU ← (CV ≥ PV)

QD ← (CV ≤ 0)

FIN

ISA - Vigo 2019 Programación de Autómatas 52

Ejemplo: Evaluación de flancos y Contaje

Entrada S a lida Entrada S a lida Entrada + S a lida S alida + Entrada


inco mple ta inco mple ta

& Z5_DB
%M50.1 A
B P
CU %MW6
%M50.0 A &
B N CD
CV %MW6
LD
PV
R

Contaje de dos puertas

ISA - Vigo 2019 Programación de Autómatas 53


Programación básica: Temporizadores IEC

 Los temporizadores son elementos capaces de adoptar un estado


diferente en función del tiempo transcurrido desde un instante dado.

 Se disparan mediante la evaluación del flanco de subida (o de


bajada en un caso) de una condición lógica en la entrada IN.
(*)
• Declaración de un bloque de datos del tipo
TP, TON o TOF
IEC_TIMER
• Declaración como variable local del tipo TP_TIME
en la sección "Static" de un módulo FB

 Existen tres tipos (modos de funcionamiento):


• TP : Temporizador de impulso prolongado
• TON : Temporizador de retardo a la conexión
• TOFF : Temporizador de retardo a la desconexión

ISA - Vigo 2019 Programación de Autómatas 54

Programación básica: Temporizadores IEC vs. Simatic - Resumen

E – Entrada de disparo
Simatic
---------------------------------- t SI

TP
SV
Impulso prolongado t

TOFF
Retardo a la desconexión t SA

TON
SE
Retardo a la conexión t

----------------------------------- t SS
Reset

ISA - Vigo 2019 Programación de Autómatas 55


Programación básica: Temporizadores IEC
TP: Temporizador de Impulso
CALL TP,“DB de Instancia” (*)
IN := Condición de Arranque (BOOL)
PT := Duración del impulso (TIME, LTIME)
Q := Estado del temporizador (BOOL)
ET := Tiempo transcurrido (TIME, LTIME)

TOF: Temporizador de Retardo al desconectar


(*)
TP, TON o TOF
CALL TON,“DB de Instancia”
IN := Arranque
PT := Tiempo de retardo al conectar
Q := Estado TON: Temporizador de Retardo al conectar
ET := Tiempo

CALL TOF,“DB de Instancia”


IN := Arranque
PT := Tiempo de retardo al desconectar
Q := Estado
ET := Tiempo

ISA - Vigo 2019 Programación de Autómatas 56

Generador de impulsos en FUP con Temporizadores y Contadores IEC

 Base de tiempo realizada con un temporizador y


• Declaración de un bloque de datos del tipo IEC_TIMER e IEC_COUNTER

un contador y Activación intermitente de A5.7

FC1
IEC_COUNTER en la sección "Static" de un módulo FB
• Declaración como variable local del tipo IEC_TIMER e

ISA - Vigo 2019 Programación de Autómatas 57


Programación básica: Temporizador IEC TP vs. Simatic SV

 Cronograma del temporizador Simatic SV


S

Q
TW TW TW

DUAL

 Cronograma del temporizador IEC TP


IN

Q
PT PT PT PT

ET

ISA - Vigo 2019 Programación de Autómatas 58

Programación básica: Semáforo

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


TP1
intermitencia M5.1 de la
luz Verde Peatones, se TP2
puede utilizar un bit del
byte de marcas de
TP3
intermitencia o uno de los
generadores de impulsos
TP4
anteriores
TP5

ISA - Vigo 2019 Programación de Autómatas 59


Programación básica: Semáforo

RC A 4.0

AC A 4.1

VC A 4.2
RP A 4.5 A 4.5
U #TP1.Q
VP A 4.6
= %A 4.1
O #TP3.Q 3s 5s

O( O #TP2.Q
U #TP4.Q O #TP3.Q
U %M 7.1 O #TP4.Q
) O #TP5.Q
= %A 4.6 = %A 4.0
UN #TP3.Q UN %A 4.0
UN #TP4.Q UN %A 4.1
= %A 4.5 = %A 4.2
ISA - Vigo 2019 Programación de Autómatas 60

Programación básica: Operaciones organizativas de salto

 Sirven para saltar dentro de un bloque.


 Se salta a metas identificadas mediante una etiqueta
Operaciones organizativas de salto

simbólica (“meta:”).
– SPA <meta> : Salto incondicional a una meta
– SPB <meta> : Salto condicionado si RLO=1
– SPZ <meta> : Salto si resultado de operación 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 2019 Programación de Autómatas 61


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 condición
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
= %A 1.1 finales de módulo:
BEA: Fin de módulo incondicional
BEB: Fin de módulo condicional(RLO)

ISA - Vigo 2019 Programación de Autómatas 62

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 2019 Programación de Autómatas 63


Programación modular: Operaciones organizativas de módulo

 División del problema


 Permiten controlar el acceso a  Reutilización de bloques de código
módulos:  Separación de tareas

• UC : Llamada incondicional a FC sin FB 3


Programación modular

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

• BEB : Fin de bloque condicionado a FC 54


BE
RLO=1 BE
BE

ISA - Vigo 2019 Programación de Autómatas 67

Programación modular: Operaciones organizativas de módulo

Properties 1500
 OBs are called by the operating
system of the controller.

 Several Main OBs can be created in


a program. The OBs are processed
sequentially by OB number.

Recommendation
 Encapsulate the different program parts
which should maybe be replaceable from controller to controller, into several Main OBs.

 Avoid the communication between the different Main OBs. They can then be used
independent of each other. If you nevertheless exchange data between the individual
main OBs, use the global DBs.

 Divide all program parts that belong to each other into folders and store them for
reusability in the project or global library.
ISA - Vigo 2019 Programación de Autómatas 68
Programación modular: Funciones (FC) y sistema (SFC)

 Bloques lógicos de programación “sin memoria”. Se pueden


desarrollar en KOP, FUP y/o AWL.
 Pueden tener o no parámetros 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 2019 Programación de Autómatas 70

Ejercicio: Llamadas a funciones parametrizadas (I)

 Realizar una función FC5 que calcule el máximo de dos números:


IN
Oper1 Int Llamada a la función: (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 2019 Programación de Autómatas 72


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
Uparámetros,
%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 %M 255.0 CALL FC3
E124.3 => 10.5 + √CUENTA CUENTA:=Z0
ZV Z 0 // CUENTA
RESULTADOFC3:=MD120
 UA cada
%E función
124.6se le pasará como LLA4: UN %E 124.3
Rparámetro
Z 0 de entrada CUENTA, y SPB FIN
devolverá el resultado de la operación, CALL FC4
en el tipo de dato adecuado. CUENTA:=Z0
RESULTADOFC4:=MD130
FIN: BEA
ISA - Vigo 2019 Programación de Autómatas 73

Bloque: FC1 OPERACION: CUENTA + 70 + L#53


RESULTADOFC1 parámetro 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 OPERACIÓN: 35.0 - CUENTA^2
RESULTADOFC2 parámetro de salida de tipo REAL, ya que
35.0 es REAL y SQR sólo trabaja con REAL
L 3.500000e+001
L #CUENTA
ITD
DTR
SQR
-R
T #RESULTADOFC2
ISA - Vigo 2019 Programación de Autómatas 74
Bloque: FC3 OPERACIÓN: 15 + CUENTA + L#10
RESULTADOFC3 parámetro 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 OPERACIÓN: 10.5 + RAIZ CUADRADA(CUENTA)
RESULTADOFC4 parámetro de salida de tipo REAL, ya que
10.5 es REAL y SQRT sólo trabaja con REAL
L 1.050000e+001
L #CUENTA
ITD
DTR
SQRT
+R
T #RESULTADOFC4
ISA - Vigo 2019 Programación de Autómatas 75

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
Ejercicios

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 2019 Programación de Autómatas 79


Bibliografía

• Bibliografía principal:
– Siemens, Manuales SIMATIC S7-300 y S7-1500, Ed. SIEMENS AG 2004-
2017.
– IEC, Norma “IEC 61131-3: Programmable Controllers – Programming
Languages”, Ed. IEC.
– E. Mandado, J. Acevedo, C. F. Silva, I. Armesto, J. L. Rivas y J. M. Nuñez,
Bibliografía

“Sistemas de automatización y autómatas programables”. Ed. Marcombo.


2018.
– H. Berger, “Automating with SIMATIC S7-1500”. Ed. SIEMENS AG. 2014

• Bibliografía adicional:
– A. Porras y A.P. Montero, “Autómatas Programables. Fundamento. Manejo.
Instalación y Práctica”, Ed. Mc. Graw-Hill.
– J.P. Romeda et al., “Problemas Resueltos con Autómatas Programables”, Ed.
Paraninfo.

ISA - Vigo 2019 Programación de Autómatas 80

Anexo:

Temporizadores y contadores en Simatic (Legacy)

ISA - Vigo 2019 Programación de Autómatas 81


Programación básica: Contadores Simatic

 Los contadores son elementos capaces de almacenar, incrementar y


decrementar el valor de una variable.

%Z<n>
 Su inicialización, incremento o
decremento se realizan mediante la
evaluación del flanco de subida de
una condición lógica.

 Cada modelo de CPU dispone de una


cantidad determinada de contadores.
 FR libera ZV, ZR y S,
 Existen módulos de contadores pero no FR.
rápidos.


ISA - Vigo 2019 Programación de Autómatas 82

Programación básica: Contadores - Inicialización

U M 0.0 ( )
 Inicialización constante. Ej. 37
Operación Operando
Cuenta inicial (0..999)
L C# 37
 Inicialización 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 estado Valor del contador en binario natural
S %Z 1 b14=0
Q=b14≠b15 Bits de control de la activación, de la habilitación, y del contaje
ascendente y descendente

ISA - Vigo 2019 Programación de Autómatas 83


Programación básica: Contadores Simatic en AWL

 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 2019 Programación de Autómatas 84

Programación básica: Contadores – Equivalencia KOP - AWL

U E 3.1
ZV Z 1
...
U E
ZV Z
3.2
1
?
ISA - Vigo 2019 Programación de Autómatas 85
Ejemplo: Evaluación de flancos y Contaje

Entrada S a lida Entrada S a lida Entrada + S a lida S alida + Entrada


inco mple ta inco mple ta

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 2019 Programación de Autómatas 86

Programación básica: Temporizadores Simatic

 Los temporizadores son elementos capaces de adoptar un estado


diferente en función del tiempo transcurrido desde un instante dado.
%T<n>
 Se disparan mediante la evaluación del
flanco de subida (o bajada en un caso) de
una condición lógica.

 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 desconexión
• SE : Temporizador de retardo a la conexión
• SS : Temporizador de retardo a la conexión memorizado

ISA - Vigo 2019 Programación de Autómatas 87
Programación básica: Temporizadores Simatic - Resumen

E – Entrada

SI – Impulso
t

SV – Impulso prolongado
t

SA – Retardo a la desconexión
t

SE – Retardo a la conexión
t

SS – Retardo a la conexión 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 2019 Programación de Autómatas 88

Programación básica: Temporizadores - Especificación del tiempo

U M 0.0 ( )
 Temporización constante. Ej. 4.2 s H: horas
M: minutos
Operación Operando S: segundos
MS: milisegundos

L S5T#4S200MS Base de tiempo


00 : 0.01 s
 Temporización 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 Actualización
asíncrona
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 de Valor del tiempo
en la memoria Bits de tiempo en binario natural
Bits de control de la habilitación y el
S<?> %T 1 estado
T>0→b15=1 arranque
I, V, A, E, S ↵ Q=b14≠b15

ISA - Vigo 2019 Programación de Autómatas 89


Programación básica: 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. Resolución: centésimas 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 2019 Programación de Autómatas 90

Programación básica: Temporizadores - Retardo a la conexión

 SE: Retardo a la conexión 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 después de


0.7 segundos, siempre que E 3.5 siga a 1 y hasta que pase a cero.
 SS: Retardo a la conexión 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 después de 4 segundos.
Es redisparable. Se pone a cero con reset (R T3).
ISA - Vigo 2019 Programación de Autómatas 91
Programación básica: Temporizadores - Retardo a la desconexión

 SA : Retardo a la desconexión.
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
después de 8 segundos. Es redisparable.

ISA - Vigo 2019 Programación de Autómatas 92

Programación básica: Temporizadores Simatic en KOP y FUP

KOP %T<n>  Entradas


Tipo S y R : set y reset (booleano)
S Q TW : temporización (S5TIME)

TW BI
 Salidas
Q : estado (booleano)
R BCD
BI(DUAL): valor del tiempo actual (int)
BCD (DEZ): valor del tiempo actual (BCD)
FUP %T<n>
 Tipo
Tipo
S_PULSE : impulso (SI)
S BI
S_PEXT : impulso prolongado (SV)
TW BCD
S_OFFDT : retardo desconexión (SA)
S_ODT : retardo conexión (SE)
R Q
S_ODTS : retardo conexión memoria (SS)

ISA - Vigo 2019 Programación de Autómatas 93


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 conexión. T7 y M2.0 están a cero durante 1 segundo y
después 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 %T7
1
T 7 = M 2.0
1s 1s 1s U %T7
0 = %M 2.0

ISA - Vigo 2019 Programación de Autómatas 94

Generador de impulsos: generador de señal cuadrada

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


a) Flanco de bajada de M2.0 => T7 y M2.0 están a L S5T#1S
cero durante 1 segundo y después se ponen a 1. SE T7
U T7
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 demás 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 2019 Programación de Autómatas 95
Generador de impulsos con activación y desactivación 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
temporización del otro, cuya salida pasará a 1 durante el SV T2
tiempo programado. UN T2
L S5T#4S
c) La salida se iguala a uno de los 2 temporizadores, con lo
SV T1
que estará a 1 el tiempo programado en ese temporizador
y a 0 el tiempo programado en el otro. Con ello se puede U T2
conseguir una señal 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 2019 Programación de Autómatas 96

Generador de impulsos en FUP

 Base de tiempo realizada con un temporizador y un contador

ISA - Vigo 2019 Programación de Autómatas 97


Programación básica: Semáforo

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 2019 Programación de Autómatas 98

Programación básica Simatic: Semáforo

U T 1
= A 4.1
O T 3
O( O T 2
U T 4 O T 3
U M 5.1 O T 4
) O T 5
= A 4.6 = A 4.0
UN T 3 UN A 4.0
UN T 4 UN A 4.1
= A 4.5 = A 4.2
ISA - Vigo 2019 Programación de Autómatas 99

También podría gustarte