Documente Academic
Documente Profesional
Documente Cultură
SIMATIC
S7-SCL V5.3 para S7-300/400
Getting Started Edition 01/2005
Primeros pasos
El ejemplo que acompaa a este producto no es una descripcin aislada, sino que forma parte del manual. Para acceder a l, pulse sobre el botn "Primeros pasos".
Consignas de seguridad
Este manual contiene las informaciones necesarias para la seguridad personal as como para la prevencin de daos materiales. Las informaciones para su seguridad personal estn resaltadas con un tringulo de advertencia; las informaciones para evitar nicamente daos materiales no llevan dicho tringulo. De acuerdo al grado de peligro las consignas se representan, de mayor a menor peligro, como sigue:
! ! !
Peligro
Significa que, si no se adoptan las medidas preventivas adecuadas se producir la muerte, o bien lesiones corporales graves.
Advertencia
Significa que, si no se adoptan las medidas preventivas adecuadas puede producirse la muerte o bien lesiones corporales graves.
Precaucin
Con tringulo de advertencia significa que si no se adoptan las medidas preventivas adecuadas, pueden producirse lesiones corporales.
Precaucin
Sin tringulo de advertencia significa que si no se adoptan las medidas preventivas adecuadas, pueden producirse daos materiales.
Atencin
Significa que puede producirse un resultado o estado no deseado si no se respeta la consigna de seguridad correspondiente. Si se dan varios niveles de peligro se usa siempre la consigna de seguridad ms estricta en cada caso. Si en una consigna de seguridad con tringulo de advertencia se alarma de posibles daos personales, la misma consigna puede contener tambin una advertencia sobre posibles daos materiales.
Personal cualificado
El equipo/sistema correspondiente slo deber instalarse y operarse respetando lo especificado en este documento. Slo est autorizado a intervenir en este equipo el personal cualificado. En el sentido del manual se trata de personas que disponen de los conocimientos tcnicos necesarios para poner en funcionamiento, conectar a tierra y marcar los aparatos, sistemas y circuitos de acuerdo con las normas estndar de seguridad.
Uso conforme
Considere lo siguiente:
Advertencia
El equipo o los componentes del sistema slo se podrn utilizar para los casos de aplicacin previstos en el catlogo y en la descripcin tcnica, y slo asociado a los equipos y componentes de Siemens y de tercera que han sido recomendados y homologados por Siemens. El funcionamiento correcto y seguro del producto presupone un transporte, un almacenamiento, una instalacin y un montaje conforme a las prcticas de la buena ingeniera, as como un manejo y un mantenimiento rigurosos.
Marcas registradas Todos los nombres marcados con son marcas registradas de Siemens AG. Los restantes nombres y designaciones contenidos en el presente documento pueden ser marcas registradas cuya utilizacin por terceros para sus propios fines puede violar los derechos de sus titulares.
Exencin de responsabilidad
Hemos comprobado la concordancia del contenido de esta publicacin con el hardware y el software descritos. Sin embargo, como es imposible excluir desviaciones, no podemos hacernos responsable de la plena concordancia. El contenido de esta publicacin se revisa peridicamente; si es necesario, las posibles correcciones se incluyen en la siguiente edicin.
Siemens Aktiengesellschaft
A5E00324657-01
Hardware necesario
El programa de ejemplo se puede ejecutar en un SIMATIC S7-300 o SIMATIC S7-400 con la siguiente periferia: un mdulo de entrada de 16 canales un mdulo de salida de 16 canales
Planteamiento
Resumen
La tarea consiste en adquirir valores medidos a travs de un mdulo de entrada y clasificarlos y procesarlos con un programa S7-SCL. Los resultados deben visualizarse en el mdulo de salida.
Introducir datos
Interruptor de entrada Valor medido
1 1 1 1 1 1 1 1
255
Raz Cuadrado
255 127 63 31 15 7 3 1
Adquirir valores medidos
1 3 7 15 31 63 127 255
Clasificar valores medidos Clculos
1 2 3 4 6 8 11 16
(* = Desbordamiento)
Calcular resultados
Salidas ajustables
En el mdulo de salida slo se puede mostrar un valor. Por eso se programarn las siguientes opciones: Seleccin de un elemento de una lista Seleccin entre valor medido, raz y cuadrado La seleccin del valor mostrado se realiza de la manera siguiente: Con tres interruptores se ajusta una codificacin que se acepta al detectarse un flanco en el cuarto interruptor, el interruptor de codificacin. A partir de aqu se calcula la direccin con la que se direccionar la salida. Con la misma direccin se ponen a disposicin tres valores para la salida: valor medido, raz y cuadrado. Para seleccionar uno de estos valores, hay que programar dos conmutadores.
Introducir datos
Interruptor en mdulo de entrada Codificacin Dos conmutadores 1 1 0
0
Raz o cuadrado
1
Valor medido o resultado
Valor medido
Raz
Cuadrado
1 3 7 15 31 63 127 255
Direccin Valores clasificados Direccin Conmutador
(* = Desbordamiento)
Salida de datos
Visualizacin en mdulos de salida
4
Salida
OB
Los bloques de organizacin forman la interface entre el sistema operativo de la CPU S7 y el programa de usuario. Aqu se determina la secuencia de ejecucin de los bloques del programa de usuario. Los bloques de funcin son bloques lgicos con datos estticos. Dado que un FB dispone de memoria, se puede acceder a sus parmetros (p.ej. salidas) desde cualquier punto del programa de usuario. Las funciones son bloques lgicos sin memoria. Dado que no existe memoria, hay que procesar los valores calculados justo despus de llamar a la funcin. Los bloques de datos son reas de datos en las que se guardan los datos de usuario. Existen bloques de datos globales, a los que se puede acceder desde todos los bloques lgicos, y DB de instancia asignados a una llamada a FB determinada. Los tipos de datos definidos por el usuario son tipos de datos configurados que se pueden definir segn las necesidades del usuario y son de uso mltiple. Estos datos se emplean para generar varios bloques de datos con la misma configuracin. Los UDT se utilizan como bloques.
FB
Bloques de STEP 7
FC
DB
UDT
Carpeta de bloques
Offline
CICLO Bloque de organizacin (OB) Entrada de datos Llamada cclica Salida de datos
Calcular resultados
FB "ADQUISICION"
Al seleccionar el tipo de bloque para resolver las tareas parciales Clasificacin valores medidos y Clculo de resultados hay que tener en cuenta que es necesario crear un bfer de salida que contenga los resultados de clculo raz y cuadrado de cada valor medido. Por este motivo el nico bloque posible es un FB. Dado que el FB es llamado por un FB de orden superior, no necesita ningn DB propio. Sus datos de instancia se pueden crear en el bloque de datos de instancia del FB invocante. La FC resulta idnea para resolver la tarea parcial Clculo de raz o cuadrado porque se puede producir el retorno del resultado como valor de la funcin. Adems, para el clculo no se requiere ningn dato que deba conservarse ms de un ciclo de ejecucin del programa. Para calcular la raz se puede utilizar la funcin estndar de S7-SCL SQRT. Para calcular el cuadrado debe crearse una funcin CUADRADO, que tambin comprobar los lmites del rango.
FB "EVALUACION"
Parmetros de salida
VAR_OUTPUT
Parmetros de entrada/salida Cuando se efecta la llamada, los parmetros de entrada/salida asumen el valor actual de una variable, lo procesan y a continuacin devuelven los resultados a la misma variable.
VAR_IN_OUT
OB Ciclo
El OB CICLO no dispone de ningn parmetro formal. Llama al FB ADQUISICION y le asigna el valor medido y los datos de control para sus parmetros formales.
FB ADQUISICION
Nombre del parmetro intr_val_med nue_val nue_clas sel_funcion seleccion nue_sel sal_resultado sal_v_med Tipo de datos INT BOOL BOOL BOOL WORD BOOL DWORD DWORD Tipo de declaracin VAR_INPUT VAR_INPUT VAR_INPUT VAR_INPUT VAR_INPUT VAR_INPUT VAR_OUTPUT VAR_OUTPUT Descripcin Valor medido Interruptor para aceptar el valor medido en el bfer de anillo Interruptor para clasificar y evaluar valores medidos Conmutador para seleccionar raz o cuadrado Cdigo para seleccionar valor de salida Interruptor para aceptar la codificacin Salida del resultado calculado Salida del valor medido correspondiente
10
Evaluar
El FB ADQUISICION llama al FB EVALUACION. Ambos FB reciben como dato comn el array del valor medido que se clasificar. Por ello se declara como parmetro de entrada/salida. Para el resultado de clculo de la raz y del cuadrado se crea un array estructurado en forma de parmetro de salida. En la siguiente tabla se indican los parmetros formales:
Nombre bufer_clasif bufer_calculo Tipo de datos ARRAY[..] OF REAL ARRAY[..]OF STRUCT Tipo de declaracin VAR_IN_OUT VAR_OUTPUT Descripcin Array de valor medido, se corresponde con el bfer anular Array para resultados: estructura con los componentes "RAIZ" y "CUADRADO" del tipo INT
SQRT y cuadrado
Las funciones se llaman desde EVALUACION. Necesitan un valor de entrada y proporcionan un valor de funcin como resultado.
Nombre Valor SQRT Valor CUADRADO Tipo de datos REAL REAL INT INT Tipo de declaracin VAR_INPUT Valor de funcin VAR_INPUT Valor de funcin Descripcin Entrada para RAIZ Raz del valor de entrada Entrada para CUADRADO Cuadrado del valor de entrada
11
Sistema de automatizacin
Byte 1
Byte 5
Mdulo de entrada
Byte 0
E 0.3 E 0.4
0 1 2 3 4 5 6 7 0a7 Aceptacin del valor medido Inicio de clasificacin y clculo Selec. resultado: raz o cuadrado Selec. salida: Valor medido o resultado Codificacin bit 0 Codificacin bit 1 Codificacin bit 2 Aceptacin de la codificacin
Byte 1
Mdulo de Byte 4 salida
0 1 2 3 4 5 6 7
0a7
Byte ms significativo de la palabra de salida(bits 8 s 15) slo necesario en el clculo del cuadrado. En otros casos, 0.
0 1 2 3 4 5
0a7
Byte menos significativo de la palabra de salida (bits 0 a 7): valor medido o resultado: raz o cuadrado.
Byte 5
6 7
12
13
rea de instrucciones
En primer lugar se comprueba si el valor de entrada excede el lmite en el que el resultado es superior al rango permitido para enteros. En este caso se registrara el valor mximo para Integer. En caso contrario, se efectuara la operacin de elevar al cuadrado. El resultado se transfiere como valor de funcin. FUNCTION CUADRADO : INT (******************************************************************* Esta funcin proporciona como valor de funcin el cuadrado de entrada, o, en caso de desbordamiento, el valor mximo que puede representarse con enteros. ******************************************************************** *) VAR_INPUT valor : INT; END_VAR BEGIN IF valor <= 181 THEN CUADRADO := valor * valor; //Clculo del valor de la funcin ELSE CUADRADO := 32_767; // Definir valor mximo en desbordamiento END_IF; END_FUNCTION
14
I significa ndice
No
CAMBIO = TRUE
I := I-1
Cambiar ? FALSE I := 0
No
RAIZ CUADRADO
Adquirir los resultados en el array de resultados estructurado. Adquirir los resultados en el array de resultados estructurado.
I := I+1
Fin
15
CONST LIMITE := 7; END_CONST VAR_IN_OUT bufer_clasif : ARRAY[0..LIMITE] OF INT; END_VAR VAR_OUTPUT bufer_calculo : ARRAY[0..LIMITE] OF STRUCT raiz : INT; cuadrado : INT; END_STRUCT; END_VAR VAR_TEMP cambiar : BOOL; indice, ayuda : INT; n_valor, n_resultado: REAL; END_VAR
16
Este interface muestra el ncleo del intercambio de datos para procesar los valores medidos. Los valores se guardan en el bloque de datos de instancia ADQUISICION_DATOS ya que en el FB ADQUISICION invocante se ha creado una instancia local para el FB EVALUACION.
17
18
S Leer valor medido en el bfer de circulacin, recalcular el puntero Con la operacin MOD se real iza el bfer de circulacin: cuando se alcance el lmite, iniciar desde el principio.
S Clasificar bfer de circulacin y efectuar clculos (para hacerlo, crear rea de resultados)
VALORACION
S Primero desplazar los bits rele vantes hasta el borde derecho, y despus ocultar las posiciones no necesarias con AND
TRUE
Cargar: escribir elementos de la lista en los parme tros de salida junto con la direccin de salida,
Fin
19
Variables estticas: entre VAR y END_VAR. Incluida la declaracin de la instancia local para el bloque EVALUACION. CONST LIMITE := 7; NUMERO:= LIMITE + 1; END_CONST VAR_INPUT intr_val_med: INT ; // Nuevo valor medido nue_val : BOOL; // Aceptar valor medido en bfer de circulacin // "valores_medidos" nue_clas : BOOL; // Clasificar valores medidos sel_funcion : BOOL; // Seleccionar la funcin de clculo raiz/cuadrado nue_sel : BOOL; // Aceptar direccin de salida seleccion: WORD; // Direccin de salida END_VAR VAR_OUTPUT sal_resultado : INT; // valor calculado sal_v_med: INT; // valor medido correspondiente END_VAR VAR valores_medidos : ARRAY[0..LIMITE] OF INT := 8(0); bufer_resultado : ARRAY[0..LIMITE] OF STRUCT raiz : INT; cuadrado : INT; END_STRUCT; puntero : INT := 0; ant_val : BOOL := TRUE; ant_clas : BOOL := TRUE; ant_sel : BOOL := TRUE; //Direccin de salida convertida valorar_instancia: evaluacion; //Declarar instancia local END_VAR
Variables estticas
Se ha seleccionado el tipo de bloque FB porque hay datos que se deben mantener de un ciclo de programa al siguiente. Estos datos son las variables estticas declaradas en el bloque de declaracin "VAR, END_VAR".
20
Las variables estticas son variables locales cuyo valor se mantiene en todos los recorridos del bloque. Sirven para guardar los valores de un bloque de funcin y se almacenan en el bloque de datos de instancia.
21
22
Clculo de la direccin
La siguiente figura muestra el clculo de la direccin: la palabra de entrada EW0 contiene en los bits 12 a 14 el cdigo que se acepta cuando en el interruptor de codificacin (bit 15) se detecta un flanco. Desplazando a la derecha con la funcin estndar SHR e inhibiendo los bits relevantes con una mscara AND se calcula la "direccin". Con esta direccin se escriben los elementos de array (resultado de clculo y valor medido correspondiente) en los parmetros de salida. Que la salida sea raz o cuadrado depende de la "seleccin de funcin". Un flanco en el interruptor de codificacin se detecta porque el "valor nuevo" cambia respecto al "valor antiguo".
Palabra de la memoria
0 1 2 3 4 5 6 7 Byte0 0 1 2 3 4 5 6 7 Byte1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 EW0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
"direccin"
23
rea de instrucciones
El rea de instrucciones del bloque lgico presenta la siguiente estructura: BEGIN (******************************************************************* Parte 1 : 'Adquisicion' de 'valores_medidos' Al cambiar "nue_val" se produce la entrada del valor medido. Con la operacin MOD se ejecuta un bfer de circulacin para valores medidos. *******************************************************************) IF nue_val <> ant_val THEN puntero := puntero MOD NUMERO; valores_medidos[puntero] := Intr_val_med; puntero := puntero + 1; END_IF; ant_val := nue_val; (******************************************************************* Parte 2 : Iniciar 'Clasificacin' y 'Clculo' Al cambiar "nue_clas" se inicia la clasificacin del bfer de circulacin y la ejecucin de los clculos con los valores medidos. Los resultados se guardan en un nuevo array, "bufer_calculo". *) IF nue_clas <> ant_clas THEN puntero := 0; //Inicializar puntero del bfer //de circulacin valorar_instancia(bufer_clasif := valores_medidos); //Llamar evaluacion END_IF; ant_clas := nue_clas; bufer_resultado := valorar_instancia.bufer_calculo; //cuadrado y raiz (****************************************************************** (* Parte 3 : Valorar cdigo y preparar salida: Al cambiar "nue_sel" se determina de nuevo el cdigo para el direccionamiento del elemento de array para la salida: Los datos relevantes de 'seleccion' se ocultan y se transformen en entero. Dependiendo de la posicin del interruptor de "sel_funcion" en la salida se dispondr "RAIZ" o "CUADRADO" *) (******************************************************************) IF nue_sel <> ant_sel THEN direccion := WORD_TO_INT(SHR(IN := seleccion, N := 12) AND 16#0007); END_IF; ant_sel := nue_sel; IF sel_funcion THEN sal_resultado:= bufer_resultado[direccion].cuadrado; ELSE sal_resultado:= bufer_resultado[direccion].raiz; END_IF; sal_v_med := valores_medidos[direccion]; //indicacin del valor medido END_FUNCTION_BLOCK
24
25
26
4a 4b
5a
5b
A la salida vuelve a aparecer 0, dado que por medio del proceso de clasificacin, el valor medido se ha vuelto a desplazar hacia arriba en el array. A la salida aparece otra vez el valor medido "11", ya que se trata del segundo valor ms alto del array.
8a
8b
27
Test adicional
En las siguientes tablas aparecen los interruptores del mdulo de entrada y patrones de test para la raz y el cuadrado. Adems, estas tablas le ayudarn a definir sus propios pasos de test: La entrada se realiza a travs de interruptores: el programa se puede controlar mediante los 8 interruptores superiores y los valores medidos se pueden ajustar con los 8 inferiores. La salida se realiza a travs de indicadores: en el grupo superior aparece el byte de salida ms significativo, y en el grupo inferior el menos significativo.
Interruptores de manejo Canal 0 Canal 1 Canal 2 Canal 3 Canal 4 Canal 5 Canal 6 Canal 7 Nombre del parmetro Explicacin
Interruptor de entrada Conmutacin para la validacin de valores medidos Interruptor de clasificacin Conmutacin para clasificacin/evaluacin Interruptor de funcin Interruptor hacia la izquierda ("0"): raz, Interruptor hacia la derecha ("1"): cuadrado Interruptor de salida Interruptor hacia la izquierda ("0"): valor medido, Interruptor hacia la derecha ("1"): resultado Codificacin Direccin de salida bit 0 Codificacin Direccin de salida bit 1 Codificacin Direccin de salida bit 2 Interruptor de codificacin Conmutacin para confirmacin de cdigo
La siguiente tabla contiene a ttulo de ejemplo 8 valores medidos en una secuencia ya clasificada. Introduzca los valores en cualquier orden. Ajuste la combinacin binaria deseada y acepte el valor correspondiente conmutando el interruptor de entrada. Una vez introducidos todos los valores inicie la clasificacin y evaluacin conmutando el interruptor de clasificacin. A continuacin puede visualizar los valores clasificados o los resultados - raz o cuadrado.
VALOR_MEDIDO 0000 0001 = 0000 0011 = 0000 0111 = 0000 1111 = 0001 1111 = 0011 1111 = 0111 1111 = 1111 1111 = 1 3 7 15 31 63 127 255 Raz 0, 0000 0001 = 1 0, 0000 0010 = 2 0, 0000 0011 = 3 0, 0000 0100 = 4 0, 0000 0110 = 6 0, 0000 1000 = 8 0, 0000 1011 = 11 0, 0001 0000 = 16 Cuadrado 0000 0000, 0000 0001 = 1 0000 0000, 0000 1001 = 9 0000 0000, 0011 0001 = 49 0000 0000, 1110 0001 = 225 0000 0011, 1100 0001 = 961 0000 1111, 1000 0001 = 3969 0011 1111, 0000 0001 = 16129 0111 111, 1111 1111 = Indicacin de desbordamiento
28