Sunteți pe pagina 1din 28

s

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.

Copyright Siemens AG 2005 All rights reserved


La divulgacin y reproduccin de este documento, as como el uso y la comunicacin de su contenido, no estn autorizados, a no ser que se obtenga el consentimiento expreso para ello. Los infractores quedan obligados a la indemnizacin por daos y perjuicios. Se reservan todos los derechos, en particular para el caso de concesin de patentes o de modelos de utilidad.

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 AG Automation and Drives Postfach 4848, 90327 Nrnberg, Alemania

Siemens AG 2005 Sujeto a cambios sin previo aviso

Siemens Aktiengesellschaft

A5E00324657-01

Disear un programa S7-SCL

Bienvenido al ejemplo de iniciacin "Adquisicin de valores medidos"


Qu aprender?
El ejemplo de iniciacin ilustra cmo configurar S7-SCL de forma eficaz. Al principio, las preguntas ms frecuentes son p. ej.: Cmo se trabaja con S7-SCL al disear programas? Qu medios ofrece el lenguaje S7-SCL para solucionar la tarea planteada? De qu funciones de test dispongo? En este captulo se dar respuesta a stas y otras preguntas.

Medios utilizados en el lenguaje S7-SCL


En el ejemplo aparecen, entre otros, los siguientes elementos de lenguaje S7-SCL: Estructura y utilizacin de los diferentes tipos de bloques en S7-SCL Llamada del bloque con transferencia y evaluacin de parmetros Distintos formatos de entrada y salida Programacin con tipos de datos simples y arrays Inicializacin de variables Estructuras con ramificaciones y bucles

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

Funciones de test disponibles


El programa est estructurado de manera que el usuario pueda testearlo rpidamente mediante los pulsadores a la entrada y los indicadores en la salida. Para realizar un test exhaustivo, es mejor utilizar las funciones de test de S7-SCL. Adems, el usuario dispone de todas las posibilidades del paquete bsico STEP 7 en varios idiomas.

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

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.

Adquisicin de valores medidos


Un valor medido se ajusta a travs de los 8 interruptores de entrada. Cuando en uno de los interruptores de entrada se detecte un flanco (v. figura siguiente), habr que registrar dicho valor en el array del valor medido. El margen permitido para los valores medidos oscila entre 0 y 255. Por consiguiente se requiere un byte para la entrada.

Procesamiento de valores medidos


El array del valor medido debe ser un bfer anular de 8 entradas como mximo. Si en un interruptor de clasificacin se detecta un flanco, habr que clasificar los valores guardados en el array de valor medido en orden ascendente. Despus se calcular la raz y el cuadrado de cada uno de los valores. Para las funciones de procesamiento se necesita una palabra.

Introducir datos
Interruptor de entrada Valor medido

x=Valoracin del flanco Interruptor de clasificacin

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

1 9 49 225 961 3969 16129


*

(* = Desbordamiento)

Calcular resultados

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

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

x=Valores del flanco Interruptor de codificacin

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

1 Direccionar salida 2 3 4 6 Seleccionar salida 8 11 16


Resultados

1 9 49 225 961 3969 16129


*

(* = Desbordamiento)

Salida de datos
Visualizacin en mdulos de salida

4
Salida

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

Crear un programa estructurado con S7-SCL


Tipos de bloques
La mejor manera de solucionar la tarea planteada es mediante un programa S7-SCL estructurado. Dicho programa tiene estructura modular; es decir, se compone de bloques que procesan una o varias tareas parciales. Al igual que los lenguajes de programacin de STEP 7, S7-SCL ofrece los siguientes tipos de bloques.

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

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

Organizacin de los bloques en fuentes S7-SCL


Un programa S7-SCL se compone de una o ms fuentes. Una fuente puede contener un nico bloque o un programa completo compuesto de varios bloques.

Una fuente para un programa

Varias fuentes para un programa


Fuente SCL para OB1 Fuente SCL para FC2 Fuente SCL para FB22

. FB22 . . . FC2 . . . OB1 .


Fuente SCL

FB22 FC2 OB1


DB de instancia

Carpeta de bloques
Offline

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

Definir las tareas parciales


