Resumen de contenidos para Siemens SIMATIC S7-SCL V5.3
Página 1
Prológo, Índice Presentación del producto SIMATIC Instalación Diseñar un programa S7-SCL S7-SCL V5.3 para S7-300/400 Manejo de S7-SCL Conceptos generales de S7-SCL Manual Estructura de programas S7-SCL Tipos de datos Declaración de variables y parámetros locales Declaración de constantes y saltos Datos globales Expresiones, operaciones y...
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 utilización por terceros para sus propios fines puede violar los derechos de sus titulares.
Prólogo Finalidad del manual Este manual proporciona un completo resumen acerca de la programación con S7-SCL. Sirve de ayuda durante la instalación y la puesta en marcha del software. En él se explican los pasos que hay que seguir para crear el programa, la estructura de los programas de usuario y los elementos de lenguaje individuales.
Página 4
Prólogo Los paquetes de documentación de S7-SCL y del software básico STEP 7. En la siguiente tabla aparece resumida la documentación de STEP 7 y S7-SCL: Manuales Finalidad Número de referencia Información S7-SCL básica y de Información básica y de El manual no se puede referencia con adquirir por separado.
Si tiene preguntas relacionadas con el uso de los productos descritos en el manual a las que no encuentre respuesta, diríjase a la sucursal o al representante más próximo de Siemens, en donde le pondrán en contacto con el especialista.
Prólogo Technical Support Podrá acceder al Technical Support de todos los productos de A&D • a través del formulario de Internet para el Support Request http://www.siemens.com/automation/support-request • Teléfono: + 49 180 5050 222 • Fax: + 49 180 5050 223 Encontrará...
Índice Presentación del producto ......................1-1 Campo de aplicación de S7-SCL ................1-1 Funcionamiento de S7-SCL ..................1-2 ¿Qué funciones ofrece S7-SCL? ................1-4 Novedades de la versión V5.3 SP1 ................1-6 Instalación ..........................2-1 Automation License Manager ..................2-1 2.1.1 Autorización de uso con el Automation License Manager ..........2-1 2.1.2 Instalar el Automation Licence Manager..............2-4 2.1.3...
Página 8
Índice 4.4.5 Definir las propiedades de un objeto................4-6 4.4.6 Crear fuentes S7-SCL con un editor estándar ............4-6 4.4.7 Proteger bloques ......................4-7 Reglas para las fuentes S7-SCL.................4-7 4.5.1 Reglas generales para las fuentes S7-SCL ..............4-7 4.5.2 Criterios para ordenar los bloques en el programa.............4-8 4.5.3 Uso de direcciones simbólicas ..................4-8 Editar en fuentes S7-SCL....................4-9...
Página 9
Índice 4.10.6.3 Comprobar la coherencia de los bloques..............4-37 4.11 Visualizar y cambiar las propiedades de la CPU ............4-39 4.11.1 Visualizar y cambiar el estado operativo de la CPU ..........4-39 4.11.2 Visualizar y ajustar la fecha y la hora de la CPU ............4-39 4.11.3 Visualizar los datos de la CPU ..................4-40 4.11.4...
Página 10
Índice Tipos de datos ..........................7-1 Sinopsis de los tipos de datos en S7-SCL ..............7-1 Tipos de datos simples....................7-3 7.2.1 Tipo de datos Bit ......................7-3 7.2.2 Tipo de datos Carácter....................7-3 7.2.3 Tipos de datos numéricos ...................7-3 7.2.4 Tipo de datos Tiempo....................7-4 Tipos de datos compuestos ..................7-5 7.3.1 Tipo de datos DATE_AND_TIME................7-5...
Página 11
Índice Datos globales ........................10-1 10.1 Sinopsis de los datos globales ..................10-1 10.2 Áreas de memoria de la CPU ...................10-2 10.2.1 Sinopsis de las áreas de memoria de la CPU ............10-2 10.2.2 Acceso absoluto a áreas de memoria de la CPU .............10-3 10.2.3 Acceso simbólico a áreas de memoria de la CPU ............10-5 10.2.4...
Página 12
Índice 12.3.3 Llamada a funciones ....................12-39 12.3.3.1 Llamada a funciones (FC) ..................12-39 12.3.3.2 Valor de respuesta (FC) ..................12-40 12.3.3.3 Parámetros de FC ....................12-41 12.3.3.4 Asignación de entrada (FC) ..................12-42 12.3.3.5 Asignación de salida y de entrada/salida (FC) ............12-43 12.3.3.6 Ejemplo de llamada a una función ................12-45 12.3.4 Parámetros definidos implícitamente ..............12-46 12.3.4.1 Parámetro de entrada EN ..................12-46...
Página 13
Índice 14.5 Funciones para la selección de valores ..............14-23 14.5.1 Funciones para la selección de valores ..............14-23 14.6 SFCs, SFBs y librerías estándar ................14-27 14.6.1 Funciones de sistema, bloques de función de sistema y librería estándar ....14-27 14.6.2 Interface de transferencia al OB ................14-29 Descripción del lenguaje .......................15-1 15.1 Descripción formal.....................15-1...
Página 14
Índice S7-SCL V5.3 para S7-300/400 A5E00324652-01...
Presentación del producto Campo de aplicación de S7-SCL S7-SCL (Structured Control Language) es un lenguaje de alto nivel orientado a PASCAL para la programación de autómatas programables con SIMATIC S7. Certificado PLCopen S7-SCL es un lenguaje textual de alto nivel ST (Structured Text) según lo establecido en la norma IEC 61131-3 ST y ha sido preparado para la certificación para el Reusability Level.
Presentación del producto Funcionamiento de S7-SCL Integración en STEP 7 S7-SCL soporta el concepto de bloques de STEP 7. Bloques STEP 7 Con S7-SCL se pueden crear los siguientes bloques de STEP 7: • OB • FC • FB • DB •...
Página 17
Presentación del producto La figura siguiente ofrece una visión de conjunto de los componentes del entorno de desarrollo: SCL para SIMATIC S7-300/400 Compilador Editor Depurador de lotes S7-SCL V5.3 para S7-300/400 A5E00324652-01...
Presentación del producto ¿Qué funciones ofrece S7-SCL? S7-SCL ofrece todas las ventajas de un lenguaje de programación de alto nivel. Además, S7-SCL dispone de características que han sido diseñadas especialmente para facilitar la programación estructurada: Librerías de bloques Con S7-SCL se suministran bloques ya preparados en librerías, p. ej.: •...
Página 19
Presentación del producto Depurador a nivel de lenguaje de alto nivel El depurador o debugger permite probar el programa fácilmente a nivel de lenguaje de alto nivel. Ofrece las siguientes funciones: • Observación continua de la ejecución del programa • Observación paso a paso con ayuda de puntos de parada que se pueden posicionar individualmente.
Presentación del producto Novedades de la versión V5.3 SP1 Ampliación del lenguaje S7-SCL V5.3 SP1 ha sido ampliado con medios del lenguaje que se definen en la norma IEC 61131-3 : • Funciones para procesar valores numéricos como funciones internas de S7-SCL (SEL, MAX, MIN, LIMIT, MUX) •...
(autorización de utilización) específica para del producto, cuya instalación se ejecuta a partir de la versión 5.3 de S7-SCL con el Automation License Manager. El Automation License Manager es un producto de sofware de Siemens AG. Se utiliza en todos los sistemas para el procesamiento de claves de licencia (representantes técnicos de licencias).
La clave de licencia es el representante técnico de una licencia (sello de licencia electrónico). Para cada software protegido por licencia SIEMENS AG otorga una clave de licencia. Sólo si al abrir el software se detectar una clave de liencia válida podrá utilizarse el software correspondiente de acuerdo con las condiciones de licencia y de utilización relacionadas...
Instalación Tipos de licencia Para productos de software de Siemens AG se distingue entre los siguientes tipos de licencia orientadas a la aplicación. El comportamiento del software depende de las claves de licencia de los diferentes tipos de licencia. El tipo de utilización depende a su vez del correspondiente Certificate of License.
Instalación 2.1.2 Instalar el Automation Licence Manager El Automation License Manager se instala con un programa de instalación. El software de instalación del Automation License Manager puede encontrarse en el CD de producto STEP 7. Puede instalar el Automation License Manager junto con S7-SCL o hacerlo posteriormente. Notas Consulte información detallada sobre el procedimiento de instalación del Automation License Manager en el archivo Léame.wri actual del Automation License Manager.
Instalación 2.1.3 Reglas para el uso de claves de licencia Cuidado Tenga en cuenta las indicaciones sobre el uso de claves de licencia especificadas en la ayuda en pantalla así como en el archivo Léame.wri referente al Automation License Manager. Si no las observa es posible que pierda las claves de licencia de forma irrecuperable.
Instalación Instalación 2.2.1 Requisitos de instalación Requisitos de sistema El paquete opcional S7-SCL V5.3 SP1 se ejecuta en una PG o en un PC con una instalación del paquete básico STEP 7 V5.3 o superior. Para más información sobre los requisitos que debe cumplir el sistema operativo, consulte el archivo Leame.wri.
Diseñar un programa S7-SCL Bienvenido al ejemplo de iniciación "Adquisición de valores medidos" ¿Qué aprenderé? El ejemplo de iniciación ilustra cómo configurar S7-SCL de forma eficaz. Al principio, las preguntas más frecuentes son p. ej.: • ¿Cómo se trabaja con S7-SCL al diseñar programas? •...
Diseñar un programa S7-SCL Planteamiento Resumen La tarea consiste en adquirir valores medidos a través de un módulo de entrada y clasificarlos y procesarlos con un programa S7-SCL. Los resultados deben visualizarse en el módulo de salida. Adquisición de valores medidos Un valor medido se ajusta a través de los 8 interruptores de entrada.
Página 29
Diseñar un programa S7-SCL Salidas ajustables En el módulo de salida sólo se puede mostrar un valor. Por eso se programarán las siguientes opciones: • Selección de un elemento de una lista • Selección entre valor medido, raíz y cuadrado La selección del valor mostrado se realiza de la manera siguiente: •...
Diseñar 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 programación de STEP 7, S7-SCL ofrece los siguientes tipos de bloques.
Página 31
Diseñar un programa S7-SCL Organización de los bloques en fuentes S7-SCL Un programa S7-SCL se compone de una o más fuentes. Una fuente puede contener un único bloque o un programa completo compuesto de varios bloques. Una fuente para un Varias fuentes para un programa programa...
Diseñar un programa S7-SCL Definir las tareas parciales Tareas parciales Las tareas parciales aparecen representadas en forma de cuadros en la siguiente figura. Las rectángulos sobre fondo gris representan los bloques. La disposición de los bloques lógicos de izquierda a derecha se corresponde con la secuencia de llamada. VALORACION CICLO ADQUISICION...
Diseñar un programa S7-SCL Selección y asignación de los tipos de bloque Los bloques se seleccionan de acuerdo con los siguientes criterios: Función Nombre de bloque ⇒ Los programas de usuario sólo se pueden iniciar desde un OB. Dado que los OB "Ciclo"...
Diseñar un programa S7-SCL Definir los interfaces entre bloques Resumen El interface de un bloque se crea mediante parámetros a los que se puede acceder desde otros bloques. Los parámetros declarados en el bloque son comodines cuyos valores se determinan al efectuarse la llamada al bloque.
Diseñar un programa S7-SCL Evaluar El FB ADQUISICION llama al FB EVALUACION. Ambos FB reciben como dato común el array del valor medido que se clasificará. Por ello se declara como parámetro de entrada/salida. Para el resultado de cálculo de la raíz y del cuadrado se crea un array estructurado en forma de parámetro de salida.
Diseñar 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 más significativo aparece abajo.
Diseñar 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...
Diseñar un programa S7-SCL Crear la función CUADRADO 3.9.1 Área de instrucciones de la función CUADRADO Área de instrucciones En primer lugar se comprueba si el valor de entrada excede el límite en el que el resultado es superior al rango permitido para enteros. En este caso se registraría el valor máximo para Integer.
Diseñar un programa S7-SCL 3.10 Crear el bloque de función EVALUACION 3.10.1 Diagrama de flujo de EVALUACIÓN La figura representa el algoritmo en forma de diagrama de flujo: EVALUACION Inicio bloque de función Inicio de la instrucción REPEAT Cambio := FALSE I := LIMITE significa índice Inicio de la...
Diseñar un programa S7-SCL 3.10.2 Área de declaración del FB EVALUACION Estructura del área de declaración El área de declaración de este bloque está formada por las siguientes partes: • Constantes: entre CONST y END_CONST • Parámetros de entrada/salida: entre VAR_IN_OUT y END_VAR, •...
Diseñar un programa S7-SCL 3.10.3 Área de instrucciones del FB EVALUACION Ejecución del programa El parámetro de entrada/salida "búfer_clasif" se combina con el búfer anular "valores_medidos", es decir, el contenido original del búfer se sobrescribe con los valores medidos clasificados. Para los resultados de cálculo se crea el nuevo array "bufer_calculo", configurado como parámetro de salida.
Página 42
Diseñar un programa S7-SCL Área de instrucciones de EVALUACION El área de instrucciones del bloque lógico presenta la siguiente estructura: BEGIN (* Parte 1 'Clasificacion' : Clasificación según el proceso "bubble sort": intercambiar de dos en dos los valores hasta que el búfer de valores medidos esté clasificado *******************************************************) REPEAT cambiar := FALSE;...
Diseñar un programa S7-SCL 3.11 Crear el bloque de función ADQUISICIÒN 3.11.1 Diagrama de flujo de ADQUISICION La siguiente figura representa el algoritmo en forma de diagrama de flujo: ADQUISICION Bloque de función Inicio Cambio Sí valor nuevo Con la operación MOD se real Leer valor medido en el búfer de iza el búfer de circulación: cuando se alcance el límite,...
Diseñar un programa S7-SCL 3.11.2 Área de declaración del FB ADQUISICION Estructura del área de declaración El área de declaración de este bloque está formada por los siguientes bloques de declaración: • Constantes: entre CONST y END_CONST. • Parámetro de entrada: entre VAR_INPUT y END_VAR •...
Diseñar un programa S7-SCL Variables estáticas 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 estáticas declaradas en el bloque de declaración "VAR, END_VAR". Las variables estáticas son variables locales cuyo valor se mantiene en todos los recorridos del bloque.
Diseñar un programa S7-SCL 3.11.3 Á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 parámetro de entrada cambia de "valor antiguo" a "valor nuevo" se carga un valor medido nuevo en el búfer anular.
Diseñar un programa S7-SCL Cálculo de la dirección La siguiente figura muestra el cálculo de la dirección: la palabra de entrada EW0 contiene en los bits 12 a 14 el código que se acepta cuando en el interruptor de codificación (bit 15) se detecta un flanco.
Página 48
Diseñar un programa S7-SCL Área de instrucciones El área de instrucciones del bloque lógico presenta la siguiente estructura: BEGIN (******************************************************************* Parte 1 : 'Adquisicion' de 'valores_medidos' Al cambiar "nue_val" se produce la entrada del valor medido. Con la operación MOD se ejecuta un búfer de circulación para valores medidos.
Diseñar un programa S7-SCL 3.12 Crear el bloque de organización CICLO Tareas del OB CICLO Se ha seleccionado un OB1 porque se llama de forma cíclica. Con él se ejecutan las siguientes tareas del programa: • Llamar y transferir datos de entrada y datos de control al bloque de función ADQUISICION.
Diseñar un programa S7-SCL Conversión 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 conversión previa de BYTE a WORD de forma implícita).
Diseñar un programa S7-SCL 3.13 Datos del test Requisitos Para el test se necesita un módulo de entrada con la dirección 0 y un módulo de salida con la dirección 4. Antes de efectuar el test, conmutar los 8 interruptores superiores del módulo de entrada hacia la izquierda ("0") y los 8 interruptores inferiores hacia la derecha ("1").
Página 52
Diseñar un programa S7-SCL Paso Acción Resultado Visualizar los resultados Se visualiza el valor de salida 9 o el valor binario "1001". correspondientes: conmutando el interruptor de salida (E0.3) se visualiza el cuadrado del valor medido obtenido en el paso 7. Conmutando el interruptor de función Se visualiza el valor de salida 2 o el valor binario "10".
Manejo de S7-SCL Iniciar el software S7-SCL Iniciar S7-SCL desde el interface de Windows Después de instalar el software S7-SCL en la PG (o en el PC), S7-SCL se puede iniciar desde el menú "Inicio" de la barra de tareas de Windows (bajo "SIMATIC/STEP 7"). Iniciar S7-SCL desde el Administrador SIMATIC La forma más rápida de iniciar S7-SCL en el Administrador SIMATIC es posicionando el puntero del ratón sobre una fuente S7-SCL y haciendo doble clic.
Manejo de S7-SCL Interface de usuario Las ventanas de S7-SCL están formadas por los siguientes componentes estándar: 1. Barra de título: incluye el título de la ventana y símbolos para el control de ventanas. 2. Barra de menús: incluye todos los menús de que se dispone en la ventana. 3.
Manejo de S7-SCL Personalizar el interface de usuario Personalización del editor Para realizar ajustes en el editor seleccione el comando de menú Herramientas > Preferencias y haga clic en la ficha "Editor" del cuadro de diálogo "Preferencias". En esta ficha puede realizar los siguientes ajustes: Opciones de la ficha "Editor"...
Manejo de S7-SCL Crear y manejar fuentes S7-SCL 4.4.1 Crear una fuente S7-SCL Antes de poder escribir otro programa S7-SCL es necesario crear una fuente S7-SCL. Esta fuente debe crearse en la carpeta "Fuentes" de un programa S7. Estructura de un programa S7 en el Administrador SIMATIC Las fuentes creadas con S7-SCL se pueden integrar en la estructura de un programa S7: Programa S7 Bloques...
Manejo de S7-SCL 4.4.2 Abrir una fuente S7-SCL Puede abrir una fuente S7-SCL para compilarla o editarla. Proceda de la siguiente forma: 1. Abra el cuadro de diálogo "Abrir": haciendo clic en el botón "Abrir", o bien eligiendo el comando de menú Archivo > Abrir. 2.
Manejo de S7-SCL 4.4.4 Abrir bloques No es posible abrir bloques con la aplicación S7-SCL. Solamente se puede abrir la fuente correspondiente. Sin embargo, los bloques creados con S7-SCL se pueden abrir con el editor KOP/FUP/AWL y visualizarlos y editarlos en el lenguaje de programación AWL. No modifique el bloque en la representación AWL ya que •...
Manejo de S7-SCL 4.4.7 Proteger bloques Es posible activar una protección de bloque indicando en la fuente el atributo KNOW_HOW_PROTECT al programar el bloque. La protección de bloque tiene las siguientes consecuencias: • Si posteriormente abre un bloque compilado con el editor AWL incremental, no se podrá observar el área de instrucciones del bloque.
Manejo de S7-SCL 4.5.2 Criterios para ordenar los bloques en el programa Los bloques deben figurar en el programa en un debido orden conforme a los criterios mencionados a continuación: • Los bloques llamados preceden a los bloques invocantes. • Los tipos de datos de usuario (UDT) preceden a los bloques en los que se usan aquellos. •...
Manejo de S7-SCL Editar en fuentes S7-SCL 4.6.1 Deshacer la última acción Con el comando de menú Edición >Deshacer se puede deshacer una o varias acciones. No todas las operaciones pueden deshacerse. Así p. ej. el comando de menú Archivo > Guardar no puede deshacerse.
Manejo de S7-SCL 4.6.4 Seleccionar texto Se puede seleccionar un texto determinado manteniendo pulsado la tecla del ratón y arrastrando el puntero del ratón por el área de texto deseada. Además, se puede: • seleccionar el texto completo de una fuente eligiendo el comando de menú Edición > Seleccionar todo, •...
Manejo de S7-SCL 4.6.6 Cortar texto Con esta función se mueve el texto seleccionado al portapapeles. Normalmente este comando de menú se utiliza conjuntamente con el comando de menú Edición > Pegar, que inserta el contenido del portapapeles en la posición actual del punto de inserción. Proceda de la siguiente forma: 1.
Manejo de S7-SCL 4.6.8 Posicionar el cursor en una línea determinada Las siguientes funciones permiten posicionar el punto de inserción en el lugar deseado. Posicionamiento en un número de línea determinado: El cursor se puede posicionar al comienzo de una línea determinada: 1.
Manejo de S7-SCL 4.6.9 Sangrado de líneas acorde a la sintaxis Las siguientes funciones permiten estructurar las fuentes S7-SCL alineando las líneas de la fuente: • Sangrar automáticamente Cuando la función está activa, cada vez que se cambia de línea, la nueva línea se alinea bajo la línea precedente, respetando el mismo margen.
Manejo de S7-SCL 4.6.10 Ajuste del estilo y color de la letra Utilizando distintos estilos y colores de letra para cada uno de los elementos de lenguaje, mejora la legibilidad de la fuente S7-SCL y adquiere un aspecto profesional. Para formatear el texto fuente se dispone de las siguientes funciones: •...
Manejo de S7-SCL 4.6.11 Posicionar marcadores en el texto fuente Los marcadores ofrecen la posibilidad de navegar rápidamente por una fuente. Los marcadores resultan muy útiles para realizar modificaciones que repercuten en distintos lugares de una fuente. Los marcadores se pueden insertar en cualquier posición de la fuente.
Manejo de S7-SCL 4.6.12 Insertar plantillas 4.6.12.1 Insertar plantillas de bloque Una de las funciones de edición de S7-SCL consiste en insertar plantillas de bloques para OB, FB, FC, DB, DB de instancia, DB procedentes de UDT y UDT. Estas plantillas facilitan la edición y evitan los errores de sintaxis.
Manejo de S7-SCL 4.6.12.4 Insertar plantillas de parámetros Una de las funciones de edición de S7-SCL consiste en insertar plantillas para los bloques de declaración de los parámetros. Estas plantillas facilitan la edición y evitan los errores de sintaxis. Los parámetros se pueden declarar en bloques de función y en funciones. Proceda de la siguiente forma: 1.
Manejo de S7-SCL Compilar un programa S7-SCL 4.7.1 Información importante sobre la compilación Antes de ejecutar el programa o de testearlo es necesario compilarlo. Al iniciar el proceso de compilación se activa el compilador, que tiene las características siguientes: • Es posible compilar toda una fuente S7-SCL o compilar sólo determinados bloques de forma selectiva.
Manejo de S7-SCL 4.7.2 Ajustar el compilador También es posible adaptar el proceso de compilación a las propias exigencias. Proceda de la siguiente forma: 1. Elija el comando de menú Herramientas > Preferencias para abrir el cuadro de diálogo "Preferencias". 2.
Manejo de S7-SCL Opciones de la ficha "Crear bloque" Sobrescribir bloques Sobreescribe los bloques ya existentes en la carpeta "Bloques" de un programa S7 si durante el proceso de compilación se crean bloques con el mismo nombre. También se sobreescriben los bloques del mismo nombre que ya estén disponibles en el sistema de destino durante el proceso de carga.
Manejo de S7-SCL 4.7.4 Crear un archivo de compilación Los archivos de compilación permiten compilar varias fuentes S7-SCL de una carpeta de fuentes de una sola pasada. Introduzca en el archivo de compilación los nombres de las fuentes S7-SCL en el mismo orden en que deben compilarse. Proceda de la siguiente forma: 1.
Manejo de S7-SCL Guardar e imprimir una fuente S7-SCL 4.8.1 Guardar una fuente S7-SCL En S7-SCL se entiende por "guardar" la memorización de archivos fuente. En S7-SCL, los bloques se generan al compilar el archivo fuente y se depositan automáticamente en el directorio correspondiente del programa.
Manejo de S7-SCL 4.8.3 Imprimir una fuente S7-SCL Normalmente se imprime la fuente S7-SCL de la ventana de trabajo activa; es decir, para poder imprimir una fuente S7-SCL dicha fuente debe estar abierta. Proceda de la siguiente forma: 1. Active la ventana de trabajo de la fuente S7-SCL cuyo contenido desea imprimir. 2.
Manejo de S7-SCL 4.8.4 Ajuste de las opciones de impresión Para formatear la impresión puede utilizar las siguientes funciones: • Cambiar página al principio/al final del bloque Cuando está activada esta función, cada bloque comenzará a imprimirse en una página nueva o finalizará...
Manejo de S7-SCL Cargar los programas creados 4.9.1 Borrado total de la memoria de la CPU Con la función Borrado total se puede borrar online todo el programa de usuario de una CPU. Proceda de la siguiente forma: 1. Elija el comando de menú Sistema de destino > Estado operativo y active el estado operativo STOP de la CPU.
Manejo de S7-SCL Procedimiento Una vez que haya compilado la fuente puede comenzar el proceso de carga mediante cualquiera de las siguientes opciones: • El comando de menú Archivo > Cargar carga todos los bloques que contiene la fuente, así como todos los bloques llamados en el primer nivel. •...
Manejo de S7-SCL 4.10 Testear los programas creados 4.10.1 Funciones de test de S7-SCL Las funciones de test de S7-SCL ofrecen la posibilidad de controlar la ejecución de un programa en la CPU y detectar posibles errores. Los errores de sintaxis se visualizan durante la compilación.
Manejo de S7-SCL 4.10.2 Información importante sobre la función de test "Observar" Al observar un programa se puede comprobar un grupo de instrucciones, el cual se denomina área de observación. Este grupo de instrucciones se denomina "área de observación". Durante la ejecución del test se visualizan los valores de las variables y parámetros de dicha área en orden cronológico y se actualizan de manera cíclica.
Manejo de S7-SCL 4.10.3 Información importante sobre "Test con puntos de parada/modo Paso a paso" "Test con puntos de parada" hace que el test se ejecute paso a paso. Ello permite ejecutar el algoritmo del programa instrucción a instrucción y visualizar cómo varían los valores de las variables procesadas.
Manejo de S7-SCL 4.10.4 Pasos para observar Después de cargar el programa compilado en el sistema de destino, puede testear el programa en el modo "Observar". Nota El volumen de instrucciones que se puede testear (el área de observación mayor posible) depende de la capacidad de la CPU que esté...
Manejo de S7-SCL 4.10.4.1 Definir un entorno de llamada para los bloques Entorno de llamada Para definir el área de observación con mayor exactitud, es posible definir un entorno de llamada para los bloques que se van a observar. Consiste en definir que un bloque sea observado solamente si se cumple una de las siguientes condiciones: Condición Opción posible...
Manejo de S7-SCL 4.10.5 Pasos para realizar el test con puntos de parada 4.10.5.1 Definir puntos de parada Posicione y defina los puntos de parada de la siguiente forma: 1. Abra la fuente que vaya a testear. 2. Muestre la barra de puntos de parada con el comando de menú Ver > Barra de puntos de parada.
Manejo de S7-SCL elija el comando de menú Test > Ejecutar hasta selección o active el botón "Ejecutar hasta selección" de la barra de herramientas. La CPU pasará al estado operativo RUN. Al alcanzarse el punto seleccionado del programa se vuelve a parar. cuando el programa se detenga en una línea que contenga una llamada a un bloque, elija el comando de menú...
Manejo de S7-SCL 4.10.5.5 Definir un entorno de llamada para los puntos de parada Entorno de llamada Al definir un entorno de llamada se establece que un punto de parada será válido solamente si se cumple una de las siguientes condiciones: Condición Opción posible El bloque en el que se encuentra el punto de parada es llamado por un...
Manejo de S7-SCL 4.10.5.6 Test en modo Paso a Paso Proceda de la siguiente forma: 1. Posicione un punto de parada delante de la línea de instrucciones a partir de la que desee comprobar el programa en modo Paso a paso. 2.
Manejo de S7-SCL 4.10.6 Uso de las funciones de test de STEP 7 4.10.6.1 Crear y/o mostrar los datos de referencia Para facilitar el test y las modificaciones del programa de usuario puede crear y evaluar datos de referencia. Pueden mostrarse los siguientes datos de referencia: •...
Manejo de S7-SCL 4.10.6.2 Observar y forzar variables Al efectuar un test con la función "Observar/forzar variables" puede: • visualizar (observar) los valores actuales de datos globales de su programa de usuario; • asignar valores fijos (forzar) a las variables del programa de usuario. Proceda de la siguiente forma: •...
Página 90
Manejo de S7-SCL Procedimiento 1. Abra el Administrador SIMATIC. 2. Seleccione la carpeta "Bloques". 3. Elija el comando de menú Edición > Comprobar coherencia de bloques. 4. Elija el comando de menú Ver > Mostrar referencias de fuentes S7-SCL. Resultado STEP 7 comprueba las indicaciones de fecha y hora y los interfaces de todos los bloques y de las fuentes correspondientes en la carpeta actual y notifica los siguientes conflictos: •...
Manejo de S7-SCL 4.11 Visualizar y cambiar las propiedades de la CPU 4.11.1 Visualizar y cambiar el estado operativo de la CPU Esta función permite consultar y modificar el estado operativo actual de la CPU siempre y cuando ésta esté conectada. Proceda de la siguiente forma 1.
Manejo de S7-SCL 4.11.3 Visualizar los datos de la CPU Esta función permite visualizar los siguientes datos de la CPU, siempre y cuando ésta esté conectada: • la familia de sistemas, el modelo de CPU, el número de referencia y la versión de la CPU, •...
Manejo de S7-SCL 4.11.6 Visualizar el tiempo de ciclo de la CPU Dentro de los dos valores límite parametrizados se representan los siguientes tiempos: • Duración del ciclo más largo desde el último cambio de STOP a RUN • Duración del ciclo más corto desde el último cambio de STOP a RUN •...
Manejo de S7-SCL 4.11.9 Visualizar los datos de comunicación de la CPU Es posible hacerse mostrar online datos sobre la velocidad de transferencia ajustada y la velocidad de transferencia máxima de cada CPU, así como sobre las conexiones y el grado de comunicación.
Conceptos generales de S7-SCL Interpretación de los diagramas sintácticos La descripción del lenguaje se realiza en cada capítulo mediante diagramas sintácticos. Estos diagramas proporcionan una visión general de la estructura sintáctica de S7-SCL. En el capítulo "Descripción del lenguaje" encontrará una relación completa de los diagramas con sus respectivos elementos.
Página 96
Conceptos generales de S7-SCL ¿Qué tipos de bloques hay? Un bloque es un elemento básico o un elemento que, a su vez, puede componerse de bloques. La figura siguiente muestra los tipos de símbolos que corresponden a los bloques: Elemento básico, que no precisa mayor Elemento compuesto, descrito por explicación.
Página 97
Conceptos generales de S7-SCL Regla sintáctica En las reglas sintácticas existe libertad de formato. Variable simple Constante Algunos ejemplos válidos de la regla expuesta serían: VARIABLE_1 := 100; PULSADOR:=FALSE; VARIABLE_2 := 3.2; S7-SCL V5.3 para S7-300/400 A5E00324652-01...
Conceptos generales de S7-SCL Juego de caracteres Letras y cifras S7-SCL utiliza los siguientes caracteres del juego de caracteres ASCII: • las letras (mayúsculas y minúsculas ) de la A a la Z, • la numeración arábiga, de 0 a 9, •...
Conceptos generales de S7-SCL Palabras reservadas (palabras clave) Las palabras reservadas son palabras clave que sólo se pueden utilizar con su significado predefinido. No se distingue entre mayúsculas y minúsculas. Palabras clave en S7-SCL END_CASE ORGANIZATION_BLOCK END_CONST POINTER ARRAY END_DATA_BLOCK PROGRAM END_FOR REAL...
Conceptos generales de S7-SCL Identificadores Definición Un identificador es un nombre que se puede asignar a un objeto del lenguaje S7-SCL, es decir, a una constante, a una variable o a un bloque. Reglas Los identificadores se pueden componer de un máximo de 24 letras (sin diéresis) o de cifras dispuestas en cualquier orden con la única limitación de que el primer caracter tiene que ser una letra o un carácter de subrayado.
Conceptos generales de S7-SCL Identificadores estándar S7-SCL ofrece una serie de identificadores predefinidos, llamados identificadores estándar. Estos identificadores son: • los identificadores de bloques, • los identificadores de operandos para referirse a las áreas de memoria de la CPU, • los identificadores de temporizadores y •...
Página 102
Conceptos generales de S7-SCL S7-SCL ofrece varias posibilidades para indicar el nombre de los bloques. Como número del bloque se puede introducir un número decimal entero. Palabra clave Número de bloque DB, FB, FC, OB, UDT IDENTIFICADOR Símbolo Ejemplo Los nombres siguientes son válidos: FB10 DB100 T141...
Conceptos generales de S7-SCL Identificadores de operandos Definición Indicando el identificador del operando es posible acceder a las áreas de memoria de una CPU desde cualquier posición del programa. Reglas La tabla está clasificada según la nemotécnica española (SIMATIC); además se indica la nemotécnica internacional (IEC).
Conceptos generales de S7-SCL Identificadores de temporizadores Reglas S7-SCL ofrece varias posibilidades para indicar un temporizador. Como número del temporizador puede introducir un número decimal entero. Número En nemotécnica alemana e inglesa IDENTIFICADOR Símbolo Identificadores de contadores Reglas S7-SCL ofrece varias posibilidades para indicar un contador. Como número de contador se puede introducir un número decimal entero.
Conceptos generales de S7-SCL 5.10 Números S7-SCL permite utilizar distintas notaciones para los números. Las reglas siguientes rigen para todos los números: • Un número puede incluir un signo, un punto decimal o un exponente. • Un número no debe contener ni comas ni espacios en blanco. •...
Página 106
Conceptos generales de S7-SCL Número real Un número real debe contener o una coma decimal o un exponente (o ambos). La coma decimal debe indicarse entre dos dígitos. Por lo tanto, el número real no debe comenzar ni terminar con una coma decimal. Números reales válidos: -0.2 827.602...
Conceptos generales de S7-SCL 5.11 Cadenas de caracteres Definición Una cadena de caracteres es una secuencia de caracteres (es decir, de letras, cifras o caracteres especiales) encerrados entre comillas. Algunas cadenas de caracteres válidas son: 'ROJO' '76181 Karlsruhe' '270-32-3456' '19,95 DM' 'La respuesta correcta es:' Reglas Los caracteres de formateo , las comillas ( ' ) y el carácter $ se pueden introducir con el símbolo $.
Conceptos generales de S7-SCL 5.12 Símbolos En S7-SCL los símbolos se asignan con la siguiente sintaxis: Las comillas sólo se deben indicar en caso de que el símbolo no cumpla la regla IDENTIFICADOR. Sintaxis: Carácter " " imprimible S7-SCL V5.3 para S7-300/400 5-14 A5E00324652-01...
Conceptos generales de S7-SCL 5.13 Bloque de comentario Reglas • El bloque de comentario puede abarcar varias líneas y comienza con "(*" y finaliza con "*)" para indicar que se trata de un bloque de comentario. • De forma estándar está permitido anidar bloques de comentario. Este ajuste se puede cambiar en las preferencias, prohibiendo así...
Conceptos generales de S7-SCL 5.14 Línea de comentario Reglas • La línea de comentario se inicia con "//" y se extiende hasta el final de la línea. • La longitud del comentario está restringida a un máximo de 254 caracteres incluyendo los caracteres de inicio '//'.
Conceptos generales de S7-SCL 5.15 Variables Un identificador cuyo valor se puede modificar durante la ejecución del programa se denomina "variable". Cada variable debe ser explicada por separado (es decir, declarada) antes de poder utilizarla en un bloque lógico o en un bloque de datos. La declaración de variables determina que un identificador es una variable (y no una constante etc.) y especifica el tipo de variable asignándole un tipo de datos.
Página 112
Conceptos generales de S7-SCL S7-SCL V5.3 para S7-300/400 5-18 A5E00324652-01...
Estructura de programas S7-SCL Bloques en fuentes S7-SCL En un archivo fuente S7-SCL se pueden programar entre 1 y n bloques. Los bloques de STEP 7 son componentes del programa de usuario limitados por su función, su estructura o su finalidad. Tipos de bloques Bloques disponibles: Bloques STEP 7...
Estructura de programas S7-SCL Criterios para ordenar los bloques en el programa En principio rige la regla: Los bloques llamados preceden a los bloques invocantes. Esto significa que: • los tipos de datos de usuario (UDT) preceden a los bloques en los que se utilizan. •...
Estructura de programas S7-SCL Estructura básica de un bloque Un bloque se compone de las siguientes áreas: • Principio del bloque, formado por una palabra clave y un número de bloque o un nombre simbólico, p.ej."ORGANIZATION_BLOCK OB1" en el caso de un bloque de organización. En el caso de las funciones, se indica adicionalmente el tipo de función, el cual determina el tipo de datos del valor de respuesta.
Estructura de programas S7-SCL Principio y fin de bloque Dependiendo del bloque del que se trate, el texto fuente del bloque empieza por un identificador estándar que señala el principio del bloque así como por el nombre del bloque. El bloque se termina con el identificador de fin de bloque. La tabla siguiente muestra la sintaxis de los diferentes tipos de bloques: Nombre Tipo de bloque Sintaxis...
Estructura de programas S7-SCL Nombre del bloque En la tabla, xx_nombre es el nombre del bloque de acuerdo con la siguiente sintaxis: Palabra clave Número de bloque DB, FB, FC, OB, UDT IDENTIFICADOR Símbolo El número del bloque puede ser un valor comprendido entre 0 y 65533. Sin embargo el nombre del bloque de datos DB0 está...
STEP 7. AUTHOR : Nombre del autor: nombre de AUTHOR : Siemens la empresa, del departamento AUTHOR : 'A&D AS' u otros (IDENTIFICADOR y 'caracteres imprimibles) NAME:...
Página 119
Estructura de programas S7-SCL Reglas • Los atributos del bloque se declaran mediante palabras clave directamente detrás de la instrucción de inicio del bloque. • El identificador puede contener 8 caracteres como máximo. Los atributos del bloque se introducen con la siguiente sintaxis: S7-SCL V5.3 para S7-300/400 A5E00324652-01...
Página 120
Estructura de programas S7-SCL Ejemplos FUNCTION_BLOCK FB10 TITLE = 'Promedio' VERSION : '2.1' KNOW_HOW_PROTECT AUTHOR : AUT_1 S7-SCL V5.3 para S7-300/400 A5E00324652-01...
Estructura de programas S7-SCL Comentario del bloque Los comentarios relativos a todo el bloque se introducen en el encabezado del bloque, detrás de la línea "TITLE:". Utilice para ello la notación de la línea de comentario. Si el comentario abarca varias líneas, comience cada una de ellas con //. El comentario del bloque aparece p.ej.
Estructura de programas S7-SCL Atributos de sistema para bloques Definición Los atributos de sistema son atributos básicos que sirven para todo el sistema de control de procesos. Los atributos de sistema para bloques rigen todo el bloque. Reglas • Los atributos de sistema se declaran inmediatamente después de la instrucción de inicio del bloque.
Estructura de programas S7-SCL Área de declaración Definición El área de declaración permite declarar variables locales, parámetros, constantes y metas de salto. • Variables, parámetros, constantes y metas de salto locales, es decir, que sólo tienen validez dentro de un mismo bloque, se definen en el área de declaración del bloque lógico.
Estructura de programas S7-SCL Atributos de sistema para parámetros Definición Los atributos del sistema son atributos básicos que se utilizan en todo el sistema de control de procesos. Sirven, p.ej., para configurar mensajes o enlaces de comunicación. Los atributos de sistema para parámetros solamente son válidos para los parámetros configurados.
Estructura de programas S7-SCL 6.10 Área de instrucciones Definición El área de instrucciones contiene instrucciones que se ejecutan una vez llamado el bloque lógico. Estas instrucciones permiten procesar datos o direcciones. El área de instrucciones de los bloques de datos incluye instrucciones para inicializar sus variables.
Estructura de programas S7-SCL 6.11 Instrucciones Definición Una instrucción es la unidad autónoma más pequeña del programa de usuario. Constituye una norma de trabajo para el procesador. S7-SCL admite los siguientes tipos de instrucciones: • Asignaciones de valor, que sirven para asignar a una variable un valor, el resultado de una expresión o el valor de otra variable.
Estructura de programas S7-SCL 6.12 Estructura de un bloque de función (FB) Definición Un bloque de función (FB) es un bloque lógico que contiene una sección del programa y que tiene asignada un área de memoria. Cada vez que se llama a un FB hay que asignarle un DB de instancia.
Página 128
Estructura de programas S7-SCL Ejemplo El ejemplo siguiente muestra el código fuente de un bloque de función. Los parámetros de entrada y de salida (en este caso V1, V2) tienen valores iniciales. FUNCTION_BLOCK FB11 VAR_INPUT V1 : INT := 7 ; END_VAR VAR_OUTPUT V2 : REAL...
Estructura de programas S7-SCL 6.13 Estructura de una función (FC) Definición Una función (FC) es un bloque lógico que no tiene asignada ningún área de memoria propia. No necesita bloque de datos de instancia. A diferencia de un FB, una función puede retornar el resultado de la función (valor de respuesta) al punto de llamada.
Página 130
Estructura de programas S7-SCL Área de instrucciones de la FC En el área de instrucciones hay que asignar el resultado de la función al nombre de la función. Esta asignación no es necesaria en las funciones de tipo VOID. Una instrucción válida dentro de una función con el nombre FC31 sería, por ejemplo: FC31:=VALOR;...
Estructura de programas S7-SCL 6.14 Estructura de un bloque de organización (OB) Definición Al igual que un FB o una FC, el bloque de organización es una parte del programa de usuario que el sistema operativo llama cíclicamente o cuando se producen determinados eventos.
Estructura de programas S7-SCL 6.15 Estructura de un bloque de datos (DB) Definición Los datos globales de usuario a los que acceden todos los bloques de un programa se depositan en bloques de datos. Cada FB, FC u OB puede leer o escribir estos bloques de datos.
Estructura de programas S7-SCL Área de declaración del DB En el área de declaración del bloque de datos se define la estructura de los datos del DB. Dispone de dos posibilidades: • Asignando un tipo de datos de usuario Aquí se puede introducir un tipo de datos de usuario previamente definido en el programa.
Página 134
Estructura de programas S7-SCL Ejemplo // Bloque de datos que tiene asignado un tipo de datos STRUCT DATA_BLOCK DB10 STRUCT // Declaración de datos con preasignación VALOR ARRAY [1..100] OF INT := 100 (1) ; PULSADOR BOOL := TRUE ; S_PALABRA WORD := W#16#FFAA ;...
Estructura de programas S7-SCL 6.16 Estructura de un tipo de datos de usuario Los tipos de datos de usuario UDT son estructuras especiales creadas por el usuario. Dado que los tipos de datos de usuario tienen un nombre, pueden reutilizarse. Por definición puede utilizarse en la totalidad del programa de usuario, por lo que son tipos de datos globales.
Página 136
Estructura de programas S7-SCL Ejemplo de definición de un UDT TYPE VALORES_MEDIDOS STRUCT // Definición UDT con nombre simbólico BIPOL_1 : INT := 5; BIPOL_2 : WORD := W#16#FFAA ; BIPOL_3 : BYTE := B#16#F1 ; BIPOL_4 : WORD := B#(25,25) ; MEDICION : STRUCT BIPOLAR_10V : REAL ;...
Estructura de programas S7-SCL 6.17 Opciones del compilador en fuentes de S7-SCL Definición Además de los bloques, las fuentes de S7-SCL también pueden contener indicaciones sobre los ajustes del compilador con los que se deban compilar los diferentes bloques. Las opciones del compilador controlan la compilación de distintos bloques o de toda la fuente, independientemente de los ajustes de la ficha "Compilador (Ajustes)".
Estructura de programas S7-SCL Opciones disponibles La tabla muestra las opciones disponibles: Opción Valor Significado [Scl_]ResetOptions No es posible introducir Preselección de los ajustes valores de compilación (ajustes del cuadro de diálogo) 'y[es]' o 'n[o]' [Scl_]OverwriteBlocks Sobrescribir bloques [Scl_]GenerateReferenceData 'y[es]' o 'n[o]' Crear datos de referencia 'y[es]' o 'n[o]' [Scl_]S7ServerActive...
Tipos de datos Sinopsis de los tipos de datos en S7-SCL Los tipos de datos determinan: • el tipo y el significado de los elementos de datos, • los márgenes permitidos para los elementos de datos, • la cantidad admisible de operaciones que se pueden ejecutar con un operando de un tipo de datos, •...
Tipos de datos Tipos de datos compuestos S7-SCL asiste los siguientes tipos de datos compuestos: Tipo de datos Significado DATE_AND_TIME Define un área de 64 bits (8 bytes). Este tipo de datos memoriza (en formato decimal codificado en binario) la fecha y hora del día, y está predefinido en S7-SCL. STRING Define un área para una secuencia de caracteres de 254 caracteres como máximo (tipo de datos CHAR).
Tipos de datos Tipos de datos simples 7.2.1 Tipo de datos Bit Los datos de este tipo son combinaciones de bits que pueden ocupar 1 bit (tipo de datos BOOL), 8 bits, 16 bits o 32 bits. Para los tipos de datos Byte, Palabra y Palabra doble no se puede indicar un margen numérico.
Página 142
Tipos de datos 7.2.4 Tipo de datos Tiempo Dentro de STEP 7 los datos del tipo Tiempo representan los diferentes formatos para indicar la fecha y la hora (p.ej., para ajustar la fecha o para introducir un valor de temporización). Tipo Palabra clave Ancho en...
Página 143
Tipos de datos Tipos de datos compuestos 7.3.1 Tipo de datos DATE_AND_TIME Definición Este tipo de datos define un área de 64 bits (8 bytes) para indicar la fecha y la hora. El área de datos guarda las siguientes informaciones: año, mes, día, horas, minutos, segundos, milisegundos Sintaxis DATE_AND_TIME...
Página 144
Tipos de datos El tipo de datos Date_And_Time se guarda en formato BCD: Bytes Contenido Margen Año 1990 ... 2089 01 ... 12 Día 1 ... 31 Hora 0 ... 23 Minuto 0 ... 59 Segundo 0 ... 59 2 MSD (most 00 ...
Tipos de datos 7.3.2 Tipo de datos STRING Definición Un tipo de datos STRING define una cadena de caracteres de 254 caracteres como máximo. El área estándar reservada para una cadena de caracteres se compone de 256 bytes, que es el área de memoria necesaria para guardar 254 caracteres y un encabezado de 2 bytes.
Tipos de datos Inicialización de cadenas de caracteres Al igual que otras variables, las variables STRING se pueden inicializar con cadenas de caracteres constantes en la declaración de parámetros de bloques de función (FBs). En los parámetros de funciones (FCs) no se pueden inicializar. Si la cadena de caracteres asignada por defecto es más corta que la longitud máxima declarada no se ocuparán las posiciones restantes.
Tipos de datos 7.3.3 Tipo de datos ARRAY Definición Los arrays tienen un número fijo de componentes de un único tipo de datos. S7-SCL distingue los siguientes: • el tipo de array unidimensional: una lista de elementos de datos dispuestos en orden ascendente;...
Página 148
Tipos de datos Ejemplo Regulador1 : ARRAY[1..3,1..4] OF INT:= -54, 736, -83, -1289, 10362, 385, -37, 103 ; Regulador2 : ARRAY[1..10] OF REAL ; END_VAR Disposición Las variables del tipo ARRAY se crean línea por línea. Cada dimensión de una variable del tipo BOOL, BYTE o CHAR acaban en un límite de BYTE, todas las demás en un límite de WORD.
Tipos de datos 7.3.4 Tipo de datos STRUCT Definición El tipo de datos STRUCT describe un margen que consiste en un número fijo de componentes, que pueden variar en cuanto al tipo de datos. Estos elementos se indican en la declaración de componentes inmediatamente después de la palabra clave STRUCT. En particular, un elemento del tipo de datos STRUCT puede ser, a su vez, un tipo de datos compuesto.
Página 150
Tipos de datos Ejemplo MOTOR : STRUCT DATOS : STRUCT CORRIENTE_DE_CARGA : REAL ; TENSION : INT := 5 ; END_STRUCT ; END_STRUCT ; END_VAR Disposición Las variables del tipo STRUCT empiezan y terminan en un límite de WORD. Atención En caso de definir una estructura que no termine en un límite WORD, S7-SCL rellenará...
Tipos de datos Tipos de datos de usuario 7.4.1 Tipos de datos de usuario (UDT) Definición El tipo de datos de usuario (UDT) se define como bloque. Después de definirlo se puede utilizar en todo el programa de usuario y, por lo tanto, se trata de un tipo de datos global. Este tipo de datos se puede utilizar con su identificador UDTx (donde x es un número) o con un nombre simbólico asignado, en el área de declaración de un bloque o de un bloque de datos.
Página 152
Tipos de datos Ejemplo // Definición UDT con nombre simbólico TYPE VALORES_MEDIDOS: STRUCT BIPOL_1 : INT := 5; BIPOL_2 : WORD := W#16#FFAA ; BIPOL_3 : BYTE := B#16#F1 ; BIPOL_4 : WORD := W#16#1919 ; MEDICION: STRUCT BIPOLAR_10V : REAL ; UNIPOLAR_4_20MA : REAL ;...
Tipos de datos Tipos de datos para parámetros Para definir los parámetros formales de bloques FB y FC se pueden utilizar los tipos de parámetros, aparte de los tipos de datos que ya hemos comentado. Parámetro Tamaño Descripción TIMER 2 bytes Indica un determinado temporizador que será...
Tipos de datos 7.5.2 Tipo de datos BLOCK Los tipos de datos BLOCK definen un bloque determinado que se utilizará como parámetro de entrada. La declaración del parámetro de entrada define el tipo de bloque (FB, FC, DB). Al asignar parámetros, es preciso indicar el identificador del bloque, sea de forma absoluta o de forma simbólica.
Tipos de datos Restricciones • El tipo de datos POINTER se puede utilizar para parámetros formales de entrada, para parámetros de entrada/salida de FB y FC y para parámetros de salida de FCs. Las constantes no se pueden utilizar como parámetros actuales (excepto la constante NIL). •...
Tipos de datos Tipo de datos ANY En S7-SCL, las variables del tipo de datos ANY se declaran de la siguiente forma: • como parámetros formales de un bloque, pudiendo éstos recibir los parámetros actuales (=reales) de cualquier tipo de datos en la llamada del bloque. •...
Tipos de datos 7.6.1 Ejemplo del tipo de datos ANY VAR_INPUT iANY : ANY; END_VAR VAR_TEMP pANY : ANY; END_VAR CASE ii OF pANY := MW4; // pANY contiene la dirección de MW4 3..5: pANY:= aINT[ii]; // pANY contiene la dirección del ii-avo // elemento del array aINT;...
Página 158
Tipos de datos S7-SCL V5.3 para S7-300/400 7-20 A5E00324652-01...
Declaración de variables y parámetros locales Variables locales y parámetros de bloque Categorías de variables La siguiente tabla muestra en qué categorías se pueden dividir las variables locales: Variable Significado Variables estáticas Las variables estáticas son variables locales cuyo valor se conservaa lo largo de todos los recorridos del bloque (memoria de bloque).
Declaración de variables y parámetros locales Sintaxis general de una declaración de variables o de parámetros Las variables y los parámetros de bloques se deben declarar por separado antes de poder utilizarlos en un bloque lógico o en un bloque de datos. En la declaración se determina que se utilizará...
Declaración de variables y parámetros locales Inicialización Las variables estáticas así como los parámetros de entrada y de salida de un FB se pueden inicializar con un valor en la declaración. También es posible inicializar parámetros de entrada/salida, siempre y cuando sean del tipo de datos simple. En las variables simples esta inicialización se realiza por asignación (:=) de una constante después de la indicación del tipo de datos.
Página 162
Declaración de variables y parámetros locales Sintaxis de la inicialización de arrays I S T A D E R E P E T I T I O N D E C O N S T A N T E S L I S T A D E R E P E T I T I O N D E O N S T A N T E S S E Q U E N I A...
Declaración de variables y parámetros locales Declarar vistas sobre áreas de variables Para acceder a una variable declarada con otro tipo de datos, puede definir vistas sobre la variable o sobre áreas de la variable mediante la palabra clave "AT". Una vista sólo se puede ver localmente en el bloque, ya que no se integra en el interface.
Página 164
Declaración de variables y parámetros locales Reglas • La declaración de otra vista sobre una variable debe realizarse en el mismo bloque de declaración después de la declaración de la variable a la que señala. • No se puede inicializar. •...
Declaración de variables y parámetros locales Uso de multiinstancias Según los datos característicos que tengan las CPUs S7 utilizadas (p.ej. la capacidad de memoria) puede ocurrir que no quiera o no pueda crear más que un número limitado de bloques de datos para datos de instancia. Si en su programa de usuario, se llaman desde un FB otros bloques de función ya disponibles (jerarquía de llamada de FB), entonces puede llamar a estos otros bloques de función sin su DB de instancia (es decir, sin uno adicional).
Página 166
Declaración de variables y parámetros locales Flags (OK flag) La marca OK indica si el bloque ha sido ejecutado correctamente. Se trata de una variable local de tipo BOOL con el nombre predefinido "OK". Al iniciar la ejecución del programa, la marca OK tiene el valor TRUE. En cualquier punto del bloque se puede consultar mediante instrucciones S7-SCL si se debe cambiar a TRUE / FALSE.
Declaración de variables y parámetros locales Secciones de declaración 8.8.1 Sinopsis de las secciones de declaración Cada categoría de variables locales o de parámetros tiene asignado un bloque de declaración propio, que se distingue por una pareja de palabras clave. Cada bloque contiene las declaraciones que admite dicho bloque de declaración.
Página 168
Declaración de variables y parámetros locales 8.8.2 Variables estáticas Las variables estáticas son variables locales que mantienen su valor después de recorrer todos los bloques (memoria de bloque). Sirven para guardar valores de un bloque de función y se guardan en el bloque de datos de instancia correspondiente. Sintaxis Las variables estáticas se declaran en la sección de declaración VAR / END_VAR.
Declaración de variables y parámetros locales 8.8.3 Variables temporales Las variables temporales pertenecen localmente a un bloque lógico y no ocupan ningún área de memoria estática. Se depositan en la pila de la CPU y su valor se conserva solamente durante un recorrido del bloque. A las variables temporales no se puede acceder fuera del bloque en el en el que se han declarado.
Declaración de variables y parámetros locales 8.8.4 Parámetros de bloques Los parámetros son comodines que se definen sólo al utilizar (llamada) el bloque. Los comodines (declarados) que residen en el bloque se denominan parámetros formales; los valores asignados cuando se llama al bloque, parámetros actuales. Por consiguiente, los parámetros constituyen un mecanismo de intercambio de información entre los bloques.
Página 171
Declaración de variables y parámetros locales Ejemplo VAR_INPUT // parámetro de entrada MI_DB : BLOCK_DB ; REGULADOR : DWORD ; HORA : TIME_OF_DAY ; END_VAR VAR_OUTPUT // parámetro de salida VALORES_TEORICOS: ARRAY [1..10] of INT ; END_VAR VAR_IN_OUT // parámetro de entrada/salida AJUSTE : INT ;...
Página 172
Declaración de variables y parámetros locales S7-SCL V5.3 para S7-300/400 8-14 A5E00324652-01...
Declaración de constantes y saltos Constantes Las constantes son datos que poseen un valor fijo que no se puede modificar durante el tiempo de ejecución del programa. S7-SCL distingue los siguientes grupos de constantes. • Constantes de bits • Constantes numéricas Constantes de enteros Constantes de números reales •...
Declaración de constantes y saltos 9.1.2 Tipos de datos de las constantes La asignación de tipos de datos a constantes se distingue del procedimiento utilizado en AWL: Una constante recibe su tipo de datos sólo en la combinación aritmética o lógica en la que se va a utilizar, p.ej.: Int1:=Int2 + 12345 //"12345"...
Declaración de constantes y saltos 9.1.3 Notación de constantes Dependiendo del tipo y del formato de datos, existe una notación (formato) determinada para el valor de una constante. El tipo y el valor de la constante resultan directamente de la notación, por lo que no es necesario declararlos.
Página 177
Declaración de constantes y saltos Tipo de datos Descripción Ejemplos en S7-SCL Ejemplos en AWL, si difieren DWORD Número DW#16#0000_0000 hexadecimal de DW#16#FFFF_FFFF 32 bits Número octal de Dword#8#37777777777 32 bits 8#37777777777 Número binario de DW#2#1111_0000_1111_0000 32 bits dword#32768 16 bits -32768 Número en coma +32767...
Declaración de constantes y saltos 9.1.3.1 Constantes de bits Las constantes de bits contienen valores de una longitud de 1 bit, 8 bits, 16 bits o 32 bits. Estas constantes se pueden asignar a las variables del tipo de datos BOOL, BYTE, WORD o DWORD (dependiendo de su longitud) en el programa S7-SCL.
Declaración de constantes y saltos 9.1.3.2 Constante entera Las constantes enteras contienen valores enteros de una longitud de 16 ó 32 bits. Estas constantes pueden asignar a las variables del tipo de datos INT o DINT (dependiendo de su longitud) en el programa S7-SCL. Sintaxis CONSTANTE ENTERA SECUENCIA DE CIFRAS DECIMAL...
Declaración de constantes y saltos 9.1.3.3 Constante real Las constantes de números reales son valores con dígitos a la derecha de la coma. Estas constantes se pueden asignar a variables del tipo de datos REAL. Sintaxis CONSTANTE DE NÚMERO REAL SECUENCIA DE SECUENCIA DE CIFRAS DECIMALES...
Declaración de constantes y saltos 9.1.3.4 Constante CHAR (un solo carácter) La constante CHAR contiene un solo carácter. El carácter está encerrado entre "comillas" ('). Las constantes CHAR no se pueden utilizar en expresiones. Sintaxis CONSTANTE CHAR Carácter CHAR# SECUENCIA DE CIFRAS DECIMAL Ejemplo Caracter_1 := 'B';...
Declaración de constantes y saltos Sintaxis del carácter El carácter puede proceder del juego de caracteres ASCII ampliado y completo. Los caracteres especiales de formateo, las comillas (') o el carácter $ se pueden introducir con ayuda del símbolo $. También es posible utilizar los caracteres no imprimibles del juego de caracteres ASCII ampliado y completo.
Declaración de constantes y saltos 9.1.3.5 Constante STRING Una constante STRING es una cadena de caracteres de 254 caracteres como máximo. Los caracteres se encierran entre comillas. Las constantes STRING no se pueden utilizar en expresiones. Sintaxis CONSTANTE STRING Interrupción Carácter Carácter de cadena...
Declaración de constantes y saltos 9.1.3.6 Constante de fecha La fecha se inicia con los prefijos DATE# ó D#. La fecha se indica con números enteros para el año (4 cifras), el mes y el día, que se separan por medio de guiones. Sintaxis Indicación de fecha Secuencia de...
Página 186
Declaración de constantes y saltos 9.1.3.7 Constante de tiempo El tiempo se inicia con el prefijo TIME# o T#. El tiempo se puede indicar de dos maneras distintas: • Representación decimal • Representación escalonada. Sintaxis TIEMPO TIME# Representación decimal Representación escalonada Representación decimal - Cada unidad de tiempo (p.ej.: horas, minutos) sólo puede indicarse una vez.
Declaración de constantes y saltos Representación escalonada La representación escalonada es una secuencia de distintos componentes de tiempo. Primero se especifican los días, luego las horas, y así sucesivamente, separados por caracteres de subrayado. Hay que indicar por lo menos un componente. Representación escalonada SECUENCIA DE SECUENCIA DE...
Declaración de constantes y saltos 9.1.3.8 Constantes de hora La hora del día se inicia con los prefijos TIME_OF_DAY# ó TOD#. Sintaxis HORA DEL DIA TIME_OF_DAY# Indicación de hora del día TOD# Para la indicación de la hora del día se declaran las horas, minutos y segundos separados por dos puntos.
Declaración de constantes y saltos 9.1.3.9 Constante de fecha y hora La indicación de la fecha y hora se inicia con los prefijos DATE_AND_TIME# ó DT#. Se trata de una constante compuesta por la indicación de la fecha y la indicación de la hora. Sintaxis FECHA Y HORA DATE_AND_TIME#...
Declaración de constantes y saltos Declaración de metas de salto Las metas de salto (labels) permiten definir la meta de una instrucción GOTO. Se declaran en el área de declaración del bloque lógico con su nombre simbólico. Sintaxis Bloque de metas de salto IDENTIFICADOR LABEL END_LABEL...
Datos globales 10.1 Sinopsis de los datos globales En S7-SCL tiene la posibilidad de acceder a datos globales. Existen dos tipos de datos globales: • Áreas de memoria de la CPU Estas áreas de memoria son datos declarados por el sistema: p. ej., entradas, salidas y marcas.
Datos globales 10.2 Áreas de memoria de la CPU 10.2.1 Sinopsis de las áreas de memoria de la CPU Las áreas de memoria de una CPU son áreas declaradas por el sistema, por lo que no es necesario declararlas en el bloque lógico. Cada CPU ofrece las siguientes áreas de memoria con un área de direccionamiento propia: •...
Datos globales 10.2.2 Acceso absoluto a áreas de memoria de la CPU El acceso absoluto a un área de memoria de la CPU se realiza, por ejemplo, mediante asignación de un identificador absoluto a una variable del mismo tipo. ESTADO_2:= EB10; Acceso absoluto Variable del mismo tipo El identificador absoluto remite a un área de memoria de la CPU.
Datos globales Prefijo de tamaño Indicando el prefijo de tamaño se especifica la longitud del área de memoria que debe leerse desde la periferia. Por ejemplo, se puede leer un byte o una palabra. La especificación del prefijo de tamaño es opcional si sólo desea especificar un bit. Prefijo de tamaño Byte Palabra...
Datos globales 10.2.3 Acceso simbólico a áreas de memoria de la CPU El direccionamiento simbólico permite utilizar nombres simbólicos para direccionar las áreas de memoria de la CPU, en lugar de emplear un identificador absoluto. Asigne un nombre simbólico a cada uno de los operandos de su programa en la tabla de símbolos.
Datos globales 10.2.4 Acceso indizado a áreas de memoria de la CPU También existe la posibilidad de acceder a áreas de memoria de la CPU mediante un índice. Frente al direccionamiento absoluto ofrece la ventaja de poder direccionar dinámicamente los accesos mediante índices variables. Así por ejemplo, es posible utilizar como dirección la variable de un bucle FOR.
Página 197
Datos globales 10.3 Bloques datos 10.3.1 Sinopsis de los bloques de datos En los bloques de datos se pueden guardar y procesar todos los datos que valgan para todo el programa o proyecto. Todos los bloques lógicos tienen acceso de lectura y escritura a los datos globales de usuario.
Página 198
Datos globales 10.3.2 Acceso absoluto a bloques de datos El acceso absoluto a un bloque de datos se efectúa, al igual que en el caso de un acceso absoluto a las áreas de la CPU, asignando un valor a una variable del mismo tipo. El identificador DB va seguido de la palabra clave "D", el prefijo de tamaño (p.
Página 199
Datos globales Dirección Al especificar la dirección se indica primero la dirección absoluta del byte y, a continuación, separada por un punto, la dirección del bit correspondiente (sólo en caso de acceso por bits). Dirección Número Número sólo con dirección de bit Ejemplo Veamos algunos ejemplos del acceso absoluto a un bloque de datos.
Página 200
Datos globales 10.3.3 Acceso indizado a bloques de datos También existe la posibilidad de acceder a bloques de datos mediante un índice. Frente al direccionamiento absoluto esto ofrece la ventaja de poder direccionar operandos cuya dirección se determine durante el tiempo de ejecución. Por ejemplo, podrá utilizar como dirección la variable en curso de un blucle FOR.
Página 201
Datos globales 10.3.4 Acceso estructurado a bloques de datos El acceso estructurado se realiza mediante el identificador de las variables declaradas en el bloque de datos. La variable se puede asignar a cualquier variable del mismo tipo. La variable del bloque de datos se direcciona especificando el nombre del DB y el nombre de la variable simple, separados por un punto.
Página 202
Datos globales S7-SCL V5.3 para S7-300/400 10-12 A5E00324652-01...
Expresiones, operaciones y operandos 11.1 Sinopsis de las expresiones, operaciones y operandos Una expresión representa un valor calculado durante la compilación o el tiempo de ejecución del programa y se compone de operandos (p.ej. constantes, variables o llamadas de función) y operaciones (p.ej. *, /, + o -). Los tipos de datos de los operandos y las operaciones aplicadas determinan el tipo de expresión.
Expresiones, operaciones y operandos 11.2 Operaciones Las expresiones están formadas por operaciones y operandos. La mayoría de las operaciones de S7-SCL combinan dos operandos, por lo que se denominan binarias. Otras operaciones se realizan con un solo operando, por lo que se denominan unarias. Las operaciones binarias se escriben entre los operandos (p.
Expresiones, operaciones y operandos 11.3 Operandos Los operandos son objetos con los que se puede formar una expresión. Para crear operandos se pueden utilizar los siguientes elementos: Operando Constante Variable ampliada ( Expresión ) Operando Constantes: Se pueden utilizar constantes con su valor numérico o con un nombre simbólico o cadenas de caracteres.
Página 206
Expresiones, operaciones y operandos Variable ampliada La variable ampliada es un término genérico para una serie de variables. Para más información al respecto, consulte el capítulo "Asignación de valores". Variable ampliada Variable simple Variable absoluta para áreas de memoria de la CPU Variable en DB Variable en instancia local Llamada a FC...
Expresiones, operaciones y operandos 11.4 Sintaxis de una expresión Sintaxis Expresión Operando Operaciones Expresión Expresión lógicas básicas Operaciones de comparación Operaciones aritméticas básicas Potencia Exponente Expresión Expresión Más unario Menos unario Negación Expresión Resultado de una expresión El resultado de una expresión se puede: •...
Expresiones, operaciones y operandos Reglas Las expresiones se procesan según las siguientes reglas: • Un operando situado entre dos operaciones de distinta prioridad está siempre ligado a la de mayor rango. • Las operaciones se ejecutan de acuerdo con el orden jerárquico. •...
Expresiones, operaciones y operandos 11.5 Expresión simple En S7-SCL se entiende por expresión simple las expresiones aritméticas simples. Puede multiplicar o dividir por parejas valores contantes y combinar dichas parejas mediante adición o sustracción. Sintaxis de la expresión simple: Expresión Multiplicación simple simple...
Expresiones, operaciones y operandos 11.6 Expresiones aritméticas Una expresión aritmética es una expresión formada por operaciones aritméticas. Estas expresiones le permiten procesar datos del tipo numérico. La siguiente tabla muestra las operaciones posibles e indica a qué tipo hay que asignar el resultado en función de los operandos.
Página 211
Expresiones, operaciones y operandos Reglas Las operaciones de las expresiones aritméticas se ejecutan según su prioridad. • Para facilitar la lectura de los paréntesis se recomienda poner los signos de los números negativos incluso donde no sea necesario. • En las divisiones con dos operandos enteros del tipo INT, las operaciones "DIV" y "/" dan el mismo resultado (vea el siguiente ejemplo).
Expresiones, operaciones y operandos 11.7 Expresiones lógicas Una expresión lógica es una expresión formada por operaciones lógicas. Operaciones lógicas básicas Con las operaciones AND, &, XOR y OR se pueden combinar operandos lógicos (tipo BOOL) o variables del tipo de datos BYTE, WORD o DWORD para crear expresiones lógicas.
Página 213
Expresiones, operaciones y operandos Ejemplos // Se niega el resultado de la expresión de comparación. IF NOT (CONTADOR > 5) THEN . . . ; // Se niega el resultado de la primera expresión de comparación y // se combina con el resultado de la segunda A := NOT (CONTADOR1 = 4) AND (CONTADOR2 = 10) ;...
Expresiones, operaciones y operandos 11.8 Expresiones de comparación Con las operaciones de comparación se comparan los valores de dos operandos y se obtiene un valor booleano. El resultado es TRUE si la comparación se cumple, y FALSE si no se cumple. Sintaxis Operación de comparación <...
Expresiones, operaciones y operandos Tipo de <> >0 <0 > < Reglas datos CHAR En el caso de los caracteres y las cadenas de caracteres se utiliza la longitud de la variables y el valor numérico de cada carácter ASCII para la comparación. La comparación en el caso de STRING se realiza internamente mediante las funciones EQ_STRNG, GE_STRNG, LE_STRNG,...
Página 216
Expresiones, operaciones y operandos Ejemplos // Comparación 3 MENOR IGUAL 4. El resultado // es "TRUE" A := 3 <= 4 // Comparación 7 DIFERENTE 7. El resultado // es "FALSE" 7 <> 7 // Evaluación de una expresión de comparación en // una ramificación IF IF CONTADOR <...
Instrucciones 12.1 Asignaciones de valor Las asignaciones de valor sustituyen el valor actual de una variable por otro valor que se indica mediante una expresión. Dicha expresión también puede incluir identificadores de funciones que se activan y devuelven valores (valor de respuesta). Según se muestra en la figura siguiente, la expresión se evalúa a la derecha de la asignación, y el resultado se memoriza junto a las variables cuyo nombre figura a la izquierda del identificador de la asignación.
Instrucciones 12.1.1 Asignación con variables de un tipo de datos simple Toda expresión y toda variable de un tipo de datos simple puede ser asignada a otra variable del mismo tipo. Identificador := expresión ; Identificador := variable ; Ejemplo FUNCTION_BLOCK FB12 PULSADOR_1 : INT ;...
Instrucciones 12.1.2 Asignación con variables del tipo STRUCT y UDT Las variables del tipo STRUCT y UDT son variables estructuradas que representan una estructura completa o un componente de dicha estructura. Especificaciones válidas de una variable estructurada: Imagen //identificador de una estructura Imagen.elemento //identificador de un componente de estructura Imagen.array...
Página 220
Instrucciones Ejemplo FUNCTION_BLOCK FB3 VARAYUD : REAL ; VALOR_MEDIDO : STRUCT //Estructura meta TENSION:REAL ; RESISTENCIA:REAL ; ARRAY_SIMPLE : ARRAY [1..2, 1..2] OF INT ; END_STRUCT ; VALOR REAL : STRUCT //Estructura fuente TENSION: REAL ; RESISTENCIA : REAL ; ARRAY_SIMPLE: ARRAY [1..2, 1..2] OF INT ;...
Instrucciones 12.1.3 Asignación con variables del tipo ARRAY Un array tiene de 1 a 6 dimensiones como máximo y contiene elementos, todos del mismo tipo. Hay dos variantes de acceso para la asignación de arrays a una variable: Es posible direccionar tanto arrays completos como partes de arrays.
Página 222
Instrucciones Ejemplo FUNCTION_BLOCK FB3 VALORES_TEORICOS :ARRAY [0..127] OF INT ; VALORES_REALES :ARRAY [0..127] OF INT ; // Declaración de una matriz (=array bidimensional) // de 3 líneas y 4 columnas REGULADOR : ARRAY [1..3, 1..4] OF INT ; // Declaración de un vector (=array unidimensional) de 4 componentes REGULADOR_1 : ARRAY [1..4] OF INT ;...
Instrucciones 12.1.4 Asignación con variables del tipo STRING Una variable del tipo de datos STRING contiene una cadena de caracteres de 254 caracteres como máximo. A todas las variables del tipo de datos STRING se les puede asignar otra variable del mismo tipo. Asignaciones válidas: variablestring_1 := constante STRING;...
Página 224
Instrucciones 12.1.5 Asignación con variables del tipo DATE_AND_TIME El tipo de datos DATE_AND_TIME define un área de 64 bits (8 bytes) para especificar la fecha y la hora. A todas las variables del tipo de datos DATE_AND_TIME se les puede asignar otra variable o constante del mismo tipo.
Instrucciones 12.1.6 Asignación con variables absolutas para áreas de memoria La variable absoluta referencia las áreas de memoria globales válidas de una CPU. Existen tres posibilidades para acceder a estas áreas: • acceso absoluto • acceso indizado • acceso simbólico Sintaxis de las variables absolutas Variable absoluta Identificador de operando...
Instrucciones 12.1.7 Asignación con variables globales El acceso a datos de bloques de datos globales también se realiza mediante asignación a variables del mismo tipo, o viceversa. A todas las variables globales se les puede asignar una variable o una expresión del mismo tipo. Dispone de varias posibilidades de acceder a estos datos: •...
Página 227
Instrucciones Ejemplo FUNCTION_BLOCK FB3 REGULADOR_1 : ARRAY [1..4] OF INT ; PALABRA_DE_ESTADO1 : WORD ; PALABRA_DE_ESTADO2 : ARRAY [0..10] OF WORD ; PALABRA_DE_ESTADO3 : INT ; PALABRA_DE_ESTADO4 : WORD ; DIRECCION : INT ; END_VAR VAR_INPUT PALABRA _DE_DIRECCION : WORD ; END_VAR BEGIN // Asignación de la palabra 1 del DB11...
Instrucciones 12.2 Instrucciones de control 12.2.1 Sinopsis de las instrucciones de control Instrucciones de selección Una instrucción de selección permite derivar el flujo del programa a distintas secuencias de instrucciones en función de determinadas condiciones. Tipo de ramificación Función Instrucción IF Con la instrucción IF se deriva el flujo del programa a una de dos alternativas en función de una condición que puede ser TRUE o FALSE.
Instrucciones 12.2.2 Condiciones La condición puede ser una expresión de comparación, una expresión lógica o una expresión aritmética. Es del tipo BOOL y puede adoptar los valores TRUE o FALSE. Las expresiones aritméticas son TRUE, si adoptan un valor no igual a cero y FALSE, si resultan cero.
Página 230
Instrucciones 12.2.3 Instrucción IF La instrucción IF es una instrucción condicional. Ofrece una o varias opciones y selecciona una de sus área de instrucciones (en algunos casos ninguna); la opción seleccionada se ejecutará. Al ejecutar la instrucción condicional se evalúan las expresiones lógicas especificadas. Si el valor de una expresión es TRUE, la condición se cumple;...
Página 231
Instrucciones Ejemplo E1.1 THEN N := 0 ; SUM := 0 ; OK := FALSE ; // Poner OK-Flag a FALSE ELSIF START = TRUE THEN N := N + 1 ; SUM := SUM + N ; ELSE OK := FALSE ; END_IF ;...
Instrucciones 12.2.4 Instrucción CASE La instrucción CASE sirve para elegir entre 1-n secciones alternativas del programa. Esta opción se basa en el valor de una expresión de selección. Sintaxis Instrucción CASE Expresión de selección (entero) CASE Expresión Valor Lista de Area de valores instrucciones...
Página 233
Instrucciones Lista de valores La lista de valores contiene los valores permitidos para la expresión de selección. Lista de valores Número entero Valor Valor Valor Se aplican las siguientes reglas: • Todas las listas de valores empiezan por una constante, una lista de constantes o un área de constantes.
Página 234
Instrucciones 12.2.5 Instrucción FOR Una instrucción FOR sirve para repetir una secuencia de instrucciones mientras haya una variable de control dentro del rango especificado. La variable actual debe ser el identificador de una variable local del tipo INT o DINT. La definición de un bucle con FOR incluye la definición de un valor inicial y de un valor final.
Instrucciones Asignación del valor inicial La creación del valor inicial de la variable actual debe corresponder a la siguiente sintaxis. La variable simple en el lado izquierdo de la asignación debe ser del tipo de datos INT o DINT. Asignación inicial Variable Expresión simple...
Página 236
Instrucciones Ejemplo FUNCTION_BLOCK FOR_BSP INDEX: INT ; PALABRA_CLAVE: ARRAY [1..50] OF STRING; END_VAR BEGIN FOR INDEX := 1 TO 50 BY 2 DO PALABRA_CLAVE IF [INDEX] = 'KEY' THEN EXIT; END_IF; END_FOR; END_FUNCTION_BLOCK S7-SCL V5.3 para S7-300/400 12-20 A5E00324652-01...
Página 237
Instrucciones 12.2.6 Instrucción WHILE La instrucción WHILE permite la ejecución repetida de una secuencia de instrucciones bajo el control de una condición de ejecución. La condición de ejecución se crea según la regulación de una expresión lógica. Sintaxis Instrucción WHILE Area de END_WHILE WHILE...
Instrucciones 12.2.7 Instrucción REPEAT La instrucción REPEAT permite la ejecución repetida de una secuencia de instrucciones que se encuentre entre REPEAT y UNTIL hasta que se cumpla una condición de interrupción. La condición de interrupción se forma según las reglas de una expresión lógica. Sintaxis Instrucción REPEAT Area de...
Página 239
Instrucciones 12.2.8 Instrucción CONTINUE Una instrucción CONTINUE sirve para cancelar la ejecución del bucle momentáneo de una instrucción de repetición (FOR, WHILE o REPEAT). Sintaxis Instrucción CONTINUE CONTINUE La instrucción CONTINUE se ejecuta según las reglas siguientes: • Esta instrucción interrumpe de forma inmediata la ejecución de la secuencia de instrucciones.
Instrucciones 12.2.9 Instrucción EXIT La instrucción EXIT permite abandonar un bucle (FOR, WHILE o REPEAT) en cualquier punto del programa, independientemente de si se cumple o no la condición de interrupción. Sintaxis Instrucción EXIT EXIT La instrucción EXIT se ejecuta según las reglas siguientes: •...
Instrucciones 12.2.10 Instrucción GOTO La instrucción GOTO permite realizar un salto dentro del programa. Cuando se ejecuta esta instrucción se provoca un salto inmediato a una meta especificada y, por lo tanto, a otra instrucción del mismo bloque. Las instrucciones GOTO sólo se deberían utilizar en casos especiales, p. ej., cuando se procesan errores.
Instrucciones 12.2.11 Instrucción RETURN Con una instrucción RETURN se abandona el bloque actual (OB, FB, FC) en ejecución y se retorna al módulo invocante, o bien al sistema operativo en caso de que se abandone un bloque de organización (OB). Sintaxis Instrucción RETURN RETURN...
Instrucciones 12.3 Llamada a funciones y bloques de función 12.3.1 Llamada y transferencia de parámetros Llamada a FC y FB Para garantizar la legibilidad y facilitar el mantenimiento de los programas de usuario, toda la funcionalidad del programa se subdivide en tareas parciales que luego ejecutan los bloques de función (FB) y las funciones (FC).
Página 244
Instrucciones La indicación de parámetros presenta la forma de una asignación de valor. Mediante esta asignación de valor se asigna un valor determinado (parámetro actual) a los parámetros que ha definido en la tabla de declaración del bloque llamado (parámetros formales). Llamada absoluta: FB10.DB20 (X1:=5,X2:=78,..);...
Instrucciones 12.3.2 Llamada a bloques de función 12.3.2.1 Llamada a bloques de función (FB o SFB) Para llamar a un bloque de función puede utilizar bloques de datos de instancia globales y áreas del bloque de datos de instancia actual. La llamada a un FB como instancia local se diferencia de la llamada como instancia global en la memorización de los datos.
Instrucciones Llamada como instancia local La llamada se efectúa en una instrucción de llamada especificando: • el nombre de instancia local (IDENTIFICADOR), • y la asignación de parámetros (parámetros de FB). La llamada a una instancia local siempre es simbólica. Los nombres simbólicos deben especificarse en el área de declaración del bloque invocante.
Instrucciones 12.3.2.2 Asignación de parámetros FB Al llamar a un bloque de función - como instancia global o local - se deben parametrizar los siguientes parámetros de la lista de parámetros: • parámetros de entrada • parámetros de entrada/salida Los parámetros de salida no se especifican al llamar a un FB, sino que se asignan después de la llamada.
Instrucciones Resultado tras ejecutar el bloque Tras ejecutar el bloque: • los parámetros de entrada actuales transferidos permanecen inalterados. • los valores transferidos pero modificados de los parámetros de entrada/salida están actualizados. Una excepción la constituyen los parámetros de entrada/salida de un tipo de datos simple.
Instrucciones 12.3.2.3 Asignación de entrada (FB) Mediante las asignaciones de entrada se asignan parámetros actuales a los parámetros formales de entrada. El FB no puede cambiar estos parámetros actuales. La asignación de parámetros de entrada actuales es opcional. Si no se especifica ningún parámetro actual, se mantienen los valores de la última llamada.
Instrucciones 12.3.2.4 Asignación de entrada/salida (FB) Las asignaciones de entrada/salida sirven para asignar parámetros actuales a los parámetros de entrada/salida formales del FB llamado. El FB llamado puede modificar los parámetros de entrada/salida. El nuevo valor del parámetro que se genera al procesar el FB se reescribe en el parámetro actual, escribiéndose sobre el valor original.
Instrucciones 12.3.2.5 Leer valores de salida (llamada a FB) Después de ejecutar el bloque llamado, los parámetros de salida se pueden leer desde el bloque de instancia global o desde el área de instancia local mediante una asignación de valor. Ejemplo RESULTADO := DB10.CONTROL ;...
Instrucciones 12.3.2.6 Ejemplo de llamada como instancia global Un bloque de función con un bucle FOR puede tener un aspecto similar al del siguiente ejemplo. En los ejemplos se presupone que se ha declarado el símbolo TEST para el FB17. Bloque de función FUNCTION_BLOCK TEST VAR_INPUT...
Instrucciones Llamada Para llamar a este FB puede seleccionar una de las siguientes variantes. Es necesario que la VARIABLE1 del bloque invocante esté registrada como variable REAL. //Llamada absoluta, instancia global: FB17.DB10 (VALOR_FINAL:=10, IQ1:=VARIABLE1); //llamada simbólica, instancia global: TEST.TEST_1 (VALOR_FINAL:= 10, IQ1:= VARIABLE1) ; Resultado Después de ejecutar el bloque, se dispone del valor hallado para el parámetro de entrada/salida IQ1 en la VARIABLE1.
Instrucciones 12.3.2.7 Ejemplo de llamada como instancia local Es posible programar un bloque de función con un bucle FOR sencillo como en el ejemplo "Llamada como instancia global", suponiendo que en la tabla de símbolos esté registrado el símbolo TEST para el FB17 . Este FB se puede llamar de la siguiente forma siempre que la VARIABLE1 del bloque invocante esté...
Instrucciones 12.3.3 Llamada a funciones 12.3.3.1 Llamada a funciones (FC) Se llama a una función especificando el nombre de la función (NOMBRE de la FC, de la SFC o IDENTIFICADOR) y la lista de parámetros. El nombre de la función que identifica el valor de respuesta puede especificarse absoluta o simbólicamente: FC31 (X1:=5, Q1:=Suma de verificacion) // Absoluto...
Instrucciones 12.3.3.2 Valor de respuesta (FC) A diferencia de los bloques de función, las funciones dan como resultado el valor de respuesta. Por este motivo, las funciones pueden tratarse como si fueran operandos (a excepción de las funciones del tipo VOID). La función calcula el valor de respuesta que tiene el mismo nombre que la función, y lo retorna al bloque que efectúa la llamada.
Página 257
Instrucciones 12.3.3.3 Parámetros de FC A diferencia de los bloques de función, las funciones no pueden memorizar los valores de los parámetros. Al ejecutarse la función, los datos locales sólo se guardan temporalmente. Por esta razón, al llamar una función es necesario asignar parámetros actuales a todos los parámetros formales de entrada, de entrada/salida y de salida que estén definidos en el área de declaración de la función.
Instrucciones 12.3.3.4 Asignación de entrada (FC) Mediante asignaciones de entrada se asignan valores (parámetros actuales) a los parámetros de entrada formales de la FC llamada. La FC puede operar con dichos parámetros actuales, pero no puede modificarlos. Al contrario que en las llamadas a FB, esta asignación no es opcional en las llamadas a FC.
Instrucciones 12.3.3.5 Asignación de salida y de entrada/salida (FC) En una asignación de salida se determina en qué variable del bloque invocante se van a escribir los valores de salida que se originan al ejecutarse la función. Con una asignación de entrada/salida se asigna un valor actual a un parámetro de entrada/salida.
Página 260
Instrucciones Nota En parámetros formales de salida o de entrada/salida no está permitido el uso de los siguientes parámetros actuales: • Parámetros de entrada de FC/FB • Parámetros de entrada/salida que no sean del tipo de datos simple • Parámetros de entrada/salida de FC y parámetros de salida de FC que no sean del tipo de datos simple.
Instrucciones 12.3.3.6 Ejemplo de llamada a una función Función a llamar Una función DISTANCIA para calcular la distancia entre dos puntos (X1,Y1) y (X2,Y2) del nivel utilizando coordenadas cartesianas podría tener el siguiente aspecto (En los ejemplos se presupone siempre que en una tabla de símbolos para el FC37 está declarado el símbolo DISTANCIA.): FUNCTION DISTANCIA: REAL // simbólico VAR_INPUT...
Instrucciones 12.3.4 Parámetros definidos implícitamente 12.3.4.1 Parámetro de entrada EN Todos los bloques de función y todas las funciones tienen el parámetro de entrada EN definido implícitamente. EN es del tipo de datos BOOL y se almacena en el área de los datos locales temporales.
Instrucciones 12.3.4.2 Parámetro de salida ENO Todos los bloques de función y todas las funciones poseen el parámetro de salida ENO definido implícitamente. Es un parámetro del tipo de datos BOOL. Se almacena en el área de los datos locales temporales. Al terminar la ejecución de un bloque, el valor actual de la marca OK se deposita en ENO.
Página 264
Instrucciones S7-SCL V5.3 para S7-300/400 12-48 A5E00324652-01...
Contadores y temporizadores 13.1 Contadores 13.1.1 Funciones de contaje STEP 7 ofrece una serie de funciones estándar de contaje. Los contadores se pueden utilizar en el programa S7-SCL sin necesidad de declararlos previamente. Basta especificar los parámetros necesarios. Funciones de contaje de STEP 7: Función de Significado contaje...
Página 266
Contadores y temporizadores Ejemplos //Ejemplo de una llamada absoluta: S_CUD (C_NO:=Z12, CD:=E0.0, CU:=E0.1, S:=E0.2 & E0.3, PV:=120, R:=FALSE, CV:=binVal, Q:=actFlag); //Ejemplo de una llamada dinámica: En cada ejecución de un bucle //FOR se llamará otro contador: FUNCTION_BLOCK CONTAD VAR_INPUT Contad: ARRAY [1..4] of STRUCT C_NO: INT;...
Contadores y temporizadores 13.1.3 Asignación de parámetros en funciones de contaje La tabla siguiente muestra una lista de los parámetros disponibles para funciones de contaje: Parámetro Tipo de datos Descripción C_NO COUNTER Identificador del contador ; el margen depende de la CPU. BOOL Entrada CD: decrementar contador BOOL...
Contadores y temporizadores 13.1.4 Entrada y evaluación del valor de contaje Para introducir el valor de inicialización o para evaluar el resultado de la función se requiere la representación interna del valor de contaje. El valor de contaje es del tipo de datos WORD, por lo que los bits 0-11 contienen el valor de contaje en código BCD.
Página 270
Contadores y temporizadores 13.1.5 Incrementar contador (S_CU) El contador 'Counter Up (S_CU)' sólo ejecuta operaciones de contaje incremental. La tabla ejemplifica el funcionamiento del contador: Operación Funcionamiento Incrementar contador El valor del contador avanza "1" cuando el estado de la señal en la entrada CU cambia de "0"...
Contadores y temporizadores 13.1.7 Incrementar/decrementar contador (S_CUD) Con el contador 'Counter Up Down (S_CUD)' se ejecutan las operaciones "Incrementar contador" y "Decrementar contador". Si los impulsos de contaje incremental y decremental son simultáneos, se procesan ambas operaciones. El valor del contador no cambia. La tabla ejemplifica el funcionamiento del contador: Operación Funcionamiento...
Página 272
Contadores y temporizadores Ejemplo FUNCTION_BLOQUE CONTAR VAR_INPUT MICONTADOR : COUNTER ; END_VAR VAR_OUTPUT RESULTADO : INT ; END_VAR : BOOL ; RESET : BOOL ; VALOR_BCD : WORD ; // Valor de contaje en código BCD VALOR_BIN : WORD ; // valor de contaje binario PRESELECCION: WORD ;...
Contadores y temporizadores 13.2 Temporizadores 13.2.1 Funciones de temporización Los temporizadores son elementos del programa con carácter de función que ejecutan y vigilan procesos controlados por tiempo. STEP 7 dispone de una serie de funciones de temporización estándar, a las que se puede acceder con S7-SCL: Función de Significado temporización...
Página 274
Contadores y temporizadores Ejemplos //Ejemplo de una llamada absoluta: CurrTime:=S_ODT (T_NO:=T10, S:=TRUE, TV:=T#1s, R:=FALSE, BI:=biVal, Q:=actFlag); //Ejemplo de una llamada absoluta: En cada ejecución de un //bucle FOR se llamará otra función de temporizador: FUNCTION_BLOCK TEMPORIZADOR VAR_INPUT MI_TEMPORIZADOR: ARRAY [1..4] of STRUCT T_NO: INT;...
Contadores y temporizadores 13.2.3 Asignación de parámetros en funciones de temporización La tabla siguiente muestra un resumen de los parámetros para funciones de temporización: Parámetro Tipo de datos Descripción T_NO TIMER Identificador del temporizador; el margen depende de la CPU ENTERO BOOL Entrada de arranque...
Contadores y temporizadores 13.2.4 Entrada y evaluación del valor de temporización Para introducir el valor de inicialización o para evaluar el resultado de la función en código BCD se requiere la representación interna del valor de temporización. El valor de temporización es del tipo de datos WORD;...
Contadores y temporizadores Base de tiempo para valores de temporización Para introducir y evaluar el valor de temporización se requiere la base de tiempo (bits 12 y 13 de la palabra del temporizador). La base de tiempo define el intervalo en el que el valor de temporización se decrementa una unidad (ver tabla).
Contadores y temporizadores 13.2.5 Arrancar temporizador como impulso (S_PULSE) El tiempo máximo en el cual la señal de salida permanece a "1" es idéntico al valor de temporización programado. Si durante el tiempo de ejecución del temporizador aparece en la entrada el estado de señal 0, el temporizador se pondrá a "0". (es decir, el temporizador se detiene).
Página 280
Contadores y temporizadores 13.2.6 Arrancar temporizador como impulso prolongado (S_PEXT) La señal de salida permanece a "1" durante el tiempo programado (t), independientemente del tiempo que permanezca a "1" la señal de entrada. Si se activa de nuevo el impulso de arranque se ejecutará...
Página 281
Contadores y temporizadores 13.2.7 Arrancar temporizador como retardo a la conexión (S_ODT) La señal de salida sólo cambia de "0" a "1" si ha transcurrido el tiempo programado y la señal de entrada continúa a "1". Es decir, la salida se conecta con retardo. Las señales de entrada cuyo intervalo es menor que el tiempo programado no aparecen en la salida.
Página 282
Contadores y temporizadores 13.2.8 Arrancar temporizador como retardo a la conexión con memoria (S_ODTS) La señal de salida sólo cambia de "0" a "1" cuando ha transcurrido el tiempo programado, independientemente del tiempo que permanezca a "1" la señal de entrada. Señal de entrada E 2.1 A 4.0...
Página 283
Contadores y temporizadores 13.2.9 Arrancar temporizador como retardo a la desconexión (S_OFFDT) Cuando se produce un cambio del estado de señal de "0" a "1" en la entrada de arranque S, en la salida Q aparece el estado "1". Cuando el estado de la entrada de arranque pasa de "1"...
Contadores y temporizadores 13.2.11 Selección del temporizador correcto La siguiente figura ofrece un resumen de los cinco temporizadores distintos que se han descrito en este apartado. Este resumen pretende ayudarle a elegir el temporizador más adecuado para sus exigencias. Señal de entrada E 2.1 Señal de salida A 4.0...
Página 286
Contadores y temporizadores S7-SCL V5.3 para S7-300/400 13-22 A5E00324652-01...
Funciones estándar de S7-SCL 14.1 Funciones de conversión del tipo de datos 14.1.1 Conversión del tipo de datos Al combinar dos operandos en una operación hay que tener en cuenta la compatibilidad de sus tipos de datos. Si los operandos no son del mismo tipo de datos se debe realizar una conversión.
Funciones estándar de S7-SCL 14.1.2 Conversión implícita del tipo de datos El compilador realiza una conversión implícita del tipo de datos dentro de las clases de tipos de datos descritas en la tabla, en el orden indicado. El formato común de dos operandos siempre es el tipo de datos mayor de ambos.
Funciones estándar de S7-SCL 14.1.3 Funciones estándar para la conversión explícita del tipo de datos La llamada de funciones se describe en el apartado "Llamada de funciones". Al llamar a funciones de conversión hay que tener en cuenta lo siguiente: •...
Página 290
Funciones estándar de S7-SCL Nombre de la función Regla de conversión DINT_TO_BOOL DWORD_TO_BOOL(DINT_TO_DWORD(x)) DINT_TO_BYTE DWORD_TO_BYTE(DINT_TO_DWORD(x)) DINT_TO_STRING DI_STRNG DINT_TO_WORD DWORD_TO_WORD(DINT_TO_DWORD(x)) DWORD_TO_BOOL Copiar los bits menos significativos DWORD_TO_BYTE Copiar los 8 bits menos significativos DWORD_TO_DINT Aceptar la cadena de bits DWORD_TO_REAL Aceptar la cadena de bits. DWORD_TO_WORD Copiar los 16 bits menos significativos DWORD_TO_INT...
Página 291
Funciones estándar de S7-SCL Nombre de la función Regla de conversión INT_TO_BCD(x) La expresión x es del tipo INT y se acepta como entero con un valor comprendido entre -999 y +999. El resultado que se obtiene después de la INT_TO_BCD_WORD(x) conversión es un número codificado en BCD del tipo WORD.
Funciones estándar de S7-SCL 14.1.3.2 Funciones de redondeo y truncado Algunas de las posibles conversiones de los tipos de datos son las funciones de redondeo y truncado de números. La tabla muestra los nombres, tipos de datos (para el parámetro de entrada y para el valor de función) y las tareas de dichas funciones: Nombre de la Tipo de datos...
Funciones estándar de S7-SCL 14.1.3.3 Ejemplos de conversión con funciones estándar En el siguiente ejemplo se requiere una conversión explícita, dado que el tipo de datos de destino es menos poderoso que el tipo de datos de la fuente. FUNCTION_BLOCK FB10 INTERR : INT;...
Página 294
Funciones estándar de S7-SCL El siguiente ejemplo muestra la conversión en entradas y salidas de la periferia: FUNCTION_BLOCK FB40 Radio_Con : WORD ; Radio : INT; END_VAR Radio_con := %EB0; Radio := WORD_TO_INT (radio_con); (* Conversión al cambiar a otra clase de tipo. El valor procede de la entrada y se convierte para continuar su cálculo.*) Radio := Radio (superficie:= datos del círculo.superficie)
Funciones estándar de S7-SCL 14.2 Funciones estándar numéricas 14.2.1 Funciones estándar aritméticas básicas Estas funciones permiten calcular el valor absoluto, el cuadrado o la raíz cuadrada de una magnitud. El tipo de datos ANY_NUM representa INT, DINT o REAL. Tenga en cuenta que los parámetros de entrada del tipo INT o DINT se convertirán internamente en variables REAL si el valor de función es del tipo REAL.
Funciones estándar de S7-SCL 14.2.3 Funciones trigonométricas Las funciones trigonométricas representadas en la tabla sirven para estimar y calcular magnitudes de ángulos y arcos. El tipo de datos ANY_NUM representa INT, DINT o REAL. Tenga en cuenta que los parámetros de entrada del tipo ANY_NUM se convierten internamente en variables REAL. Nombre de la función Tipo de datos Tipo de datos...
Funciones estándar de S7-SCL 14.3 Funciones estándar de cadena de bits Cada función estándar de cadena de bits dispone de dos parámetros de entrada que se designan por medio de IN o N. El resultado es siempre el valor de la función. La siguiente tabla muestra los nombres de las funciones y los tipos de datos de los dos parámetros de entrada y del valor de función.
Funciones estándar de S7-SCL 14.4 Funciones para procesar cadenas de caracteres 14.4.1 Funciones para manipular cadenas La función LEN (FC 21) emite la longitud actual de una cadena de caracteres (número de los caracteres válidos) como valor de retorno. Una cadena de caracteres vacía ('') tiene la longitud cero.
Página 300
Funciones estándar de S7-SCL LEFT o RIGHT Las funciones LEFT o RIGHT (FC 20 ó FC 32) aportan los primeros o últimos caracteres L de una cadena de caracteres. Si L es mayor que la longitud actual de la variable STRING se devolverá...
Página 301
Funciones estándar de S7-SCL INSERT La función INSERT (FC 17) inserta la cadena de caracteres del parámetro IN2 detrás del carácter P. en la cadena de caracteres del parámetros IN1.Si P es igual a cero, se inserta la segunda cadena de caracteres delante de la primera cadena. Si P es mayor que la longitud actual de la primera cadena de caracteres se insertará...
Página 302
Funciones estándar de S7-SCL REPLACE La función REPLACE (FC 31) sustituye caracteres L de la primera cadena de caracteres (IN1) a partir del caracter P. (inclusive) por la segunda cadena de caracteres (IN2). Si L es igual a cero, se devolverá la primera cadena. Si P es igual a cero o uno, se sustituye a partir del primer caracter (inclusive).
Funciones estándar de S7-SCL 14.4.2 Funciones para comparar cadenas de caracteres Las comparaciones con cadenas de caracteres como operandos son posibles con las operaciones S7-SCL =, <>, <, >, <= o bien >=. El compilador insertará la correspondiente llamada de función automáticamente. Las siguientes funciones se mencionan por razones de totalidad.
Página 304
Funciones estándar de S7-SCL GT_STRNG y LT_STRNG La función GT_STRNG (FC 15) o (FC 24) compara el contenido de dos variables en formato STRING respecto mayor (menor) y emite el resultado de comparación como valor de retorno. El valor de retorno muestra el estado de señal "1" si la cadena de caracteres en el parámetro S1 es mayor (menor) que la cadena de caracteres en el parámetro S2.
Funciones estándar de S7-SCL 14.4.3 Funciones para convertir el formato de datos INT_TO_STRING y STRING_TO_INT Las funciones INT_TO_STRING y STRING_TO_INT convierten una variable del formato INT en una cadena de caracteres, o una cadena de caracteres en una variable INT. Implícitamente se utilizan las funciones I_STRNG (FC16) o STRNG_I (FC38) de la librería "Funciones IEC".
Página 306
Funciones estándar de S7-SCL REAL_TO_STRING y STRING_TO_REAL Las funciones REAL_TO_STRING y STRING_TO_REAL convierten una variable en formato REAL en una cadena de caracteres, o una cadena de caracteres en una variable REAL. Implícitamente se utilizan las funciones R_STRNG (FC30) o STRNG_R (FC39) de la librería "Funciones IEC"...
Funciones estándar de S7-SCL 14.4.4 Ejemplo de procesamiento de cadenas de caracteres Componer textos de mensaje //Componer y almacenar textos de mensajes con control del proceso //////////////////////////////////////////////////////////////////// //El bloque contiene los textos de mensaje necesarios y los //últimos 20 mensajes generados //////////////////////////////////////////////////////////////////// DATA_BLOCK Textos de mensajes STRUCT...
Página 308
Funciones estándar de S7-SCL //inicialización de las variables temporales texto := ''; generador_de_textos := true; Case unit of 1..5 : case status of 1..5 : text := concat( in1 := textos_mensajes.HW[unit], in2 := right(l:=2,in:=I_STRNG(nr))); text := concat( in1 := text, in2 := textos_mensajes.stati[status]);...
Funciones estándar de S7-SCL 14.5 Funciones para la selección de valores 14.5.1 Funciones para la selección de valores Las siguientes funciones para la selección de valores están disponibles en forma de funciones internas de S7-SCL. Cumplen la norma IEC 61131-3. Nota Algunas de las funciones también están incluidas en la librería estándar de STEP 7.
Página 310
Funciones estándar de S7-SCL La función MAX serlecciona el mayor de un número de valores de variables. Como valores de entrada se admiten tipos de datos numéricos y de tiempo. Todas las variables parametrizadas deben ser del tipo de datos de la misma clase. La expresión adopta el tipo de datos más significativo.
Página 311
Funciones estándar de S7-SCL LIMIT La función LIMIT limita el valor numérico de un avariable a valores límite parametrizables. Como valores de entrada se admiten todos los tipos de datos numéricos y de tiempo. Todos los parámetros deben ser del mismo tipo de datos. La expresión adopta el tipo de datos más significativo.
Página 312
Funciones estándar de S7-SCL Parámetro Declaración Tipo de datos Área de memoria Descripción INELSE INPUT Todos los tipos de E, A, M, D, L Valor de entrada datos excepto alternativo ARRAY y STRUCT (opcional) Si K se encuentra fuera de 0...n se utiliza el valor actual de INELSE.
Funciones estándar de S7-SCL 14.6 SFCs, SFBs y librerías estándar 14.6.1 Funciones de sistema, bloques de función de sistema y librería estándar Las CPU S7 incluyen, integradas en el sistema operativo, funciones del sistema y funciones estándar que puede utilizar al programar en S7-SCL. En particular son: •...
Página 314
Funciones estándar de S7-SCL Llamada condicional (SFB/SFC) Para la llamada condicional se tiene que asignar previamente 0 al parámetro de entrada EN predefinido (p.ej., en la entrada E0.3); en tal caso no se llamará al bloque. Si se asigna 1 a EN, sí...
Funciones estándar de S7-SCL 14.6.2 Interface de transferencia al OB Bloques de organización Los bloques de organización forman el interface entre el sistema operativo de la CPU y el programa de usuario. Los OB permiten ejecutar secciones del programa de forma puntualizada: •...
Página 316
Funciones estándar de S7-SCL S7-SCL V5.3 para S7-300/400 14-30 A5E00324652-01...
Descripción del lenguaje 15.1 Descripción formal 15.1.1 Sinopsis de los diagramas sintácticos La descripción del lenguaje en cada uno de los capítulos se basa en los diagramas sintácticos. Éstos proporcionan una visión general de la estructura sintáctica de S7-SCL. En los capítulos "Regulación léxica"...
Página 318
Descripción del lenguaje ¿Qué tipos de bloques hay? Un bloque es un elemento básico o un elemento que a su vez se compone de otros bloques. La figura siguiente indica los tipos de símbolo que corresponden a los bloques: Terminal Elementos nonterminales <Nombre de regla>...
Descripción del lenguaje El ejemplo muestra la regla léxica IDENTIFICADOR, que determina la estructura de un identificador (nombre), p. ej.: ARRAY_MED_12 VALOR_DE_PRESELECCION_B_1 IDENTIFICADOR Letra Letra Letra Subrayado Subrayado Cifra Cifra Reglas sintácticas Partiendo de las reglas léxicas, en las reglas sintácticas se describe la estructura de S7-SCL.
Descripción del lenguaje Aspectos semánticos En las reglas sólo se puede representar la estructura formal del lenguaje, de la cual no siempre puede deducirse su significado, es decir, su semántica. Por ello, en puntos importantes se escriben informaciones adicionales junto a las reglas. Ejemplos: •...
Descripción del lenguaje 15.1.3 Terminales de las reglas léxicas Definición Un terminal es un elemento básico que no se explica por medio de otra regla, sino de manera verbal. En los diagramas sintácticos aparecerán con el siguiente símbolo: El elemento terminal se representa mediante un óvalo o un círculo.
Descripción del lenguaje Caracteres imprimibles y caracteres especiales El juego de caracteres ASCII ampliado y completo se puede utilizar en cadenas, comentarios y símbolos. Caracteres Subgrupo Elementos del juego de caracteres Carácter imprimble depende del código de todos los caracteres imprimbles caracteres utilizado.
Descripción del lenguaje 15.1.4 Caracteres de formateo y de separación y operaciones En las reglas léxicas En la siguiente tabla encontrará ejemplos del uso de caracteres del juego de caracteres ASCII como caracteres de formateo y de separación en el ámbito de las reglas léxicas. Caracteres Descripción Carácter de separación entre horas, minutos y segundos...
Descripción del lenguaje Prefijo Identificador de Regla léxica Carácter de separación para intervalo de Horas: (regla: representación escalonada) tiempo (hora) Carácter de separación para intervalo de Minutos (regla: representación tiempo (minutos) escalonada) Carácter de separación para intervalo de Milisegundos (regla: representación tiempo (milisegundos) escalonada) Carácter de separación para intervalo de...
Página 325
Descripción del lenguaje Operaciones En la siguiente tabla están representadas todas las operaciones S7-SCL, las palabras clave, p. ej. AND y las operaciones habituales aparecen como caracteres sencillos. La tabla rige para la nemotécnica alemana y la inglesa. Operación Descripción Regla sintáctica Operación de asignación, asignación de Asignación de valores, área de...
Descripción del lenguaje 15.1.5 Palabras clave e identificadores predefinidos En la siguiente tabla encontrará una lista en orden alfabético de las palabras clave de S7-SCL y los identificadores predefinidos. Además, se incluye una descripción y la regla sintáctica en la que se utilizan como terminales. En general, las palabras clave no dependen de la nemotécnica utilizada.
Página 327
Descripción del lenguaje Palabras clave Descripción Regla sintáctica END_CASE Terminación de la instrucción CASE Instrucción CASE END_CONST Terminación de la definición de constantes Bloque de constantes END_DATA_BLOCK Terminación del bloque de datos Bloque de datos END_FOR Terminación de la instrucción FOR Instrucción FOR END_FUNCTION Terminación de la función...
Página 328
Descripción del lenguaje Palabras clave Descripción Regla sintáctica PROGRAM Introducción del área de instrucciones de un Bloque de función FB (sinónimo de FUNCTION_BLOCK) REAL Tipo de datos simple Tipo de datos numérico REPEAT Inicio de instrucción de control para el Instrucción REPEAT procesamiento de bucles RET_VAL...
Descripción del lenguaje 15.1.6 Identificadores de operando y palabras clave de bloques Datos globales de sistema En la siguiente tabla encontrará una lista en orden alfabético de la nemotécnica alemana de los identificadores de operandos S7-SCL con una descripción: • Indicación del identificador de operando: Prefijo de memoria (A, E, M, PA, PE) o bloque de datos (D) •...
Descripción del lenguaje Palabras clave de bloque Se utilizan para el direccionamiento absoluto de bloques. La tabla está clasificada según la nemotécnica alemana; además, se indica la nemotécnica inglesa. Nemotécnica Nemotécnica Prefijo de memoria o bloque de datos alemana inglesa Bloque de datos (Data Block) Bloque de función (Function Block) Función (Function)
Descripción del lenguaje 15.1.8 Sinopsis de token Un token es un elemento compuesto que se utiliza en reglas sintáticas como elemento básico y que aparece explicado en las reglas léxicas. El token se representa mediante un recuadro. El NOMBRE (en mayúsculas) corresponde al nombre de la regla léxica que se aplica a continuación (sin recuadro) Token <Nombre de regla>...
Descripción del lenguaje Mayúsculas y minúsculas En las palabras clave es irrelevante el uso de mayúsculas o de minúsculas, ya que la versión 4.0 de S7-SCL tampoco distingue entre mayúsculas y minúsculas cuando se trata de nombres predefinidos o nombres de libre elección, p. ej. para variables, así como de los símbolos de la tabla de símbolos.
Descripción del lenguaje 15.1.10 Asignación de nombres en S7-SCL Asignación de nombres de libre elección En general, existen dos posibilidades para asignar nombres: • Es posible asignar nombres personalizados en S7-SCL. Estos nombres deben cumplir la regla IDENTIFICADOR. La regla IDENTIFICADOR se puede utilizar para cualquier nombre dentro de S7-SCL.
Página 334
Descripción del lenguaje Restricciones Durante la asignación de nombres debe tener en cuenta una serie de restricciones. Los nombres deben ser unívocos dentro de su rango de validez; es decir, los nombres que ya se han adjudicado dentro de un bloque no pueden utilizarse otra vez en el mismo bloque. Asimismo, tampoco pueden utilizarse los siguientes nombres ya asignados por el sistema: •...
Página 335
Descripción del lenguaje IDENTIFICADOR DE BLOQUE En la regla IDENTIFICADOR DE BLOQUE puede introducir IDENTIFICADOR y Símbolo de forma alternativa: IDENTIFICACION DE BLOQUE Palabra clave Número de bloque DB, FB, FC, OB, SDB, SFC, SFB, UDT IDENTIFICADOR Símbolo Las reglas IDENTIFICADOR DE TEMPORIZADOR E IDENTIFICADOR DE CONTADOR funcionan de forma análoga a la regla IDENTIFICADOR DE BLOQUE.
Descripción del lenguaje 15.1.11 Constantes predefinidas y OK flags Ambas tablas son válidas tanto para la nemotécnica alemana como para la inglesa. Constantes: Nemotécnica Descripción FALSE Constante booleana predefinida (constante estándar) con el valor 0. Tiene el significado lógico de que no se ha cumplido una condición. TRUE Constante booleana predefinida (constante estándar) con el valor 1.
Descripción del lenguaje 15.2 Reglas léxicas 15.2.1 Sinopsis de las reglas léxicas Las reglas léxicas determinan la estructura de los elementos (token) que se van a ejecutar durante el análisis léxico del compilador. Por ello, en la escritura no hay libertad de formato y deben respetarse estrictamente las reglas.
Página 338
Descripción del lenguaje Regla Diagrama sintáctico Identificador de temporizador Número En nemotécnica alemana e inglesa IDENTIFICADOR Símbolo Identificador de contador Número 'Z' en nemotécnica alemana 'C' en nemotécnica inglesa IDENTIFICADOR Símbolo Palabra clave Bloque Bloque de organización Función Función del sistema Bloque de función Bloque de función del sistema Bloque de datos...
Página 339
Descripción del lenguaje Regla Diagrama sintáctico Número Cifra S7-SCL V5.3 para S7-300/400 15-23 A5E00324652-01...
Página 340
Descripción del lenguaje 15.2.3 Constantes Regla Diagrama sintáctico Constante de bits CONSTANTE DE BITS BOOL# SECUENCIA DE CIFRAS DECIMAL BYTE# SECUENCIA DE CIFRAS OCTAL SEC. DE CIFRAS HEXADECIMAL SECUENCIA DE CIFRAS BINARIA WORD# CARÁCTER (1) DWORD# (1) sólo en el tipo de datos BYTE Constante entera CONSTANTE ENTERA SECUENCIA DE CIFRAS DECIMAL...
Página 341
Descripción del lenguaje Regla Diagrama sintáctico Secuencia de cifras binarias Cifra binaria Guión inferior Cifra binaria: 0 ó 1 Secuencia de cifras octales Secuencia de cifras en base ocho Cifra en base ocho Guión inferior Secuencia de cifras hexadecimales CIFRA HEXADECIMAL Cifra hexadecimal Cifra hexadecimal: 0 - 9 A - F...
Página 342
Descripción del lenguaje Regla Diagrama sintáctico Constante STRING CONSTANTE STRING Interrupción Carácter Carácter de cadena Carácter Interrupción de String Interrupción de String Blanco (blank), Salto de línea (linefeed) Retorno de carro (carriage return) Salto de página (formfeed, page) Signo de Tabulador horizontal (tabulator) formateado $>...
Página 343
Descripción del lenguaje Regla Diagrama sintáctico Fecha FECHA FECHA# Indicación de fecha Intervalo TIEMPO Representación decimal TIME# Representación escalonada Representación decimal - Cada unidad de tiempo (p.ej.: horas, minutos) sólo puede indicarse una vez. - Debe respetarse la secuencia: días, horas, minutos, segundos, milisegundos. Hora del día HORA DEL DIA TIME_OF_DAY#...
Página 344
Descripción del lenguaje Regla Diagrama sintáctico Indicación de la hora Indicación de hora del día SECUENCIA DE SECUENCIA DE CIFRAS DECIMALES CIFRAS DECIMALES Indicación de horas Indicación de minutos SECUENCIA DE SECUENCIA DE CIFRAS DECIMALES CIFRAS DECIMALES Indicación de segundos Indicación de milisegundos Representación decimal Representación decimal...
Página 345
Descripción del lenguaje Regla Diagrama sintáctico Representación escalonada Representación escalonada SECUENCIA DE SECUENCIA DE CIFRAS DECIMALES CIFRAS DECIMALES Días Horas SECUENCIA DE SECUENCIA DE CIFRAS DECIMALES CIFRAS DECIMALES Minutos Segundos SECUENCIA DE CIFRAS DECIMALES Milisegundos S7-SCL V5.3 para S7-300/400 15-29 A5E00324652-01...
Descripción del lenguaje 15.2.4 Direccionamiento absoluto Regla Diagrama sintáctico Acceso a memoria simple IDENTIFICADOR Dirección DE OPERANDO Acceso absoluto IDENTIFICADOR Acceso simbólico Símbolo Acceso a memoria indexado Expresión Expresión Prefijo de Prefijo de básica básica memoria tamaño Identificador de operandos Índice Sólo en el concepto bit Identificador de...
Página 347
Descripción del lenguaje Regla Diagrama sintáctico Identificador de operando DB Identificador de operando IDENTIFICADOR Prefijode DE DB tamaño Prefijo de memoria Prefijo de memoria Entrada Salida Marca Entrada de periferia Salida de periferia Nemotécnica inglesa Nemotécnica alemana Prefijo de tamaño para memoria y DB Prefijo de tamaño Byte...
Descripción del lenguaje 15.2.5 Comentarios Los factores más importantes que hay que tener en cuenta para la elaboración de comentarios son: • Se admite la anidado de comentarios cuando está activada la opción "Admitir comentarios anidados". • Es posible insertarlos en cualquier punto de las reglas sintácticas, pero no en las reglas léxicas.
Página 349
Descripción del lenguaje 15.2.6 Atributos de bloques Los atributos de bloque pueden aparecer con la siguiente sintaxis detrás del IDENTIFICADOR DE BLOQUE y delante de la declaración del primer bloque de variables o parámetros. Regla Diagrama sintáctico Título Versión SECUENCIA DE SECUENCIA DE VERSION CIFRAS DECIMALES...
Descripción del lenguaje 15.2.7 Opciones de compilador Las opciones de compilador figuran en una fila propia de la fuente, fuera de los límites de bloques. No se distingue entre mayúsculas y minúsculas. Regla Diagrama de sintaxis Opción de compilador S7-SCL V5.3 para S7-300/400 15-34 A5E00324652-01...
Descripción del lenguaje 15.3 Reglas sintácticas 15.3.1 Sinopsis de las reglas sintácticas Partiendo de las reglas léxicas, en las reglas sintácticas se describe la estructura de S7-SCL. En el contexto de estas reglas, puede crear su programa S7-SCL sin formatear: Cada regla va precedido de un nombre de regla.
Descripción del lenguaje 15.3.2 Segmentación de fuentes S7-SCL Regla Diagrama sintáctico Programa S7-SCL Unidad de programa SCL Unidad de programa S7-SCL Bloque de organización Función Bloque de función Bloque de datos Tipo de datos de usuario Bloque de organización Bloque de organización Identificación Tabla de declaración de OB ORGANIZATION_BLOCK...
Página 353
Descripción del lenguaje Regla Diagrama sintáctico Bloque de función Bloque de función PROGRAM Identificador Área de de FB declaración de FB FUNCTION_BLOCK END_PROGRAM BEGIN Área de instrucciones END_FUNCTION_BLOCK Bloque de datos Bloque de datos Identificación DATA_BLOCK Tabla de declaración de DB de DB BEGIN Tabla de asignación de DB...
Descripción del lenguaje 15.3.3 Estructura de las áreas de declaración Regla Diagrama sintáctico Área de declaración de Bloque de constantes Bloque de metas de salto Bloque de variables temporales Área de declaración de una FC Bloque de constantes Bloque de metas de salto Bloque de variables temporales Bloque de parámetros...
Página 355
Descripción del lenguaje Regla Diagrama sintáctico Área de asignación de Área de asignación de DB Variable simple Constante* * en notación AWL Bloque de constantes Bloque de constantes Expresión CONST END_CONST IDENTIFICADOR simple Nombre de constante Bloque de metas de salto Bloque de metas de salto IDENTIFICADOR LABEL...
Página 356
Descripción del lenguaje Regla Diagrama sintáctico Declaración de variables Especificación Inicialización IDENTIFICADOR de tipo de datos de tipo de datos Nombre de variable, nombre de parámetro Nombre de componente dentro de estructuras nombre de componente No en caso de inicialización Atributos del sistema para parámetros máx.
Página 357
Descripción del lenguaje Regla Diagrama sintáctico Declaración de instancia Declaración de instancia Los FB ya deben existir (sólo es posible en el apartado VAR de un FB) Identificador de FB IDENTIFICADOR Nombre de instancia local Identificación de SFB Bloque de variables temporales Bloque de variables temporales Declaración...
Página 358
Descripción del lenguaje Regla Diagrama sintáctico Especificación del tipo de Tipo de datos datos simple DATE_AND_TIME Especificación de tipo de datos STRING Especificación de tipo de datos ARRAY Especificación de tipo de datos STRUCT IDENTIFICACION DE UDT Especificación de tipo de datos de parámetro S7-SCL V5.3 para S7-300/400 15-42...
Descripción del lenguaje 15.3.4 Tipos de datos de S7-SCL Regla Diagrama sintáctico Tipo de datos simple Tipo de datos de bit Tipo de caracteres Tipo de datos numéricos Tipo de temporizador Tipo de datos de bits BOOL BYTE Byte WORD Palabra DWORD Doble palabra...
Página 360
Descripción del lenguaje Regla Diagrama sintáctico Tipo de tiempo S5TIME Temporizador, formato S5 TIME Temporizador TIME_OF_DAY Hora del día DATE Fecha DATE_AND_TIME DATE_AND_TIME DATE_AND_TIME# Indicación de fecha Indicación de hora Especificación de tipo de datos ARRAY Especificación del tipo de Especificación de índice datos ARRAY Indice...
Página 361
Descripción del lenguaje Regla Diagrama sintáctico Especificación del tipo de TIMER Temporizaddor parámetro COUNTER Contador Cualquier tipo POINTER Dirección BLOCK_FC Función BLOCK_FB Bloque de función Bloque de datos BLOCK_DB BLOCK_SDB Bloque de datos del sistema S7-SCL V5.3 para S7-300/400 15-45 A5E00324652-01...
Página 362
Descripción del lenguaje 15.3.5 Área de instrucciones Regla Diagrama sintáctico Área de instrucciones Area de instrucciones Instrucción IDENTIFICADOR Meta de salto Instrucción Instrucción Asignación de valor Procesamiento de subrutinas Instrucción de control Asignación de valor Asignación de valor Expresión Variable simple Variable absoluta en áreas de memoria de la CPU Variable en DB...
Página 363
Descripción del lenguaje Regla Diagrama sintáctico Variable simple IDENTIFICADOR Nombre de variable o nombre de parámetro Variable estructurada Array simple Variable estructurada Es al principio, IDENTIFICADOR el identificador nombre de variable o nombre de parámetro, y Array simple después del punto, nombre de componente S7-SCL V5.3 para S7-300/400 15-47...
Página 364
Descripción del lenguaje 15.3.6 Llamada a funciones y bloques de función Regla Diagrama sintáctico Llamada a FB Llamada a FB FB: bloque de función SFB: bloque de función del sistema IDENTIFICADOR DE FB Nombre de instancia global IDENTIFICADOR IDENTIFICADOR Parámetro de FB DE DB DE SFB IDENTIFICADOR...
Página 365
Descripción del lenguaje Regla Diagrama sintáctico Asignación de entrada Asignación de entrada Parámetro actual Expresión IDENTIFICADOR DE TEMPORIZADOR IDENTIFICADOR IDENTIFICADOR Nombre del paráme DE CONTADOR tro de entrada IDENTIFICADOR (parámetro formal) DE BLOQUE Asignación de de Asignación de entrada/salida entrada/salida Variable IDENTIFICADOR ampliada...
Página 366
Descripción del lenguaje 15.3.7 Instrucciones de control Regla Diagrama sintáctico Instrucción IF Instrucción IF No olvide escribir un punto y Area de Expresión THEN coma detrás de la palabra instrucciones clave END_IF. Condición Area de ELSIF Expresión THEN instrucciones Condición Area de END_IF ELSE...
Página 367
Descripción del lenguaje Regla Diagrama sintáctico Lista de valores Lista de valores Número entero Valor Valor Valor Valor Constante numérica IDENTIFICADOR Nombre de constante Intrucciones de Instrucción repetición de de salto Instrucción WHILE Instrucción REPEAT Instrucción CONTINUE Instrucción EXIT Instrucción RETURN Instrucción GOTO...
Página 368
Descripción del lenguaje Regla Diagrama sintáctico Instrucción FOR Instrucción FOR Asignación Expresión No olvide escribir un punto y inicial básica coma detrás de la palabra para valor inicial para valor final clave END_FOR. Expresión Area de básica instrucciones para ancho de paso END_FOR Asignación inicial Asignación inicial...
Página 369
Descripción del lenguaje Regla Diagrama sintáctico Instrucción EXIT Instrucción EXIT EXIT Instrucción GOTO Salto en el programa GOTO IDENTIFICADOR Meta de salto S7-SCL V5.3 para S7-300/400 15-53 A5E00324652-01...
Página 370
Descripción del lenguaje S7-SCL V5.3 para S7-300/400 15-54 A5E00324652-01...
Consejos y trucos División de dos valores enteros con resultado en formato REAL Programe la siguiente instrucción en SCL: Fraction:=Dividend/Divisor; donde fraction es un valor real y el dividendo y el divisor son valores enteros. Tenga en cuenta que, con operaciones de este tipo, el compilador S7-SCL ejecuta una conversión del tipo de datos implícita y, de esta forma, compila la instrucción anterior de este modo: Fraction:=INT_TO_REAL(Dividend/Divisor);...
Consejos y trucos Este ejemplo requiere menos memoria y menos tiempo de ejecución si se programa de la siguiente forma: VAR_TEMP tmp : STRUCT value : REAL; valor1 : REAL; valor2 : REAL; valor3 : REAL; END_STRUCT; END_VAR tmp := DB100.feld[i]; DB100.feld[i].value := tmp.valor1 * tmp.valor2 / tmp.valor3;...
Consejos y trucos Emisión de números reales al observar Al emitir números reales no representables, la función de test "Observar" puede suministrar los siguientes patrones: Valor Representación + infinity 1.#INFrandom-digits - infinity -1.#INFrandom-digits Indefinite digit.#INDrandom-digits NaN digit. #NANrandom-digits Visualización de programas S7-SCL en AWL Con el editor AWL/KOP/FUP se puede abrir un bloque S7-SCL para visualizar los comandos MC7 generados.
Página 374
Consejos y trucos Valor de retorno de las funciones estándar y las funciones de sistema de STEP 7 Muchas funciones estándar y de sistema de STEP 7 tienen un valor de función del tipo INT, que contiene el código de error. En el manual de referencia de estas funciones se indican los posibles códigos de error como constantes WORD del tipo "W#16#8093".
Consejos y trucos Asignación de estructuras con una longitud de bytes impar La longitud de una estructura se rellena siempre hasta el límite de una palabra. Para disponer una estructura sobre un número impar de bytes, S7-SCL ofrece la construcción AT: Ejemplo: theStruct : STRUCT twoBytes : ARRAY [0..1] OF BYTE;...
Página 376
Consejos y trucos S7-SCL V5.3 para S7-300/400 16-6 A5E00324652-01...
Página 377
Glosario Archivo fuente Parte de un programa que se crea con un editor gráfico o textual y a partir del que, por compilación, se crea un programa de usuario ejecutable . Área de declaración En caso de crear el programa con un editor de textos, los datos locales de un bloque lógico se declaran en el área de declaración.
Página 378
Glosario Bloque Los bloques son componentes del programa de usuario delimitados por su función, por su estructura o por el uso para el que están destinados. En STEP 7 hay bloques lógicos (FB, FC, OB, SFC; SFB), bloques de datos (DB, SDB) y tipos de datos de usuario (UDT). Bloque de datos (DB) Los bloque de datos son bloques que contienen los datos y parámetros con los que opera el programa de usuario.
Página 379
Glosario Cargar en el sistema de destino Transferir objetos cargables (p.ej. bloques lógicos) desde la unidad de programación a la memoria de carga de una CPU. Clase de bloque Los bloques se subdividen en dos clases, dependiendo de su contenido: bloques lógicos y bloques de datos.
Página 380
Glosario Contadores Los contadores son parte de la memoria de sistema de la CPU. El sistema operativo actualiza el contenido de estos contadores de forma asíncrona con respecto al programa de usuario. Con las instrucciones de STEP 7 se determina la función exacta de la célula de contaje (p.
Página 381
Glosario Declaración Mecanismo para definir un elemento del lenguaje. Una declaración contiene la conexión de un identificador con un elemento de lenguaje así como la asignación de atributos a tipos de datos. Declaración de variables La declaración de variables contiene la indicación de un nombre simbólico, un tipo de datos y, eventualmente, un valor inicial y un comentario.
Página 382
Glosario Enable out (ENO) En STEP 7 cada bloque tiene una salida "Enable Output" (ENO). Al terminar la ejecución de un bloque, el valor actual de la marca OK se deposita en ENO. Inmediatamente después de llamar a un bloque se puede comprobar, mediante el valor de ENO, si todas las operaciones del bloque se han ejecutado correctamente o si se han producido errores.
Página 383
Glosario Identificadores Combinación de letras, cifras y guiones bajos mediante la cual se designa un elemento del lenguaje. Imagen del proceso Los estados de señal de los módulos de salida y de entrada digitales se almacenan en la CPU en una imagen del proceso. Se disitingue entre la imagen del proceso de las entradas (PAE) y la de las salidas (PAA).
Página 384
Glosario Instrucción FOR Estructura de un programa. La instrucción FOR ejecuta una secuencia de instrucciones dentro de un bucle, en el que se van asignando valores consecutivos a una variable. Instrucción GOTO Estructura de un programa. Una instrucción GOTO tiene como consecuencia el salto inmediato a una meta de salto dada y, por tanto, a otra instrucción del mismo bloque.
Página 385
Glosario Marcas (M) Área de la memoria de sistema de una CPU SIMATIC S7. A ella se puede acceder leyendo o escribiendo (por bit, por byte, por palabra o por palabra doble). El usuario puede utilizar el área de marcas para guardar resultados intermedios. Memoria de sistema (área del sistema) La memoria de sistema está...
Glosario Online Online designa aquel estado operativo en el que la unidad de programación está conectada al sistema de automatización (de forma física o lógica). Operación Una operación es parte de una instrucción e indica qué tiene que hacer el procesador. Operando Un operando es parte de una instrucción e indica, con qué...
Página 387
Glosario Parámetro de entrada/salida Los parámetros de entrada/salida se encuentran en funciones y bloques de función. Con estos parámetros se transfieren datos al bloque llamado; allí se procesan y los resultados se vuelven a depositar a continuación en la misma variable. Parámetros de salida Los parámetros de salida de un bloque del programa de usuario permiten transferir resultados al bloque invocante.
Glosario Programación simbólica El lenguaje de programación S7-SCL permite utilizar cadenas de caracteres simbólicas en lugar de operandos. Así p.ej., es posible sustituir el operando A1.1 por la cadena "válvula_17". La tabla de símbolos establece la conexión entre el operando y la cadena de caracteres simbólica asignada éste.
Glosario Sección de declaración La declaración de variables de un bloque se divide en diversas secciones en las que se declaran los distintos parámetros del bloque. Por ejemplo, la sección de declaración IN contiene la declaración de los parámetros de entrada, y la sección de declaración OUT la declaración de los parámetros de salida.
Página 390
Glosario Tiempo de ciclo El tiempo de ciclo es el tiempo que necesita la CPU para ejecutar una vez el programa de usuario. Tiempo de vigilancia del ciclo Si el tiempo de ejecución del programa de usuario excede el tiempo establecido de vigilancia del, el sistema operativo genera un mensaje de error y la CPU pasa al estado STOP.
Glosario Tipo de datos 'Parámetro' Un tipo de parámetro es un tipo de datos especial para temporizadores, contadores y bloques. Puede utilizarse en parámetros de entrada de bloques de función y de funciones, y en parámetros de entrada/salida de bloques de función para transferir temporizadores, contadores y bloques al bloque llamado.
Página 392
Glosario S7-SCL V5.3 para S7-300/400 Glosario-16 A5E00324652-01...
Página 393
Índice alfabético Ajustar la hora 4-39 Alineación automática de las líneas 4-13 AND 11-10, 11-11 * 11-8, 11-9 ANY 7-18, 7-19 ** 11-8 Archivo de control de compilación 4-21, 6-25 Archivo de control para la compilación 4-21 Área de declaración 6-11, 8-3 - 8-13 definición 6-11 / 11-8 estructura 6-11...
Página 394
Índice alfabético Asignación de parámetros en funciones Borrado total de la memoria de la CPU 4-25 de contaje 13-3 Borrar texto 4-11 Asignación de parámetros en funciones Búfer de diagnóstico 4-40 de tiempo 13-11 Buscar texto 4-9 Asignación de valor 12-2 BYTE 7-3 asignaciones con variables de un tipo BYTE_TO_BOOL 14-3...
Página 395
Índice alfabético Contador 13-1 - 13-8 Designaciones asignación de parámetros en funciones regulación léxica 15-21 de contaje 13-3 Desigualdad 11-2 Contador ascendente y decrementante Desinstalar (S_CUD) 13-7 la autorización de utilización 2-5 Contador ascendente(S_CU) 13-6 DI_STRNG 14-19 Contar en sentido descendente Diagrama de flujo de ADQUISICION 3-17 (S_CD) 13-6 Diagrama de flujo de EVALUACIÓN 3-13...
Página 396
Índice alfabético Estructura de una fuente SCL 6-11 - 6-20 Estructura de una función (FC) 6-17 Estructura del área de declaración 6-11 I_STRNG 14-19 EXP 14-9 Identificador 5-6 EXPD 14-9 definición 5-6 Expresión booleana 11-12 ejemplos 5-6 Expresión simple 11-7 Reglas 5-6 Expresiones 11-2 - 11-14 Identificadores 15-17, 15-18...
Página 397
Índice alfabético Instrucciones de salto 12-12 Llamada de funciones de contaje 13-1 INT 7-3 Llamada de funciones de tiempo 13-9 INT_TO_CHAR 14-4 LN 14-9 INT_TO_WORD 14-4 LOG 14-9 Interface de usuario 4-2 LT_STRNG 14-18 Intrucciones 12-1 Intrucciones de control 6-14 instrucciones 6-14 Manejo de una fuente S7-SCL 4-5 regulación sintáctica 15-50...
Página 398
Índice alfabético Palabra doble 7-3 R_STRNG 14-20 Palabras clave 5-5, 15-10 REAL 7-3 Palabras reservadas 5-5 REAL_TO_DINT 14-4 Parámetro 7-16 REAL_TO_DWORD 2) 14-3 Parámetro actual 8-1 REAL_TO_INT 14-4 definición 8-1 Reemplazar texto 4-9 Parámetro de entrada 8-1, 12-42, 12-46 Reglas 5-1, 5-2, 5-3 asignación de entrada (FC) 12-42 para el uso de claves de licencia 2-5 definición 8-1...
Página 399
Índice alfabético STRING_TO_CHAR 14-4 descripción 7-1 STRNG_DI 14-19 Tipos de datos compuestos 7-2 - 7-7 STRNG_I 14-19 Tipos de datos de usuario (UDT) 6-23, 12-3 STRNG_R 14-20 Tipos de datos definidos por STRUCT 7-11, 7-12 el usuario (UDT) 7-13 Sustracción 11-2 Tipos de datos numéricos 7-3 Tipos de datos para parámetros 7-15, 7-16 Tipos de datos simples 7-1 - 7-4...
Página 400
Índice alfabético Variables temporales 8-1, 8-11 WORD_TO_BOOL 14-4 Vistas sobre áreas de variables 8-5 WORD_TO_BYTE 14-4 Visualizar el sistema de reloj de la CPU 4-41 WORD_TO_INT 14-4 Visualizar el tiempo de ciclo de la CPU 4-41 Visualizar las pilas de la CPU 4-42 Visualizar los bloques de la CPU 4-41 XOR 11-10 Visualizar los datos de comunicación...