Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Programando en STEP 7 Indice Pág
Programación Estructurada, Introducción Estructura de Programa y Tipos de Bloques (Bloques de Usuario) Estructura de Programa y Tipos de Bloques (Bloques de Sistema) Estructura de Programa y Estructura de Bloque Estructura del Programa, Saltos a Módulo en AWL Novedad en STEP 7: Detección de Flanco del RLO Novedad en STEP 7: Detección de Flanco de una Señal Novedad en STEP 7: Instrucciones que afectan al RLO Palabra de Estado: Nuevas Instrucciones de Step Instrucciones de Carga Instrucciones Tamaño Palabra Instrucciones Tamaño Doble Palabra Nuevas Instrucciones de Salto a Etiqueta en STEP Utilizar Contadores en un bucle en STEP Procesamiento de Valores Analógicos Novedad en STEP 7: Función Master Control Relay Ejercicio: Programa para Planta Embotelladora (Selección de Modo) Ejercicio: Programa para Planta Embotelladora (Ciclo de Llenado y Contaje de Botellas) Ejercicio: Programa para Planta Embotelladora (Datos de Producción) Ejercicio: Programa para Planta Embotelladora (Número de Unidades de Empaquetamiento) Modos de Direccionamiento en STEP Direccionamiento Directo Direccionamiento Indirecto de Memoria Ejemplo de Direccionamiento Indirecto de Memoria Registros de PLC Estructura del Registro de Direcciones Direccionamiento Indirecto por Registro Intra-Area Direccionamiento Indirecto por Registro Inter-Area Proteger un Bloque utilizando un Programa Fuente
2
Programación Estructurada, Introducción
Programación Lineal OB 1 Programación Estructurada OB 1 DB FB FC FC DB FB FC FC Programación Todo el Programa de Usuario se encuentra en un único bloque de programación Lineal (OB 1). Las instrucciones se ejecutan una detrás de otra. Este tipo de programación es típica del S7-200 (aunque también es cierto que el S7-200 dispone de posibilidad de ejecución por subrutinas). Programación El Programa de Usuario se divide en bloques individuales, cada uno de los cuales contienen una subrutina independiente. Un bloque de organización (el OB 1) controla que los bloques individuales vayan ejecutándose de manera cíclica a través de saltos a módulo.. Este tipo de programación es típica del S7-300 y S7-400. Tipos de Bloques El lenguaje de programación de STEP 7suministra los siguientes tipos de bloques: • Bloques de Organización (OB): Control cíclico, ejecución por tiempo y por interrupciones • Bloques de Función (FB): Son bloques programables que ofrecen una zona de memoria adicional donde se pueden almacenar los valores últimos de sus variables y recuperarse en la siguiente llamada al módulo. • Funciones (FC): Son también bloques programables, pero sin memoria. • Bloques de Datos (DB): Se utilizan para almacenar datos. • Bloques del Sistema (SFB, SFC): Son funciones específicas que vienen de “fábrica”, como, p.e., la función de Copiar una Función. Los Bloques de Sistema se encuentran integrados en el Sistema Operativo del PLC y no ocupan espacio en la memoria de usuario. Pueden ser llamados desde un bloque de usuario. • Bloques de Datos del Sistema (SDB): Contienen los parámetros y datos necesarios para los módulos y el tema de comunicaciones. FC FC SFC
3
Estructura de Programa y Tipos de Bloques (Bloques de Usuario)
Mejoras frente a STEP 5 Tipo de Bloque Propiedades Bloque de - interfase entre el usuario y el S. O. Del PLC Organización - ejecución según priorida (0...27) (OB) - información inicial de arranque alojada en la pila de datos local - solo los ejecuta el PLC - mayor información de arranque - prioridades asignables - acepta todo el juego de inst. Bloque de - parametrizable con memoria Función (FB) - no parametrizable, con memoria - no parametrizable, sin memoria - variables estáticas - DB de instancia - no se pueden definir todos los tipos de parámetros Función (FC) - se puede devolver un valor de retorno(se acepta todo tipo de parámetros en la llamada) - no poseen memoria - parametrizable - corresponden a los PBs y FBs - aceptan todo el juego de inst. - casi todo se puede mostrar de manera gráfica Bloques STEP 7 La figura muestra los tipos de bloques y sus propiedades en STEP 7. Los bloques de STEP 7 (FBs y FCs) cumplen la normativa IEC 1131. Operaciones Se puede codificar todo el juego de instrucciones en todos los bloques Permitidas programables (FBs, FCs y OBs). Memoria/ En STEP 7, el Bloque de Datos conocido como DB de Instancia actúa como DB de Instancia zona adicional de memoria. Un DB de Instancia se asigna a un FB cuando se llama a éste con parámetros. Bloque de Datos (DB) - Los datos son de ámbito local (DB de Instancia) - Los datos son de ámbito Global (son válidos para todo el programa S7) - direccionamiento total hasta 64KB - acceso modo simbólico - pueden abrirse 2 DBs a la vez - datos estructurados
4
Estructura de Programa y Tipos de Bloques (Bloques de Sistema)
Tipo de Bloque Propiedades Bloque de - FB (con memoria) almacenado en el Sistema de Función del Operativo de la CPU, pudiendo ser ejecutado por el Sistema (SFB) usuario Funciones del - función almacenada (sin memoria) en el S. O. de la Sistema (SFC) CPU, pudiendo ser ejecutado por el usuario Bloques de - bloques de datos para la configuración y la Datos (SDB) parametrización Mejoras frente a STEP 5 - más SFCs - bloques uniformes para el S7-300/400 - los bloques se suministran en forma de librerías - no hacen falta instrucciones de salto a módulo Bloques del Los Bloques del Sistema se encuentran almacenados en lel PLC. Pueden ser Sistema utilizados por el usuario a través de instrucciones de salto a módulo. Los Bloques de Sistema tienen el mismo interfase, nombre y número en todos los sistemas, lo cual presenta una ventaja en cuanto a la portabilidad del programa de usuario cuando éste necesite ser trasladado a otro PLC. Ejemplo Existen Bloques de Sistema para establecer parámetros, para comunicaciones, copiar funciones, etc... Programando en Cuando se llama a un SFC desde la programadora, se necesita llenar una serie de parámetros. Para ello, se necesita copiarlos en el Programa S7 a través de la opción de menú When SFCs are called on the PG, the parameters have to be assigned. Programming For this purpose, all the SFCs are stored in the standard Catálogo -> Librerías -> Librerías Estándar -> System Function Blocks. Descripción Las Funciones Estándar y el Manual de las Funciones del Sistema contiene una descripción de las SFCs. Para referirse a ellas, utilizar la ayudaonline.
5
Estructura de Programa y Estructura de Bloque
STEP 5 STEP 7 Cabecera de Bloque (10 bytes) Cabecera de Bloque (36 bytes) Cuerpo del Bloque: Zona de Declaración y zona de programa o datos Cuerpo del Bloque: Zona de Declaración y zona de programa o datos Precabecera de Bloque (almacenado en FD/HD) Interfase de Descripción Comprimida (almacenado en la CPU) Cabecera de Módulo A diferencia de STEP 5, la cabecera de módulo en STEP 7 es más extensa, lo cual implica que contenga mayor información. Dicha información recoge: • Patrón de Sincronización • Atributos (FB de usuario FB estándar) • Tipo de lenguaje de programación y tipo de módulo • Número de módulo • Longitud total del módulo en bytes • Password • Nivel de Protección • Hora de creación o modificación • Número de datos locales • Versión Cuerpo del Bloque En STEP 5 y en STEP 7, el cuerpo del bloque se compone de la zona de declaración y de la zona de programación, en caso de bloque programable, o zona de datos, en caso de bloque de datos. Los parámetros y variables del bloque se definen en la zona de declaración. La zona de programa contiene el código del programa de usuario. Interfase de En los bloques lógicos, el interfase de descripción comprimida contiene los Descripción parámetros definidos en la zona de declaración: parámetros de entrada, Comprimido parámetros de salida, parámetros de entrada/salida, variables locales y variables temporales. En los bloques de datos, contiene la descripción de los tipos de datos (por ejemplo, entero, real, etc...). Esto permite la compilación de los bloques. Se corresponde con la precabecera de STEP 5.
6
Estructura del Programa, Saltos a Módulo en AWL
Salto a Módulo STEP 5 STEP 7 Con o sin parámetros sin parámetros con parámetros Salto a Módulo Incondicional SPA PB n SPA FB m Call FC n Call FB n, DB m UC FC n UC FB n Call FC n Call FB n, DB m - - - Salto a Módulo Condicional SPB PB n SPB FB m U E 1.0 SPBN M001 Call FC/FB n M001: NOP 0 Par1: E 1.2 Par2: A4.0 M001: NOP 0 U E1.0 CC FC/FB n - - - Comparación En STEP 5, se podía llamar a un módulo de manera incondicional (SPA ..) o condicional (SPB..), tanto si el módulo tenían parámetros como si no. Los Módulos de Programa (PBs) no se parametrizaban. En el caso de salto condicional, la llamada tenía que hacerse desde un segmento diferente en KOP/FUP. En STEP 7, existen dos instrucciones diferentes para salto a módulo: UC para salto incondicional y CC para el salto condicional (para módulos no parametrizados). Para módulos parametrizados se dispone de una entrada "EN" en programación KOP/FUP. A través de esta entrada, se determina si el salto es condicional o no. En caso de codificarlo en AWL, la instrucción es: "Call ..". Saltando a un FB Cuando se llama a un bloque de función, debe especificarse además su DB de Instancia. El DB de Instancia se utiliza para almacenar las variables estáticas y los valores finales de los parámetros.Como no todos los parámetros pueden ser asignados en un salto a módulo, éstos son suministrados a través del DB de Instancia. Solo en caso de que el FB no tenga parámetros ni variables estáticas, podrá ser llamado con UC o CC, sin tener que especificar el DB de Instancia. Nota Encontrará más información sobre este tema en el capítulo "Funciones y Bloques de Función".
7
Novedad en STEP 7: Detección de Flanco del RLO
M1.0 M8.0 N M1.1 M8.1 KOP E1.0 E1.1 P = & M1.0 M8.0 N M1.1 M8.1 FUP U E1.0 U E1.1 FP M1.0 = M8.0 U E 1.0 U E 1.1 FN M1.1 = M8.1 AWL Ciclo OB1 E1.0 E1.1 RLO M1.0 M8.0 M8.1 M1.1 Ejemplo Flanco del RLO Un flanco del RLO, es el resultado de un cambio en una operación lógica. Flanco Positivo Cuando el RLO cambia de “0” a “1”, la instrucción "FP" pone a "1" una marca de apoyo (p.e. la M 8.0) en un ciclo. Para poder detectar el cambio de estado del RLO, debe salvarse en un bit de marcas de un FB (p.e. la M 9.0) o en un bit de datos. Flanco Negativo Cuando el RLO cambia de “1” a “0”, la instrucción "FN" pone a "1" una marca de apoyo (p.e. la M 8.1) en un ciclo. Para poder detectar el cambio de estado del RLO, debe salvarse en un bit de marcas de un FB (p.e. la M 9.1) o en un bit de datos.
8
Novedad en STEP 7: Detección de Flanco de una Señal
M8.0 POS M_BIT M1.0 Q E1.0 M8.1 NEG M1.1 KOP E1.1 = M8.0 POS M_BIT M1.0 & E1.0 M8.1 NEG M1.1 FUP U E1.0 U ( U E1.1 FP M1.0 ) = M8.0 U ( U E1.1 FN M1.1 = M8.1 AWL E1.0 E1.1 Ejemplo Flanco de una señal Se produce cuando una señal cambia su estado. Ejemplo La entrada E 1.0 actúa como una entrada de habilitación. La entrada E 1.1 tiene que ser monitorizada dinámicamente y cada cambio en la señal tiene que detectarse. Flanco Positivo Cuando el estado de la entrada E 1.1 cambia de “0” a “1”, la instrucción POS asigna un "1" a una salida en un ciclo, siempre que la entrada E 1.0 también tenga un "1" (ver el ejemplo de arriba). Para permitir al sistema la detección de flanco, la señal de la entrada E 1.1 debe guardarse en un bit de marcas o de datos (p.e. M 1.0). Flanco Negativo Cuando el estado de la entrada E 1.1 cambia de “1” a “0”, la instrucción NEG asigna un "1" a una salida en un ciclo, siempre que la entrada E 1.0 también tenga un "1" (ver el ejemplo de arriba). Para permitir al sistema la detección de flanco, la señal de la entrada E 1.1 debe guardarse en un bit de marcas o de datos (p.e. M 1.1). M1.0 M1.1 Ciclo OB1 M8.0 M8.1
9
Novedad en STEP 7: Instrucciones que afectan al RLO
KOP FUP AWL U E0.0 U E0.1 NOT = A8.0 = A8.0 & E0.0 E0.1 ( ) NOT no disponible CLR no disponible SET E1.6 ( SAVE ) SAVE & A E1.6 = A8.1 BR ( ) A BR = A 8.1 NOT La instrucción NOT invierte el RLO. CLR La instrucción CLEAR cambia el estado del RLO a 0 (esta instrucción solo existe el AWL). SET La instrucción SET cambia el estado del RLO a 1 (esta instrucción solo existe el AWL). SAVE La instrucción SAVE guarda el RLO en el bit "BR" del Registro de Estados. BR La secuencia “U BR" consulta el estado del bit BR. Palabra de Estado 15 8 1 BR RLO
10
Palabra de Estado: Nuevas Instrucciones de Step 7
Significado de los bits de la Palabra de Estado (STW) Bit Nombre Significado 0 /FC Primer chequeo 1 RLO Result. Lógico de Op. 2 STA Status 3 OR O 4 OS Overflow Memor. 5 OV Overflow 6 CC0 Condición de código 7 CC1 Condición de código 8 BR Resultado Binario sin -- asignar Ejemplos A OV Se consulta el Overflow A OS Se consulta el Overflow Memorizado Consulta de la condición del código (CC0, CC1) A == 0 Resultado igual a 0 A > 0 Resultado mayor que 0 A <> 0 Resultado distinto que 0 A =< 0 Resultado menor o igual a 0 Examinando A diferencia de STEP 5, donde los bits CC0, CC1, OS, y OV podían ser los bits del evaluados a través de instrucciones de salto a etiqueta (SPN, SPZ, ...), en Registro de Estados STEP 7 pueden examinarse de manera directa. L STW También se puede cargar todo el registro de estados (tamaño palabra) para poder analizarlo con posterioridad.. L STW Carga el Registro de Estados. T MW 114 Lo guarda en la palabra de marcas 114. El resultado también se puede consultar a través de operaciones aritméticas (resultado igual a 0, resultado mayor que 0, etc...).
11
Instrucciones de Carga
STEP 5 STEP 7 L KB 5 L 5 L KF 1000 L 1000 L KG L L KH 8FFE L W#16#8FFE L KC 'OTTO' L 'OTTO' L KT 5.2 L S5T# 5s L KZ 10 L C# 10 L KM L 2# Direccionamiento En el Direccionamiento Directo, el valor de la constante se coloca Inmediato inmediatamente después de la instrucción de carga. Los números enteros y reales se introducen sin formato de carga. Para todas las constantes, se deben utilizar identificadores que indiquen el tamaño del dato y el formato numérico. Tamaño del Dato: B#,W#, DW#, ... Formato numérico: 2#, 16#, C#, S5T#, ... L KY 100,12 L B# (100,12) ---- L B# (100,12,50,8)
12
Instrucciones Tamaño Palabra
STEP 5 STEP 7 +F, -F, xF, :F +I, -I, *I, /I ADD BF, ADD KF + i8, + i16 SSW 0..15 SSI 0..15 ---- SSI //Desplazar Bits con signo ----- (número de Bits en el Accu 2) !=F ==I ><F <>I >F, <F, >=F, <=F >I, <I, >=I, <=I Aritmética Además de las operaciones de suma y resta, al igual que en el S5-115U también se disponen de instrucciones en STEP 7 para la multiplicación y la división (en formato entero, doble entero y real). Los Bloques de Función Estándar, los cuales eran necesarios en el S5 -115U, aquí ya no son necesarios. Instrucciones de Además de las instrucciones convencionales de desplazamiento, existen otras Desplazamiento instrucciones en la que el número de bits a desplazar es variable. Antes de ejecutar una instrucción de desplazamiento, el Acumulador 2 debe contener una constante que determinará el número de bits a desplazar en el Acumulador 1. Comparación A diferencia de STEP 5, el formato numérico utiliza I para números enteros en vez de F. Complemento de un Las instrucciones INVI y NEGI sustituyen a la instrucción CFW para generar el número complemento a uno, y a la instrucción CSW para el complemento a dos. Conversión La sintaxis de las instrucciones ha cambiado en las instrucciones de conversión. CFW, CSW INVI, NEGI DEF, DUF BTI, ITB
13
Instrucciones Tamaño Doble Palabra
STEP 5 STEP 7 +D, -D +D, -D, *D, /D ADD DH + i32 +G, -G, xG, :G +R, -R. *R. /R ---- SLD, SRD, RLD, RRD ----- Número de Bits en el Accu 2 !=D, !=G ==D, ==R ><D <>D >G, <G, >=G, <=G >R, <R, >=R, <=R Complemento de Aparece una nueva instrucción para generar el complemento a uno de un un número número de 32 bits: (INVD). De forma análoga, para generar el complemento a dos de un número de 32bits, la instrucción es NEGD. Desplazamiento de A diferencia de STEP 5, ya no hace falta introducir un número entero para bits determinar el número de bits a desplazar, sino que se puede especificar dicho número, de manera indirecta, aq través del ACCU2 (Acumulador 2). Esto también se aplica a las instrucciones de rotación. Comparación y Además, la sintaxis se ha adaptado a los nuevos tipos de datos, por ejemplo, las instrucciones de comparación (== I, >< R, etc...). La sintaxis para las instrucciones de conversión entre tipos de datos también se han adaptado. El acumulador de 32 bits permite trabajar al S7-300 también con números reales. Varios Se dispone también de las funciones matemáticas usuales, trigonométricas (por ejemplo, seno, coseno, etc...) y funciones exponenciales (ex, Inx etc.). También se puede utilizar los registros AR1/AR2 para operaciones matemáticas, por ejemplo +AR1 P#2.0 (requerido para el direccionamiento indirecto). CSD NEGD FDG DTR GFD RND, RND-, RND+, TRUNC
14
Nuevas Instrucciones de Salto a Etiqueta en STEP 7
Instrucción de Salto Significado SPMZ Salta si el Resultado <=0 SPPZ Salta si el Resultado >=0 SPU Saltar si el resultado no es válido SPBN Jump if RLO = 0 SPBB Jump if RLO = "1" Save RLO in BR SPBNB Jump if RLO = "0“ Save RLO in BR SPBI Jump if BR = "1" SPBIN Jump if BR = "0" Saltar utilizando una Lista de Metas L Recipeno. // Carga número de Receta SPL OVER; // Distribuidor de Salto con tres entradas SPA Rec0; // Salta a la Receta no. 0 (si el cont. del Accu =0) SPA Rec1; // Salta a la Receta no. 1 (si el cont. del Accu =1) SPA Rec2; // Salta a la Receta no. 2 (si el cont. del Accu =2) OVER: SPA ERR // Salta si el número de Receta es incorrecto (>2 o <0) ... REC0: L DBW4 General Al igual que en SIMATIC S5, se dispone de las siguientes instrucciones de salto: • UC Salto Incondicional • CC Salto Condicional • p.e. SPZ Instrucción de salto a etiqueta. En la imagen se muestran las instrucciones de salto a módulo de STEP 7. Otras instrucciones Además de las instrucciones de salto que se ejecutan cuando el RLO = "1", de Salto también existen instrucciones que saltan cuando el RLO = "0" . Existen incluso instrucciones que guardan el resultado del RLO en el bit BR tras ejecutarse el salto. Dicho bit podrá ser consultado a posteriori para realizar otras operaciones. Distribuidor de Saltos Con STEP 7, es ahora relativamente fácil implementar una lista (distribución) de saltos. Despues de introducir la instrucción SPL, sólo queda introducir la etiqueta de salto para ir saltando a las consiguientes instrucciones. Notas Los saltos a etiqueta se producen a lo largo de un mismo módulo (includo desde un segmento a otro). Por ello, cada etiqueta en un módulo no debe estar repetida dos veces con el mismo nombre. Cada etiqueta va seguida de los dos puntos y a continuación la primera instrucción a ejecutar.
15
Utilizar Contadores en un bucle en STEP 7
Ejemplo de un Bucle Contador L 12 Inicializar contador de bucle BEG: TMW 100 Comienzo del bucle L MW 100 Cargar contador del bucle LOOP BEG Saltar siempre y cuando el contador sea > "0" Contador de un La instrucción LOOP es una instrucción especial de salto muy útil en la Bucle programación de bucles condicionados. Los OBs especiales, OB , del S5-135U, presentaban una función similar. Mientras que el contenido del ACCU1 sea distinto de 0, se ejecuta el salto a la etiqueta BEG. El contenido del ACCU1 va decrementándose en una unidad en cada bucle. Cuando el contenido del ACCU1 sea 0, el bucle deja de ejecutarse. Notas Sólo se permite codificar bucles en AWL. La función de “Puntos de Parada“, (ver capítulo de Funciones de Prueba) es una herramienta muy útil para comprobar el correcto funcionamiento del bucle.
16
Procesamiento de Valores Analógicos
STEP 5 STEP 7 Valor Digitalizado medido de un módulo analógico Ocultar bits de mensaje L PEW 128 L PEW 256 S SW 3 Escalado FB FC 105, Escalar valores FB FC 106, desescalar valores FB 243 FB 250 FB 251 (depende del módulo) (independiente del módulo) Byte Alto Byte Bajo Byte Alto Byte Bajo A F OV S S Conversión de Los valores analógicos son procesados por el PLC en formato binario. Los Valores Analógicos módulos analógicos convierten una señal analógica en una digital. Representación de Los valores digitalizados son los mismos para entradas que para salidas, Valores Analógicos siempre que el rango nominal coincida. Dichos valores se representan como complemento a dos (ver figura de arriba). El bit 215 representa el signo. Resolución de los La resolución del valor analógico varía según las especificaciones del módulo Valores Medidos analógico utilizado. Con una resolución de menos de 15 bits, el valor analógico se introduce comenzando por el biyt de menor peso de un ACCU. El resto de bits no utilizados se ponen a cero. Escalado de Valores La función de escalado de valores (SCALE) convierte un valor entero en uno (FC105) real, el cual se escala con respecto a unos valore máximo y mínimo (se hace una regla de tres). La función FC 105 es la utilizada a tal efecto. Desescalado de La función de desescalado de valores (UNSCALE) convierte un valor real en Valores (FC106) uno entero, con respecto a unos valores máximo y mínimo. La función FC 106 es la utilizada a tal efecto. Rango de Escalado BIPOLAR: El valor entero de entrada se encuentra entre y UNIPOLAR: El valor entero de entrada se encuentra entre 0 y FC105, FC106 Estas funciones se encuentran en la librería: ”Librerías Estándar” -> "TI-S7 Converting Blocks".
17
Novedad en STEP 7: Función Master Control Relay
KOP ( MCRA ) E0.7 ( ) A8.5 M0.6 E0.4 ( S ) A16.0 M69.0 E4.7 M5.5 ( MCR< ) ( MCRD ) ( MCR> ) E0.0 MCR< & A0.0 MCRA S A0.4 A16.0 MCR> = M5.5 M69.0 E4.7 MCRD A0.7 A8.5 M0.6 FUP MCRA // Activado U E0.0 // Habilitar MCR MCR( // Abrir MCR U E0.7 // No. Contacto = A8.5 // Relé de Salida = M0.6 // Relé de Salida U E0.4 // No. Contacto S A16.0 // Set de la Salida )MCR // Cerrar MCR UN M5.5 // Contact Emerg. UN E4.7 // Contact Emerg. = M69.0 // Relé de Salida MCRD // Desactivar MCR AWL MCR El Master Control Relay es un interruptor principal para la activación y desactivación del flujo de corriente. Un cable en puntos suspensivos representa una secuencia que pone a cero donde antes se encontraba un valor calculado, o símplemente no se produce ningún cambio en un valor de memoria existente. Ejemplos Si la condición del MCR no se cumple: • Las salidas se ponen a "0" • Las instrucciones “SET” y “RESET” permanecen en su último estado alcanzado • La instrucción “T” transfiere un “0” a su destino. MCRA La instrucción MCRA activa el Master Control Relay. MCR< “MCR<“ abre un área de memoria para el MCR y ejecuta una instrucción que desplaza el RLO a la pila del MCR. Dicha pila puede almacenar, de manera anidada, hasta ocho agrupaciones MCR delimitadas entre las instrucciones “MCRA” y “MCRD”. MCR> “MCR>“ indica el final de un área MCR. MCRD “MCRD“ desactiva la función MCR. Tras esta instrucción, ya no pueden volver a definirse áreas MCR con la instrucción “MCR>” hasta que no vuelva a aparecer la “MCRA”.
18
Ejercicio: Programa para Planta Embotelladora (Selección de Modo)
Planta ON/OFF: Modo Manual/Automático: E0.0 = Arranque (Contacto NA) E0.4 = Selector Manual/Automático E0.1 = Parada (Contacto NC) E0.5 = Modo de Adopción (NO) E0.2 = Desplazamiento hacia delante (NO) E0.3 = Desplazamiento hacia atrás (NO) Sensor de Botellas E16.6 (E8.6) Objetivo Elaborar un programa que controle el modo de selección de una planta embotelladora, cumpliendo las siguientes especificaciones: • Entrada E 0.0 (pulsador NA): se alimenta la planta. • Entrada E 0.1 (pulsador NC): apagado de la planta. • Cuando la planta esté alimentada, se ilumina la salida A8.1 (A4.1). • Una vez se ha alimentado la planta, puede seleccionarse el modo operativo: - El modo manual corresponde a E 0.4=0 y el automático a E 0.4= El modo de selección es aceptado con la entradaE 0.5 . • Los indicadores de modo seleccionado son: Manual = A 8.2 (A 4.2), Automático = A8.3 (A4.3). • Cuando se cambia el modo de servicio o se apaga la planta, debe anularse la última selección de servicio elegida. • En modo manual, la cinta transportadora puede desplazarse hacia delante con el pulsador E 0.2 (A 20.5 / A 8.5) y hacia atrás con el pulsador E (A 20.6 / A 8.6). Cómo hacerlo 1. Dibújese en un papel el esquema de modos de operación con las entradas y salidas mostradas en la figura de arriba. 2. Crear un programa S7 en el Administrador SIMATIC con el nombre “LLENADO" en el proyecto "Mi Projecto". 3. Escribir el programa de modo de selección en la función FC15. 4. Abrir (en offline) el OB1 e introducir una llamada al FC15 (en AWL se hace con “CALL FC15”). 5. Guardar el programa en el disco duro, cargarlo en el PLC y probarlo en el entrenador. Resultado Debería funcionar correctamente. M Q 20.5 (Q 8.5) Cinta Transportadora hacia delante Q 20.6 (Q 8.6) Cinta Transportadora hacia atrás
19
Ejercicio: Programa para Planta Embotelladora (Ciclo de Llenado y Contaje de Botellas)
Planta ON/OFF: E 0.0 = Arranque ( Contacto NO) E 0.1 = Parada (Contacto NC) Main container Modo Manual/Automático: E 0.4 = Selector Manual /Automático E 0.5 = Modo de Adopción E 0.2 = Desplazamiento hacia delante Q9.0 (Q5.0) Embudo de Llenado Sensor de Botellas E 16.7 (E 8.7) E 0.3 = Desplazamiento hacia atrás Sensor de Botellas E 16.6 (E 8.6) Sensor de Botellas E 16.5 (E 8.5) Objetivo Añadir nuevas funciones al programa de la Planta de Embotellado. Complementando al programa de selección manual (FC15) se va a crear uno nuevo para la selección automática. Modo Automático de Cuando se enciende el motor de la cinta transportadora (A 20.5 / A 8.5), la Cinta permanece encendido hasta que se ponga a cero en interruptos de Parada (E 0.1) Transportadora o hasta que el sensor (E 16.6 / E 8.6) detecte una botella. Cuando la botella se ha llenado del todo, la cinta transportadora vuelve a moverse de manera automática hasta que se vuelva a detectar otra botella o se utilice el interruptor de Parada. Llenado de Botellas Cuando se detecte una botella bajo el embudo de llenado (E 16.6 / E 8.6 =1), comienza a llenarse. La simulación del llenado debe durar 3 segundos, permaneciendo la salida A 9.0 (A 5.0) encendida durante dicho tiempo. Contaje de Botellas Se determinan otros dos segundos para detectar las botellas llenas y las vacías. El sensor E 16.5 (E 8.5) registra las botellas vacías, y el E 16.7 (E 8.7) las llenas. Ambas botellas, tanto las llenas como las vacías, se cuentan siempre que la planta esté alimentada. El número de botellas llenas se mostrará en la salida AW 12 (AW 6). Cómo hacerlo 1. Elaborar el programa en la función FC16 y llamarlo desde el OB1 (projecto: "Mi Projecto", Programa S7 “LLENADO"). 2. Comprobar el funcionamiento del programa en el entrenador. Resultado Debería funcionar correctamente. M Q 20.5 (Q 8.5) Cinta Transportadora hacia delante Q 20.6 (Q 8.6) Cinta Transportadora hacia atrás
20
Ejercicio: Programa para Planta Embotelladora (Datos de Producción)
Botellas Vacías MW 100 Botellas Llenas MW 102 Botellas “Rotas" MW 104 Objetivo Ampliar la función del programa de contaje de botellas. El número máximo de botellas que se pueden contar con un contador es de 999. Para contar más de 999 botellas, hay que poner otros contadores en serie. Por lo tanto, hay que realizar operaciones matemáticas en este ejemplo. Los datos de Producción mostrados en la figura se requieren para la fabricación. Cómo hacerlo 1. Borrar todos los segmentos de la función de “Contaje de Botellas” (FC 16) del programa “LLENADO”. 2. Crear la función FC 18 para el contaje de botellas. Cuando se apague la planta, los valores en MW 100/102/104 se borran. Cuando se detecte un flanco en la entrada E 16.5 (E 8.5) o E 16.7 (E 8.7), se incrementa el contaje de botellas en una unidad. La diferencia entre el número de botellas llenas y vacías, se almacena en MW 104. 3. Codificar una llamada al FC18 en el OB1. 4. Cargar todos los bloques del programa “LLENADO” en la CPU y comprobar el programa.
21
Ejercicio: Programa para Planta Embotelladora (Número de Unidades de Empaquetamiento)
Programa codificado en KOP (QW 6) Programa traducido al AWL Programa codificado en AWL Objetivo Añadir al programa los datos de producción de la planta de embotellado: • Las botellas llenas se empaquetan de seis en seis. El número de paquetes que se necesita se encuentra en la palabras de salida AW 12 (AW 6). • El programa que realiza esta taresa se escribirá en la función FC 19. Cómo hacerlo 1. Escribir el programa en el FC 19 (S7-Program „LLENADO“) para dividir el número de botellas llenas (MW 102) entre 6. 2. Convertir el resultado a BCD. 3. Transferir el valor BCD a la palabra de salidas AW 12 (AW 6). 4. Borrar el segemento que muestra las botellas llenas, en el FC 18. 5. Programar una llamada al FC 19 en el OB 1. 6. Guardar el programa en el disco duro, cargarlo en el PLC y probar su correcto funcionamiento. Resultado El número de paquetes requerido se incrementa en una unidad cada vez que se contabilicen 6 botellas.
22
Modos de Direccionamiento en STEP 7
Direccion. Directo Direccion. Indirecto absoluto simbólico memoria indirecta registro indirecto Por Inter-area con puntero de 16 bits Por Inter-area con puntero de 32 bits Por Inter-area con puntero de 32 bits Por Intra-area con puntero de 32 bits Direccionamiento Con el direccionamiento directo, el destino se coloca a continuación de la Directo instrucción, es decir, el destino determina la dirección del valor que tiene que elaborarse. Direccionamiento En un programa, las direcciones pueden representarse de manera absoluta Simbólico (p.e. E 1.0) o simbólica (p.e. “Arranque"). El direccionamiento simbólico utiliza nombres en vez de direcciones absolutas. Si se utilizan nombres relacionados con la función que se está llevando a cabo, la interpretación del programa es más sencilla. En direccionamiento simbólico se hace una diferencia entre símbolos locales (en la tabla de declaraciones de un módulo) y símbolos globales (tabla de símbolos). Direccionamiento Con el direccionamiento indirecto se pueden direccionar destinos que sólo se pueden determinar en tiempo de ejecución. Por ejemplo, si se necesita ejecutar partes de un programa varias veces (programación de bucles), en cada ejecución se asigna una dirección diferente a la línea de comienzo de bucle.. En direccionamiento indirecto, hay que diferenciar entre: • Direccionamiento Indirecto por Memoria: aparece una zona de memoria donde se encuentra un puntero que apunta a la dirección deseada (p.e. MD30). Con el direccionamiento indirecto de memoria, a las variables de memoria donde reside el puntero, pueden asignarse nombres simbólicos. • Direccionamiento Indirecto por Registro: El puntero a la dirección requerida se carga en uno de los dos registros de direcciones (AR1 or AR2) del procesador de laCPU antes de acceder a él. Atención! Dado que las direcciones sólo se pueden calcular en tiempo de ejecución, se corre el peligro de sobreescribir, de manera no intencionada, zonas de memoria no deseadas, con el consiguiente mal funcionamiento por parte de la CPU.
23
Direccionamiento Directo
Área Dirección Tamaños Significado (p.e.) Adicionales E Byte, palabra, Entradas doble palabra A Byte, palabra, Salidas PEB palabra, Entradas Periféricas PAB palabra, Salidas Periféricas M Byte, palabra, Bit de marcas T Temporizadores C Contadores DBX Byte (DBB), palabra (DBW), Direcc. de datos por doble palabra (DBD) Registro de DB DIX Byte (DIB), palabra (DIW), Direcc. de datos por doble palabra (DID) Registro de Direcc. L Byte (LB), palabra (LW), Pila Local de Datos doble palabra (LD) Direccionamiento La secuencia contiene el destino donde se va a guardar el valor deseado. El direccionamiento directo en STEP 7 funciona de la misma manera que en STEP 5. No obstante, a diferencia de S5, ahora es posible en S7 diferenciar entre entradas y salidas a través de L PEW (acceso de solo lectura) y T PQW (acceso de solo escritura). Datos Locales En STEP 7, además del acceso simbólico, también es posible tener acceso directo a pila de datos locales (para más información, ver el capítulo "Funciones y Bloques de Función"). Por ejemplo: • U L (consulta del bit 6 del byte 12 de datos locales) • L LW 12 (carga palabra de datos locales en el ACCU1) DBX/DIX También se puede acceder al contenido de un DB directamente, siempre que se haya abierto previamente el DB (AUF DB o AUF DI): • U DBX (consulta el bit 6 del byte 12 del DB abierto) • U DIX 12.6 (consulta el bit 6 del byte 12 del registro de datos abierto) • L DBB 12 (carga el byte de datos 12 del DB en el ACCU1) • L DIB 12 (carga el byte 12 del registro de datos en el ACCU1). No obstante se recomienda el direccionamiento simbólico. Se pueden encontrar algunos ejemplos en el capítulo “Alamacenamiento de Datos en DBs".
24
Direccionamiento Indirecto de Memoria
STEP 7 L KF11 T FW 60 DO FW 60 A DB 0 STEP 5 1. Direccionamiento Indirecto de Memoria a través de puntero de 16 bits L 11 T MW 60 AUF DB [MW 60] OPN DB 11 C DB 11 2. Direccionamiento Indirecto de Memoria a través de puntero de 32 bits L P#24.0 T MD 50 L EW [MD 50] L KF24 T FW 50 DO FW 50 L EW 0 Direccionamiento Es similar a las instrucciones DOFW o DODW en STEP 5. El direccionamiento Indirecto indirecto en STEP 7 se realiza a través de una palabra de marcas, palabra de datos locales o palabra de datos para realizar saltos a módulo, o el uso de temporizadores y contadores. Se necesita una doble palabra de marcas, doble palabra de datos locales o una doble palabra de datos para el direccionamiento en el resto de las secuencias. La dirección a referenciar se introduce en formato puntero (tamaño doble palabra).Por ejemplo, L P#24.0 carga la dirección del byte 24 y del bit 0 en formato puntero. En la secuencia deben especificarse el área de memoria (E, A, M, etc.), el tamaño (bit, byte, palabra y doble palabra) y una dirección ( Byte . Bit ). La dirección sirve para establecer el parámetro de la instrucción. Este tema se trata en detalle en un curso de nivel más avanzado. L EW 24 L EW 24 L I W [MD 50] Instrucción Área Tamaño Dirección
25
Ejemplo de Direccionamiento Indirecto de Memoria
FC30: Ejemplo de Direccionamiento Indirecto Segmento 1: Abrir DB con direcionamiento indirecto L #dbnumber // Copia el número de DB en MW100 T MW 100 // A DB[MW 100] // Abre DB Segmento 2: Bucle de Borrado L P#18.0 // Almacena dirección final(DBW18)en T MD 40 // el puntero MD 40; L 10 // Inicializa contador del bucle a 10 beg: T MB 50 // y lo transfiere a MB 50; L 0 // Carga valor de inicialización T DBW[MD 40] // y lo transfiere al DB; L MD 40 // Carga puntero L P#2.0 // y lo decrementa en 2 bytes -D // y lo transfiere de nuevo T MD 40 // a MD 40; L MB 50 // Carga contador de bucle LOOP beg // y salta si fuera necesario; Descripción Este ejemplo muestra una función que inicializa los registros de un DB a cero. El número de DB es asignado a la función a través de un parámetro de entrada. En el segmento 1, el DB se es abierto. Para ello, el número de DB (asignado a través del parámetro de entrada: #dbnumber) se copia a la palabra de marcas (MW100) para poder abrirlo. En el Segmento, las primeras 10 palabras de datos del DB son puestas "0" a través de un bucle. El bucle utiliza la instrucción LOOP. El contador del bucle se almacena en MB50. A través del direccionamiento indirecto por memoria (MD40) se transfiere el valor "0" a los diferentes registros del DB. Antes de entrar en el bucle, se carga un puntero en MD40, el cual contiene la dirección de la última palabra de datos (DBW 18). Cada vez que se ejecute un bucle, la dirección es decrementada por P#2.0 en MD40, ya que los valores se transfieren en el DB palabra a palabra y no byte a byte. Notas En una aplicación real, sería conveniente inicializar la dirección de comienzo del puntero a "0" y consultarla antes de abrir el DB, por si pudiera darse el caso de que la dirección de comienzo fuera distinta de cero.. Un inconveniente del ejemplo de arriba es que todo el acceso indirecto de memoria se realiza por puntero utilizando siempre marcas. ¿Cuál sería la mejor alternativa a utilizar aquí?. ¿Por qué?
26
Registros de PLC Registro Bits Accu 1 * Acumulador 1 Bits 0...31
STW Registro de Estado Bits AR 1 Reg. de Direcciones 1 Bits AR 2 Reg. de Direcciones 2 Bits DB Primer DB abierto Bits DI Segundo DB abierto Bits DBLG Longitud del DB 1º Bits DILG Longitud del DB 2º Bits Registros Los acumuladores se utilizan como registros matemáticos. Matemáticos Al igual que en STEP 5, el acumulador 1 se relaciona con las instrucciones de (Accumuladores) Carga (L) / Transferencia (T), aunque también se intervienen en las siguientes instrucciones: • PUSH: Copia el contenido del ACCU1 en el ACCU2 • POP: Copia el contenido del ACCU2 en el ACCU1 • TAK: Intercambia el contenido de los dos acumuladores (como en STEP 5) Palabra de Estado Los bits pueden consultarse, por ejemplo tras una operación matemática, a través de la palabra de estado. La palabra de estado se carga con la instrucción: L STW. Registro de Los registros de direcciones se utilizan únicamente en direccionamien to Direcciones indirecto. Registro de Datos Dado que existen dos registros de datos, en STEP 7 se pueden abrir dos DBs a la vez: 1er. Registro = Registro DB 2o. Registro = Registro DI En principio, el registro DB se puede abrir con la instrucción “AUF“, pero tenemos que tener en cuenta que existe una diferencia entre DI y DB. Se puede conocer que DBs hay abiertos y su longitud con las instrucciones: • L DBNO: Carga el contenido del primer registro • L DINO: Carga el contenido del segundo registro • L DBLG Carga el tamaño del primer registro • L DILG Carga el tamaño del segundo registro * in S also ACCU 3 and ACCU 4
27
Estructura del Registro de Direcciones
1 R B X 31 ... 24 23 16 15 8 7 Dir. de Bit Dirección de Byte Dirección de Inter-Área El Registro de Direcciones contiene dirección en identificador de área El Registro de Direcciones no contiene dirección en identificador de área 1 Area identificada por: 000 Periferia 001 Entradas (PAE) 010 Salidas (PAA) 011 Bit de Marcas 100 Datos en Reg. DB 1 (DB) 101 Datos en Reg. DB 2 (DI) 110 Datos Locales de Bloque Identificador para direccionamiento Intra-area R Registros de Esta representación es utilizada por todo el sistema para el direccionamiento Direcciones indirecto. No es necesario diferenciar entre acceso a bit y acceso a palabra en STEP 5. Los registros de direcciones contienen las direcciones del área interna (intra-área) o del área externa (inter-área) para aquellas instrucciones que utilicen direccionamiento indirecto por registro. Los registros de direcciones también se utilizan para transferir tipos de datos de gran tamaño, como arrays, como parámetros de bloques lógicos. Inicialización de los Los registros de direcciones se inicializan utilizando las instrucciones LAR1 y Registros de LAR2. Las instrucciones TAR1 y TAR2 se utilizan para consultar el contenido Direcciones de los registros de direcciones. La constante en formato puntero (P#), posibilita la entrada al identificador de área y a la dirección byte/bit en los registros de direcciones. El compilador este tipo de sintaxis. Ejemplo: LAR1 P# E 100.0 El registro de direcciones 1 se inicializa con el puntero E100.0
28
Direccionamiento Indirecto por Registro Intra-Area
Formato General de Puntero R B X 31 ... 24 23 16 15 8 7 1 AR1 tras la instrucción: LAR1 P#10.0 LAR1 P#10.0 L MW [AR1, P#200.0] Ejemplo M W [AR1, P#200.0] Area Tamaño Reg Constante Direcc. de offset Direccionamiento Básicamente es similar al registro de direcciones en S5. Las instrucciones Indirecto por pueden ser también direccionadas a través de los registros de direcciones en Registro STEP 7. Existen dos registros de direcciones para este (AR1 and AR2). Se necesitan, para la instrucción, un área (por ejemplo, M, E, A, etc.), un tamaño (byte, palabra, etc.), un registro de direcciones y una constante. El registro de direcciones especificado contiene la dirección base. La localización de la dirección donde se encuentra el valor a buscar, se calculan a partir de la dirección base y la constante. Se introduce una constante en formato puntero (P#...) para suministrar soporte a la estructura de la dirección del registro de direcciones. Al igual que se puede suministrar una dirección de entrada, también se pueden especificar la dirección base y la constante (también referida al direccionamiento indirecto por inter-área). La estructura del registro de direcciones debe llevarse a una cuenta cuando se especifica una dirección a través del acumulador. L MW 210
29
Direccionamiento Indirecto por Registro Inter-Area
Formato General de Puntero R B X 31 ... 24 23 16 15 8 7 1 1 1 AR1 tras la instrucción: LAR1 P#I100.0 LAR1 P#I100.0 L B [AR1, P#110.0] Ejemplo B [AR1, P#200.0] Tamaño Reg Constante Direcc. de offset Direccionamiento El direccionamiento con los registros de direcciones pueden llevarse a cabo por Registro de entre diferentes áreas. Direcciones Se establece en las instrucciones el tamaño (byte, palabra, etc.), un registro de inter-área direcciones y una constante. El registro de direcciones de especificado contiene la dirección base y el área relacionada. La localización donde se almacena el valor de la dirección se calcula a través de la dirección base y de la constante. El cálculo de la dirección tiene lugar por suma binaria. El direccionamiento indirecto por registro también es posible para direccionamiento por bit. Ejemplo: U [AR1, P#110.5] for the register contents above U E Instruction executed Ejemplos de aplicación: mismo tipo de estructura, excepto otras áreas de acceso de datos dinámico. L IB 210
30
Proteger un Bloque utilizando un Programa Fuente
OB FB FC De- com- pilar Com- pilar Fuente con/sin protección Bloques Editables Fuente con protección OB FB FC Com- pilar Bloques no editables Introducción Al igual que en los lenguajes de programación de alto nivel, la creación de módulos también es posible utilizando programas fuente. Este programa fuente es compilado para generar un módulo ejecutable. A la viceversa, un programa fuente también se puede generar desde un módulo ejecutable. Fuentes, Para qué • para recablear de manera automática, utilizando símbolos Sirven? • para asignar atributos a módulos, por ejemplo, protger un bloque • como protección de datos de todo el programa • mayor libertad en la edición y proceso de módulos: - modificando el tipo de módulo - insertando / borrando segmentos - modificando elementos de programa y comentarios - creando programas fuente en otros editores de texto (WORD, WordPad), sin necesidad de tener instalado STEP7 en la PG/PC - completar programación simbólica sin necesidad de tener que esperar a que la sintaxis de cada secuencia sea comprobada por el sistema, etc.
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.