Tareas parciales
Las tareas parciales aparecen representadas en forma de cuadros en la siguiente figura. Las rectngulos sobre fondo gris representan los bloques. La disposicin de los bloques lgicos de izquierda a derecha se corresponde con la secuencia de llamada.

CICLO Bloque de organizacin (OB) Entrada de datos Llamada cclica Salida de datos

ADQUISICION Bloque de funcin (FB) Adquirir valo res medidos

VALORACION Bloque de funcin (FB) Clasificar valores medidos

RAIZ Funciones y CUADRADO Raz, cuadrado

Direccionar y seleccionar salida

Calcular resultados

ADQUISICION_DATOS Bloque de datos (DB)

Guardar datos Flujo del programa Flujo de datos

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

Seleccin y asignacin de los tipos de bloque


Los bloques se seleccionan de acuerdo con los siguientes criterios:
Funcin Los programas de usuario slo se pueden iniciar desde un OB. Dado que los valores medidos se adquieren de manera cclica, se requiere un OB para llamadas cclicas (OB1). Una parte del procesamiento - entrada de datos y salida de datos - se programa en el OB. Para la tarea parcial Adquisicin de valores medidos se requiere un bloque con memoria, es decir un FB, ya que hay que mantener ciertos datos locales de bloque (p.ej. el bfer anular) de un ciclo de programa en el siguiente. El lugar donde se almacenan los datos (memoria) es el bloque de datos de instancia ADQUISICION_DATOS. El mismo FB puede asumir la tarea parcial Direccionar salida o Seleccionar salida, puesto que se dispone de los datos necesarios. Nombre de bloque OB "Ciclo"

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"

FC "SQRT" (raz) y FC "CUADRADO"

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

Definir los interfaces entre bloques


Resumen
El interface de un bloque se crea mediante parmetros a los que se puede acceder desde otros bloques. Los parmetros declarados en el bloque son comodines cuyos valores se determinan al efectuarse la llamada al bloque. Estos comodines se denominan parmetros formales y los valores asignados al llamar el bloque, parmetros actuales. Cuando se llama a un bloque se le transfieren datos de entrada en forma de parmetros actuales. Al retornar al bloque invocante se ponen a disposicin los datos de salida para su transferencia. Una funcin (FC) puede transferir su resultado como valor de la funcin. Los parmetros de bloque se pueden dividir en las siguientes categoras:
Parmetros de bloques Parmetros de entrada Significado Los parmetros de entrada asumen los valores de entrada actuales cuando se llama al bloque. Slo permiten accesos de lectura. Los parmetros de salida transfieren los valores de salida actuales al bloque invocante. Permiten accesos de lectura y escritura. Declaracin con VAR_INPUT

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

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

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

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

11

Disear un programa S7-SCL

Definir el interface de entrada/salida


En la siguiente figura se muestra el interface de entrada/salida. Tenga en cuenta que en la entrada/ salida byte a byte, el byte menos significativo aparece arriba y el byte ms significativo aparece abajo. Sin embargo, en la entrada/salida palabra a palabra sucede todo lo contrario.
Byte 0 Byte 4

Sistema de automatizacin

Byte 1

Byte 5

Mdulo de entrada digital

Mdulo de salida digital

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

Valor de entrada: valor medido

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

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

Definir la secuencia de bloques en la fuente


En cuanto a la secuencia de los bloques en la fuente S7-SCL, hay que tener en cuenta que un bloque debe existir antes de poderlo utilizar, es decir, de llamarlo desde otro bloque. En la fuente S7-SCL, los bloques deben estar ordenados de esta forma:

CUADRADO FC Llama a EVALUAR FB Llama a REGISTRAR FB Llama a CICLO OB

Definir los smbolos


El programa resulta ms comprensible asignando nombres simblicos a las direcciones de los mdulos y a los bloques. Los nombres simblicos se asignan en la tabla de smbolos. La siguiente figura contiene la tabla de smbolos del ejemplo. En ella se describen los nombres simblicos que hay que declarar en la tabla de smbolos para poder compilar la fuente sin que se produzca ningn error:

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

13

Disear un programa S7-SCL

Crear la funcin CUADRADO


rea de instrucciones de la funcin CUADRADO

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

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

Crear el bloque de funcin EVALUACION


