Tutorial S7

154
Versión 22/01/2002 Pág. 1 de 154 T T T U U U T T TO O OR R RI I IA A A L L L  D D DE E E  P P P R R R O O O G G G R R R A A A M M M A A A C C C I I I Ó Ó Ó N N N  E E E N N N S S S I I I M M MA A A T T T I I I C C C  S S S7 7 7  

Transcript of Tutorial S7

  • 5/24/2018 Tutorial S7

    1/154

    Versin 22/01/2002 Pg. 1 de 154

    TTTUUUTTTOOORRRIIIAAALLLDDDEEEPPPRRROOOGGGRRRAAAMMMAAACCCIIINNN

    EEENNNSSSIIIMMMAAATTTIIICCCSSS777

  • 5/24/2018 Tutorial S7

    2/154

    Versin 22/01/2002 Pg. 2 de 154

    Tutorial de programacin en Simatic S7

    INDICE

    1.1. Distribucin.......................................................................................................... 8

    1.2. Objetivos.............................................................................................................. 8

    2. Introduccin .......................................................................................................... 9

    2.1. PLCs ................................................................................................................... 9

    2.2. Funcionamiento bsico........................................................................................ 9

    2.3. Control ............................................................................................................... 11

    2.4. Autmata ........................................................................................................... 112.5. Ventajas............................................................................................................. 11

    2.6. Autmatas Siemens........................................................................................... 12

    2.7. Ciclo de trabajo en el autmata ......................................................................... 13

    2.8. Lenguajes de programacin .............................................................................. 13

    3. Sistemas de numeracin.................................................................................... 15

    3.1. Sistema Decimal................................................................................................ 15

    3.2. Sistema Binario.................................................................................................. 15

    3.3. Convertir el binario............................................................................................. 16

    3.4. Bits, bytes, y palabras (words)........................................................................... 16

    3.5. 0 lgico, 1 lgico................................................................................................ 17

    3.6. BCD ................................................................................................................... 17

    3.7. Hexadecimal ...................................................................................................... 18

    3.8. Conversin de nmeros..................................................................................... 194. Sistemas de numeracin.................................................................................... 20

    4.1. Estructura de la memoria en Simatic S7 ........................................................... 20

    4.2. Tipos de mdulos .............................................................................................. 21

    4.3. Tipos de datos ................................................................................................... 22

    4.4. Marcas de memoria ........................................................................................... 22

    4.5. Entradas y salidas ............................................................................................. 22

    4.6. Registros............................................................................................................ 23

  • 5/24/2018 Tutorial S7

    3/154

    Versin 22/01/2002 Pg. 3 de 154

    4.7. Temporizadores y contadores ........................................................................... 25

    5. Programacin en AWL ....................................................................................... 26

    5.1. Tratamiento de los resultados ........................................................................... 26

    5.2. Primera consulta................................................................................................ 265.3. ASIGNACION .................................................................................................... 26

    5.4. Funcin AND (Y)................................................................................................ 27

    5.5. Funcin OR (O) ................................................................................................. 27

    5.6. Funcin XOR (O exclusiva) ............................................................................... 28

    5.7. Expresiones entre parntesis ............................................................................ 28

    5.8. Y antes de O...................................................................................................... 29

    5.9. Ejercicio propuesto ............................................................................................ 30

    5.10. Operaciones de flancos................................................................................... 31

    5.11. Set y Reset ...................................................................................................... 31

    5.12. Negar, activar, desactivar y salvar el RLO ...................................................... 32

    5.13. Ejercicios propuestos....................................................................................... 33

    6. Acumuladores - Operaciones de carga y transferencia.................................. 34

    6.1. Operacin de carga ........................................................................................... 346.2. Operacin de transferencia ............................................................................... 35

    7. Operaciones de contaje ..................................................................................... 36

    7.1. Operaciones con contadores............................................................................. 36

    7.2. Cargar un valor de contaje ................................................................................ 36

    7.3. Borrar un contador............................................................................................. 36

    7.4. Contaje hacia adelante y hacia atrs................................................................. 37

    7.5. Consulta del estado de contadores ................................................................... 37

    7.6. Lectura de un valor de contaje .......................................................................... 37

    7.7. Ejercicios propuestos......................................................................................... 38

    8. Operaciones de temporizacin.......................................................................... 39

    8.1. Operaciones con temporizadores...................................................................... 39

    8.2. Cargar un valor de temporizacin...................................................................... 39

    8.3. Consulta del estado de temporizadores. ........................................................... 40

    8.4. Temporizador como impulso (SI)....................................................................... 41

  • 5/24/2018 Tutorial S7

    4/154

    Versin 22/01/2002 Pg. 4 de 154

    8.5. Temporizador como impulso prolongado (SV) .................................................. 42

    8.6. Temporizador como retardo a la conexin (SE)................................................ 43

    8.7. Temporizador como retardo a la conexin con memoria (SS) .......................... 44

    8.8. Temporizador como retardo a la desconexin (SA) .......................................... 458.9. Elegir el temporizador adecuado....................................................................... 46

    8.10. Borrar una temporizacin ................................................................................ 47

    8.11. Re-arranque de un temporizador..................................................................... 47

    8.12. Lectura de un valor de temporizacin.............................................................. 48

    8.13. Ejercicios propuestos....................................................................................... 49

    9. Operaciones de salto ......................................................................................... 51

    9.1. Operaciones de salto incondicional ................................................................... 51

    9.2. Operaciones de salto condicional, en funcin del RLO..................................... 52

    9.3. Operaciones de salto condicional, en funcin de RB u OV/OS......................... 52

    9.4. Operaciones de salto condicional, en funcin de A1 y A0................................. 53

    9.5. Finalizar mdulos............................................................................................... 54

    9.6. Loop................................................................................................................... 55

    9.7. Ejercicios propuestos......................................................................................... 5510. Operaciones de control de programa............................................................... 56

    10.1. Llamar funciones y mdulos de funcin con CALL.......................................... 56

    10.2. Llamar funciones y mdulos con CC y UC...................................................... 57

    10.3. Llamar funciones de sistema integradas ......................................................... 58

    10.4. Funcin Master Control Relay ......................................................................... 58

    11. Formatos de representacin de nmeros ........................................................ 60

    11.1. Binario.............................................................................................................. 60

    11.2. Hexadecimal.................................................................................................... 60

    11.3. BCD ................................................................................................................. 60

    11.4. Nmeros enteros (I)......................................................................................... 61

    11.5. Nmeros dobles enteros (D)............................................................................ 62

    11.6. Nmeros reales (R) ......................................................................................... 62

    12.

    Operaciones de comparacin............................................................................ 64

    12.1. Realizacin de comparaciones........................................................................ 64

  • 5/24/2018 Tutorial S7

    5/154

    Versin 22/01/2002 Pg. 5 de 154

    12.2. Comparar dos nmeros enteros...................................................................... 64

    12.3. Comparar dos nmeros reales ........................................................................ 65

    12.4. Ejercicios propuestos....................................................................................... 67

    13. Marca de ciclo ..................................................................................................... 6813.1. Ejercicios propuestos....................................................................................... 68

    14. Operaciones aritmticas.................................................................................... 69

    14.1. Operaciones aritmticas con enteros .............................................................. 69

    14.2. Operaciones aritmticas con nmeros reales ................................................. 70

    14.3. Ejercicios propuestos....................................................................................... 71

    15. Operaciones de conversin............................................................................... 72

    16. Operaciones de desplazamiento....................................................................... 74

    16.1. Desplazar palabras.......................................................................................... 74

    16.2. Desplazar doble palabras................................................................................ 74

    16.3. Desplazar enteros............................................................................................ 75

    16.4. Desplazar dobles enteros................................................................................ 75

    16.5. Ejercicios propuestos....................................................................................... 75

    17. Operaciones de rotacin.................................................................................... 7617.1. Rotar palabras dobles...................................................................................... 76

    17.2. Ejercicios propuestos....................................................................................... 76

    18. Bloques del programa de usuario..................................................................... 77

    18.1. Tipos de bloques ............................................................................................. 77

    18.2. Mdulos de funcin (FC) ................................................................................. 78

    18.3. Tabla de declaracin de variables................................................................... 78

    18.4. Llamadas a bloques......................................................................................... 79

    18.5. Ejemplo de funcin FC .................................................................................... 80

    18.6. Bloques de datos (DB)..................................................................................... 82

    18.7. Bloque de datos global .................................................................................... 82

    18.8. Ejemplo de bloque de datos global.................................................................. 84

    18.9. Formato de datos en los DB............................................................................ 85

    18.10. Bloques de funcin (FB) ............................................................................... 87

    18.11. Llamada al FB................................................................................................ 88

  • 5/24/2018 Tutorial S7

    6/154

    Versin 22/01/2002 Pg. 6 de 154

    18.12. Multiinstancia : Un DB de instancia para cada instancia ............................... 89

    18.13. Multiinstancia : Un DB de instancia para varias instancias de un FB............ 91

    18.14. Ejercicio propuesto ........................................................................................ 92

    19. Tratamiento de seales analgicas .................................................................. 9319.1. Entrada analgica............................................................................................ 93

    19.2. Salida analgica .............................................................................................. 94

    19.3. Direccionamiento seales analgicas ............................................................. 94

    19.4. Funcin de escalado de entradas analgicas (FC105) ................................... 95

    19.5. Funcin de desescalado de salidas analgicas (FC106) ................................ 97

    19.6. Parmetros de las tarjetas analgicas............................................................. 98

    19.7. Ejercicios propuestos....................................................................................... 99

    20. Eventos de alarma y error asncrono.............................................................. 100

    20.1. Mdulo de arranque OB100 .......................................................................... 101

    20.2. Alarma cclica OB35 ...................................................................................... 101

    20.3. Alarma horaria OB10..................................................................................... 102

    20.4. Interrupcin de retardo OB20 ........................................................................ 102

    20.5. Ms OBs ....................................................................................................... 10321. Direccionamiento indirecto.............................................................................. 104

    21.1. Direccionamiento indirecto por memoria ....................................................... 104

    21.2. Direccionamiento indirecto por registro intrarea.......................................... 106

    21.3. Direccionamiento indirecto por registro interrea.......................................... 107

    21.4. Operaciones con el registro de direcciones................................................... 107

    21.5. Ejercicio propuesto ........................................................................................ 108

    22. Array - Matrices................................................................................................. 109

    23. Comunicacin de datos globales.................................................................... 111

    23.1. Configuracin de una red GD........................................................................ 112

    24. Proteger un bloque (Know-How)..................................................................... 116

    24.1. Tabla de variables para visualizar / forzar ..................................................... 118

    25. Ejercicios propuestos ...................................................................................... 119

    25.1. Bomba de agua ............................................................................................. 119

    25.2. Control de llenado de botellas ....................................................................... 120

  • 5/24/2018 Tutorial S7

    7/154

    Versin 22/01/2002 Pg. 7 de 154

    25.3. Control de llenado de botellas 2 .................................................................... 121

    25.4. Control de una escalera mecnica ................................................................ 122

    25.5. Cintas transportadoras .................................................................................. 123

    25.6. Mquina expendedora de tabaco .................................................................. 12425.7. Gasolinera ..................................................................................................... 125

    26. Soluciones ejercicios propuestos................................................................... 126

    26.1. Ejercicio operaciones lgicas ........................................................................ 126

    26.2. Ejercicio taladradora...................................................................................... 127

    26.3. Ejercicio motor ............................................................................................... 128

    26.4. Ejercicio de control de un semforo .............................................................. 129

    26.5. Ejercicios generador de pulsos y onda cuadrada.......................................... 131

    26.6. Ejercicio rea de almacenamiento................................................................. 132

    26.7. Ejercicio factorial de un nmero .................................................................... 133

    26.8. Ejercicio multiplicacin y divisin................................................................... 134

    26.9. Ejercicio desplazamiento ............................................................................... 135

    26.10. Ejercicio cintas transportadoras................................................................... 136

    26.11. Ejercicio detector de humo .......................................................................... 13726.12. Ejercicio contador analgico........................................................................ 137

    26.13. Ejercicio onda diente de sierra .................................................................... 137

    26.14. Ejercicio repostera...................................................................................... 139

    26.15. Sistema de adquisicin de datos ................................................................. 148

    Anexo I : Informacin general de Simatic S7-314IFM ........................................... 149

  • 5/24/2018 Tutorial S7

    8/154

    Versin 22/01/2002 Pg. 8 de 154

    1.1. Distribucin

    Este documento es de libre distribucin y empleo. El autor no se responsabiliza de cualquiermodificacin efectuada al original.

    Se permite la copia parcial o integra de su contenido.Simatic S7 es propiedad de Siemens AUT, todos los derechos son reservados. Siemens no seresponsabiliza de este documento.

    1.2. Objetivos

    Con este tutorial se pretende ensear los conocimientos necesarios para programar en losautmatas de la serie Simatic S7 de Siemens AUT.

    No se va a mostrar la utilizacin del programa Step7, ya que este programa es comercial e

    incluye los manuales necesarios para su empleo.

    Todo lo aqu expuesto ha sido obtenido de los manuales del autmata, pero se ha estructuradode distinta forma, tratando que la persona que lo utilice no se pierda en ningn momento y queacceda de forma rpida a lo que busca.

    Por supuesto, este tutorial no es una alternativa al manual que incorpora el autmata, se debetomar como una gua complementaria. El manual proporciona ms ejemplos y mayor detalleque el expuesto aqu.

    Es necesario que el lector est familiarizado con el lgebra de Boole, y si se est familiarizadocon algn otro lenguaje de programacin (como basic o ensamblador) ser mucho ms sencillo

    y rpido. Si no conoce los conceptos de lgebra de Boole puede recurrir al tutorial disponible enla seccin de electrnica industrial en esta misma web.

  • 5/24/2018 Tutorial S7

    9/154

    Versin 22/01/2002 Pg. 9 de 154

    2. Introduccin

    2.1. PLCs

    Los Controladores Lgicos Programables (PLCs), tambin llamados autmatas programables,forman parte de la familia de los ordenadores. Se usan en aplicaciones comerciales eindustriales. Un autmata monitoriza las entradas, toma decisiones basadas en su programa, ycontrola las salidas para automatizar un proceso o mquina. Este curso trata de suministrar lainformacin bsica sobre las funciones y las configuraciones de los autmatas programables.

    2.2. Funcionamiento bsico

    Un autmata programable consiste en mdulos de entradas, una CPU, y mdulos de salidas.Una entrada acepta una gran variedad de seales analgicas o digitales de varios dispositivos decampo (sensores) y los convierte en una seal lgica que puede usar la CPU. La CPU tomas lasdecisiones y ejecuta las instrucciones de control basadas en las instrucciones del programa de lamemoria. Los mdulos de salida convierten las instrucciones de control de la CPU en una sealdigital o analgica que se puede usar para controlar dispositivos de campo (actuadores). Se usaun dispositivo de programacin para introducir las instrucciones deseadas. Estas instruccionesespecifican lo que debe hacer el autmata segn una entrada especifica. Un dispositivo operadorpermite procesar la informacin para ser visualizada e introducir nuevos parmetros de control.

  • 5/24/2018 Tutorial S7

    10/154

    Versin 22/01/2002 Pg. 10 de 154

    Los pulsadores (sensores), del siguiente ejemplo, conectados a las entradas del autmata,pueden usarse para arrancar y parar un motor conectado a un autmata a travs de un arrancador(actuador).

  • 5/24/2018 Tutorial S7

    11/154

    Versin 22/01/2002 Pg. 11 de 154

    2.3. Control

    Anteriormente a los autmatas, muchas de estas tareas de control se solucionaban mediante

    rels o contactores. Esto con frecuencia se denominaba control mediante lgica cableada. Setenan que disear los diagramas de circuito, especificar e instalar los componentes elctricos, ycrear listas de cableado. Entonces los electricistas deban cablear los componentes necesariospara realizar una tarea especifica. Si se cometa un error, los cables tenan que volver aconectarse correctamente. Un cambio en su funcin o una ampliacin del sistema requeragrandes cambios en los componentes y su recableado.

    2.4. Autmata

    Lo mismo, adems de tareas ms complejas, se puede hacer con un autmata. El cableado entredispositivos y los contactos entre rels se hacen en el programa del autmata. Aunque todavase requiere el cableado para conectar los dispositivos de campo, ste es menos intensivo. Lamodificacin de la aplicacin y la correccin de errores son ms fciles de realizar. Es ms fcilcrear y cambiar un programa en un autmata que cablear y recablear un circuito.

    2.5. Ventajas

    Menor tamao fsico que las soluciones de cableado

    La realizacin de cambios es ms fcil y ms rpida.

    Los autmatas llevan integradas funciones de diagnstico.

    Los diagnsticos estn disponibles centralmente en la PG.

    Las aplicaciones pueden ser inmediatamente documentadas.

    Se pueden duplicar las aplicaciones ms rpidamente y con menor coste.

  • 5/24/2018 Tutorial S7

    12/154

    Versin 22/01/2002 Pg. 12 de 154

    2.6. Autmatas Siemens

    Siemens fabrica varios lneas de autmatas de la familia SIMATIC S7. Son: S7-200, S7-300,

    y S7-400.

    S7-200

    Al S7-200 se le denomina microsistema a causa de su pequeo tamao. El S7-200 tiene undiseo compacto que significa que la fuente de alimentacin y las Entradas/Salidas las llevaincorporadas. El S7-200 puede usarse en pequeas aplicaciones independientes comoascensores, lavado de coches, o mquinas mezcladoras. Tambin puede utilizarse enaplicaciones industriales ms complejas como mquinas de embotellado y empaquetado.

    S7-300 y S7-400

    Estos autmatas se usan en aplicaciones ms complejas que necesitan de un mayor nmero deEntradas/Salidas. Ambos son modulares y ampliables. La fuente de alimentacin y lasEntradas/Salidas consisten en mdulos independientes conectados a la CPU. La eleccin entreel S7-300 y el S7-400 depende de la complejidad de la tarea y de una posible ampliacin futura.

  • 5/24/2018 Tutorial S7

    13/154

    Versin 22/01/2002 Pg. 13 de 154

    2.7. Ciclo de trabajo en el autmata

    El autmata va a ejecutar nuestro programa de usuario en un tiempo determinado, el cual va adepender sobre todo de la longitud del programa. Esto es debido a que cada instruccin tarda untiempo determinado en ejecutarse, por lo que en procesos rpidos ser un factor crtico.

    En un sistema de control mediante autmata programable tendremos los siguientes tiempos:

    1. Retardo de entrada.2. Vigilancia y exploracin de las entradas.3. Ejecucin del programa de usuario.4. Transmisin de las salidas.5. Retardo en salidas.

    Los puntos 2, 3 y 4 sumados dan como total el tiempo de ciclo del autmata. Tras este ciclo escuando se modifican las salidas, por lo que si varan durante la ejecucin del programa tomarncomo valor el ltimo que se haya asignado. Tambin supone que una variacin en las entradasno se ver durante la ejecucin del programa, hasta que se inicie un nuevo ciclo.

    Esto es as debido a que no se manejan directamente las entradas y las salidas, sino una imagenen memoria de las mismas que se adquiere al comienzo del ciclo (2) y se modifica al final deste (retardo).

    En la etapa de vigilancia (watchdog) se comprueba si se sobrepas el tiempo mximo de ciclo,activndose en caso afirmativo la seal de error correspondiente.

    2.8. Lenguajes de programacin

    Para toda la familia de autmatas Simatic S7 se emplean los siguientes lenguajes deprogramacin:

    - Lista de instrucciones (AWL).

    - Esquema de contactos (KOP): se representa grficamente con smbolos elctricos.

    Internamente el autmata solo trabaja con lista de instrucciones, KOP es traducido a AWL porStep7. En este tutorial solo veremos la programacin en lista de instrucciones.

    Las instrucciones son las rdenes lgicas elementales que el sistema debe obedecer. Suelenocupar una lnea de programa (dos en algunas instrucciones), y no pueden escindirse eninstrucciones parciales.

    Las instrucciones AWL se dividen en:

    OPERACION: indica la instruccin que se ha de realizar (ej. AND).

    OPERANDO: indica una constante o direccin con la que debe trabajar la operacin. Sise trata de una direccin se puede manejar en modo bit, byte o palabra (tal y comoveremos ms adelante).

  • 5/24/2018 Tutorial S7

    14/154

    Versin 22/01/2002 Pg. 14 de 154

    Operacin|| Identificador del operando| |U E 32.0 //Operacin AND lgica

    | |

    Operando Comentarios

    Una instruccin puede no contener operando (ej. NOT).

    El operando puede ser sustituido por un nombre simblico (ej. MOTOR_ON), el cual debe serespecificado al comienzo del programa para indicar a que entrada o salida equivale.

  • 5/24/2018 Tutorial S7

    15/154

    Versin 22/01/2002 Pg. 15 de 154

    3.Sistemas de numeracin

    Dado que un autmata es un ordenador, almacena informacin en forma de condiciones On yOff (1 0), refirindose a dgitos binarios (bits).

    A veces los dgitos binarios se usan individualmente y otras son utilizados para representarvalores numricos.

    3.1. Sistema Decimal

    En los autmatas se usan varios sistemas numricos. Todos los sistemas de nmeros tienen lasmismas caractersticas: dgitos, base, potencia. El sistema decimal, que es de utilizacin comnen la vida diaria, tiene las caractersticas siguientes:

    Diez dgitos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9Base 10Potencias 1, 10, 100, 1000, ...

    3.2. Sistema Binario

    El sistema binario se usa en los controladores programables. Tiene las siguientescaractersticas:

    Dos dgitos 0, 1

    Base 2Potencias de base 2 (1, 2, 4, 8, 16, ...)

    En el sistema binario los 1s y 0s se ordenan en columnas. Cada columna tiene un peso. Laprimera columna tiene un peso binario de 20. Esto equivale al decimal 1. A ste se le denominabit menos significativo. El peso binario se dobla en cada columna sucesiva. La siguientecolumna, por ejemplo, tiene un peso de 21, que equivale al decimal 2. El valor decimal se doblaen cada columna sucesiva. El nmero ms a la izquierda se denomina bit ms significativo. Enel ejemplo, el bit ms significativo tiene un peso binario de 27. Es equivalente al decimal 128.

  • 5/24/2018 Tutorial S7

    16/154

    Versin 22/01/2002 Pg. 16 de 154

    3.3. Convertir el binario

    Los siguientes pasos se pueden usar para interpretar un nmero decimal desde un valor binario:

    1. Buscar de derecha a izquierda (de menos significativo a ms significativo) los 1s.

    2. Escribir la representacin decimal de cada columna que contenga un 1.

    3. Sumar los valores de esas columnas.

    En el ejemplo siguiente, las columnas cuarta y quinta desde la derecha contienen un 1. El valordecimal de la cuarta columna desde la derecha es 8, y el valor decimal de la quinta columnadesde la derecha es 16. El decimal equivalente de este nmero binario es 24. La suma de todaslas columnas con peso que contienen un 1 es el nmero decimal que el autmata ha almacenado.

    En el siguiente ejemplo las columnas cuarta y quinta desde la derecha contienen un 1. El valordecimal de la cuarta columna desde la derecha es 8, y el valor decimal de la sexta columnadesde la derecha es 32. El decimal equivalente de este nmero binario es 40.

    3.4. Bits, bytes, y palabras (words)

    Cada unidad binaria de datos es un bit. Cada 8 bits hacen 1 byte. 2 bytes 16 bits, hacen 1palabra.

  • 5/24/2018 Tutorial S7

    17/154

    Versin 22/01/2002 Pg. 17 de 154

    3.5. 0 lgico, 1 lgico

    Los controladores programables slo pueden entender una seal que sea On o Off (presente o nopresente). El sistema binario es un sistema en el cual slo hay dos nmeros, 1 y 0. El binario 1indica que una seal est presente, o el interruptor est On. El binario 0 indica que la seal noest presente, o el interruptor est Off.

    3.6. BCD

    El cdigo BCD (Binary-Coded Decimal) son nmeros decimales en los que cada dgito estrepresentado por un nmero binario de 4 bits. Un contador de vueltas es un ejemplo de undispositivo de entrada de 4 bits. El BCD se usa comnmente con dispositivos de entrada ysalida. Los nmeros binarios se rompen en grupos de 4 bits, cada grupo representa un decimalequivalente. Un contador de vueltas de 4 dgitos, como el que se muestra abajo, podra controlar16 (4 x 4) entradas al autmata.

  • 5/24/2018 Tutorial S7

    18/154

    Versin 22/01/2002 Pg. 18 de 154

    3.7. Hexadecimal

    El hexadecimal es otro sistema usado en los autmatas programables. El sistema hexadecimaltiene las caractersticas siguientes:

    16 dgitos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

    Base 16Potencias de base 16 (1, 16, 256, 4096 ...)

    Se utilizan los diez dgitos del sistema decimal para los primeros diez dgitos del sistemahexadecimal. Se usan las primeras seis letras del alfabeto para los seis dgitos restantes.

    A = 10 D = 13B = 11 E = 14C = 12 F = 15

    El sistema hexadecimal se utiliza en los autmatas programables porque permite representar elestado de un gran nmero de bits binarios en un pequeo espacio como es la pantalla de un

    ordenador o un visualizador de programacin. Cada dgito hexadecimal representa el estadoexacto de 4 bits binarios. Para convertir un nmero decimal a un nmero hexadecimal el nmerodecimal se dividir por base 16. Por ejemplo, para convertir el decimal 28 a hexadecimal:

    El decimal 28 dividido entre 16 es 1 con un resto de 12. Doce es equivalente a C en

    hexadecimal. El hexadecimal equivalente del decimal 28 ser pues 1C.El valor decimal de un nmero hexadecimal se obtiene multiplicando individualmente losdgitos hexadecimales por el peso de base 16 y despus sumando los resultados. En el siguienteejemplo el nmero hexadecimal 2B se convierte a su decimal equivalente que es 43.

    160= 1161= 16B =11

  • 5/24/2018 Tutorial S7

    19/154

    Versin 22/01/2002 Pg. 19 de 154

    3.8. Conversin de nmeros

    La siguiente tabla muestra unos pocos valores numricos en representacin decimal, binario,BCD, y hexadecimal.

  • 5/24/2018 Tutorial S7

    20/154

    Versin 22/01/2002 Pg. 20 de 154

    4. Sistemas de numeracin

    4.1. Estructura de la memoria en Simatic S7

    La memoria del autmata est estructurada en las siguientes zonas:

    MEMORIA DE PROGRAMA:

    Aqu es donde se va a introducir el programa que hagamos. La capacidad vara segn laCPU que utilicemos, para la S7-314 IFM tenemos 24K bytes, lo cual equivale a unamedia de 8K (8192) lneas de programa. Como se puede observar cada lnea de

    programa suele ocupar 4 bytes de memoria.

    IMAGENES DE ENTRADAS Y SALIDAS:

    Tal y como vimos en 2.1, el autmata maneja una imagen en memoria de las entradas y

    las salidas, actualizando stas al final del ciclo y recogiendo su estado al principio deotro.

    MARCAS DE MEMORIA:

    Aqu almacenaremos los datos intermedios que deseemos preservar. Solo se admitendatos de 1 bit, aunque pueden manejarse en modo bit, byte, etc.

    E/S DE LA PERIFERIA:

    Esta zona se emplea para tener acceso directo a los mdulos de E/S externos que puedenser aadidos a la CPU.

    ESTADO DE TEMPORIZADORES Y CONTADORES:

    El valor de temporizacin y de contaje, preseleccin y estado actual, se almacena en esta rea.Por batera se pueden retener los valores de contaje y temporizacin que deseemos.

    MODULOS DE DATOS:

    Aqu podemos almacenar constantes y valores obtenidos mediante operaciones de cualquierlongitud (bit, byte, etc.). Estos mdulos pueden ser accesibles desde cualquier mdulo deprograma.

    DATOS TEMPORALES:

    Aqu se almacenan distintos datos, como las pilas de salto, que se utilizan durante la ejecucindel programa y se pierden al final de cada ciclo.

  • 5/24/2018 Tutorial S7

    21/154

    Versin 22/01/2002 Pg. 21 de 154

    4.2. Tipos de mdulos

    El Simatic S7 dispone de una serie de mdulos que dividen la memoria de programa y la dedatos en secciones, permitiendo una programacin estructurada y un acceso ordenado a losdatos. El nmero de mdulos va a depender del tipo de CPU empleada, disponiendo en general

    de los siguientes:Mdulos de organizacin (OB)

    Constituyen la forma de comunicacin entre el sistema operativo de la CPU y el programa deusuario. Existen 3 tipos de OB, los cuales estn accesibles o no segn el tipo de CPU:

    OB 1 (ciclo libre): es el mdulo principal, el que se ejecuta cclicamente y del queparten todos los saltos a otros mdulos.

    +-----+| | ===> +-----+| | | || | +-----+| | | | ===> +-----+| | | | | || | | |

  • 5/24/2018 Tutorial S7

    22/154

    Versin 22/01/2002 Pg. 22 de 154

    Mdulos de funciones especiales (SFB)

    Se tratan de mdulos ya programados, los cuales estn preparados para realizar accionescomplejas como regulacin PID (lazo cerrado), medida de frecuencia, etc...

    Mdulos de funciones del sistema (SFC)

    Son funciones integradas en el sistema operativo de la CPU y que se pueden llamar en caso denecesidad desde el programa de usuario.

    4.3. Tipos de datos

    Los operandos de las instrucciones se componen de un dato que puede ser de distintos tipos. Lostipos de datos posibles son:

    E entradaA salida

    M marcaP periferia (acceso directo)L datos localesT temporizadorZ contadorDB mdulo 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).

    4.4. Marcas de memoria

    Cuando realicemos nuestro programa y operemos a nivel de bit en operaciones lgicas (and, or,etc.) puede que nos aparezca la necesidad de almacenar el resultado lgico que tengamos en undeterminado momento. Para ello disponemos de 256 marcas de memoria de 1 byte, es decir untotal de 2048 marcas de 1 bit, que podemos direccionar como:

    Marcas M 0.0 a 255.7Byte de marcas MB 0 a 255Palabra de marcas MW 0 a 254Palabra doble de marcas MD 0 a 252

    4.5. Entradas y salidas

    Tal y como comentamos anteriormente, manejaremos una imagen de las entradas y las salidas.El nmero de e/s disponibles depender del tipo de CPU que empleemos, adems de losmdulos externos que tengamos conectados. Como mximo el autmata puede manejar hasta65536 bytes para cada tipo de e/s. En cada caso podemos direccionar como:

  • 5/24/2018 Tutorial S7

    23/154

    Versin 22/01/2002 Pg. 23 de 154

    IMAGEN DEL PROCESO DE LAS ENTRADAS (PAE):

    Entrada E 0.0 a 65535.7Byte de entrada EB 0 a 65535Palabra de entrada EW 0 a 65534Palabra doble de entrada ED 0 a 65532

    IMAGEN DEL PROCESO DE LAS SALIDAS (PAA):

    Salida A 0.0 a 65535.7Byte de salida AB 0 a 65535Palabra de salida AW 0 a 65534Palabra doble de salida AD 0 a 65532

    ENTRADAS EXTERNAS:

    Byte de entrada de la periferia PEB 0 a 65535Palabra de entrada de la periferia PEW 0 a 65534Palabra doble de entrada de la periferia PED 0 a 65532

    SALIDAS EXTERNAS:

    Byte de salida de la periferia PAB 0 a 65535Palabra de salida de la periferia PAW 0 a 65534Palabra doble de salida de la periferia PAD 0 a 65532

    Todas estas entradas y salidas pueden ser de tres tipos:

    E/S digitales: son las e/s ms frecuentes y que en mayor cantidad vamos a tener.Ocupan 4 bytes de memoria de direcciones, comenzando desde la 0.0 hasta la 127.7.

    E/S digitales de alarma/error: no son e/s adicionales, se configuran dentro de Step7 yocupan una de las e/s digitales normales.

    E/S analgicas: estas si son e/s adicionales, pero no obstante hay que configurarlastambin desde Step7 para especificar el rango de direcciones que van a ocupar. Ocupan2 bytes de memoria de e/s (16 bytes por mdulo) y se sitan en el rango de direcciones256 a 383.

    4.6. Registros

    Todas las CPU Simatic S7 disponen de una serie de registros que se emplean durante laejecucin del programa de usuario. No vamos a comentar todos ellos, slo los que realmenteempleemos en la programacin:

    Acumuladores (ACU1 y ACU2)

    El acumulador 1 (ACU 1) y el acumulador 2 (ACU 2) son dos registros universales de 32 bitsque se emplean para procesar bytes, palabras y palabras dobles. En estos acumuladores sepueden cargar constantes o valores depositados en la memoria como operandos y ejecutaroperaciones lgicas con ellos. Tambin es posible transferir el resultado en ACU 1 a unadireccin (un mdulo de datos, una salida, etc.).

    Cada acumulador puede descomponerse en dos palabras de 16 bits (palabra baja y alta). Lapalabra baja contiene los bits de menor peso y la alta los de mayor peso lgico.

  • 5/24/2018 Tutorial S7

    24/154

    Versin 22/01/2002 Pg. 24 de 154

    Todas las posibles operaciones que pueden realizarse son:

    Cargar: que siempre acta sobre ACU 1 y guarda el antiguo contenido en ACU 2(perdindose el valor antiguo de ACU 2). La carga de una palabra acta sobre la palabrabaja del ACU 1.

    Transferir: copia el contenido de ACU 1 en una direccin de memoria, sin perder elvalor de los acumuladores.

    Intercambiar el contenido de los acumuladores: mediante la instruccin TAK.

    Realizar una operacin entre los acumuladores, almacenando el resultado en ACU 1 sinvariar ACU 2. Las operaciones pueden ser de comparacin, de lgica digital y dearitmtica.

    Palabra de estado

    Es un registro de 16 bits que contiene algunos bits a los que puede accederse en el operando de

    operaciones lgicas de bits y de palabras. Solo nos sern de utilidad los 9 primeros bits, estandoreservados el uso de los 7 ltimos. A continuacin pasaremos a describir cada bit:

    BIT 0 (ER): 0 indica que la siguiente lnea se ejecuta como nueva consulta (inhibida).En este estado la consulta se almacena directamente en RLO (ver 4.1).

    BIT 1 (RLO): resultado lgico. Aqu se realizan las operaciones a nivel de bit (comoAND, OR, etc.).

    BIT 2 (STA): bit de estado. Solo sirve en el test de programa.

    BIT 3 (OR): se requiere para el proceso Y delante de O. Este bit indica que unaoperacin Y ha dado valor 1, en las restantes operaciones es 0.

    BIT 4 (OV): bit de desbordamiento. Se activa (1) por una operacin aritmtica o decomparacin de coma flotante tras producirse un error (desbordamiento, operacin noadmisible, o relacin incorrecta).

    BIT 5 (OS): bit de desbordamiento memorizado. Se activa junto con OV e indica quepreviamente se ha producido un error. Solo puede cambiar a cero con la instruccinSPS, una operacin de llamada a mdulo, o porque se ha alcanzado el fin del mdulo.

    BITS 6 (A0) y 7 (A1): cdigos de condicin. Dan informacin sobre los resultados obits siguientes:

    - resultado de una operacin aritmtica.- resultado de una comparacin.- resultado de una operacin digital.- bits desplazados por una instruccin de desplazamiento o rotacin.

    BIT 8 (RB): resultado binario. Permite interpretar el resultado de una operacin depalabras como resultado binario e integrarlo en la cadena de combinaciones lgicasbinarias.

  • 5/24/2018 Tutorial S7

    25/154

    Versin 22/01/2002 Pg. 25 de 154

    Registros 1 y 2 de direcciones

    Son dos registros de 32 bits cada uno. Se emplean como punteros en operaciones que utilizan undireccionamiento indirecto de registros.

    Pila de parntesis

    Aqu se almacenan los bits RB, RLO y OR, adems del cdigo de funcin que especifica queinstruccin lgica ha abierto el parntesis. Tiene un tamao de 8 bytes (mximo anidamiento).

    Pila Master Control Relay (MCR)

    Almacena los bits que indican si se opera dentro de un rea MCR. Para el caso de emplear saltosguarda los datos en una pila (8 niveles).

    4.7. Temporizadores y contadores

    TEMPORIZADORES (T):

    En el Simatic S7 vamos a disponer de una serie de temporizadores que nos van a permitirrealizar una serie de acciones:

    Realizar tiempos de espera.

    Supervisar acciones durante un tiempo determinado (tiempo de vigilancia).

    Generar impulsos.

    Medir tiempos de proceso.

    Para la utilizacin de los temporizadores vamos a disponer de una serie de instrucciones que nospermitirn emplear los temporizadores de distintas formas para adecuarnos a nuestrasnecesidades, tal y como veremos en captulos posteriores.

    Vamos a disponer de 256 temporizadores, los cuales direccionaremos como:

    T 0 a T 255

    CONTADORES (Z):

    Al igual que los temporizadores vamos a disponer de una serie de contadores que nos permitirnefectuar contajes, tanto hacia adelante como hacia atrs.

    Tambin vamos a emplear una serie de instrucciones que permitirn manejarlos, las cuales severn en siguientes captulos.

    Disponemos de 256 contadores, los cuales podemos direccionar como:

    Z 0 a Z 255

  • 5/24/2018 Tutorial S7

    26/154

    Versin 22/01/2002 Pg. 26 de 154

    5. Programacin en AWL

    5.1. Tratamiento de los resultados

    Dependiendo del tipo de operando que empleemos, se har uso de uno o varios de los siguientesregistros:

    Bit de resultado lgico (RLO): aqu se almacena el resultado de operaciones lgicas anivel de bit y primera consulta.

    Acumuladores (ACU 1 y ACU 2): aqu se almacenan los operandos y resultados deoperaciones lgicas a nivel de byte, palabra, y doble palabra.

    Un operando del tipo bit sera una entrada o salida digital, por ejemplo.

    Un operando del tipo byte o superior sera la lectura de una entrada analgica, por ejemplo.

    5.2. Primera consulta

    Cuando efectuamos una asignacin, o se comienza un nuevo ciclo de programa, se est enestado de primera consulta. Es decir, la primera instruccin lgica que se efecte servir parasituar su operando en el RLO.

    Las operaciones S y R tambin producen que el bit de primera consulta se ponga a 0.

    Da igual si se trata de una operacin AND, OR, o XOR, en los tres casos se introduce eloperando en el RLO de forma directa. Si tratamos con instrucciones NAND, NOR, o XOR se

    introducir el operando de forma negada (si es un 0 el bit RLO ser 1).

    5.3. ASIGNACION

    Instruccin "="

    Se copia el contenido del RLO al operando especificado, sin perder el contenido del RLO.

    Posibles operandos: E, A, M, DBX, DIX, L

    Registros afectados: ER, STA

    ej. = E 2.0 //copia el RLO a la entrada E 2.0

    Esquema elctrico:

    +24V

    E0.0

    A4.0

    +24V

    E0.0

    Contacto normalmente abierto Contacto normalmente cerrado

    A4.0

  • 5/24/2018 Tutorial S7

    27/154

    Versin 22/01/2002 Pg. 27 de 154

    5.4. Funcin AND (Y)

    Esquema elctrico:

    Instruccin "U"

    Realiza la funcin lgica AND entre el RLO y el operando especificado, almacenando elresultado en RLO (se pierde el valor anterior). Se puede operar con el negado del operando si seadjunta "N" (UN).

    Posibles operandos: E, A, M, DBX, DIX, L, T, Z

    Registros afectados: RLO, STA

    ej. U E 0.0 //realiza un AND entre el RLO y la entrada E 0.0ej. UN A 1.2 //realiza un AND entre el RLO y la salida A 1.2negada

    5.5. Funcin OR (O)

    Esquema elctrico:

    Instruccin "O"

    Realiza la funcin lgica OR entre el RLO y el operando especificado, almacenando el

    resultado en RLO (se pierde el valor anterior). Se puede operar con el negado del operando si seadjunta "N" (ON).

    Tabla de verdadE0.0 E0.1 A4.0

    0 0 00 1 01 0 01 1 1

    Tabla de verdadE0.0 E0.1 A4.0

    0 0 00 1 11 0 11 1 1

    E0.0

    A4.0

    E0.1

    +24V

    E0.0

    E0.1

    A4.0

    +24V

  • 5/24/2018 Tutorial S7

    28/154

    Versin 22/01/2002 Pg. 28 de 154

    Posibles operandos: E, A, M, DBX, DIX, L, T, Z

    Registros afectados: RLO, STAej. O T 0 //realiza un OR entre el RLO y el estado del temporizador T 0ej. ON M 5.0 //realiza un OR entre el RLO y la marca M 5.0 negada

    5.6. Funcin XOR (O exclusiva)

    Esquema elctrico:

    Instruccin "X"

    Realiza la funcin lgica XOR entre el RLO y el operando especificado, almacenando elresultado en RLO (se pierde el valor anterior). Se puede operar con el negado del operando si se

    adjunta "N" (XN).Posibles operandos: E, A, M, DBX, DIX, L, T, Z

    Registros afectados: RLO, STAej. X Z 0 //realiza un XOR entre el RLO y el estado del contador Z 0ej. XN A 1.0 //realiza un XOR entre el RLO y la salida A 1.0 negada

    5.7. Expresiones entre parntesis

    Instrucciones "U(", "UN(", "O(", "ON(", "X(", "XN(", ")" sin operandos

    Las operaciones U, O, X, y sus negaciones UN, ON, y XN permiten ejecutar operacioneslgicas con fracciones de una cadena lgica encerradas entre parntesis (expresiones entreparntesis).

    Los parntesis que encierran una fraccin de una cadena lgica indican que el programa va aejecutar las operaciones entre parntesis antes de ejecutar la operacin lgica que precede a laexpresin entre parntesis.

    La operacin que abre una expresin entre parntesis almacena el RLO de la operacinprecedente en la pila de parntesis. A continuacin, el programa combina el RLO almacenadocon el resultado de las combinaciones lgicas ejecutadas dentro del parntesis (siendo laprimera operacin dentro de los parntesis de primera consulta).

    El nmero mximo de parntesis anidados que se permiten es 8.

    Tabla de verdadE0.0 E0.1 A4.0

    0 0 00 1 11 0 1

    1 1 0

    E0.0

    A4.0

    E0.0

    E0.1 E0.1

    Uninmecnica

    +24V

  • 5/24/2018 Tutorial S7

    29/154

    Versin 22/01/2002 Pg. 29 de 154

    Registros afectados: RLO, STA, RB, pila de parntesis

    Ejemplo:

    U(O E 0.0U E 0.1

    )= A 2.0

    Veamos los pasos que sigue el programa en este ejemplo:

    Efecta un AND en primera consulta, con lo que el resultado de las operaciones dentrodel parntesis se introducir directamente en RLO.

    Efectuamos un OR con la entrada 0.0, al ser en primera consulta (primera operacindentro del parntesis) lo que sucede es que el contenido de E 0.0 pasa a ser el nuevovalor del RLO.

    Se efecta un AND entre el RLO obtenido anteriormente y la entrada 0.1,almacenndose el resultado en el RLO.

    Se cierra el parntesis, con lo que el RLO de las operaciones efectuadas dentro se operasegn la instruccin que inicia el parntesis (en este caso la instruccin U). Tal y comocomentamos, al estar la instruccin de inicio al principio del programa se ejecuta comoprimera consulta, con lo que el RLO pasar a valer lo que el resultado dentro delparntesis.

    Copiamos el contenido del RLO en la salida 2.0.

    En pocas palabras, si ejecutramos este programa la salida 2.0 valdra 0 a menos que E 0.0 y E0.1 valiesen 1, con lo que pasara a valer 0.

    Un programa equivalente sera (en este caso):

    O E 0.0 //copiamos la E 0.0 en el RLO (primera c.)U E 0.1 //efectuamos un AND entre el RLO y la E 0.1= A 2.0 //copiamos el resultado a la salida 2.0

    5.8. Y antes de O

    Instruccin "O" sin operando

    Si introducimos una instruccin "O" sin operando seguida de una o varias instrucciones AND se

    evala en primer lugar las instrucciones AND y el resultado se combina con el RLO segn unOR.

    Esta operacin equivale a emplear "O(" con instrucciones del tipo AND dentro del parntesis.

    Registros afectados: RLO, STA, OR, pila de parntesis

    Ejemplo:U E 0.0 //se introduce en el RLO el valor de la entrada 0.0 (primera c.)O //comenzamos una operacin Y antes de OU E 0.1 //introducimos el valor de la entrada 0.1 en el RLO (primera c.)U M 0.3 //efectuamos un AND entre el RLO y la marca 0.3= A 4.0 //se finaliza Y antes de O. Se efecta un OR entre el primer RLO

    y el RLO resultado de las operaciones AND. Luego se copia elcontenido del RLO en la salida 4.0

  • 5/24/2018 Tutorial S7

    30/154

    Versin 22/01/2002 Pg. 30 de 154

    5.9. Ejercicio propuesto

    Escribir en AWL el siguiente esquema elctrico:

    1) Sin usar marcas

    2) Usando marcas

    E 0.1

    E 0.0

    E 0.2

    E 0.3

    E 0.4

    E 0.5

    E 0.6

    E 1.0

    E 1.1

    E 1.2

    E 0.7

    E 1.3

    E 1.4

    A 4.0

  • 5/24/2018 Tutorial S7

    31/154

    Versin 22/01/2002 Pg. 31 de 154

    5.10. Operaciones de flancos

    Instrucciones "FP" y "FN"

    Las operaciones de flanco positivo (FP) y flanco negativo (FN) pueden utilizarse para detectar

    cambios de flanco en el RLO. El cambio de 0 a 1 se denomina flanco positivo, mientras que elcambio de 1 a 0 se denomina flanco negativo.

    Cada instruccin FP o FN emplea un operando para poder comparar el RLO actual con el quehaba en el ciclo anterior, se recomienda emplear marcas de memoria.

    Si se realiza un cambio de flanco en el sentido de la instruccin empleada, sta produce unimpulso positivo (1) en el RLO durante el ciclo actual.

    Posibles operandos: E, A, M, DBX, DIX, L

    Registros afectados: RLO, STASe emplea una operando para almacenar el RLO

    Ejemplo:

    U E 1.0 //empleamos la entrada 1.0 para detectar un cambio de flancoFP M 1.0 //empleamos la marca 1.0 para detectar el cambio de flanco= A 4.0 //asignamos el resultado de la operacin FP a la salida 4.0

    En este ejemplo cada vez que introduzcamos un flanco positivo en la entrada 1.0 se producirun impulso de longitud un ciclo en la salida 4.0, tal y como se muestra en la siguiente figura:

    E 1.0: 0 0 1 1 1 0 0 0 1 1 0M 1.0: 0 0 1 1 1 0 0 0 1 1 0A 4.0: 0 0 1 0 0 0 0 0 1 0 0

    ciclo: 1 2 3 4 5 6 7 8 9 10

    Para el caso de sustituir en el ejemplo FP por FN, se obtendra:

    E 1.0: 0 0 1 1 1 0 0 0 1 1 0M 1.0: 0 0 1 1 1 0 0 0 1 1 0A 4.0: 0 0 0 0 0 1 0 0 0 0 1

    ciclo: 1 2 3 4 5 6 7 8 9 10

    ATENCION:Es obligatorio no emplear los operandos ocupados por FP y FN para otros fines, ya queentonces se falsifica el RLO almacenado en ellos y por lo tanto se produce un funcionamientoincorrecto del programa.

    5.11. Set y Reset

    Instrucciones "S" y "R"

    La operacin set (S) fuerza a uno el operando especificado si el RLO es 1.La operacin reset (R) fuerza a cero el operando especificado si el RLO es 1.

    En ambos casos el bit de primera consulta se hace 0.

    Posibles operandos: E, A, M, D, DBX, DIX, L

    Registro afectados: ER

  • 5/24/2018 Tutorial S7

    32/154

    Versin 22/01/2002 Pg. 32 de 154

    Ejemplo:

    U E 1.0 //copiamos al RLO el valor de la entrada 1.0 (primera c.)S A 4.0 //si RLO=1 se fuerza la salida 4.0 a 1U E 1.1 //copiamos al RLO el valor de la entrada 1.1 (primera c.)R A 4.0 //si RLO=1 se fuerza la salida 4.0 a 0

    En este ejemplo (bscula S-R) tiene preferencia el reset sobre el set, ya que esta ltimainstruccin se ejecuta al despus, es decir si las entradas 1.0 y 1.1 fuesen 1 la salida 4.0 sera 0.

    5.12. Negar, activar, desactivar y salvar el RLO

    Instrucciones "NOT", "SET", "CLR" y "SAVE" sin operando

    NOT

    Niega (invierte) el RLO actual al no haberse activado el bit OR.

    Registros afectados: RLO se invierte, STA=1

    SET

    Fuerza el RLO de forma incondicional a 1.Registros afectados: RLO=1, STA=1, ER=0, OR=0

    CLR

    Fuerza el RLO de forma incondicional a 0.Registros afectados: RLO=0, STA=0, ER=0, OR=0

    SAVE

    Almacena el RLO en el registro de estado (en el bit RB). El RLO almacenado puede serconsultado de nuevo con la instruccin "U BR".Registros afectados: RB almacena el valor de RLO.

  • 5/24/2018 Tutorial S7

    33/154

    Versin 22/01/2002 Pg. 33 de 154

    5.13. Ejercicios propuestos

    Ejercicio 1: Taladradora

    Funcionamiento:

    En el estado de reposo la taladradora estar arriba, pisando el final de carrera (E0.1)

    Si se pulsa la marcha (E0.0) la taladradora bajar accionado por el motor de bajada (A4.0).Cuando se active el final de carrera de abajo (E0.2), la taladradora subir de nuevo. Si en algnmomento se pulsa el interruptor de parada (E0.3), la taladradora deber subir.

    Ejercicio 2: Motor

    Funcionamiento:

    El motor podr girar a derechas (A 4.0) o izquierdas (A 4.1) segn le demos al pulsadorcorrespondiente. Adems existe un pulsador de paro (E0.3), y un rel trmico normalmentecerrado (E0.2) que se abrir cuando en el motor se produzca una sobretemperatura.

    M

    A 4.0 Motor bajada

    A 4.1 Motor subida

    E 0.0 Pulsador marcha

    E 0.3 Pulsador aro

    ME 0.1

    E 0.2

    M E 0.3 Pulsador de aro

    E 0.0 Giro a derechas

    E 0.1 Giro a iz uierdas

    E 0.2 Rel trmico (normalmente cerrado)

  • 5/24/2018 Tutorial S7

    34/154

    Versin 22/01/2002 Pg. 34 de 154

    6. Acumuladores - Operaciones de carga y transferencia

    ACU1 y ACU2 son dos registros de 32 bits para el procesamiento de bytes, palabras y doblepalabras. Permiten programar un intercambio de informacin entre mdulos de E/S y reas de

    memoria.

    Imagen de proceso de entradas y salidas

    Marcas

    Temporizadores y contadores

    reas de datos

    Las instrucciones de carga y transferencia transfieren datos a desde el ACU1.

    Son operaciones incondicionales, o sea, independientes del RLO

    Ejemplo:U E1.0L 2 //Carga el nmero 2 en ACU1 independientemente del estado de E1.0

    6.1. Operacin de carga

    Instruccin "L"

    Carga en ACU1 constantes y valores de los operadores.

    Ejemplo:

    L 3 //Carga el nmero entero 3 (16 bits) en el ACU1L EB0 //Carga el byte de entradas 0 en ACU1L MB20 //Carga el byte de marcas 20 en ACU1

    31 0

    1 byte se carga en el byte bajo de la palabra baja de ACU1

    1 palabra se carga en la palabra baja de ACU1

    Los bytes no aprovechados se ponen a cero.

    La informacin que hubiese en ACU1 se desplaza a ACU2. Y lo que hubiese en ACU2 sepierde.

    Ejemplo:

    L 3 //ACU1=3L 2 //ACU1=2 ; ACU2=3L 5 //ACU1=5 ; ACU2=2 se pierde

    1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1

  • 5/24/2018 Tutorial S7

    35/154

    Versin 22/01/2002 Pg. 35 de 154

    6.2. Operacin de transferencia

    Instruccin "T"

    Transfiere el contenido de ACU1 a una direccin de operando. La transferencia no cambia elcontenido de los acumuladores. Transferimos nicamente desde ACU1.

    Ejemplo:

    T AB10 //Transfiere el byte ms bajo del ACU1 al byte de salida 0.T MW4 //Transfiero el contenido de la palabra baja de ACU1 a la

    palabra de marcas MW14

    Observaciones sobre la carga y transferencia:

    Los acumuladores sirven para ejecutar operaciones lgicas entre ACU1 y ACU2(comparacin, aritmeticas, AND, OR...). El resultado siempre se almacena en ACU1,sobreescribiendo lo que hubiese en ACU1 pero el contenido de ACU2 permanece intacto.

    Ejemplo:

    L 8 //ACU1=8T 2 //ACU1=2 ; ACU2=8-I //ACU2-ACU1 ACU1=6 ; ACU2=8T MW10 //Transfiero el resultado de la resta a MW10

    En cada ciclo de programa ACU1 y ACU2 se ponen a cero.

    Ejemplo:

    T MW10 //en el segundo ciclo y sucesivos jams se transferir 5L 5

  • 5/24/2018 Tutorial S7

    36/154

    Versin 22/01/2002 Pg. 36 de 154

    7. Operaciones de contaje

    7.1. Operaciones con contadoresLos contadores permiten distintas operaciones, que debemos emplear en su manejo:

    Cargar un valor de contaje (preseleccin).

    Borrar el contaje.

    Contar hacia adelante y hacia atrs.

    Consultar su estado como un operando ms en operaciones lgicas de bit.

    Consultar su valor en ACU 1.

    Todas estas operaciones sern explicadas con profundidad en los siguientes puntos.

    7.2. Cargar un valor de contaje

    Instrucciones: "L C#" y "S Z"

    Un contador se pone a un determinado valor cargando dicho valor en la palabra baja del ACU 1,mediante una operacin de carga, y luego en el contador, mediante una instruccin Set.

    "L C#" introduce un valor de contaje en la palabra baja del ACU 1. El valor de contaje puede

    ser un valor comprendido entre 0 y 999.

    Registros afectados: ACU 1, ACU 2

    "S Z" introduce el valor de contaje en ACU 1 en el contador si RLO vale 1.

    Registros afectados: ER

    Ejemplo:L C#3 //introduce el valor de contaje 3 en el ACU 1U E 1.0 //carga en el RLO el valor de la entrada 1.0S Z 1 //introduce el valor 3 (dentro de ACU 1) en el contador 1 si

    la entrada 1.0 es 1

    7.3. Borrar un contador

    Instruccin: "R Z"

    Borra el contador especificado (puesta a cero) si el RLO vale 1.

    Registros afectados: ER

    Ejemplo:U E 1.0 //carga en el RLO el valor de la entrada 1.0R Z 1 //borra el contador 1 (a cero) si la entrada 1.0 es 1 (RLO=1)

  • 5/24/2018 Tutorial S7

    37/154

    Versin 22/01/2002 Pg. 37 de 154

    7.4. Contaje hacia adelante y hacia atrs

    Instrucciones: "ZV" y "ZR"

    "ZV" incrementa el contador especificado si hay un cambio de flanco ascendente (0 a 1) en elRLO. El incremento se produce en una unidad. Cuando el contador alcanza el lmite superior de

    999, se detiene y no sigue incrementando.

    "ZR" decrementa el contador especificado si hay un cambio de flanco ascendente (0 a 1) en elRLO. El decremento se produce en una unidad. Cuando el contador alcanza el lmite inferior de0, se detiene y no sigue decrementando.

    Registros afectados: ER

    Ejemplos:

    U E 0.0 //carga en el RLO el valor de la entrada 0.0ZV Z 1 //incrementa el contador 1 si la entrada 0.0 presenta un

    cambio de flanco ascendente

    U E 1.0 //carga en el RLO el valor de la entrada 1.0ZR Z 1 //decrementa el contador 1 si la entrada 1.0 presenta un

    cambio de flanco ascendente

    7.5. Consulta del estado de contadores

    El programa puede consultar el estado de un contador de la misma manera que consulta elestado de seal de una entrada o salida, pudiendo combinar el resultado de la consulta.

    Cuando se consulta el estado del contador con las operaciones U, O, o X el resultado es 1 si el

    valor de contaje es mayor que 0.Ejemplo:L C#5 //introduce el valor de contaje 5 en el ACU 1U E 2.0 //carga en el RLO el valor de la entrada 2.0S Z 1 //introduce el valor 5 (dentro de ACU 1) en el contador 1 si

    la entrada 2.0 es 1U E 1.0 //carga en el RLO el valor de la entrada 1.0ZR Z 1 //decrementa el contador 1 si la entrada 1.0 presenta un

    cambio de flanco ascendenteU Z 1 //introduce en el RLO el estado del contador 1= A 0.0 //introduce el estado del contador 1 en la salida 0.0

    7.6. Lectura de un valor de contaje

    Instrucciones: "L Z" y "LC Z"

    Con la instruccin "L Z" introducimos en el ACU 1 (parte baja) el valor del contadorespecificado en binario. El valor en ACU 1 puede ser introducido en otro contador.

    Con la instruccin "LC Z" introducimos en el ACU 1 (parte baja) el valor del contadorespecificado en BCD. En esta codificacin no es posible pasar el valor de ACU 1 a otrocontador.

    Registros afectados: ACU 1, ACU 2

  • 5/24/2018 Tutorial S7

    38/154

    Versin 22/01/2002 Pg. 38 de 154

    Ejemplos:

    L Z 1 //introduce el valor del contador 1 en el ACU 1LC Z 2 //introduce el valor del contador 2 en el ACU 1 en BCD

    7.7. Ejercicios propuestos

    Ejercicio 1: Control de un garaje

    Automatizar un garaje de cinco plazas de tal forma que si ste se encuentra lleno, se enciendauna luz indicndolo y no suba la barrera. En caso contrario deber estar encendida otra luzindicando LIBRE.

    El garaje consta de 5 plazas.

    Disponemos de una clula fotoelctrica y una barrera en la entrada y lo mismo en la salida.

    Salida Entrada

    Luz de sealizacin de LLENOA4.3

    Luz de sealizacin de LIBREA4.2

    Barrera de salidaA4.1

    Barrera de entradaA4.0

    Clula fotoelctrica de salidaE0.1

    Clula fotoelctrica de entradaE0.0

    Asignacin de variables

  • 5/24/2018 Tutorial S7

    39/154

    Versin 22/01/2002 Pg. 39 de 154

    8. Operaciones de temporizacin

    8.1. Operaciones con temporizadores

    Los temporizadores permiten distintas operaciones, que debemos emplear en su manejo:

    Funcionamiento en un modo determinado.

    Borrar la temporizacin.

    Re-arrancar un temporizador (FR).

    Consultar su estado como un operando ms en operaciones lgicas de bit.

    Consultar su valor en ACU 1.

    Cada temporizador lo podemos hacer funcionar en uno de los siguientes modos:

    Impulso (SI).

    Impulso prolongado (SV).

    Retardo a la conexin (SE).

    Retardo a la conexin con memoria (SS).

    Retardo a la desconexin (SA).

    Todas estas operaciones sern explicadas con profundidad en los siguientes puntos.

    8.2. Cargar un valor de temporizacin

    El valor de temporizacin se debe cargar en la parte baja del ACU 1, para desde all transferirloal temporizador mediante el set que determine el modo de temporizacin adecuado.

    El tiempo va decrementando hasta ser igual a 0. El valor de temporizacin puede cargarse en lapalabra baja del ACU 1 en formato binario, hexadecimal o BCD. Para ello debemos elegir unabase de tiempos y un valor dentro de dicha base, con lo que podemos realizar temporizacionesdesde 0 a 9990 segundos (0H_00M_00S_00MS a 2H_46M_30S_00MS).

    La siguiente sintaxis permite cargar un valor de temporizacin predefinido:

    L W#16#abcd

    a = base de tiemposbcd = valor de temporizacin en formato BCD

    Base de tiempos y cdigo respectivo:

    10 ms 0100 ms 11 s 210 s 3

    Registros afectados: ACU 1, ACU 2

  • 5/24/2018 Tutorial S7

    40/154

    Versin 22/01/2002 Pg. 40 de 154

    Ejemplo:

    L W#16#210 //esto introduce un valor de 10 segundos en ACU 1(2 base de 1s, 10 los segundos que deseamos)

    L S5T#aH_bbM_ccS_ddMS

    a = horas, bb= minutos, cc = segundos, dd = milisegundosEn este caso la base de tiempos se selecciona de forma automtica, tomndose la de valor msbajo posible. Debido a esto los valores de resolucin demasiado alta se redondean por defecto,alcanzando el rango pero no la resolucin deseada.

    Las posibles resoluciones y rangos son:

    0,01 s 10MS a 9S_990MS0,1 s 100MS a 1M_39S_900MS1 s 1S a 16M_39S10 s 10S a 2H_46M_30S

    Registros afectados: ACU 1, ACU 2

    Ejemplo:

    L S5T#00H02M23S00MS //esto introduce un valor de temporizacin de2 minutos y 23 segundos en el ACU 1

    8.3. Consulta del estado de temporizadores.

    El programa puede consultar el estado de un temporizador de la misma manera que consulta elestado de seal de una entrada o salida, pudiendo combinar el resultado de la consulta.

    Cuando se consulta el estado del temporizador con las operaciones U, O, o X el resultado es 1 si

    el valor de la salida del temporizador es 1.

  • 5/24/2018 Tutorial S7

    41/154

    Versin 22/01/2002 Pg. 41 de 154

    8.4. Temporizador como impulso (SI)

    Instruccin: "SI"

    Si el RLO (al ejecutar esta instruccin) cambia de 0 a 1, el temporizador arranca. El

    temporizador marcha con el valor de tiempo indicado en ACU1. Si el RLO cambia de 1 a 0antes de terminar el tiempo, el temporizador se detiene. La salida del temporizador entrega 1mientras el temporizador corre.

    Registros afectados: ER

    Ejemplo:

    U E 0.0 //Empleamos la entrada 0.0 como entrada del temporizadorL S5T#45s //Introducimos un valor de temporizacin de 45 segundosSI T 2 //Empleamos el temporizador 2 como impulsoU T 2 //Leemos la salida del temporizador= A 0.1 //Asignamos la salida del temporizador a la salida 0.1

  • 5/24/2018 Tutorial S7

    42/154

    Versin 22/01/2002 Pg. 42 de 154

    8.5. Temporizador como impulso prolongado (SV)

    Instruccin: "SV"

    Si el RLO (al ejecutar esta instruccin) cambia de 0 a 1, el temporizador arranca y continua en

    marcha incluso si el RLO cambia a 0 antes de que el temporizador termine. Mientras el tiempoest corriendo, la salida vale 1.

    Registros afectados: ER

    Ejemplo:

    U E 0.2 //Empleamos la entrada 0.2 como entrada del temporizadorL S5T#85s //Introducimos un valor de temporizacin de 85 segundosSV T 9 //Empleamos el temporizador 9 como impulso prolongadoU T 9 //Leemos la salida del temporizador= A 9.1 //Asignamos la salida del temporizador a la salida 9.1

  • 5/24/2018 Tutorial S7

    43/154

    Versin 22/01/2002 Pg. 43 de 154

    8.6. Temporizador como retardo a la conexin (SE)

    Instruccin: "SE"

    El temporizador arranca cuando hay un flanco creciente en el RLO (al ejecutar esta instruccin).

    El temporizador continua en marcha con el valor de temporizacin indicado en el ACU 1mientras sea positivo el estado de seal en la entrada (el RLO). El estado de la salida es 1 si eltiempo ha transcurrido sin errores y si el estado de la entrada (RLO) es 1. Si la entrada (RLO)cambia de 1 a 0 mientras est en marcha el temporizador, ste cambia el estado de la salida a 0.

    Registros afectados: ER

    Ejemplo:

    U E 0.7 //Empleamos la entrada 0.7 como entrada del temporizadorL S5T#65s //Introducimos un valor de temporizacin de 65 segundosSE T 4 //Empleamos el temporizador 4 como retardo a la conexinU T 4 //Leemos la salida del temporizador= A 8.1 //Asignamos la salida del temporizador a la salida 8.1

  • 5/24/2018 Tutorial S7

    44/154

    Versin 22/01/2002 Pg. 44 de 154

    8.7. Temporizador como retardo a la conexin con memoria (SS)

    Instruccin: "SS"

    Si la entrada (RLO en la ejecucin de la instruccin) cambia de 0 a 1, el temporizador arranca y

    continua corriendo incluso si la entrada (RLO) cambia a 0, antes que el temporizador termine decontar. Si el tiempo ha concluido la salida continua a 1 independientemente del estado de laentrada (RLO). Solo se puede poner a 0 la salida mediante un Reset. El temporizador vuelve aarrancar con el valor de temporizacin indicado en el ACU 1 si el estado de la seal en laentrada (RLO) cambia de 0 a 1 mientras el temporizador est en marcha.

    Registros afectados: ER

    Ejemplo:U E 1.2 //Empleamos la entrada 1.2 como entrada del temporizadorL S5T#32s //Introducimos un valor de temporizacin de 32 segundosSS T 2 //Empleamos el temporizador 2 como retardo a la c. con memoriaU T 2 //Leemos la salida del temporizador

    = A 3.1 //Asignamos la salida del temporizador a la salida 3.1

  • 5/24/2018 Tutorial S7

    45/154

    Versin 22/01/2002 Pg. 45 de 154

    8.8. Temporizador como retardo a la desconexin (SA)

    Instruccin: "SA"

    Si la entrada (RLO en la ejecucin de la instruccin) cambia de 1 a 0, el temporizador arranca y

    continua corriendo. Si la entrada (RLO) cambia a 1 antes que el temporizador termine de contar,se resetea el temporizador. Mientras el tiempo est corriendo, la salida vale 1.

    Registros afectados: ER

    Ejemplo:U E 4.2 //Empleamos la entrada 4.2 como entrada del temporizadorL S5T#32s //Introducimos un valor de temporizacin de 32 segundosSA T 7 //Empleamos el temporizador 7 como retardo a la desconexinU T 7 //Leemos la salida del temporizador= A 1.1 //Asignamos la salida del temporizador a la salida 1.1

  • 5/24/2018 Tutorial S7

    46/154

    Versin 22/01/2002 Pg. 46 de 154

    8.9. Elegir el temporizador adecuado

  • 5/24/2018 Tutorial S7

    47/154

    Versin 22/01/2002 Pg. 47 de 154

    8.10. Borrar una temporizacin

    Instruccin: "R T"

    Esta instruccin borra (resetea) el temporizador indicado. El temporizador vuelve al estado dereposo, es decir parado y con la salida igual a 0.

    Registros afectados: ER

    Ejemplo:U E 0.0 //Empleamos la entrada 0.0 como entrada del temporizadorL S5T#2s //Introducimos un valor de temporizacin de 2 segundosSS T 2 //Empleamos el temporizador 2 como retardo a la c. con memoriaU E 0.1 //Empleamos la entrada 0.1 como entrada de borradoR T 2 //Si la entrada 0.1 cambia de 0 a 1 el temporizador 2 se borraU T 2 //Leemos la salida del temporizador= A 3.1 //Asignamos la salida del temporizador a la salida 3.1

    8.11. Re-arranque de un temporizador

    Instruccin: "FR T"

    Cuando el RLO cambia de 0 a 1 (flanco de subida) delante de una operacin FR se habilita eltemporizador. Este cambio del estado de seal siempre es necesario para habilitar untemporizador.

    Para arrancar un temporizador y ejecutar una operacin normal de temporizador no hace faltahabilitarlo. Esta funcin se emplea nicamente para redisparar un temporizador que est enmarcha, es decir, para rearrancarlo. Este rearranque slo puede efectuarse cuando la operacinde arranque contina procesndose con un RLO de 1.

    Registros afectados: ER

    Ejemplo:

    U E 2.0 //Empleamos la entrada 2.0 como re-arranqueFR T 1 //Re-arrancamos el temporizador 1 si la E 2.0 pasa a 1U E 2.1 //Empleamos la entrada 2.1 como entrada del temporizadorL S5T#5s //Introducimos un valor de temporizacin de 5 segundosSI T 1 //Empleamos el temporizador 1 como impulsoU T 1 //Leemos la salida del temporizador= A 4.0 //Copiamos la salida del temporizador a la salida 4.0

    Si el RLO cambia de 0 a 1 en la entrada de re-arranque mientras est en marcha eltemporizador, el temporizador vuelve a arrancar. El tiempo programado se emplea como tiempoactual para el re-arranque. Un cambio del RLO de 1 a 0 en la entrada de re-arranque no produceningn efecto.

    Un cambio del RLO de 0 a 1 en la entrada de habilitacin no afecta al temporizador si todavahay un RLO 0 en la entrada del temporizador.

  • 5/24/2018 Tutorial S7

    48/154

    Versin 22/01/2002 Pg. 48 de 154

    8.12. Lectura de un valor de temporizacin

    Instrucciones: "L T" y "LC T"

    Con la instruccin "L T" introducimos en el ACU 1 (parte baja) el valor del temporizadorespecificado en binario. El valor en ACU 1 puede ser introducido en otro temporizador.

    Con la instruccin "LC T" introducimos en el ACU 1 (parte baja) el valor del temporizadorespecificado en BCD. En esta codificacin no es posible pasar el valor de ACU 1 a otrotemporizador.

    Registros afectados: ACU 1, ACU 2

    Ejemplos:

    L T 1 //introduce el valor del temporizador 1 en el ACU 1

    LC T 2 //introduce el valor del temporizador 2 en el ACU 1 enBCD

  • 5/24/2018 Tutorial S7

    49/154

    Versin 22/01/2002 Pg. 49 de 154

    8.13. Ejercicios propuestos

    Ejercicio 1: Control de un semforo

    Se dispone de un semforo, el cual en condiciones normales se encuentra del modo siguiente:

    Verde vehculos Rojo peatones

    En el mismo instante que un peatn accione sobre el pulsador situado en el semforo, stepasar a amarillo para vehculos, estado que durar durante 3. Finalizado ste, pasar a estadorojo para vehculos y verde para peatones.

    El tiempo de duracin fijado para rojo vehculos: 6

    Finalizado el proceso, el semforo regresar al estado normal.

    Durante el tiempo de duracin del ciclo, deber evitarse que cualquier nueva activacin sobre el

    pulsador verde, rearme el ciclo.

    A 5.0

    A 4.1

    A 4.2

    A 4.0

    A 5.1

    E 0.0Pulse verde

  • 5/24/2018 Tutorial S7

    50/154

    Versin 22/01/2002 Pg. 50 de 154

    Ejercicio 2: Generador de pulsos

    Funcionamiento: Realizar un tren de pulsos de 1 ciclo de scan con un periodo de 1 seg.

    Ejercicio 3: Generador de onda cuadrada

    Funcionamiento: Basndose en el generador de pulsos realizar una onda cuadrada peridica de1 seg.

    1 ciclo de scan

    1 seg

    1 seg

  • 5/24/2018 Tutorial S7

    51/154

    Versin 22/01/2002 Pg. 51 de 154

    9. Operaciones de salto

    9.1. Operaciones de salto incondicional

    Instrucciones: "SPA" y "SPL"

    Las operaciones de salto incondicional (SPA) interrumpen el desarrollo normal del programa,haciendo que el mismo salte a una meta determinada (operando de la operacin SPA). La metadefine el punto en que deber continuar el programa. El salto se efecta independientemente decondiciones.

    Ejemplo de salto SPA:U E 1.0 //cargamos en el RLO el valor de la entrada 1.0SPA AQUI //saltamos de forma incondicional a la lnea con meta "AQUI"NOP 0 //esta lnea no se ejecuta (es saltada)

    AQUI: U E 2.0 //aqu continua la ejecucin del programa= A 3.0 //introducimos el resultado en la salida 3.0

    La operacin Salto a meta (SPL) es un distribuidor de saltos seguido de una serie de saltosincondicionales a metas determinadas (lista de saltos). El salto de la lista se escoge segn elvalor contenido en el ACU1, es decir si el acu1 vale 0 se escoger el primer salto incondicional(SPA), si vale 1 se saltar al segundo salto... Si el valor se encuentra fuera de la lista se salta a lameta especificada en SPL.

    Una meta se compone de 4 caracteres como mximo. El primer carcter debe ser siempre unaletra, no importando si el resto son nmeros o letras. La meta se especifica normalmente en eloperando de la instruccin de salto, y seguida de dos puntos frente a la lnea que posee la meta(ver ejemplos).

    Registros afectados: ninguno

    Estructura:

    L MB100 //cargamos en el ACU1 un byteSPL DEF //saltamos a DEF si el valor de ACU1 no est en la listSPA CERO //se salta a CERO si ACU1 vale 0SPA UNO //se salta a UNO si ACU1 vale 1SPA DOS //se salta a UNO si ACU1 vale 2

    DEF: ...

    ...

    BEACERO: ...

    ...BEA

    UNO: ......BEA

    DOS: ......BEA

  • 5/24/2018 Tutorial S7

    52/154

    Versin 22/01/2002 Pg. 52 de 154

    Ejemplo de salto SPL:L MB100 //cargamos en el ACU1 un valor de un mdulo de datosSPL NORM //se salta a NORM si el valor de ACU1 no est en listaSPA UNO //se salta a UNO si ACU1 vale 0SPA CONT //se salta a CONT si ACU1 vale 1SPA DOS //se salta a DOS si ACU1 vale 2

    NORM: SPA CONT //se salta a CONT de forma incondicionalUNO: U E 0.0 //instruccin meta del salto UNOSPA CONT //se salta a CONT de forma incondicional

    DOS: U E 1.0 //instruccin meta del salto DOSSPA CONT //se salta a CONT de forma incondicional

    CONT: = A 2.0 //aqu saltamos finalmente, continuando el programa

    9.2. Operaciones de salto condicional, en funcin del RLO

    Instrucciones: "SPB", "SPBN", "SPBB", "SPBNB"

    Estas instrucciones efectan un salto en el programa hacia una meta determinada, para el caso

    de cumplir la condicin que necesitan:

    SPB: salto si RLO=1SPBN: salto si RLO=0SPBB: salto si RLO=1 y RB=1SPBNB: salto si RLO=0 y RB=1

    En todas estas instrucciones, si la condicin no es cumplida y no se realiza el salto, se modificanlos siguientes registros:

    RO=0STA=1

    RLO=1ER=0

    En SPBB y SPBNB se almacena el RLO en el bit RB de la palabra de estado antes de efectuarel salto.

    Registros afectados: RB, OR, STA, RLO, ER

    Ejemplo de salto SPB:U E 2.0 //cargamos en el RLO el valor de la entrada 2.0SPB AQUI //saltamos a la lnea con meta "AQUI" si el RLO=1U E 1.0 //esta lnea no se ejecuta si se salta

    AQUI: U E 3.0 //aqu continua la ejecucin del programa

    = A 0.0 //introducimos el resultado en la salida 0.0Como podemos observar en el ejemplo, el resultado de la salida 0.0 depende primeramente delvalor de la entrada 2.0, ya que ella decide si se tiene en cuenta tambin la entrada 1.0 en elresultado final.

    9.3. Operaciones de salto condicional, en funcin de RB u OV/OS

    Instrucciones: "SPBI", "SPBIN", "SPO", "SPS"

    Estas instrucciones efectan un salto en el programa hacia una meta determinada, para el casode cumplir la condicin que necesitan:

    SPBI: salto si RB=1SPBIN: salto si RB=0SPO: salto si OV=1

  • 5/24/2018 Tutorial S7

    53/154

    Versin 22/01/2002 Pg. 53 de 154

    SPS: salto si OS=1

    Las operaciones SPBI y SPBIN ponen los bits OR y ER de la palabra de estado a 0 y el bit STAa 1. La operacin SPS pone el bit OS a 0.

    Registros afectados: OR, ER, STA, OS

    Ejemplo de salto SPS:SPS AQUI //saltamos a la lnea con meta "AQUI" si OV=1SPA SEGU //esta lnea no se ejecuta si OV=1

    AQUI: SET //forzamos el RLO a 1= A 1.0 //con la salida 1.0 indicamos si hubo un error previo

    en la anterior ejecucin del programaSEGU: U E 3.0 //aqu continua la ejecucin del programa normalmente

    = A 0.0 //introducimos el resultado en la salida 0.0

    9.4. Operaciones de salto condicional, en funcin de A1 y A0

    Instrucciones: "SPZ", "SPN", "SPP", "SPM", "SPMZ", "SPPZ", "SPU"

    Estas instrucciones efectan un salto en el programa hacia una meta determinada, para el casode cumplir la condicin que necesitan:

    SPZ: salto si resultado=0 (ACU 1)SPN: salto si resultado no es 0SPP: salto si resultado es mayor que ceroSPM: salto si resultado es menor que ceroSPMZ: salto si resultado es menor o igual que ceroSPPZ: salto si resultado es mayor o igual que ceroSPU: salto si el resultado no es vlido (uno de los operandos en una operacin de coma flotante

    no es un nmero en coma flotante)

    A continuacin se muestra el estado de A1 y A0 tras una operacin con los acumuladores:

    A1 A0 Resultado del clculo Operacin de salto posible

    0 0 igual a 0 SPZ

    1o0

    0o1

    distinto de 0 SPN

    1 0 mayor que 0 SPP

    0 1 menor que 0 SPM

    0o1

    0o0

    mayor o igual que 0 SPPZ

    0o0

    0o1

    menor o igual que 0 SPMZ

    1 1 UO (no admisible) SPU

  • 5/24/2018 Tutorial S7

    54/154

    Versin 22/01/2002 Pg. 54 de 154

    9.5. Finalizar mdulos

    Instrucciones: "BEA" y "BEB"

    Durante el ciclo del autmata programable, el sistema operativo ejecuta un programaestructurado mdulo a mdulo. La operacin fin de mdulo es la que finaliza el mdulo en

    ejecucin.

    BEA finaliza la ejecucin del mdulo actual y devuelve el control al mdulo que llam almdulo finalizado. Esta instruccin se ejecuta sin depender del RLO ni de cualquier otracondicin.

    Ejemplo:U E 1.0 //introducimos en el RLO el valor de la entrada 1.0SPB NEXT //si la entrada 1.0 salta a meta NEXTL EW 4T EW 10U E 6.0U E 6.1

    S M 12.0BEA //aqu finaliza el mdulo de forma incondicional

    NEXT: NOP 0

    Ejemplo 2 :U E 1.0 //introducimos en el RLO el valor de la entrada 1.0SPB NEXT //si la entrada 1.0 salta a meta NEXTL EW 4T EW 10U E 6.0U E 6.1S M 12.0

    BEA //aqu finaliza el mdulo de forma incondicionalNEXT: NOP 0

    BEA //fin de mduloU E 1.1 //estas instrucciones nunca se ejecutaranS A 4.0

    BEB finaliza la ejecucin del mdulo actual y devuelve el control al mdulo que llam almdulo finalizado. Esta accin se realiza si el RLO es 1. Si no es as se continua la ejecucindel actual mdulo, pero con el RLO a 1.

    Ejemplo:

    U E 1.0 //introducimos en el RLO el valor de la entrada 1.0BEB //si la entrada 1.0 vale 1 el mdulo acaba aquU E 2.0= A 3.0BEA //aqu finaliza el mdulo de forma incondicional

    Si el mdulo que finaliza es el OB1 se finaliza el ciclo de ejecucin del programa, volviendo acomenzar uno nuevo.

  • 5/24/2018 Tutorial S7

    55/154

    Versin 22/01/2002 Pg. 55 de 154

    9.6. Loop

    Instruccin: "LOOP"

    La operacin LOOP sirve para llamar varias veces un segmento del programa. Esta operacin

    decrementa la palabra baja del ACU 1 en 1. Despus se comprueba el valor depositado en lapalabra baja del ACU 1. Si no es igual a 0, se ejecuta un salto a la meta indicada en la operacinLOOP. En caso contrario, se ejecuta la siguiente operacin normalmente.

    Observaciones :

    El contador de bucles es un entero (de 16 bits) sin signo

    El salto puede ser tanto hacia delante como hacia atrs

    El salto slo se puede ejecutar dentro de un bloque

    Registros afectados: ACU 1

    Ejemplo:L +5 //Hacemos el ACU 1 igual a 5

    PROX: T MW 10 //transferimos el valor del ACU 1 a la memoria de datos- //En estos guiones estara el segmento del programa- //que se va a ejecutar 5 veces-L MW 10 //leemos el valor de la memoria de datos en ACU 1LOOP PROX //decrementamos ACU 1 y saltamos a PROX si no es cero

    Hay que tener precaucin con el valor que haya en el ACU 1, ya que si ejecutamos LOOP conun valor de ACU 1 igual a 0 el bucle se ejecutar 65535 veces. Tampoco se recomiendaintroducir valores enteros negativos en el ACU 1.

    9.7. Ejercicios propuestos

    Ejercicio 1: SPL

    Segn el contenido de EB0 :

    Si 0 => AW4= FFFF

    Si 1 => AW4=AAAASi 2 => AW4=5555

    Si 3 => AW4=0000

    Ejercicio 1: Factorial de un nmero

    Hacer el factorial del n 7, o sea, 7 x 6 x 5 x 4 x 3 x 2 x 1 mediante un bucle.

  • 5/24/2018 Tutorial S7

    56/154

    Versin 22/01/2002 Pg. 56 de 154

    10. Operaciones de control de programa

    10.1. Llamar funciones y mdulos de funcin con CALL

    Instruccin: "CALL"

    La operacin CALL se emplea para llamar funciones (FC's) y mdulos de funcin (FB's)creados para el usuario para el programa en cuestin o adquiridos en Siemens como mdulos defuncin estndar. La operacin CALL llama la funcin FC o mdulo FB indicado comooperando, independientemente del resultado lgico o cualquier otra condicin.

    Si se desea llamar un mdulo de funcin con la operacin CALL, se deber asignar un mdulode datos de instancia (DB de instancia).

    La llamada de una funcin (FC) o de un mdulo de funcin (FB) puede programarse, es decir,es posible asignar operandos a la llamada. El programa ejecutar con estos operandos la funcin

    (FC) o el mdulo de funcin (FB). Para ello hay que indicar los operandos que se desean usarpara ejecutar la funcin o el mdulo de funcin. Estos parmetros se denominan parmetrosactuales (entradas, salidas, marcas de memoria...). El programa que contiene la funcin o elmdulo de funcin tiene que poder acceder a estos parmetros actuales, por lo que se deberindicar en el programa el parmetro formal que corresponda al parmetro actual . Si no seespecifica la correspondencia en mdulos de funcin el programa acceder a travs del mdulode datos de instancia a los datos del parmetro formal. En la llamada a funciones todos losparmetros formales tienen que ser asignados a parmetros actuales.

    La lista de parmetros formales es parte integrante de la operacin CALL. El parmetro actualque se indica al llamar un mdulo de funcin tiene que ser del mismo tipo de datos que elparmetro formal.

    Los parmetros actuales empleados al llamar una funcin o un mdulo de funcin se suelenindicar con nombres simblicos. El direccionamiento absoluto de parmetros actuales slo esposible con operandos cuyo tamao mximo no supere una palabra doble.

    Registros afectados: ninguno

    Ejemplo de llamada a un FB con un DB de instancia y parmetros de mdulo:CALL FB40,DB41 //llamamos al mdulo FB40 con el mdulo de instancia DB41ON1: = E1.0 //ON1 (parmetro formal) es asignado a E1.0 (p. actual)ON2: = MW2 //ON2 (parmetro formal) es asignado a MW2 (p. actual)OFF1: = MD20 //OFF1 (parmetro formal) es asignado a MD20 (p. actual)L DB20 //el programa accede al parmetro formal OFF1.

    En el ejemplo anterior se ha supuesto que los parmetros formales pertenecen a los siguientestipos de datos:

    ON1: BOOL (binario)ON2: WORD (palabra)OFF1: DWORD (palabra doble)

    Ejemplo de llamada a un FC con parmetros de mdulo:CALL FC80 //llamamos la funcin FC80INK1: = M1.0 //INK1 (p. formal) es asignado a M 1.0 (p. actual)INK2: = EW2 //INK2 (p. formal) es asignado a EW2 (p. actual)OFF: = AW4 //OFF (p. formal) es asignado a AW4 (p. actual)

  • 5/24/2018 Tutorial S7

    57/154

    Versin 22/01/2002 Pg. 57 de 154

    En el ejemplo anterior se ha supuesto que los parmetros formales pertenecen a los siguientestipos de datos:

    INK1: BOOL (binario)INK2: INT (entero)OFF: WORD (palabra)

    Es posible crear una funcin que d un valor de retorno. Si se desea crear por ejemplo unaoperacin aritmtica con nmeros de coma flotante, entonces puede utilizar este valor de retornocomo salida para el resultado de la funcin. Como nombre de la variable puede introducirse"RE_VAL" y como tipo de datos REAL. Al llamar despus esta funcin en el programa se ha deproveer la salida RET_VAL de una direccin de palabra doble de forma que pueda acoger elresultado de 32 bits de la operacin aritmtica.

    10.2. Llamar funciones y mdulos con CC y UC

    Instrucciones: "CC" y "UC"Estas operaciones se emplean para llamar funciones (FC) creadas para el programa del mismomodo como se utiliza la operacin CALL. Sin embargo, no es posible transferir parmetros.

    CC llama la funcin indicada como operando si el RLO=1.

    UC llama la funcin indicada como operando, independientemente de cualquier condicin.

    Las operaciones CC y UC pueden llamar una funcin con direccionamiento directo o indirectode la memoria, o a travs de una FC transferida como parmetro. El rea de