Diagrama de flujo de EVALUACIN
La figura representa el algoritmo en forma de diagrama de flujo:
EVALUACION bloque de funcin Inicio de la instruccin REPEAT Inicio

Cambio := FALSE I := LIMITE

I significa ndice

Inicio de la instruccin FOR I >= 1 ?


S

No

bufer_clasif [I-1] > bufer_clasif [I] ? No

Intercambiar los valores de bfer de clasificacin [I-1] y bfer de clasificacin [I]

CAMBIO = TRUE

Fin de la instruccin FOR Fin de la instruccin REPEAT TRUE

I := I-1

Cambiar ? FALSE I := 0

Inicio de la instruccin FOR I <= LIMITE ?


S

No

RAIZ CUADRADO

Adquirir los resultados en el array de resultados estructurado. Adquirir los resultados en el array de resultados estructurado.

Fin de la instruccin FOR

I := I+1

Fin

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

15

Disear un programa S7-SCL

rea de declaracin del FB EVALUACION

Estructura del rea de declaracin


El rea de declaracin de este bloque est formada por las siguientes partes: Constantes: Parmetros de entrada/salida: Parmetros de salida: Declaracin de las variables temporales: entre CONST y END_CONST entre VAR_IN_OUT y END_VAR, entre VAR_OUTPUT y END_VAR entre VAR_TEMP y END_VAR

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

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

rea de instrucciones del FB EVALUACION

Ejecucin del programa


El parmetro de entrada/salida "bfer_clasif" se combina con el bfer anular "valores_medidos", es decir, el contenido original del bfer se sobrescribe con los valores medidos clasificados. Para los resultados de clculo se crea el nuevo array "bufer_calculo", configurado como parmetro de salida. Sus elementos estn estructurados de tal forma que conservan la raz y el cuadrado de cada valor medido. En la figura siguiente puede encontrar la relacin entre los arrays descritos:

bufer_clasif valores_medidos bufer_calculo


EVALUACION

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.

rea de instrucciones de EVALUACION


En primer lugar se clasifican los valores medidos en el bfer anular y a continuacin se realizan los clculos: Mtodo del algoritmo de clasificacin Aqu se utiliza el mtodo de intercambio permanente de valores para la clasificacin del bfer de valores medidos, es decir, se comparan dos valores consecutivos y se intercambian hasta que se alcanza la secuencia de clasificacin deseada. El bfer utilizado es el parmetro de entrada/salida "bufer_clasif". Inicio del clculo Cuando termina la clasificacin se ejecuta un bucle para el clculo en el que se llama a las funciones CUADRADO para elevar al cuadrado y SQRT para calcular la raz. Sus resultados se guardan en el array estructurado "bufer_calculo".

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

17

Disear un programa S7-SCL

rea de instrucciones de EVALUACION


El rea de instrucciones del bloque lgico presenta la siguiente estructura: BEGIN (* Parte 1 'Clasificacion' : Clasificacin segn el proceso "bubble sort": intercambiar de dos en dos los valores hasta que el bfer de valores medidos est clasificado *******************************************************) REPEAT cambiar := FALSE; FOR indice := LIMITE TO 1 BY -1 DO IF bufer_clasif[indice-1] > bufer_clasif[indice] THEN ayuda := bufer_clasif[indice]; bufer_clasif[indice] := bufer_clasif[indice-1]; bufer_clasif[indice-1] := ayuda; cambiar := TRUE; END_IF; END_FOR; UNTIL NOT cambiar END_REPEAT; (******************************************************************* * Parte 2 'Calculo' : Clculo de la raz con la funcin estndar RAIZ y obtencin del cuadrado con la funcion CUADRADO. *******************************************************) FOR indice := 0 TO LIMITE BY 1 DO n_valor := INT_TO_REAL(bufer_clasif[indice]); n_resultado := SQRT(n_valor); bufer_calculo[indice].raiz := REAL_TO_INT(n_resultado); bufer_calculo[indice].cuadrado := CUADRADO(bufer_clasif[indice]); END_FOR;

18

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

Crear el bloque de funcin ADQUISICIN


Diagrama de flujo de ADQUISICION
La siguiente figura representa el algoritmo en forma de diagrama de flujo:
ADQUISICION Bloque de funcin
Inicio

Cambio valor nuevo ? No

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.

Cambio clasificacin nueva? No

S Clasificar bfer de circulacin y efectuar clculos (para hacerlo, crear rea de resultados)

VALORACION

Aceptar resultados de clculo en rea de resultados

Cargar a partir del bloque de datos de instancia

Cambio cdigo nuevo ? No

S Primero desplazar los bits rele vantes hasta el borde derecho, y despus ocultar las posiciones no necesarias con AND

Evaluar cdigo y determinar direccin de salida

Seleccin de funcin? FALSE Cargar resultado de RAIZ

TRUE

Cargar resultado de CUADRADO

Cargar valor medido

Cargar: escribir elementos de la lista en los parme tros de salida junto con la direccin de salida,

Fin

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

19

Disear un programa S7-SCL

rea de declaracin del FB ADQUISICION

Estructura del rea de declaracin


El rea de declaracin de este bloque est formada por los siguientes bloques de declaracin: Constantes: Parmetro de entrada: Parmetros de salida: entre CONST y END_CONST. entre VAR_INPUT y END_VAR entre VAR_OUTPUT y END_VAR.

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

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

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.

Inicializacin de las variables


Tenga en cuenta los valores de inicializacin que se registran en las variables al inicializar el bloque (despus de cargar el programa en la CPU). En la tabla de declaracin VAR, END_VAR tambin se declara la instancia local del FB EVALUACION. El nombre se utilizar posteriormente para la llamada y para acceder a los parmetros de salida. Como memoria de datos se utiliza la instancia global ADQUISICION_DATOS.
Nombre valores_medidos bufer_resultado puntero ant_val ant_clas ant_sel direccion valorar_instancia Tipo de datos ARRAY [..] OF INT ARRAY[..] OF STRUCT INT BOOL BOOL BOOL INT Instancia local Pre-ajuste 8(0) 0 FALSE FALSE FALSE 0 Descripcin Bfer anular para valores medidos Array para estructuras con los componentes "raz" y "cuadrado" del tipo INT ndice para bfer anular, all se registra el valor medido Anterior valor para la validacin del valor medido con "nue_val" Valor precedente para clasificar con "nue_clas" Valor precedente para aceptar la codificacin con "nue_sel" Direccin para la salida de valores medidos o resultados Instancia local para el FB EVALUACION

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

21

Disear un programa S7-SCL

rea de instrucciones del FB ADQUISICION

Estructura del rea de instrucciones


El rea de instrucciones de ADQUISICION se divide en tres partes: adquirir valores medidos: cuando el parmetro de entrada cambia de "valor antiguo" a "valor nuevo" se carga un valor medido nuevo en el bfer anular. iniciar clasificacin y clculo Llamando al bloque de funcin EVALUACION, cuando el parmetro de entrada cambia de "clasificacin antigua" a "clasificacin nueva". evaluar codificacin y preparar salida La codificacin se lee por palabras: segn las convenciones de SIMATIC, esto significa que el grupo de interruptores superior (Byte0) contiene los 8 bits ms significativos de la palabra de entrada y el grupo de interruptores inferior (Byte1), los menos significativos. La siguiente figura indica dnde se encuentran los interruptores en los que se puede ajustar la codificacin:

22

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

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".

Interruptor del mdulo

Palabra de la memoria

Despus de SHR 12 posiciones

Despus de AND, mscara 0007

Interruptor para valor de codificacin Interruptor de codifi cacin

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"

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

23

Disear un programa S7-SCL

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

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

Crear el bloque de organizacin CICLO


Tareas del OB CICLO
Se ha seleccionado un OB1 porque se llama de forma cclica. Con l se ejecutan las siguientes tareas del programa: Llamar y transferir datos de entrada y datos de control al bloque de funcin ADQUISICION. Aceptar los resultados del bloque de funcin ADQUISICION Salida de los valores para su visualizacin. Al principio del rea de declaracin aparece el array de datos temporal con 20 bytes de "datos del sistema".

Cdigo de programa del OB CICLO


ORGANIZATION_BLOCK CICLO (******************************************************************* * CICLO equivale al OB1, es decir, el sistema S7 lo llama cclicamente Parte 1 : llamada del bloque de funcin y transferencia de los valores de entrada Parte 2 : aceptacin de los valores de salida con conmutacin de salida *******************************************************************) VAR_TEMP datos_del_sistema : ARRAY[0..20] OF BYTE; // Area para OB1 END_VAR BEGIN (* Parte 1 : *****************************************************) ADQUISICION.ADQUISICION_DATOS( intr_val_med := WORD_TO_INT(entrada), nue_val := "entrada 0.0",//Interruptor de entrada como smbolo nue_clas := "Interr_clasif", sel_funcion := "Interr_funcion", nue_sel := "Interr_codif", seleccion := codificacion); (* Parte 2 : ********************************************************) IF Interr_salida THEN //Conmutacin de salida salida := ADQUISICION_DATOS.sal_resultado; //Raz o cuadrado ELSE salida := ADQUISICION_DATOS.sal_v_med; //Valor medido END_IF; END_ORGANIZATION_BLOCK

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

25

Disear un programa S7-SCL

Conversin de tipos de datos


El valor medido en la entrada es del tipo BYTE. Hay que convertirlo a INT: Se transforma de WORD a INT (el compilador realiza la conversin previa de BYTE a WORD de forma implcita). No es necesario realizar ninguna conversin para la salida, ya que sta est declarada como INT en la tabla de smbolos.

26

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

Disear un programa S7-SCL

Datos del test


Requisitos
Para el test se necesita un mdulo de entrada con la direccin 0 y un mdulo de salida con la direccin 4. Antes de efectuar el test, conmutar los 8 interruptores superiores del mdulo de entrada hacia la izquierda ("0") y los 8 interruptores inferiores hacia la derecha ("1"). Cargue previamente los bloques en la CPU, ya que tambin se comprueban los valores iniciales de las variables inmediatamente despus.

Pasos del test


Realice los pasos del test como se indica en la tabla.
Paso 1 Accin Active el cdigo "111" (E0.4, E0.5 y E0.6) y acptelo con el interruptor de codificacin (E0.7). Visualice la raz correspondiente conmutando el interruptor de salida (E0.3) a la posicin "1". Visualice el cuadrado correspondiente conmutando el interruptor de funcin (E0.2) a la posicin "1". Vuelva a conmutar el interruptor de salida (E0.3) a la posicin "0". Introduzca el valor 3, es decir, el valor binario "11" como nuevo valor medido en la entrada. Observe la escritura en memoria del valor medido: ajuste la codificacin a "000" y confrmela con el interruptor de codificacin (E0.7) para poder observar ms tarde la entrada de valores. Conmute el interruptor de entrada "Entrada 0.0" (E0.0). De esta forma se escribir en la memoria el valor ajustado en el cuarto paso del test. Inicie la clasificacin y el clculo conmutando el interruptor de clasificacin (E0.1). Visualizar el valor medido despus de clasificar: ajuste el cdigo "110" (E0.6=1, E0.5=1, E0.4= 0 de EB0, corresponde a bit 14, bit 13, bit 12 de EW0) y confrmelo conmutando el interruptor de codificacin. Visualizar los resultados correspondientes: conmutando el interruptor de salida (E0.3) se visualiza el cuadrado del valor medido obtenido en el paso 7. Conmutando el interruptor de funcin (E0.2) obtendr tambin la raz. Resultado Todas las salidas del mdulo de salida (byte menos significativos) se activan y se encienden los indicadores. Los indicadores de salida corresponden al valor binario "10000" (=16). En la salida se iluminan 15 indicadores. Esto significa que se produce un rebose, dado que con 255 x 255 se obtiene un valor demasiado elevado para el dominio de enteros. Vuelve a aparecer el valor medido: todas las indicaciones en las salidas del byte de salida de menor valor estn activadas. La salida no cambia todava.

4a 4b

5a

En la salida se visualiza 0; es decir, no se enciende ningn indicador.

5b

A la salida se muestra el valor medido 3, valor binario "11".

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

Se visualiza el valor de salida 9 o el valor binario "1001".

8b

Se visualiza el valor de salida 2 o el valor binario "10".

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

27

Disear un programa S7-SCL

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

Getting Started - S7-SCL V5.3 para S7-300/400 A5E00324657-01

S-ar putea să vă placă și