Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Instalacin Disear un programa S7-SCL Manejo de S7-SCL Conceptos generales de S7-SCL Estructura de programas S7-SCL Tipos de datos Declaracin de variables y parmetros locales Declaracin de constantes y saltos Datos globales Expresiones, operaciones y operandos Instrucciones Contadores y temporizadores Funciones estndar de S7-SCL Descripcin del lenguaje Consejos y trucos Glosario, ndice alfabtico
Manual
Edicin 01/2005
A5E00324652-01
Consignas de seguridad
Este manual contiene las informaciones necesarias para la seguridad personal as como para la prevencin de daos materiales. Las informaciones para su seguridad personal estn resaltadas con un tringulo de advertencia; las informaciones para evitar nicamente daos materiales no llevan dicho tringulo. De acuerdo al grado de peligro las consignas se representan, de mayor a menor peligro, como sigue:
! ! !
Peligro
Significa que, si no se adoptan las medidas preventivas adecuadas se producir la muerte, o bien lesiones corporales graves.
Advertencia
Significa que, si no se adoptan las medidas preventivas adecuadas puede producirse la muerte o bien lesiones corporales graves.
Precaucin
Con tringulo de advertencia significa que si no se adoptan las medidas preventivas adecuadas, pueden producirse lesiones corporales.
Precaucin
Sin tringulo de advertencia significa que si no se adoptan las medidas preventivas adecuadas, pueden producirse daos materiales.
Atencin
Significa que puede producirse un resultado o estado no deseado si no se respeta la consigna de seguridad correspondiente. Si se dan varios niveles de peligro se usa siempre la consigna de seguridad ms estricta en cada caso. Si en una consigna de seguridad con tringulo de advertencia se alarma de posibles daos personales, la misma consigna puede contener tambin una advertencia sobre posibles daos materiales.
Personal cualificado
El equipo/sistema correspondiente slo deber instalarse y operarse respetando lo especificado en este documento. Slo est autorizado a intervenir en este equipo el personal cualificado. En el sentido del manual se trata de personas que disponen de los conocimientos tcnicos necesarios para poner en funcionamiento, conectar a tierra y marcar los aparatos, sistemas y circuitos de acuerdo con las normas estndar de seguridad.
Uso conforme
Considere lo siguiente:
Advertencia
El equipo o los componentes del sistema slo se podrn utilizar para los casos de aplicacin previstos en el catlogo y en la descripcin tcnica, y slo asociado a los equipos y componentes de Siemens y de tercera que han sido recomendados y homologados por Siemens. El funcionamiento correcto y seguro del producto presupone un transporte, un almacenamiento, una instalacin y un montaje conforme a las prcticas de la buena ingeniera, as como un manejo y un mantenimiento rigurosos.
Marcas registradas
Todos los nombres marcados con son marcas registradas de Siemens AG. Los restantes nombres y designaciones contenidos en el presente documento pueden ser marcas registradas cuya utilizacin por terceros para sus propios fines puede violar los derechos de sus titulares. Copyright Siemens AG 2005 All rights reserved
La divulgacin y reproduccin de este documento, as como el uso y la comunicacin de su contenido, no estn autorizados, a no ser que se obtenga el consentimiento expreso para ello. Los infractores quedan obligados a la indemnizacin por daos y perjuicios. Se reservan todos los derechos, en particular para el caso de concesin de patentes o de modelos de utilidad.
Exencin de responsabilidad
Hemos comprobado la concordancia del contenido de esta publicacin con el hardware y el software descritos. Sin embargo, como es imposible excluir desviaciones, no podemos hacernos responsable de la plena concordancia. El contenido de esta publicacin se revisa peridicamente; si es necesario, las posibles correcciones se incluyen en la siguiente edicin.
Siemens Aktiengesellschaft
A5E00324652-01
Prlogo
Finalidad del manual
Este manual proporciona un completo resumen acerca de la programacin con S7-SCL. Sirve de ayuda durante la instalacin 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. Este manual est dirigido a programadores de programas S7 y al personale encargado de la configuracin, la puesta en marcha y el mantenimiento de sistemas de automatizacin. Le recomendamos familiarizarse con el ejemplo del captulo 2 "Diseo de un programa S7-SCL". Este ejemplo ofrece una sencilla introduccin a la programacin con S7-SCL.
iii
Prlogo
Informacin bsica de STEP 7 compuesta por: STEP 7 V5.3: Introduccin y ejercicios prcticos, Getting Started Programar con STEP 7 V5.3 Configurar el hardware y la comunicacin con STEP 7 V5.3 De S5 a S7, Gua para facilitar la transicin
Nociones bsicas para el personal tcnico. Describe cmo realizar soluciones de control con el software STEP 7 para los sistemas S7-300/400.
Informacin de referencia STEP 7 con Manuales KOP/FUP/AWL para S7-300/400 Funciones estndar y de sistema para S7-300/400
Informacin de consulta que describe los lenguajes de programacin KOP, FUP y AWL y las funciones estndar y de sistema que integran STEP 7.
6ES7810-4CA07-8DW1
Ayudas en pantalla Ayuda acerca de S7-SCL Ayuda acerca de STEP 7 Ayudas de referencia acerca de AWL/KOP/FUP Ayuda de referencia acerca de SFB/SFC Ayuda de referencia acerca de bloques de organizacin Ayuda de referencia acerca de funciones IEC Ayuda de referencia acerca de atributos de sistema
Finalidad Informacin bsica y de Informacin bsica sobre cmo Informacin de referencia contextual
Nmero de referencia Componente del Componente del Componente del paquete de software STEP 7
iv
Prlogo
Ayuda en pantalla
La ayuda en pantalla le ofrece informacin en el lugar donde la necesite. As podr obtener informacin de forma rpida y especfica sin tener que buscar en los manuales. En la ayuda en pantalla encontrar: Temas de Ayuda: ofrece diferentes accesos para visualizar informacin de ayuda. Ayuda contextual (tecla F1): muestra informacin sobre el objeto seleccionado o el cuadro de dilogo y/o ventana activos. Introduccin: proporciona un breve resumen sobre el uso, las caractersticas esenciales y la funcionalidad de la aplicacin. Primeros pasos: describe los primeros pasos que debe realizar para obtener buenos resultados. Uso de la Ayuda: explica las posibilidades de las que dispone el usuario para encontrar determinada informacin en la Ayuda. Acerca de: proporciona informacin sobre la versin actual de la aplicacin.
Asistencia adicional
Si tiene preguntas relacionadas con el uso de los productos descritos en el manual a las que no encuentre respuesta, dirjase a la sucursal o al representante ms prximo de Siemens, en donde le pondrn en contacto con el especialista. Encontrar a su persona de contacto en la pgina de Internet: http://www.siemens.com/automation/partner Encontrar una gua sobre el conjunto de la informacin tcnica correspondiente a los distintos productos y sistemas SIMATIC en la pgina de Internet: http://www.siemens.com/simatic-tech-doku-portal Encontrar el catlogo y el sistema de pedidos on-line en: http://mall.automation.siemens.com/
Prlogo
Technical Support
Podr acceder al Technical Support de todos los productos de A&D a travs del formulario de Internet para el Support Request http://www.siemens.com/automation/support-request Telfono: Fax: + 49 180 5050 222 + 49 180 5050 223
vi
ndice
1 Presentacin del producto ......................................................................................................1-1 1.1 1.2 1.3 1.4 2 Campo de aplicacin de S7-SCL ................................................................................1-1 Funcionamiento de S7-SCL ........................................................................................1-2 Qu funciones ofrece S7-SCL? ................................................................................1-4 Novedades de la versin V5.3 SP1 ............................................................................1-6
Instalacin .................................................................................................................................2-1 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.2.2 Automation License Manager .....................................................................................2-1 Autorizacin de uso con el Automation License Manager ..........................................2-1 Instalar el Automation Licence Manager.....................................................................2-4 Reglas para el uso de claves de licencia ....................................................................2-5 Instalacin ...................................................................................................................2-6 Requisitos de instalacin.............................................................................................2-6 Instalacin de S7-SCL.................................................................................................2-6
Disear un programa S7-SCL..................................................................................................3-1 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.9.1 3.10 3.10.1 3.10.2 3.10.3 3.11 3.11.1 3.11.2 3.11.3 3.12 3.13 Bienvenido al ejemplo de iniciacin "Adquisicin de valores medidos"......................3-1 Planteamiento .............................................................................................................3-2 Crear un programa estructurado con S7-SCL ............................................................3-4 Definir las tareas parciales ..........................................................................................3-6 Definir los interfaces entre bloques .............................................................................3-8 Definir el interface de entrada/salida.........................................................................3-10 Definir la secuencia de bloques en la fuente ............................................................3-11 Definir los smbolos ...................................................................................................3-11 Crear la funcin CUADRADO ...................................................................................3-12 rea de instrucciones de la funcin CUADRADO ....................................................3-12 Crear el bloque de funcin EVALUACION................................................................3-13 Diagrama de flujo de EVALUACIN.........................................................................3-13 rea de declaracin del FB EVALUACION...............................................................3-14 rea de instrucciones del FB EVALUACION ............................................................3-15 Crear el bloque de funcin ADQUISICIN ...............................................................3-17 Diagrama de flujo de ADQUISICION ........................................................................3-17 rea de declaracin del FB ADQUISICION ..............................................................3-18 rea de instrucciones del FB ADQUISICION ...........................................................3-20 Crear el bloque de organizacin CICLO ...................................................................3-23 Datos del test ............................................................................................................3-25
Manejo de S7-SCL ....................................................................................................................4-1 4.1 4.2 4.3 4.4 4.4.1 4.4.2 4.4.3 4.4.4 Iniciar el software S7-SCL...........................................................................................4-1 Interface de usuario.....................................................................................................4-2 Personalizar el interface de usuario............................................................................4-3 Crear y manejar fuentes S7-SCL ................................................................................4-4 Crear una fuente S7-SCL............................................................................................4-4 Abrir una fuente S7-SCL .............................................................................................4-5 Cerrar una fuente S7-SCL...........................................................................................4-5 Abrir bloques ...............................................................................................................4-6
vii
ndice
4.4.5 4.4.6 4.4.7 4.5 4.5.1 4.5.2 4.5.3 4.6 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.6.8 4.6.9 4.6.10 4.6.11 4.6.12 4.6.12.1 4.6.12.2 4.6.12.3 4.6.12.4 4.6.12.5 4.7 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.8 4.8.1 4.8.2 4.8.3 4.8.4 4.9 4.9.1 4.9.2 4.10 4.10.1 4.10.2 4.10.3 4.10.4 4.10.4.1 4.10.5 4.10.5.1 4.10.5.2 4.10.5.3 4.10.5.4 4.10.5.5 4.10.5.6 4.10.6 4.10.6.1 4.10.6.2
Definir las propiedades de un objeto...........................................................................4-6 Crear fuentes S7-SCL con un editor estndar ............................................................4-6 Proteger bloques .........................................................................................................4-7 Reglas para las fuentes S7-SCL.................................................................................4-7 Reglas generales para las fuentes S7-SCL ................................................................4-7 Criterios para ordenar los bloques en el programa.....................................................4-8 Uso de direcciones simblicas ....................................................................................4-8 Editar en fuentes S7-SCL............................................................................................4-9 Deshacer la ltima accin ...........................................................................................4-9 Restablecer una accin...............................................................................................4-9 Buscar y reemplazar texto...........................................................................................4-9 Seleccionar texto.......................................................................................................4-10 Copiar texto ...............................................................................................................4-10 Cortar texto................................................................................................................4-11 Borrar texto................................................................................................................4-11 Posicionar el cursor en una lnea determinada.........................................................4-12 Sangrado de lneas acorde a la sintaxis ...................................................................4-13 Ajuste del estilo y color de la letra.............................................................................4-14 Posicionar marcadores en el texto fuente.................................................................4-15 Insertar plantillas .......................................................................................................4-16 Insertar plantillas de bloque ......................................................................................4-16 Insertar llamadas de bloque ......................................................................................4-16 Insertar plantillas para comentarios ..........................................................................4-16 Insertar plantillas de parmetros ...............................................................................4-17 Insertar estructuras de control ..................................................................................4-17 Compilar un programa S7-SCL .................................................................................4-18 Informacin importante sobre la compilacin............................................................4-18 Ajustar el compilador.................................................................................................4-19 Compilar el programa................................................................................................4-20 Crear un archivo de compilacin...............................................................................4-21 Eliminar errores despus de compilar.......................................................................4-21 Guardar e imprimir una fuente S7-SCL.....................................................................4-22 Guardar una fuente S7-SCL......................................................................................4-22 Ajustar el diseo de pgina .......................................................................................4-22 Imprimir una fuente S7-SCL......................................................................................4-23 Ajuste de las opciones de impresin.........................................................................4-24 Cargar los programas creados..................................................................................4-25 Borrado total de la memoria de la CPU ....................................................................4-25 Cargar programas de usuario en la CPU..................................................................4-25 Testear los programas creados ................................................................................4-27 Funciones de test de S7-SCL ...................................................................................4-27 Informacin importante sobre la funcin de test "Observar".....................................4-28 Informacin importante sobre "Test con puntos de parada/modo Paso a paso"......4-29 Pasos para observar .................................................................................................4-30 Definir un entorno de llamada para los bloques .......................................................4-31 Pasos para realizar el test con puntos de parada.....................................................4-32 Definir puntos de parada ...........................................................................................4-32 Iniciar el test con puntos de parada ..........................................................................4-32 Finalizar el test con puntos de parada ......................................................................4-33 Activar, desactivar y anular puntos de parada ..........................................................4-33 Definir un entorno de llamada para los puntos de parada ........................................4-34 Test en modo Paso a Paso .......................................................................................4-35 Uso de las funciones de test de STEP 7...................................................................4-36 Crear y/o mostrar los datos de referencia.................................................................4-36 Observar y forzar variables .......................................................................................4-37
viii
ndice
4.10.6.3 4.11 4.11.1 4.11.2 4.11.3 4.11.4 4.11.5 4.11.6 4.11.7 4.11.8 4.11.9 4.11.10 5
Comprobar la coherencia de los bloques..................................................................4-37 Visualizar y cambiar las propiedades de la CPU ......................................................4-39 Visualizar y cambiar el estado operativo de la CPU .................................................4-39 Visualizar y ajustar la fecha y la hora de la CPU ......................................................4-39 Visualizar los datos de la CPU ..................................................................................4-40 Leer el bfer de diagnstico de la CPU ....................................................................4-40 Visualizar y comprimir la memoria de usuario de la CPU.........................................4-40 Visualizar el tiempo de ciclo de la CPU ....................................................................4-41 Visualizar el sistema de reloj de la CPU ...................................................................4-41 Visualizar los bloques de la CPU ..............................................................................4-41 Visualizar los datos de comunicacin de la CPU......................................................4-42 Visualizar las pilas de la CPU ...................................................................................4-42
Conceptos generales de S7-SCL ............................................................................................5-1 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 Interpretacin de los diagramas sintcticos ................................................................5-1 Juego de caracteres....................................................................................................5-4 Palabras reservadas (palabras clave).........................................................................5-5 Identificadores .............................................................................................................5-6 Identificadores estndar ..............................................................................................5-7 Identificadores de bloques ..........................................................................................5-7 Identificadores de operandos ......................................................................................5-9 Identificadores de temporizadores ............................................................................5-10 Identificadores de contadores ...................................................................................5-10 Nmeros ....................................................................................................................5-11 Cadenas de caracteres .............................................................................................5-13 Smbolos....................................................................................................................5-14 Bloque de comentario ...............................................................................................5-15 Lnea de comentario..................................................................................................5-16 Variables....................................................................................................................5-17
Estructura de programas S7-SCL ...........................................................................................6-1 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 6.13 6.14 6.15 6.16 6.17 Bloques en fuentes S7-SCL ........................................................................................6-1 Criterios para ordenar los bloques en el programa.....................................................6-2 Estructura bsica de un bloque...................................................................................6-3 Principio y fin de bloque ..............................................................................................6-4 Atributos de bloques....................................................................................................6-6 Comentario del bloque ................................................................................................6-9 Atributos de sistema para bloques ............................................................................6-10 rea de declaracin ..................................................................................................6-11 Atributos de sistema para parmetros ......................................................................6-12 rea de instrucciones................................................................................................6-13 Instrucciones .............................................................................................................6-14 Estructura de un bloque de funcin (FB) ..................................................................6-15 Estructura de una funcin (FC) .................................................................................6-17 Estructura de un bloque de organizacin (OB) .........................................................6-19 Estructura de un bloque de datos (DB).....................................................................6-20 Estructura de un tipo de datos de usuario ................................................................6-23 Opciones del compilador en fuentes de S7-SCL ......................................................6-25
ix
ndice
Tipos de datos ..........................................................................................................................7-1 7.1 7.2 7.2.1 7.2.2 7.2.3 7.2.4 7.3 7.3.1 7.3.2 7.3.3 7.3.4 7.4 7.4.1 7.5 7.5.1 7.5.2 7.5.3 7.6 7.6.1 Sinopsis de los tipos de datos en S7-SCL ..................................................................7-1 Tipos de datos simples................................................................................................7-3 Tipo de datos Bit .........................................................................................................7-3 Tipo de datos Carcter................................................................................................7-3 Tipos de datos numricos ...........................................................................................7-3 Tipo de datos Tiempo..................................................................................................7-4 Tipos de datos compuestos ........................................................................................7-5 Tipo de datos DATE_AND_TIME................................................................................7-5 Tipo de datos STRING ................................................................................................7-7 Tipo de datos ARRAY .................................................................................................7-9 Tipo de datos STRUCT .............................................................................................7-11 Tipos de datos de usuario .........................................................................................7-13 Tipos de datos de usuario (UDT) ..............................................................................7-13 Tipos de datos para parmetros ...............................................................................7-15 Tipos de datos TIMER y COUNTER.........................................................................7-15 Tipo de datos BLOCK ...............................................................................................7-16 Tipo de datos POINTER............................................................................................7-16 Tipo de datos ANY ....................................................................................................7-18 Ejemplo del tipo de datos ANY .................................................................................7-19
Declaracin de variables y parmetros locales ....................................................................8-1 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.8.1 8.8.2 8.8.3 8.8.4 Variables locales y parmetros de bloque ..................................................................8-1 Sintaxis general de una declaracin de variables o de parmetros ...........................8-2 Inicializacin ................................................................................................................8-3 Declarar vistas sobre reas de variables ....................................................................8-5 Uso de multiinstancias ................................................................................................8-7 Declaracin de instancias ...........................................................................................8-7 Flags (OK flag) ............................................................................................................8-8 Secciones de declaracin ...........................................................................................8-9 Sinopsis de las secciones de declaracin...................................................................8-9 Variables estticas ....................................................................................................8-10 Variables temporales.................................................................................................8-11 Parmetros de bloques .............................................................................................8-12
Declaracin de constantes y saltos........................................................................................9-1 9.1 9.1.1 9.1.2 9.1.3 9.1.3.1 9.1.3.2 9.1.3.3 9.1.3.4 9.1.3.5 9.1.3.6 9.1.3.7 9.1.3.8 9.1.3.9 9.2 Constantes ..................................................................................................................9-1 Declaracin de nombres simblicos para constantes.................................................9-2 Tipos de datos de las constantes................................................................................9-3 Notacin de constantes...............................................................................................9-4 Constantes de bits ......................................................................................................9-6 Constante entera ........................................................................................................9-7 Constante real.............................................................................................................9-8 Constante CHAR (un solo carcter) ...........................................................................9-9 Constante STRING ...................................................................................................9-11 Constante de fecha...................................................................................................9-13 Constante de tiempo.................................................................................................9-14 Constantes de hora...................................................................................................9-16 Constante de fecha y hora........................................................................................9-17 Declaracin de metas de salto ..................................................................................9-18
ndice
10
Datos globales ........................................................................................................................10-1 10.1 10.2 10.2.1 10.2.2 10.2.3 10.2.4 10.3 10.3.1 10.3.2 10.3.3 10.3.4 Sinopsis de los datos globales ..................................................................................10-1 reas de memoria de la CPU ...................................................................................10-2 Sinopsis de las reas de memoria de la CPU ..........................................................10-2 Acceso absoluto a reas de memoria de la CPU .....................................................10-3 Acceso simblico a reas de memoria de la CPU ....................................................10-5 Acceso indizado a reas de memoria de la CPU .....................................................10-6 Bloques datos............................................................................................................10-7 Sinopsis de los bloques de datos..............................................................................10-7 Acceso absoluto a bloques de datos ........................................................................10-8 Acceso indizado a bloques de datos.......................................................................10-10 Acceso estructurado a bloques de datos ................................................................10-11
11
Expresiones, operaciones y operandos...............................................................................11-1 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 Sinopsis de las expresiones, operaciones y operandos ...........................................11-1 Operaciones ..............................................................................................................11-2 Operandos.................................................................................................................11-3 Sintaxis de una expresin .........................................................................................11-5 Expresin simple .......................................................................................................11-7 Expresiones aritmticas ............................................................................................11-8 Expresiones lgicas ................................................................................................11-10 Expresiones de comparacin ..................................................................................11-12
12
Instrucciones ..........................................................................................................................12-1 12.1 12.1.1 12.1.2 12.1.3 12.1.4 12.1.5 12.1.6 12.1.7 12.2 12.2.1 12.2.2 12.2.3 12.2.4 12.2.5 12.2.6 12.2.7 12.2.8 12.2.9 12.2.10 12.2.11 12.3 12.3.1 12.3.2 12.3.2.1 12.3.2.2 12.3.2.3 12.3.2.4 12.3.2.5 12.3.2.6 12.3.2.7 Asignaciones de valor ...............................................................................................12-1 Asignacin con variables de un tipo de datos simple ...............................................12-2 Asignacin con variables del tipo STRUCT y UDT ...................................................12-3 Asignacin con variables del tipo ARRAY ................................................................12-5 Asignacin con variables del tipo STRING ...............................................................12-7 Asignacin con variables del tipo DATE_AND_TIME...............................................12-8 Asignacin con variables absolutas para reas de memoria....................................12-9 Asignacin con variables globales ..........................................................................12-10 Instrucciones de control ..........................................................................................12-12 Sinopsis de las instrucciones de control .................................................................12-12 Condiciones.............................................................................................................12-13 Instruccin IF ...........................................................................................................12-14 Instruccin CASE ....................................................................................................12-16 Instruccin FOR ......................................................................................................12-18 Instruccin WHILE...................................................................................................12-21 Instruccin REPEAT................................................................................................12-22 Instruccin CONTINUE ...........................................................................................12-23 Instruccin EXIT ......................................................................................................12-24 Instruccin GOTO ...................................................................................................12-25 Instruccin RETURN ...............................................................................................12-26 Llamada a funciones y bloques de funcin .............................................................12-27 Llamada y transferencia de parmetros..................................................................12-27 Llamada a bloques de funcin ................................................................................12-29 Llamada a bloques de funcin (FB o SFB) .............................................................12-29 Asignacin de parmetros FB .................................................................................12-31 Asignacin de entrada (FB) ....................................................................................12-33 Asignacin de entrada/salida (FB) ..........................................................................12-34 Leer valores de salida (llamada a FB) ....................................................................12-35 Ejemplo de llamada como instancia global .............................................................12-36 Ejemplo de llamada como instancia local ...............................................................12-38
xi
ndice
12.3.3 12.3.3.1 12.3.3.2 12.3.3.3 12.3.3.4 12.3.3.5 12.3.3.6 12.3.4 12.3.4.1 12.3.4.2 13
Llamada a funciones ...............................................................................................12-39 Llamada a funciones (FC) .......................................................................................12-39 Valor de respuesta (FC) ..........................................................................................12-40 Parmetros de FC ...................................................................................................12-41 Asignacin de entrada (FC) ....................................................................................12-42 Asignacin de salida y de entrada/salida (FC) .......................................................12-43 Ejemplo de llamada a una funcin ..........................................................................12-45 Parmetros definidos implcitamente ......................................................................12-46 Parmetro de entrada EN .......................................................................................12-46 Parmetro de salida ENO .......................................................................................12-47
Contadores y temporizadores ...............................................................................................13-1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.1.5 13.1.6 13.1.7 13.1.8 13.2 13.2.1 13.2.2 13.2.3 13.2.4 13.2.5 13.2.6 13.2.7 13.2.8 13.2.9 13.2.10 13.2.11 Contadores ................................................................................................................13-1 Funciones de contaje ................................................................................................13-1 Llamada a funciones de contaje ...............................................................................13-1 Asignacin de parmetros en funciones de contaje .................................................13-3 Entrada y evaluacin del valor de contaje ................................................................13-5 Incrementar contador (S_CU) ...................................................................................13-6 Decrementar contador (S_CD) .................................................................................13-6 Incrementar/decrementar contador (S_CUD) ...........................................................13-7 Ejemplo de funciones de contaje ..............................................................................13-7 Temporizadores ........................................................................................................13-9 Funciones de temporizacin .....................................................................................13-9 Llamada a funciones de temporizacin.....................................................................13-9 Asignacin de parmetros en funciones de temporizacin ....................................13-11 Entrada y evaluacin del valor de temporizacin ...................................................13-13 Arrancar temporizador como impulso (S_PULSE) .................................................13-15 Arrancar temporizador como impulso prolongado (S_PEXT).................................13-16 Arrancar temporizador como retardo a la conexin (S_ODT) ................................13-17 Arrancar temporizador como retardo a la conexin con memoria (S_ODTS) ........13-18 Arrancar temporizador como retardo a la desconexin (S_OFFDT) ......................13-19 Ejemplo de funciones de temporizacin .................................................................13-20 Seleccin del temporizador correcto.......................................................................13-21
14
Funciones estndar de S7-SCL.............................................................................................14-1 14.1 14.1.1 14.1.2 14.1.2.1 14.1.3 14.1.3.1 14.1.3.2 14.1.3.3 14.2 14.2.1 14.2.2 14.2.3 14.2.4 14.3 14.3.1 14.4 14.4.1 14.4.2 14.4.3 14.4.4 Funciones de conversin del tipo de datos...............................................................14-1 Conversin del tipo de datos.....................................................................................14-1 Conversin implcita del tipo de datos ......................................................................14-2 Funciones de conversin de clase A ........................................................................14-2 Funciones estndar para la conversin explcita del tipo de datos ..........................14-3 Funciones de conversin de clase B ........................................................................14-3 Funciones de redondeo y truncado...........................................................................14-5 Ejemplos de conversin con funciones estndar......................................................14-7 Funciones estndar numricas .................................................................................14-9 Funciones estndar aritmticas bsicas ...................................................................14-9 Funciones logartmicas .............................................................................................14-9 Funciones trigonomtricas ......................................................................................14-10 Ejemplos de funciones estndar numricas ...........................................................14-10 Funciones estndar de cadena de bits ...................................................................14-11 Ejemplos de funciones estndar de cadena de bits ...............................................14-12 Funciones para procesar cadenas de caracteres ...................................................14-13 Funciones para manipular cadenas ........................................................................14-13 Funciones para comparar cadenas de caracteres..................................................14-17 Funciones para convertir el formato de datos.........................................................14-19 Ejemplo de procesamiento de cadenas de caracteres ...........................................14-21
xii
ndice
Funciones para la seleccin de valores ..................................................................14-23 Funciones para la seleccin de valores ..................................................................14-23 SFCs, SFBs y libreras estndar .............................................................................14-27 Funciones de sistema, bloques de funcin de sistema y librera estndar ............14-27 Interface de transferencia al OB .............................................................................14-29
Descripcin del lenguaje .......................................................................................................15-1 15.1 15.1.1 15.1.2 15.1.3 15.1.4 15.1.5 15.1.6 15.1.7 15.1.8 15.1.9 15.1.10 15.1.11 15.2 15.2.1 15.2.2 15.2.3 15.2.4 15.2.5 15.2.6 15.2.7 15.3 15.3.1 15.3.2 15.3.3 15.3.4 15.3.5 15.3.6 15.3.7 Descripcin formal.....................................................................................................15-1 Sinopsis de los diagramas sintcticos ......................................................................15-1 Reglas .......................................................................................................................15-2 Terminales de las reglas lxicas ...............................................................................15-5 Caracteres de formateo y de separacin y operaciones ..........................................15-7 Palabras clave e identificadores predefinidos.........................................................15-10 Identificadores de operando y palabras clave de bloques......................................15-13 Sinopsis de no terminales .......................................................................................15-14 Sinopsis de token ....................................................................................................15-15 Identificadores .........................................................................................................15-15 Asignacin de nombres en S7-SCL ........................................................................15-17 Constantes predefinidas y OK flags........................................................................15-20 Reglas lxicas .........................................................................................................15-21 Sinopsis de las reglas lxicas .................................................................................15-21 Identificadores .........................................................................................................15-21 Constantes ..............................................................................................................15-24 Direccionamiento absoluto ......................................................................................15-30 Comentarios ............................................................................................................15-32 Atributos de bloques................................................................................................15-33 Opciones de compilador..........................................................................................15-34 Reglas sintcticas ...................................................................................................15-35 Sinopsis de las reglas sintcticas ...........................................................................15-35 Segmentacin de fuentes S7-SCL..........................................................................15-36 Estructura de las reas de declaracin...................................................................15-38 Tipos de datos de S7-SCL ......................................................................................15-43 rea de instrucciones..............................................................................................15-46 Llamada a funciones y bloques de funcin .............................................................15-48 Instrucciones de control ..........................................................................................15-50
16
Consejos y trucos...................................................................................................................16-1
xiii
ndice
xiv
1.1
Certificado PLCopen
S7-SCL es un lenguaje textual de alto nivel ST (Structured Text) segn lo establecido en la norma IEC 61131-3 ST y ha sido preparado para la certificacin para el Reusability Level.
Campo de aplicacin
S7-SCL est optimizado para la programacin de autmatas programables y contiene tanto elementos del lenguaje de programacin PASCAL como elementos tpicos de PLCs, como entradas y salidas, temporizadores y contadores. S7-SCL resulta especialmente apropiado para resolver las siguientes tareas: Programacin de algoritmos complejos Programacin de funciones matemticas Gestin de datos y recetas Optimizacin del proceso
1-1
1.2
Funcionamiento de S7-SCL
Integracin en STEP 7
S7-SCL soporta el concepto de bloques de STEP 7.
OB
FC
FB
DB
UDT
SFC
SFB
Bloques STEP 7
Con S7-SCL se pueden crear los siguientes bloques de STEP 7: OB FC FB DB UDT En un programa S7 tambin se pueden combinar bloques de S7-SCL con bloques de otros lenguajes de programacin de STEP 7. Estos bloques se pueden llamar unos a otros. Los bloques de S7-SCL tambin se pueden almacenar en libreras y utilizarlos desde all en otros lenguajes. Como los programas de S7-SCL se pueden programar como fuentes ASCII, son fciles de importar y exportar. Los bloques de S7-SCL se pueden recompilar al lenguaje de programacin AWL de STEP 7 (lista de instrucciones). Sin embargo, tenga en cuenta que una vez guardados en AWL ya no se pueden editar en S7-SCL.
Entorno de desarrollo
S7-SCL ofrece en la prctica un potente entorno de desarrollo adaptado tanto a las caractersticas especficas de S7-SCL como a las de STEP 7. El entorno de desarrollo est formado por los siguientes componentes: Un editor para elaborar programas compuestos de funciones (FC), bloques de funcin (FB), bloques de organizacin (OB), bloques de datos (DB) y tipos de datos de usuario (UDT). El programador cuenta con la ayuda de potentes funciones. Un compilador por lotes para compilar a cdigo mquina MC7 el programa previamente editado. El cdigo MC7 generado puede ejecutarse en todas las CPU del sistema de automatizacin S7-300/400 a partir de la CPU 314. Un depurador que permite buscar errores lgicos de programacin en una compilacin sin errores. La bsqueda de errores se realiza en lenguaje fuente.
1-2
La figura siguiente ofrece una visin de conjunto de los componentes del entorno de desarrollo:
Editor
Compilador de lotes
Depurador
1-3
1.3
Libreras de bloques
Con S7-SCL se suministran bloques ya preparados en libreras, p. ej.: Funciones de sistema Funciones IEC Funciones de conversin Un cuadro de dilogo le ayudar a navegar por la librera. Al seleccionar un bloque se copia automticamente la plantilla de parmetros de la funcin en el archivo que se est editando. El usuario no tiene ms que introducir los parmetros deseados.
Plantillas de programa
El editor de S7-SCL ofrece diversas plantillas que se pueden insertar y que el usuario tan solo tiene que rellenar: Plantillas para bloques (p. ej. bloques de funcin, bloques de datos) y sus llamadas Plantillas para comentarios de bloques, parmetros de bloques y constantes Plantillas para estructuras de control (IF, CASE, FOR, WHILE, REPEAT)
1-4
1-5
1.4
Imprimir en color
Las fuentes de S7-SCL se pueden imprimir a partir de ahora en color.
1-6
Instalacin
2.1
2.1.1
Licencias
Para la utilizacin de paquetes de software de STEP 7 protegidos con licencia se requieren licencias. Una licencia se otorga a modo de derecho a la utilizacin de productos. Los representantes de este derecho son: El CoL (Certificate of License) y La clave de licencia.
2-1
Instalacin
Claves de licencia
La clave de licencia es el representante tcnico de una licencia (sello de licencia electrnico). Para cada software protegido por licencia SIEMENS AG otorga una clave de licencia. Slo si al abrir el software se detectar una clave de liencia vlida podr utilizarse el software correspondiente de acuerdo con las condiciones de licencia y de utilizacin relacionadas con la licencia en cuestin.
Notas Puede utilizar el software bsico sin clave de licencia para familiarizarse con la interfaz de usuario y con sus funciones. El uso ilimitado bajo la consideracin de las determinaciones jurdicas de la licencia slo es posible con una clave de licencia instalada. Si no ha instalado la clave de licencia le aparecer regularmente un aviso que le solicitar la instalacin de la clave.
Las claves de licencia pueden guardarse y transferirse a soportes individuales de la siguiente manera: En disquetes de claves de licencia, En discos duros locales y En memorias de disco duro de ordenadores y de redes Encontrar informacin detallada sobre el uso de claves de licencia en la ayuda en pantalla sobre el Automation License Manager.
2-2
Instalacin
Tipos de licencia
Para productos de software de Siemens AG se distingue entre los siguientes tipos de licencia orientadas a la aplicacin. El comportamiento del software depende de las claves de licencia de los diferentes tipos de licencia. El tipo de utilizacin depende a su vez del correspondiente Certificate of License.
Tipo de licencia Single License Floating License Trial License Descripcin La utilizacin del software es ilimitada en tiempo y es posible en cualquier ordenador. Derecho de utilizacin temporalmente ilimitada sujeta a la utilizacin en red ("remote"Nutzung) de un software. El uso del software est limitado a: Rental License
Una validez mxima de 14 das, Un nmero determinado de das a partir de la primera utilizacin, El uso para pruebas y para validacin (exclusin de responsabilidades).
El uso del software est limitado a : una validez de 50 das como mximo un determinado nmero de horas al ser utilizado
Upgrade License
Para una actualizacin pueden ser necesarios determinados requisitos en cuanto al estado del sistema: Con una licencia de actualizacin puede convertirse la licencia de una antigua versin x a una versin >x+.... Una actualizacin puede ser necesaria p.ej. por la ampliacin del equipamiento.
2-3
Instalacin
2.1.2
Notas
Consulte informacin detallada sobre el procedimiento de instalacin del Automation License Manager en el archivo Lame.wri actual del Automation License Manager.
En la ayuda en pantalla sobre Automation License Manager encontrar toda la informacin necesaria sobre la funcionalidad y el uso de claves de licencia.
Notas
Puede utilizar el software sin clave de licencia para familiarizarse con la interfaz de usuario y con sus funciones. El uso ilimitado bajo la consideracin de las determinaciones jurdicas de la licencia slo es posible con una clave de licencia instalada.
Si no ha instalado la clave de licencia le aparecer regularmente un aviso que le solicitar la instalacin de la clave.
Para instalar la clave de licencia posteriormente dispone de las siguientes posibilidades: Instalar las claves de licencia desde diquets Instalar las claves de licencia a travs de WebDownLoad (es necesaria una solicitud previa) Utilizando las claves de Floating License disponibles en la red. Encontrar informacin detallada sobre el procedimiento en la ayuda en pantalla sobre el Automation License Manager, a la que puede acceder tras la instalacin pulsando la tecla F1 o con el comando de men Ayuda > Ayuda sobre el License Manager.
Notas
Las claves de licencia slo funcionarn en Windows 2000/XP si se encuentran en un soporte de disco duro con acceso de escritura.
Las Floating Licenses tambin puede utilizarse a travs de una red, es decir en modo "remote".
2-4
Instalacin
2.1.3
Cuidado Tenga en cuenta las indicaciones sobre el uso de claves de licencia especificadas en la ayuda en pantalla as como en el archivo Lame.wri referente al Automation License Manager. Si no las observa es posible que pierda las claves de licencia de forma irrecuperable.
La ayuda en pantalla referente al Automation License Manager se puede abrir contextualmente pulsando la tecla F1 o con el comando de men Ayuda > Ayuda sobre el Automation License Manager. En esta ayuda encontrar toda la informacin necesaria sobre la funcionalidad y el uso de las claves de licencia.
2-5
Instalacin
2.2
2.2.1
Instalacin
Requisitos de instalacin
Requisitos de sistema
El paquete opcional S7-SCL V5.3 SP1 se ejecuta en una PG o en un PC con una instalacin del paquete bsico STEP 7 V5.3 o superior. Para ms informacin sobre los requisitos que debe cumplir el sistema operativo, consulte el archivo Leame.wri.
Requisitos de hardware
Para S7-SCL rigen los mismos requisitos que para el paquete bsico STEP 7. La capacidad de memoria que requiere el paquete opcional S7-SCL V5.3 SP1 se indica en archivo Lame.wri.
2.2.2
Instalacin de S7-SCL
2-6
3.1
Qu aprender?
El ejemplo de iniciacin ilustra cmo configurar S7-SCL de forma eficaz. Al principio, las preguntas ms frecuentes son p. ej.: Cmo se trabaja con S7-SCL al disear programas? Qu medios ofrece el lenguaje S7-SCL para solucionar la tarea planteada? De qu funciones de test dispongo? En este captulo se dar respuesta a stas y otras preguntas.
Hardware necesario
El programa de ejemplo se puede ejecutar en un SIMATIC S7-300 o SIMATIC S7-400 con la siguiente periferia: un mdulo de entrada de 16 canales un mdulo de salida de 16 canales
3-1
3.2
Planteamiento
Resumen
La tarea consiste en adquirir valores medidos a travs de un mdulo de entrada y clasificarlos y procesarlos con un programa S7-SCL. Los resultados deben visualizarse en el mdulo de salida.
Introducir datos
Interruptor de entrada Valor medido
1 1 1 1 1 1 1 1
255
Raz Cuadrado
255 127 63 31 15 7 3 1
Adquirir valores medidos
1 3 7 15 31 63 127 255
Clasificar valores medidos Clculos
1 2 3 4 6 8 11 16
(* = Desbordamiento)
Calcular resultados
3-2
Salidas ajustables
En el mdulo de salida slo se puede mostrar un valor. Por eso se programarn las siguientes opciones: Seleccin de un elemento de una lista Seleccin entre valor medido, raz y cuadrado La seleccin del valor mostrado se realiza de la manera siguiente: Con tres interruptores se ajusta una codificacin que se acepta al detectarse un flanco en el cuarto interruptor, el interruptor de codificacin. A partir de aqu se calcula la direccin con la que se direccionar la salida. Con la misma direccin se ponen a disposicin tres valores para la salida: valor medido, raz y cuadrado. Para seleccionar uno de estos valores, hay que programar dos conmutadores.
Introducir datos
Interruptor en mdulo de entrada Codificacin Dos conmutadores 1 1 0
0
Raz o cuadrado
1
Valor medido o resultado
Valor medido
Raz
Cuadrado
1 3 7 15 31 63 127 255
Direccin Valores clasificados Direccin Conmutador
(* = Desbordamiento)
Salida de datos
Visualizacin en mdulos de salida
4
Salida
3-3
3.3
Tipos de bloques
La mejor manera de solucionar la tarea planteada es mediante un programa S7-SCL estructurado. Dicho programa tiene estructura modular; es decir, se compone de bloques que procesan una o varias tareas parciales. Al igual que los lenguajes de programacin de STEP 7, S7-SCL ofrece los siguientes tipos de bloques.
OB
Los bloques de organizacin forman la interface entre el sistema operativo de la CPU S7 y el programa de usuario. Aqu se determina la secuencia de ejecucin de los bloques del programa de usuario. Los bloques de funcin son bloques lgicos con datos estticos. Dado que un FB dispone de memoria, se puede acceder a sus parmetros (p.ej. salidas) desde cualquier punto del programa de usuario. Las funciones son bloques lgicos sin memoria. Dado que no existe memoria, hay que procesar los valores calculados justo despus de llamar a la funcin. Los bloques de datos son reas de datos en las que se guardan los datos de usuario. Existen bloques de datos globales, a los que se puede acceder desde todos los bloques lgicos, y DB de instancia asignados a una llamada a FB determinada. Los tipos de datos definidos por el usuario son tipos de datos configurados que se pueden definir segn las necesidades del usuario y son de uso mltiple. Estos datos se emplean para generar varios bloques de datos con la misma configuracin. Los UDT se utilizan como bloques.
FB
Bloques de STEP 7
FC
DB
UDT
3-4
Carpeta de bloques
Offline
3-5
3.4
Tareas parciales
Las tareas parciales aparecen representadas en forma de cuadros en la siguiente figura. Las rectngulos sobre fondo gris representan los bloques. La disposicin de los bloques lgicos de izquierda a derecha se corresponde con la secuencia de llamada.
CICLO Bloque de organizacin (OB) Entrada de datos Llamada cclica Salida de datos
Calcular resultados
3-6
FB "ADQUISICION"
Al seleccionar el tipo de bloque para resolver las tareas parciales Clasificacin valores medidos y Clculo de resultados hay que tener en cuenta que es necesario crear un bfer de salida que contenga los resultados de clculo raz y cuadrado de cada valor medido. Por este motivo el nico bloque posible es un FB. Dado que el FB es llamado por un FB de orden superior, no necesita ningn DB propio. Sus datos de instancia se pueden crear en el bloque de datos de instancia del FB invocante. La FC resulta idnea para resolver la tarea parcial Clculo de raz o cuadrado porque se puede producir el retorno del resultado como valor de la funcin. Adems, para el clculo no se requiere ningn dato que deba conservarse ms de un ciclo de ejecucin del programa. Para calcular la raz se puede utilizar la funcin estndar de S7-SCL SQRT. Para calcular el cuadrado debe crearse una funcin CUADRADO, que tambin comprobar los lmites del rango.
FB "EVALUACION"
3-7
3.5
Resumen
El interface de un bloque se crea mediante parmetros a los que se puede acceder desde otros bloques. Los parmetros declarados en el bloque son comodines cuyos valores se determinan al efectuarse la llamada al bloque. Estos comodines se denominan parmetros formales y los valores asignados al llamar el bloque, parmetros actuales. Cuando se llama a un bloque se le transfieren datos de entrada en forma de parmetros actuales. Al retornar al bloque invocante se ponen a disposicin los datos de salida para su transferencia. Una funcin (FC) puede transferir su resultado como valor de la funcin. Los parmetros de bloque se pueden dividir en las siguientes categoras:
Parmetros de bloques Parmetros de entrada Significado Los parmetros de entrada asumen los valores de entrada actuales cuando se llama al bloque. Slo permiten accesos de lectura. Los parmetros de salida transfieren los valores de salida actuales al bloque invocante. Permiten accesos de lectura y escritura. Declaracin con VAR_INPUT
Parmetros de salida
VAR_OUTPUT
Parmetros de entrada/salida Cuando se efecta la llamada, los parmetros de entrada/salida asumen el valor actual de una variable, lo procesan y a continuacin devuelven los resultados a la misma variable.
VAR_IN_OUT
OB Ciclo
El OB CICLO no dispone de ningn parmetro formal. Llama al FB ADQUISICION y le asigna el valor medido y los datos de control para sus parmetros formales.
FB ADQUISICION
Nombre del parmetro intr_val_med nue_val nue_clas sel_funcion seleccion nue_sel sal_resultado sal_v_med Tipo de datos INT BOOL BOOL BOOL WORD BOOL DWORD DWORD Tipo de declaracin VAR_INPUT VAR_INPUT VAR_INPUT VAR_INPUT VAR_INPUT VAR_INPUT VAR_OUTPUT VAR_OUTPUT Descripcin Valor medido Interruptor para aceptar el valor medido en el bfer de anillo Interruptor para clasificar y evaluar valores medidos Conmutador para seleccionar raz o cuadrado Cdigo para seleccionar valor de salida Interruptor para aceptar la codificacin Salida del resultado calculado Salida del valor medido correspondiente
3-8
Evaluar
El FB ADQUISICION llama al FB EVALUACION. Ambos FB reciben como dato comn el array del valor medido que se clasificar. Por ello se declara como parmetro de entrada/salida. Para el resultado de clculo de la raz y del cuadrado se crea un array estructurado en forma de parmetro de salida. En la siguiente tabla se indican los parmetros formales:
Nombre bufer_clasif bufer_calculo Tipo de datos ARRAY[..] OF REAL ARRAY[..]OF STRUCT Tipo de declaracin VAR_IN_OUT VAR_OUTPUT Descripcin Array de valor medido, se corresponde con el bfer anular Array para resultados: estructura con los componentes "RAIZ" y "CUADRADO" del tipo INT
SQRT y cuadrado
Las funciones se llaman desde EVALUACION. Necesitan un valor de entrada y proporcionan un valor de funcin como resultado.
Nombre Valor SQRT Valor CUADRADO Tipo de datos REAL REAL INT INT Tipo de declaracin VAR_INPUT Valor de funcin VAR_INPUT Valor de funcin Descripcin Entrada para RAIZ Raz del valor de entrada Entrada para CUADRADO Cuadrado del valor de entrada
3-9
3.6
Sistema de automatizacin
Byte 1
Byte 5
Mdulo de entrada
Byte 0
E 0.3 E 0.4
0 1 2 3 4 5 6 7 0a7 Aceptacin del valor medido Inicio de clasificacin y clculo Selec. resultado: raz o cuadrado Selec. salida: Valor medido o resultado Codificacin bit 0 Codificacin bit 1 Codificacin bit 2 Aceptacin de la codificacin
Byte 1
Mdulo de Byte 4 salida
0 1 2 3 4 5 6 7
0a7
Byte ms significativo de la palabra de salida(bits 8 s 15) slo necesario en el clculo del cuadrado. En otros casos, 0.
0 1 2 3 4 5
0a7
Byte menos significativo de la palabra de salida (bits 0 a 7): valor medido o resultado: raz o cuadrado.
Byte 5
6 7
3-10
3.7
3.8
3-11
3.9
3.9.1
rea de instrucciones
En primer lugar se comprueba si el valor de entrada excede el lmite en el que el resultado es superior al rango permitido para enteros. En este caso se registrara el valor mximo para Integer. En caso contrario, se efectuara la operacin de elevar al cuadrado. El resultado se transfiere como valor de funcin. FUNCTION CUADRADO : INT (******************************************************************* Esta funcin proporciona como valor de funcin el cuadrado de entrada, o, en caso de desbordamiento, el valor mximo que puede representarse con enteros. ******************************************************************** *) VAR_INPUT valor : INT; END_VAR BEGIN IF valor <= 181 THEN CUADRADO := valor * valor; //Clculo del valor de la funcin ELSE CUADRADO := 32_767; // Definir valor mximo en desbordamiento END_IF; END_FUNCTION
3-12
3.10
I significa ndice
No
CAMBIO = TRUE
I := I-1
Cambiar ? FALSE I := 0
No
RAIZ CUADRADO
Adquirir los resultados en el array de resultados estructurado. Adquirir los resultados en el array de resultados estructurado.
I := I+1
Fin
3-13
CONST LIMITE := 7; END_CONST VAR_IN_OUT bufer_clasif : ARRAY[0..LIMITE] OF INT; END_VAR VAR_OUTPUT bufer_calculo : ARRAY[0..LIMITE] OF STRUCT raiz : INT; cuadrado : INT; END_STRUCT; END_VAR VAR_TEMP cambiar : BOOL; indice, ayuda : INT; n_valor, n_resultado: REAL; END_VAR
3-14
Este interface muestra el ncleo del intercambio de datos para procesar los valores medidos. Los valores se guardan en el bloque de datos de instancia ADQUISICION_DATOS ya que en el FB ADQUISICION invocante se ha creado una instancia local para el FB EVALUACION.
3-15
3-16
3.11
S Leer valor medido en el bfer de circulacin, recalcular el puntero Con la operacin MOD se real iza el bfer de circulacin: cuando se alcance el lmite, iniciar desde el principio.
S Clasificar bfer de circulacin y efectuar clculos (para hacerlo, crear rea de resultados)
VALORACION
S Primero desplazar los bits rele vantes hasta el borde derecho, y despus ocultar las posiciones no necesarias con AND
TRUE
Cargar: escribir elementos de la lista en los parme tros de salida junto con la direccin de salida,
Fin
3-17
Variables estticas: entre VAR y END_VAR. Incluida la declaracin de la instancia local para el bloque EVALUACION. CONST LIMITE := 7; NUMERO:= LIMITE + 1; END_CONST VAR_INPUT intr_val_med: INT ; // Nuevo valor medido nue_val : BOOL; // Aceptar valor medido en bfer de circulacin // "valores_medidos" nue_clas : BOOL; // Clasificar valores medidos sel_funcion : BOOL; // Seleccionar la funcin de clculo raiz/cuadrado nue_sel : BOOL; // Aceptar direccin de salida seleccion: WORD; // Direccin de salida END_VAR VAR_OUTPUT sal_resultado : INT; // valor calculado sal_v_med: INT; // valor medido correspondiente END_VAR VAR valores_medidos : ARRAY[0..LIMITE] OF INT := 8(0); bufer_resultado : ARRAY[0..LIMITE] OF STRUCT raiz : INT; cuadrado : INT; END_STRUCT; puntero : INT := 0; ant_val : BOOL := TRUE; ant_clas : BOOL := TRUE; ant_sel : BOOL := TRUE; //Direccin de salida convertida valorar_instancia: evaluacion; //Declarar instancia local END_VAR
3-18
Variables estticas
Se ha seleccionado el tipo de bloque FB porque hay datos que se deben mantener de un ciclo de programa al siguiente. Estos datos son las variables estticas declaradas en el bloque de declaracin "VAR, END_VAR". Las variables estticas son variables locales cuyo valor se mantiene en todos los recorridos del bloque. Sirven para guardar los valores de un bloque de funcin y se almacenan en el bloque de datos de instancia.
3-19
3-20
Clculo de la direccin
La siguiente figura muestra el clculo de la direccin: la palabra de entrada EW0 contiene en los bits 12 a 14 el cdigo que se acepta cuando en el interruptor de codificacin (bit 15) se detecta un flanco. Desplazando a la derecha con la funcin estndar SHR e inhibiendo los bits relevantes con una mscara AND se calcula la "direccin". Con esta direccin se escriben los elementos de array (resultado de clculo y valor medido correspondiente) en los parmetros de salida. Que la salida sea raz o cuadrado depende de la "seleccin de funcin". Un flanco en el interruptor de codificacin se detecta porque el "valor nuevo" cambia respecto al "valor antiguo".
Palabra de la memoria
0 1 2 3 4 5 6 7 Byte0 0 1 2 3 4 5 6 7 Byte1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 EW0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
"direccin"
3-21
rea de instrucciones
El rea de instrucciones del bloque lgico presenta la siguiente estructura: BEGIN (******************************************************************* Parte 1 : 'Adquisicion' de 'valores_medidos' Al cambiar "nue_val" se produce la entrada del valor medido. Con la operacin MOD se ejecuta un bfer de circulacin para valores medidos. *******************************************************************) IF nue_val <> ant_val THEN puntero := puntero MOD NUMERO; valores_medidos[puntero] := Intr_val_med; puntero := puntero + 1; END_IF; ant_val := nue_val; (******************************************************************* Parte 2 : Iniciar 'Clasificacin' y 'Clculo' Al cambiar "nue_clas" se inicia la clasificacin del bfer de circulacin y la ejecucin de los clculos con los valores medidos. Los resultados se guardan en un nuevo array, "bufer_calculo". *) IF nue_clas <> ant_clas THEN puntero := 0; //Inicializar puntero del bfer //de circulacin valorar_instancia(bufer_clasif := valores_medidos); //Llamar evaluacion END_IF; ant_clas := nue_clas; bufer_resultado := valorar_instancia.bufer_calculo; //cuadrado y raiz (****************************************************************** (* Parte 3 : Valorar cdigo y preparar salida: Al cambiar "nue_sel" se determina de nuevo el cdigo para el direccionamiento del elemento de array para la salida: Los datos relevantes de 'seleccion' se ocultan y se transformen en entero. Dependiendo de la posicin del interruptor de "sel_funcion" en la salida se dispondr "RAIZ" o "CUADRADO" *) (******************************************************************) IF nue_sel <> ant_sel THEN direccion := WORD_TO_INT(SHR(IN := seleccion, N := 12) AND 16#0007); END_IF; ant_sel := nue_sel; IF sel_funcion THEN sal_resultado:= bufer_resultado[direccion].cuadrado; ELSE sal_resultado:= bufer_resultado[direccion].raiz; END_IF; sal_v_med := valores_medidos[direccion]; //indicacin del valor medido END_FUNCTION_BLOCK
3-22
3.12
3-23
3-24
3.13
Requisitos
Para el test se necesita un mdulo de entrada con la direccin 0 y un mdulo de salida con la direccin 4. Antes de efectuar el test, conmutar los 8 interruptores superiores del mdulo de entrada hacia la izquierda ("0") y los 8 interruptores inferiores hacia la derecha ("1"). Cargue previamente los bloques en la CPU, ya que tambin se comprueban los valores iniciales de las variables inmediatamente despus.
4a 4b
5a
5b
A la salida vuelve a aparecer 0, dado que por medio del proceso de clasificacin, el valor medido se ha vuelto a desplazar hacia arriba en el array. A la salida aparece otra vez el valor medido "11", ya que se trata del segundo valor ms alto del array.
3-25
Paso 8a
Accin
Resultado
8b
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 funcin Se visualiza el valor de salida 2 o el valor binario "10". (E0.2) obtendr tambin la raz.
Test adicional
En las siguientes tablas aparecen los interruptores del mdulo de entrada y patrones de test para la raz y el cuadrado. Adems, estas tablas le ayudarn a definir sus propios pasos de test: La entrada se realiza a travs de interruptores: el programa se puede controlar mediante los 8 interruptores superiores y los valores medidos se pueden ajustar con los 8 inferiores. La salida se realiza a travs de indicadores: en el grupo superior aparece el byte de salida ms significativo, y en el grupo inferior el menos significativo.
Interruptores de manejo Canal 0 Canal 1 Canal 2 Canal 3 Canal 4 Canal 5 Canal 6 Canal 7 Nombre del parmetro Explicacin
Interruptor de entrada Conmutacin para la validacin de valores medidos Interruptor de clasificacin Conmutacin para clasificacin/evaluacin Interruptor de funcin Interruptor hacia la izquierda ("0"): raz, Interruptor hacia la derecha ("1"): cuadrado Interruptor de salida Interruptor hacia la izquierda ("0"): valor medido, Interruptor hacia la derecha ("1"): resultado Codificacin Direccin de salida bit 0 Codificacin Direccin de salida bit 1 Codificacin Direccin de salida bit 2 Interruptor de codificacin Conmutacin para confirmacin de cdigo
La siguiente tabla contiene a ttulo de ejemplo 8 valores medidos en una secuencia ya clasificada. Introduzca los valores en cualquier orden. Ajuste la combinacin binaria deseada y acepte el valor correspondiente conmutando el interruptor de entrada. Una vez introducidos todos los valores inicie la clasificacin y evaluacin conmutando el interruptor de clasificacin. A continuacin puede visualizar los valores clasificados o los resultados - raz o cuadrado.
VALOR_MEDIDO 0000 0001 = 0000 0011 = 0000 0111 = 0000 1111 = 0001 1111 = 0011 1111 = 0111 1111 = 1111 1111 = 1 3 7 15 31 63 127 255 Raz 0, 0000 0001 = 1 0, 0000 0010 = 2 0, 0000 0011 = 3 0, 0000 0100 = 4 0, 0000 0110 = 6 0, 0000 1000 = 8 0, 0000 1011 = 11 0, 0001 0000 = 16 Cuadrado 0000 0000, 0000 0001 = 1 0000 0000, 0000 1001 = 9 0000 0000, 0011 0001 = 49 0000 0000, 1110 0001 = 225 0000 0011, 1100 0001 = 961 0000 1111, 1000 0001 = 3969 0011 1111, 0000 0001 = 16129 0111 111, 1111 1111 = Indicacin de desbordamiento
3-26
Manejo de S7-SCL
4.1
4-1
Manejo de S7-SCL
4.2
Interface de usuario
Las ventanas de S7-SCL estn formadas por los siguientes componentes estndar:
1. Barra de ttulo: incluye el ttulo de la ventana y smbolos para el control de ventanas. 2. Barra de mens: incluye todos los mens de que se dispone en la ventana. 3. Barra de herramientas: incluye botones que le permitirn ejecutar rpidamente los comandos de uso ms frecuente. 4. rea de trabajo: incluye las distintas ventanas para editar el texto del programa o leer datos del compilador o datos de test. 5. Barra de estado: indica el estado y otros datos sobre el objeto seleccionado.
4-2
Manejo de S7-SCL
4.3
Estilo/color de letra
Las preferencias de esta ficha slo tienen efecto si est activada la opcin "Utilizar los siguientes formatos" de la ficha "Formato" y se realizan los ajustes deseados.
Ventana "Resultados"
La ventana "Resultados" muestra los errores y advertencias que aparecen al compilar una fuente. Esta ventana se puede mostrar y ocultar con el comando de men Ver > Resultados.
4-3
Manejo de S7-SCL
4.4
4.4.1
Smbolos
2. En el cuadro de dilogo "Nuevo": un proyecto, el filtro "Fuente S7-SCL" y la carpeta "Fuentes" del programa S7.
3. Introduzca el nombre del objeto fuente en el cuadro de texto correspondiente. El nombre puede tener como mximo 24 caracteres. 4. Confirme con "Aceptar". El objeto fuente se crear con el nombre que se le haya asignado y se visualizar en una ventana de trabajo para su posterior edicin.
Nota Tambin puede crear una fuente S7-SCL con el Administrador SIMATIC seleccionando una carpeta de fuentes y eligiendo el comando de men Insertar > Software S7 > Fuente S7-SCL.
4-4
Manejo de S7-SCL
4.4.2
2. En el cuadro de dilogo seleccione: el proyecto deseado, el programa S7 deseado y la carpeta de fuentes correspondiente.
Nota Tambin puede abrir fuentes en el Administrador SIMATIC haciendo doble clic en su icono o eligiendo el comando de men Edicin > Abrir objeto despus de haber seleccionado el objeto deseado.
4.4.3
Nota Si ha modificado la fuente, se le preguntar si desea guardar las modificaciones antes de cerrar. Si no desea guardarlas, las modificaciones se perdern.
4-5
Manejo de S7-SCL
4.4.4
Abrir bloques
No es posible abrir bloques con la aplicacin 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 programacin AWL. No modifique el bloque en la representacin AWL ya que los comandos MC7 mostrados no representan necesariamente un bloque AWL vlido, una compilacin correcta con el compilador AWL requiere una serie de modificaciones para las que se requieren profundos conocimientos de AWL y S7-SCL, el bloque compilado con AWL no reconoce el lenguaje AWL y S7-SCL, la fuente S7-SCL y el cdigo MC7 dejan de ser coeherentes. Encontrar ms informacin en la ayuda en pantalla de STEP 7.
Nota Una forma ms sencilla de manejar los programas de CPU es realizando las modificaciones necesarias en las fuentes S7-SCL y compilndolas despus .
4.4.5
4.4.6
4-6
Manejo de S7-SCL
4.4.7
Proteger bloques
Es posible activar una proteccin de bloque indicando en la fuente el atributo KNOW_HOW_PROTECT al programar el bloque.
4.5
4.5.1
4-7
Manejo de S7-SCL
4.5.2
4.5.3
Nota Asegrese de que los nombes simblicos sean unvocos y no sean idnticos a palabras clave.
4-8
Manejo de S7-SCL
4.6
4.6.1
4.6.2
4.6.3
4-9
Manejo de S7-SCL
4.6.4
Seleccionar texto
Se puede seleccionar un texto determinado manteniendo pulsado la tecla del ratn y arrastrando el puntero del ratn por el rea de texto deseada. Adems, se puede: seleccionar el texto completo de una fuente eligiendo el comando de men Edicin > Seleccionar todo, seleccionar una sola palabra, haciendo doble clic en la misma, seleccionar una lnea completa haciendo clic en el margen izquierdo de dicha lnea. Con el comando de men Edicin > Cancelar seleccin puede anular la seleccin efectuada.
4.6.5
Copiar texto
Con esta funcin puede copiar partes de un programa o programas completos. El texto copiado se guardar en el portapapeles, pudindose insertar en otro lugar cuantas veces se desee. Proceda de la siguiente forma: 1. Seleccione el texto que va a copiar. 2. Copie el texto: haciendo clic en el botn "Copiar" de la barra de herramientas, o bien eligiendo el comando de men Edicin > Copiar.
3. Mueva el punto de insercin hasta el lugar (de la misma aplicacin o de otra distinta) en el que vaya a insertar el texto. 4. Inserte el texto: haciendo clic en el botn "Insertar" de la barra de herramientas, o bien eligiendo el comando de men Edicin > Pegar.
Nota
El texto no puede copiarse si el comando de men Edicin > Copiar no est activado (fondo gris).
Al ejecutar de nuevo los comandos de men Edicin > Cortar o Edicin > Copiar se reemplaza el contenido del portapapeles.
4-10
Manejo de S7-SCL
4.6.6
Cortar texto
Con esta funcin se mueve el texto seleccionado al portapapeles. Normalmente este comando de men se utiliza conjuntamente con el comando de men Edicin > Pegar, que inserta el contenido del portapapeles en la posicin actual del punto de insercin. Proceda de la siguiente forma: 1. Seleccione el texto que va a cortar. 2. Corte el texto: haciendo clic en el botn "Cortar" de la barra de herramientas, o bien eligiendo el comando de men Edicin > Cortar.
Nota
El texto seleccionado no se puede cortar si no est activado (fondo gris) el comando de men Edicin > Cortar. Con el comando de men Edicin > Pegar se inserta el texto cortado en otro lugar (del mismo programa o de otro programa diferente). El contenido del portapapeles se conserva hasta que se ejecuten otra vez los comandos de men Edicin > Cortar o Edicin > Copiar.
4.6.7
Borrar texto
Puede suprimir del texto fuente el texto seleccionado. Proceda de la siguiente forma: 1. Seleccione el texto que va a borrarse. 2. Elija el comando de men Edicin > Borrar. El texto borrado no se inserta en el portapapeles. El texto borrado puede insertarse de nuevo con el comando de men Edicin > Deshacer o Edicin > Restablecer.
4-11
Manejo de S7-SCL
4.6.8
4-12
Manejo de S7-SCL
4.6.9
Proceda de la siguiente forma: 1. Elija el comando de men Herramientas > Preferencias. 2. Elija la ficha "Formato" en el siguiente cuadro de dilogo. 3. Asegrese de que est activada la opcin "Utilizar los siguientes formatos". 4. Active la opcin "Sangrar automticamente" o "Sangrar palabras clave".
4-13
Manejo de S7-SCL
Proceda de la siguiente forma: 1. Elija el comando de men Herramientas > Preferencias. 2. Seleccione la ficha "Formato" del cuadro de dilogo que aparece a continuacin. 3. Asegrese de que la opcin "Utilizar los formatos siguientes al imprimir" est activa. 4. Realice los ajustes requeridos. Si selecciona el botn de comando "Ayuda" mientras est abierto el cuadro de dilogo, obtendr instrucciones precisas sobre dicho cuadro de dilogo.
4-14
Manejo de S7-SCL
Validez
Los marcadores permanecen activados mientras est abierta la fuente. No se almacenan con la fuente.
Insertar marcadores
1. Posicione el cursor en la lnea que desea marcar. 2. Elija el comando de men Edicin > Marcadores.
Borrar marcadores
Elija el comando de men Edicin > Borrar todos los marcadores.
Nota Las funciones necesarias para trabajar con marcadores estn disponibles en la barra de marcadores. Esta barra se visualiza con el comando de men Ver > Barra de marcadores.
4-15
Manejo de S7-SCL
4-16
Manejo de S7-SCL
4-17
Manejo de S7-SCL
4.7
4.7.1
4-18
Manejo de S7-SCL
4.7.2
Ajustar el compilador
Tambin es posible adaptar el proceso de compilacin a las propias exigencias. Proceda de la siguiente forma: 1. Elija el comando de men Herramientas > Preferencias para abrir el cuadro de dilogo "Preferencias". 2. Seleccione la ficha "Compilador" o la ficha "Crear bloque". 3. Introduzca las opciones en la ficha.
Activar OK flag
Posibilidad de anidar comentarios Seleccione esta opcin si desea anidar varios comentarios en su fuente S7-SCL. Nmero mx. de caracteres Aqu puede reducir la longitud estndar del tipo de datos STRING. En el ajuste predeterminado sta ocupa 254 caracteres. El ajuste se aplica a todos los parmetros de salida y de entrada/salida as como a los valores de respuesta de las funciones. Tenga en cuenta que el valor ajustado no debe ser menor que las variables STRING utilizadas en el programa.
4-19
Manejo de S7-SCL
4.7.3
Compilar el programa
Antes de poder comprobar o ejecutar un programa es necesario compilarlo. Para asegurarse de que est compilando la versin ms reciente de su fuente S7-SCL es aconsejable seleccionar el comando de men Herramientas > Preferencias y, antes de compilar, hacer clic en la opcin "Guardar" de la ficha "Editor". El comando de men Archivo > Compilar guarda la fuente S7-SCL de forma implcita.
6. En el cuadro de dilogo "Resultados" se visualizan todos los errores sintcticos y advertencias que se hayan producido al compilar el programa. Despus del proceso de compilacin corrija los errores detectados y repita el procedimiento descrito ms arriba.
4-20
Manejo de S7-SCL
4.7.4
3. En el cuadro de entrada de texto (mximo: 24 caracteres) introduzca el nombre del archivo de control, y confirme con "Aceptar". 4. El archivo se crear y se visualizar en una ventana de trabajo para su posterior procesamiento. En la ventana de trabajo introduzca en el orden deseado el nombre de las fuentes S7-SCL que va a compilar y guarde el archivo. 5. Inicie el proceso de compilacin con el comando de men Archivo > Compilar.
4.7.5
3. Infrmese sobre la sintaxis correcta en la descripcin del lenguaje S7-SCL. 4. Corrija el texto fuente. 5. Guardela fuente. 6. Compile de nuevo la fuente.
4-21
Manejo de S7-SCL
4.8
4.8.1
4.8.2
Atencin La orientacin de las pginas se ajusta en el cuadro de dilogo "Preparar pgina". Los ajustes del cuadro de dilogo "Instalar impresora" no son relevantes para la impresin de fuentes S7-SCL.
Con el comando de men Archivo > Presentacin preliminar se comprueban los ajustes efectuados antes de enviar el documento a la impresora.
4-22
Manejo de S7-SCL
4.8.3
3. En el cuadro de dilogo "Imprimir" seleccione las opciones de impresin (p.ej., el rea de impresin o el nmero de copias). 4. Confirme con "Aceptar".
4-23
Manejo de S7-SCL
4.8.4
Proceda de la siguiente forma: 1. Elija el comando de men Herramientas > Preferencias. 2. Seleccione la ficha "Imprimir" del cuadro de dilogo que aparece a continuacin. 3. Asegrese de que la opcin "Utilizar los formatos siguientes al imprimir" est activa. 4. Realice los ajustes que desee. Si selecciona el botn de comando "Ayuda" mientras est abierto el cuadro de dilogo, obtendr instrucciones precisas sobre dicho cuadro de dilogo.
4-24
Manejo de S7-SCL
4.9
4.9.1
Advertencia
La CPU se resetea. Se borran todos los datos de usuario. La CPU deshace todas las conexiones existentes.
Si hay insertada una Memory Card despus del borrado total la CPU copia el contenido de la Memory Card en la memoria de carga interna.
4.9.2
Requisitos
Al compilar una fuente S7-SCL, se generan bloques a partir de la fuente que se guardan en la carpeta "Bloques" del programa S7. Primero se buscan los bloques que se llaman en primera lnea desde los bloques S7-SCL, luego se copian automticamente en la carpeta "Bloques" y a continuacin se registran en la lista de carga. Los dems bloques del programa de usuario se cargan desde el Administrador SIMATIC de la unidad de programacin a la CPU. Para poder realizar la carga tiene que existir una conexin entre la PG y la CPU. El mdulo de la CPU debe tener asignado un programa de usuario online en el Administrador SIMATIC.
4-25
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. El comando de men Archivo > Carga parcial abre un cuadro de dilogo en el que puede seleccionar bloques individuales para la carga. Los bloques se transfieren a la CPU. Caso que uno de los bloques ya exista en la RAM de la CPU, indique si el bloque debe sobreescribirse o no.
Nota Conviene cargar el programa de usuario en el estado operativo STOP, puesto que al sobreescribir un programa antiguo en el estado operativo RUN pueden generarse errores.
4-26
Manejo de S7-SCL
4.10
Cuidado
Un test con la instalacin en marcha puede causar graves daos materiales y personales en caso de que se produzcan averas de funcionamiento o errores en el programa.
Antes de ejecutar las funciones de test asegrese de que no pueden producirse estados peligrosos.
4-27
Manejo de S7-SCL
rea de observacin
El volumen de instrucciones que pueden observarse est limitado por la capacidad de la CPU que est conectada. Como las instrucciones S7-SCL del cdigo fuente se corresponden con una cantidad indefinida de instrucciones en cdigo mquina, la longitud del rea de observacin es variable, y ser calculada y seleccionada por el depurador S7-SCL cuando se seleccione la primera instruccin del rea de observacin deseada. Adems existe la posibilidad de definir un rea de observacin determinada. Marque para ello las instrucciones que desea observar en la fuente.
Modos de test
La mayora de las veces esto prolonga los tiempos de ciclo. Para poder actuar sobre esta prolongacin S7-SCL ofrece dos modos diferentes:
Modo de funcionamiento Modo Test Explicacin En el modo "Test" el rea de observacin slo est limitada por las caractersticas de la CPU que est conectada. Se pueden utilizar todas las funciones de test sin ningn tipo de restriccin. El tiempo de ciclo de la CPU se puede prolongar considerablemente ya que, p.ej, se averigua el estado de las instrucciones en bucles programados durante cada ejecucin. En el modo "Proceso" el depurador S7-SCL restringe el tamao mximo del rea de observacin de forma que durante el test los tiempos de ciclo no superen o superen mnimamente los tiempos de ejecucin reales del proceso.
Modo Proceso
Limitaciones
Tenga en cuenta las siguientes limitaciones de la funcin "Observar": Las variables de un tipo de datos superior no se muestran en su totalidad. Los elementos de dichas variables se pueden observar siempre que sean de un tipo de datos simple. Las variables del tipo DATE_AND_TIME y STRING as como los parmetros del tipo BLOCK_FB, BLOCK_FC, BLOCK_DB, BLOCK_SDB, TIMER y COUNTER no se muestran. Los accesos a bloques de datos del tipo <simbolo>.<direccion_absoluta> no se muestran (p.ej. datos.DW4).
4-28
Manejo de S7-SCL
4.10.3 Informacin 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 instruccin a instruccin y visualizar cmo varan los valores de las variables procesadas. Una vez insertados los puntos de parada, es posible ejecutar el programa hasta un punto de parada y comenzar a observar el programa paso a paso desde dicho punto
Puntos de parada:
Los puntos de parada se pueden definir en cualquier lugar del rea de instrucciones del texto fuente. Para que se transfieran los puntos de parada al sistema de automatizacin y se activen es preciso ejecutar el comando de men Test > Activar puntos de parada. El nmero mximo de puntos de parada a activar depende de la CPU:
Requisitos:
No se puede modificar la fuente abierta con el editor.
4-29
Manejo de S7-SCL
5. Asegrese de que no pueden producirse estados peligrosos. 6. Elija el comando de men Test > Observar. 7. Desactive el comando de men Test > Observar para interrumpir la ejecucin del test. 8. Elija el comando de men Test >Finalizar test para finalizar el test.
Resultado
Se determina el rea de observacin mxima posible, la cual se representa mediante una barra gris en el borde izquierdo de la ventana. La ventana se divide en dos partes, y a la derecha aparecen los nombres y valores actuales de las variables situadas en el rea de observacin.
4-30
Manejo de S7-SCL
4-31
Manejo de S7-SCL
4-32
Manejo de S7-SCL
elija el comando de men Test > Ejecutar hasta seleccin o active el botn "Ejecutar hasta seleccin" 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 lnea que contenga una llamada a un bloque, elija el comando de men Test > Ejecutar llamada. Si el bloque subyacente se cre con S7-SCL, se abrir y procesar en el modo Test. Despus de procesarlo, el programa retornar a la posicin de llamada. Si el bloque se cre en otro lenguaje, no se tendr en cuenta la llamada y se marcar la siguiente lnea del programa.
Nota Los comandos de men Test > Ejecutar instruccin siguiente o Test > Ejecutar hasta seleccin posicionan y activan automticamente un punto de parada. Cuando seleccione dichas funciones, observe que no se haya alcanzado el nmero mximo de puntos de parada activos que admite la CPU en cuestin.
Para anular todos los puntos de parada, seleccione el comando de men Test > Borrar todos los puntos de parada.
4-33
Manejo de S7-SCL
4-34
Manejo de S7-SCL
4-35
Manejo de S7-SCL
4-36
Manejo de S7-SCL
Cuidado Si modifica valores de las variables con la instalacin en marcha pueden causarse graves daos materiales o personales en caso de que existan averas de funcionamiento o errores en el programa. Antes de ejecutar esta funcin asegrese de que no puedan producirse estados peligrosos.
Requisitos
Su equipo tiene que tener instalado STEP 7 V5.3 SP2 o superior. Una fuente a la que se deba aplicar la funcin "Comprobar coherencia de bloque" debe haber sido compilada con S7-SCL V5.3 SP1 o superior. S7-SCL debe estar instalado en el equipo en el que se va a comprobar la coherencia.
4-37
Manejo de S7-SCL
Procedimiento
1. Abra el Administrador SIMATIC. 2. Seleccione la carpeta "Bloques". 3. Elija el comando de men Edicin > 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: Conflictos de fecha y hora entre bloques y fuentes S7-SCL. Referencias entre los distintos bloques y los conflictos resultantes de interfaces. Cuando se detecta una incoherencia, se reinicia la compilacin de la fuente correspondiente. Si la fuente contiene varias fuentes de bloques, se vuelven a generar todos los bloques creados a partir de esta fuente. En la compilacin se aplican las opciones de compilacin que estn ajustadas en ese momento. Nota Para ms informacin sobre esta funcin, consulte la Ayuda de STEP 7.
4-38
Manejo de S7-SCL
4.11
Advertencia Modificar el estado operativo con la instalacin en marcha puede causar graves daos materiales y personales en caso de que se produzcan averas de funcionamiento o errores en el programa. Antes de ejecutar esta funcin asegrese de que no puedan producirse estados peligrosos.
4-39
Manejo de S7-SCL
Proceda de la siguiente forma: 1. Elija el comando de men Sistema de destino > Informacin del mdulo. 2. En el siguiente cuadro de dilogo elija la ficha "General".
4-40
Manejo de S7-SCL
4-41
Manejo de S7-SCL
4-42
5.1
Qu es un diagrama sintctico?
El diagrama sintctico es una representacin grfica de la estructura del lenguaje. La estructura se describe mediante una secuencia de reglas. Algunas reglas pueden basarse en reglas que hayan sido introducidas anteriormente.
Nombre de la regla
Secuencia
Bloque 3
Bloque 1
Bloque 2
Bloque 4 Bloque 5
Opcin Iteracin
Alternativa
El diagrama sintctico se lee de izquierda a derecha. Deben tenerse en cuenta las siguientes estructuras: Secuencia: Secuencia de bloques Opcin : Rama que se puede saltar Iteracin: Repeticin de ramas Alternativa: Ramificacin
5-1
Elemento bsico, que no precisa mayor explicacin. En este caso se trata de caracteres im primibles y caracteres especiales, pala bras clave e identificadores predefinidos. Los datos referidos a estos bloques de ben aceptarse sin cambios.
Regla lxica
IDENTIFICADOR Letra
_ Subrayado
Letra
Letra
Algunos ejemplos vlidos de la regla expuesta seran: R_REGULADOR _A_ARRAY _100_3_3_10 Algunos ejemplos no vlidos debido a los motivos expuestos seran: 1_1AB RR__20 *#AB
5-2
Regla sintctica
En las reglas sintcticas existe libertad de formato.
Variable simple
:=
Constante
Algunos ejemplos vlidos de la regla expuesta seran: VARIABLE_1 := 100; PULSADOR:=FALSE; VARIABLE_2 := 3.2;
5-3
5.2
Juego de caracteres
Letras y cifras
S7-SCL utiliza los siguientes caracteres del juego de caracteres ASCII: las letras (maysculas y minsculas ) de la A a la Z, la numeracin arbiga, de 0 a 9, los espacios en blanco: el espacio en blanco propiamente dicho (valor 32 de ASCII) y todos los caracteres de control (valores 0-31 de ASCII), incluido el carcter de final de lnea (valor 13 de ASCII).
Otros caracteres
Los siguientes caracteres tienen un significado fijo en S7-SCL:
+ : ; * $ / # = " < ' > { [ } ] % ( . ) ,
Nota En el captulo "Descripcin del lenguaje" encontrar una lista detallada de todos los caracteres que se pueden utilizar as como los datos para interpretar estos caracteres en S7-SCL.
5-4
5.3
5-5
5.4
Identificadores
Definicin
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 mximo de 24 letras (sin diresis) o de cifras dispuestas en cualquier orden con la nica limitacin de que el primer caracter tiene que ser una letra o un carcter de subrayado. Puede escribirse tanto en maysculas como en minsculas, pues no hay distincin entre maysculas y minsculas (por ejemplo, AnNa y AnnA son idnticos).
IDENTIFICADOR Letra
_ Subrayado
Letra
Letra
Ejemplos
Los nombres siguientes son ejemplos de identificadores vlidos.
X Suma Nombre Regulador y12 Temperatura Superficie Tabla
Los nombres siguientes no son identificadores vlidos por las razones indicadas.
4ter Array Valor S //El primer caracter tiene que ser una letra o //un carcter de subrayado //ARRAY es una palabra clave //No se admiten los espacios en blanco (tenga en cuenta //que un espacio en blanco no es ningn caracter).
Nota
Recuerde que el nombre no se asigna por medio de palabras clave o identificadores estndar. Lo mejor es que elija nombres unvocos y autoexplicativos que contribuyan a la comprensin de la fuente.
5-6
5.5
Identificadores estndar
S7-SCL ofrece una serie de identificadores predefinidos, llamados identificadores estndar. 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 los identificadores de contadores.
5.6
Identificadores de bloques
Definicin
Estos identificadores estndar se utilizan para el direccionamiento absoluto de bloques.
Reglas
La tabla est clasificada segn la nemotcnica espaola (SIMATIC); adems se indica la nemotcnica internacional (IEC). La letra x es un comodn que puede ser un nmero comprendido entre 0 y 65533 o entre 0 y 65535 en el caso de los temporizadores y contadores.
Nemotcnica (SIMATIC) DBx FBx FCx OBx SDBx SFCx SFBx Tx UDTx Zx Nemotcnica (IEC) DBx FBx FCx OBx SDBx SFCx SFBx Tx UDTx Cx Significado Bloque de datos (Data-Block). El nombre de bloque DB0 est reservada para S7-SCL. Bloque de funcin (Function-Block) Funcin (Function) Bloque de organizacin (Organization-Block) Bloque de datos del sistema (System-Data-Block) Funcin del sistema (System-Function) Bloque de funcin del sistema (System-Function-Block) Temporizador (Timer) Tipo de datos globales o tipo de datos de usuario (Userdefined Data-Type) Contador (Counter)
5-7
S7-SCL ofrece varias posibilidades para indicar el nombre de los bloques. Como nmero del bloque se puede introducir un nmero decimal entero.
Palabra clave de bloque DB, FB, FC, OB, UDT
Nmero
IDENTIFICADOR
Smbolo
Ejemplo
Los nombres siguientes son vlidos: FB10 DB100 T141
5-8
5.7
Identificadores de operandos
Definicin
Indicando el identificador del operando es posible acceder a las reas de memoria de una CPU desde cualquier posicin del programa.
Reglas
La tabla est clasificada segn la nemotcnica espaola (SIMATIC); adems se indica la nemotcnica internacional (IEC). Los identificadores de operandos para bloques de datos slo son vlidos junto con la indicacin del bloque de datos en cuestin.
Nemotcnica (SIMATIC) Ax.y ABx ADx AWx AXx.y Dx.y DBx DDx DWx DXx.y Ex.y EBx EDx EWx EXx.y Mx.y MBx.y MDx MWx.y MXx PABx PADx PAWx PEBx PEDx PEWx Nemotcnica direccionado (IEC) Qx.y QBx QDx QWx QXx.y Dx.y DBx DDx DWx DXx.y Ix.y IBx IDx IWx IXx.y Mx.y MBx.y MDx MWx MXx PQBx PQDx PQWx PIBx PIDx PIWx Salida (a travs de una imagen del proceso) Salida (a travs de una imagen del proceso) Salida (a travs de una imagen del proceso) Salida (a travs de una imagen del proceso) Salida (a travs de una imagen del proceso) Bloque de datos Bloque de datos Bloque de datos Bloque de datos Bloque de datos Entrada (a travs de la imagen del proceso) Entrada (a travs de la imagen del proceso) Tipo de dato Bit Byte Doble palabra Palabra Bit Bit Byte Doble palabra Palabra Bit Byte Doble palabra
Entrada (a travs de una imagen del proceso) Palabra Entrada (a travs de una imagen del proceso) Bit Marcas Marcas Marcas Marcas Marcas Salida (periferia directa) Salida (periferia directa) Salida (periferia directa) Entrada (periferia directa) Entrada (periferia directa) Entrada (periferia directa) Bit Byte Doble palabra Palabra Bit Byte Doble palabra Palabra Byte Doble palabra Palabra
Ejemplo
E1.0 MW10 PAW5 DB20.DW3
5-9
5.8
Reglas
Identificadores de temporizadores
S7-SCL ofrece varias posibilidades para indicar un temporizador. Como nmero del temporizador puede introducir un nmero decimal entero.
Nmero
Smbolo
5.9
Reglas
Identificadores de contadores
S7-SCL ofrece varias posibilidades para indicar un contador. Como nmero de contador se puede introducir un nmero decimal entero.
Nmero
Smbolo
5-10
5.10
Nmeros
S7-SCL permite utilizar distintas notaciones para los nmeros. Las reglas siguientes rigen para todos los nmeros: Un nmero puede incluir un signo, un punto decimal o un exponente. Un nmero no debe contener ni comas ni espacios en blanco. Para separar visualmente dos cifras puede utilizarse el carcter de subrayado ( _ ). El nmero puede ir precedido de un signo ms ( + ) o de un signo menos ( - ). Si el nmero no va precedido de ningn signo se considera positivo. Los nmeros no deben sobrepasar ni por exceso ni por defecto determinados valores mximos y mnimos.
Nmeros enteros
Un nmero entero no tiene ni punto decimal ni exponente. Por lo tanto, un nmero entero es tan slo una secuencia de cifras que puede ir precedida de un signo. En S7-SCL hay 2 tipos de nmeros enteros, con rangos numricos distintos, INT y DINT. Veamos algunos nmeros enteros vlidos:
0 743 1 -5280 +1 600_00 -1 -32_211
Los siguientes nmeros enteros son errneos por las razones indicadas:
123,456 36. 10 20 30
La coma no est permitida. Un nmero entero no debe contener ningn punto decimal. No est permitido el uso de espacios en blanco.
S7-SCL permite representar nmeros enteros en distintos sistemas de numeracin. Esto se hace anteponiendo la palabra clave que corresponde al sistema de numeracin. 2# representa el sistema binario; 8# representa el sistema en base 8 y 16# representa el sistema hexadecimal. Nmeros enteros vlidos para el decimal 15: 2#1111 8#17 16#F
5-11
Nmero real
Un nmero real debe contener o una coma decimal o un exponente (o ambos). La coma decimal debe indicarse entre dos dgitos. Por lo tanto, el nmero real no debe comenzar ni terminar con una coma decimal. Nmeros reales vlidos:
0.0 50000.0 1.0 -0.000743 -0.2 12.3 827.602 -315.0066
Los siguientes nmeros reales son errneos por las razones que se indican:
1. .3333
Tiene que haber un dgito a ambos lados de la coma decimal. 1,000.0 No se permite el uso de la coma. A ambos lados de la coma decimal debe haber un dgito.
Es posible incluir un exponente para determinar la posicin de la coma decimal. Si no se indica ninguna coma decimal, se presupone que sta figura a la derecha del dgito. El exponente tiene que ser un nmero entero positivo o negativo. La base 10 se sustituye por la letra E. El tamao 3 x 10 exponente10 se puede representar en S7-SCL con los siguientes nmeros reales:
3.0E+10 0.3E+11
3.0E10 0.3e11
3e+10 30.0E+9
3E10 30e9
Los siguientes nmeros reales son errneos por las razones que se indican:
A ambos lados de la coma decimal debe haber un dgito . El exponente tiene que ser un nmero entero. Tiene que haber un dgito a ambos lados de la coma decimal. No est permitido el uso de espacios en blancos.
5-12
5.11
Cadenas de caracteres
Definicin
Una cadena de caracteres es una secuencia de caracteres (es decir, de letras, cifras o caracteres especiales) encerrados entre comillas. Algunas cadenas de caracteres vlidas son: 'ROJO' '76181 Karlsruhe' '270-32-3456' '19,95 DM' 'La respuesta correcta es:'
Reglas
Los caracteres de formateo , las comillas ( ' ) y el carcter $ se pueden introducir con el smbolo $.
Texto fuente 'SIGN$'RED$'' '50.0$$' 'VAL$P' 'REG-$L' 'REGL$R 'STEP$T' Despus de compilar SEAL 'ROJO' 50.0$ VALOR Salto de pgina REG-Cambio de lnea REGLA Retorno de carro ETAPA Tabulador
Para los caracteres no imprimibles, introduzca su equivalente en cdigo hexadecimal mediante $hh, siendo hh el valor del carcter ASCII expresado en hexadecimal. Para interrumpir una cadena de caracteres (para comentarios que no tienen que imprimirse o visualizarse) el usuario dispone de los caracteres $> y $< .
5-13
5.12
Smbolos
En S7-SCL los smbolos se asignan con la siguiente sintaxis: Las comillas slo se deben indicar en caso de que el smbolo no cumpla la regla IDENTIFICADOR.
Sintaxis:
"
Carcter imprimible
"
5-14
5.13
Reglas
Bloque de comentario
El bloque de comentario puede abarcar varias lneas y comienza con "(*" y finaliza con "*)" para indicar que se trata de un bloque de comentario. De forma estndar est permitido anidar bloques de comentario. Este ajuste se puede cambiar en las preferencias, prohibiendo as el anidamiento de bloques de comentario. Un comentario no debe interrumpir ni un nombre simblico ni una constante. Sin embargo, est permitida la interrupcin de cadenas (strings).
Sintaxis
El bloque de comentario se representa formalmente por medio del siguiente diagrama sintctico:
Bloque de comentario (* Carcter *)
Ejemplo
(* Este es un ejemplo de un bloque de comentario que puede abarcar varias lneas.*) PULSADOR := 3 ; END_FUNCTION_BLOCK
5-15
5.14
Reglas
Lnea de comentario
La lnea de comentario se inicia con "//" y se extiende hasta el final de la lnea. La longitud del comentario est restringida a un mximo de 254 caracteres incluyendo los caracteres de inicio '//'. Un comentario no debe interrumpir ni un nombre simblico ni una constante. Sin embargo, est permitida la interrupcin de cadenas (strings).
Sintaxis
La lnea de comentario se representa formalmente con el siguiente diagrama sintctico:
Lnea de comentario
Carcter imprimible
//
Ejemplo
VAR INTERRUPTOR : INT ; // Lnea de comentario END_VAR
Nota
Los comentarios incluidos en el rea de declaracin que comienzan con // se adoptan en la interfaz del bloque y se pueden visualizar en el editor KOP/AWL/FUP. En el captulo "Descripcin del lenguaje" encontrar informacin sobre los caracteres imprimibles. En las lneas de comentario las parejas de caracteres "(*" y "*)" carecen de significado.
5-16
5.15
Variables
Un identificador cuyo valor se puede modificar durante la ejecucin del programa se denomina "variable". Cada variable debe ser explicada por separado (es decir, declarada) antes de poder utilizarla en un bloque lgico o en un bloque de datos. La declaracin de variables determina que un identificador es una variable (y no una constante etc.) y especifica el tipo de variable asignndole un tipo de datos. Dependiendo de la validez de las variables se distingue entre: datos locales, datos globales de usuario, y variables predefinidas permitidas (reas de memoria de una CPU).
Datos locales,
Los datos locales son datos que se declaran en un bloque lgico (FC, FB, OB) y que slo valen en dicho bloque. En particular, son:
Variable Variables estticas Significado Una variable esttica es una variable local cuyo valor se mantiene constante durante todas las ejecuciones del bloque (memoria del bloque). Sirve para guardar valores de un bloque de funcin. Las variables temporales pertenecen localmente a un bloque lgico y no ocupan ningn rea de memoria esttica. Su valor se conserva solamente durante una ejecucin del bloque. A las variables temporales no se puede acceder fuera del bloque en el que han sido declaradas. Los parmetros del bloque son parmetros formales de un bloque de funcin o de una funcin. Son variables locales que sirven para transferir los parmetros actuales indicados en la llamada.
Variables temporales
5-17
5-18
6.1
Tipos de bloques
Bloques disponibles:
OB
FC
FB
DB
UDT
Bloques STEP 7
Bloques preconfeccionados
No es necesario programar cada una de las funciones, pudiendo recurrir a los bloques preconfeccionados. Estos bloques, que residen en el sistema operativo de las CPUs o en las libreras (S7lib) del paquete bsico de STEP 7, se pueden utilizar, p.ej. para programar funciones de comunicacin.
6-1
6.2
asignado a
OB1
6-2
6.3
6-3
6.4
Funcin
FC
Bloque de organizacin
OB
Bloque de datos
DB
UDT
6-4
Nmero
IDENTIFICADOR
Smbolo
El nmero del bloque puede ser un valor comprendido entre 0 y 65533. Sin embargo el nombre del bloque de datos DB0 est reservado. Recuerde que el nombre o smbolo se debe definir en la tabla de smbolos de STEP 7.
Ejemplo
FUNCTION_BLOCK FB10 FUNCTION_BLOCK Bloque regulador FUNCTION_BLOCK "Regulador.B1&U2"
6-5
6.5
Atributos de bloques
Definicin
Un atributo de bloque es una propiedad del bloque que se puede utilizar, por ejemplo, para indicar el ttulo del bloque, la versin, la proteccin del bloque o el autor. Al seleccionar bloques para crear la aplicacin concreta puede hacerse mostrar las propiedades en el dilogo de propiedades de STEP 7. Se pueden asignar los siguientes atributos: Palabra clave / Atributo
TITLE='caracter_imprimible' VERSION : 'secuencia_de_numeros_decimales. secuencia_de_numeros_decimales'
Significado
Ttulo del bloque
Ejemplos
TITLE='CLASIFICAR'
Nmero de la versin del VERSION : '3-1' bloque //Con DB: (0..15) VERSION: 3.1 Nota: el atributo VERSION de los bloques de datos (DB) no se indica entre comillas. Proteccin del bloque; un KNOW_HOW_PROTECT bloque que haya sido compilado con esta opcin no se puede abrir con STEP 7. Nombre del autor: nombre de AUTHOR : Siemens la empresa, del departamento AUTHOR : 'A&D AS' u otros (IDENTIFICADOR y 'caracteres imprimibles) Nombre del bloque (IDENTIFICADOR y 'caracteres imprimibles') NAME : PID NAME : 'A&D AS'
KNOW_HOW_PROTECT
AUTHOR :
NAME:
FAMILY :
Nombre de la familia de FAMILY : Ejemplo bloques: p.ej., motores. FAMILY : 'A&D AS' Guarda el bloque en un grupo de bloques para poder encontrarlo rpidamente (IDENTIFICADOR y 'caracteres imprimibles).
6-6
Reglas
Los atributos del bloque se declaran mediante palabras clave directamente detrs de la instruccin de inicio del bloque. El identificador puede contener 8 caracteres como mximo. Los atributos del bloque se introducen con la siguiente sintaxis:
6-7
Ejemplos
FUNCTION_BLOCK FB10 TITLE = 'Promedio' VERSION : '2.1' KNOW_HOW_PROTECT AUTHOR : AUT_1
6-8
6.6
6-9
6.7
Definicin
Los atributos de sistema son atributos bsicos 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 despus de la instruccin de inicio del bloque. Los atributos se introducen con la siguiente sintaxis:
Atributos del sistema para bloques
mx. 24 caracteres
carcter imprimible
IDENTIFICADOR
:=
'
'
Ejemplos
FUNCTION_BLOCK FB10 {S7_m_c := 'true' ; S7_blockview := 'big'}
6-10
6.8
rea de declaracin
Definicin
El rea de declaracin permite declarar variables locales, parmetros, constantes y metas de salto. Variables, parmetros, constantes y metas de salto locales, es decir, que slo tienen validez dentro de un mismo bloque, se definen en el rea de declaracin del bloque lgico. Las reas de datos a las que acceden todos los bloques lgicos se definen en el rea de declaracin de los bloques de datos. En el rea de declaracin de un UDT se define el tipo de datos de usuario.
Estructura
El rea de declaracin se divide en diferentes bloques de declaracin, cada uno de los cuales se caracteriza por una pareja de palabras clave. Cada bloque incluye una lista de declaracin para datos semejantes. La secuencia de estos bloques es arbitraria. La tabla siguiente muestra los posibles bloques de declaracin:
Datos Constantes: Sintaxis CONST; lista de declaracin END_CONST LABEL; lista de declaracin END_LABEL VAR_TEMP; lista de declaracin END_VAR VAR; lista de declaracin END_VAR VAR_INPUT; lista de declaracin END_VAR VAR_OUTPUT; lista de declaracin END_VAR VAR_IN_OUT; lista de declaracin END_VAR FB X FC X OB X DB UDT
Metas de salto
Variables temporales
Variables estticas
X *)
X **)
X **)
Parmetros de entrada
Parmetros de salida
Parmetros de entrada/salida
*)
En las funciones se admite la declaracin de variables entre las dos palabras clave VAR y END_VAR, sin embargo, las declaraciones se transfieren al rea temporal al compilar la fuente. En los DBs y UDTs, las palabras clave VAR y END_VAR se sustituyen por STRUCT y END_STRUCT.
**)
6-11
6.9
Definicin
Los atributos del sistema son atributos bsicos que se utilizan en todo el sistema de control de procesos. Sirven, p.ej., para configurar mensajes o enlaces de comunicacin. Los atributos de sistema para parmetros solamente son vlidos para los parmetros configurados. Los atributos de sistema se pueden asignar a parmetros de entrada, salida y entrada/salida.
Reglas
Los atributos del sistema para parmetros se asignan en los bloques de declaracin 'Parmetros de entrada', 'Parmetros de salida' o 'Parmetros de entrada/salida'. Un identificador puede tener 24 caracteres como mximo. Los atributos se introducen con la siguiente sintaxis:
Atributos del sistema para parmetros
mx. 24 caracteres
carcter imprimible
IDENTIFICADOR
:=
'
'
Ejemplo
VAR_INPUT in1 END_VAR A la Ayuda de los atributos de sistema se accede desde la ayuda en pantalla de SCL. Para ello, seleccione el tema "Llamada de la ayuda de referencia". {S7_server:='alarm_archiv'; S7_a_type:='ar_send'}: DWORD ;
6-12
6.10
rea de instrucciones
Definicin
El rea de instrucciones contiene instrucciones que se ejecutan una vez llamado el bloque lgico. Estas instrucciones permiten procesar datos o direcciones. El rea de instrucciones de los bloques de datos incluye instrucciones para inicializar sus variables.
Reglas
Si lo desea, puede comenzar el rea de instrucciones con la palabra clave BEGIN. Si se trata de bloques de datos, BEGIN es obligatoria. El rea de instrucciones termina con la palabra clave de fin de bloque. Cada instruccin termina con un punto y coma. Todos los identificadores utilizados en el rea de instrucciones deben declararse previamente. Opcionalmente, las instrucciones pueden ir precedidas de metas de salto. Las reas de instrucciones se introducen con la siguiente sintaxis:
Area de instrucciones
Instruccin
Ejemplo
BEGIN VALOR_INICIAL :=0; VALOR_FINAL :=200; . . GUARDAR: RESULTADO :=VALOR _TEORICO; . . END_FUNCTION_BLOCK
6-13
6.11
Instrucciones
Definicin
Una instruccin es la unidad autnoma ms pequea 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 expresin o el valor de otra variable. Instrucciones de control, que sirven para repetir instrucciones o grupos de instrucciones o para derivar a otra parte del programa. Procesamiento de subrutinas que sirven para llamar a funciones y bloques de funcin.
Reglas
Las instrucciones se introducen conforme a la siguiente sintaxis:
Instruccin
Asignacin de valor
Procesamiento de subrutinas
Instruccin de control
Ejemplo
Los siguientes ejemplos ilustran las distintas variantes de instrucciones: // Ejemplo de una asignacin de valores VALOR_MEDIDO:= 0 ; // Ejemplo del procesamiento de un subprograma FB1.DB11 (TRANSMISION:= 10) ; // Ejemplo de una instruccin de control WHILE CONTADOR < 10 DO.. . . END_WHILE;
6-14
6.12
Definicin
Un bloque de funcin (FB) es un bloque lgico que contiene una seccin 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. La estructura de este bloque de datos de instancia se determina al definir el rea de declaracin del FB.
Sintaxis
Bloque de funcin
PROGRAM FUNCTION_BLOCK Identificador de FB rea de declaracin de FB
Nombre de un FB
Introduzca la palabra clave FB como nombre del FB detrs de la palabra clave FUNCTION_BLOCK o PROGRAM y a continuacin, el nmero del bloque o el nombre simblico del FB. El nmero del bloque puede ser un valor comprendido entre 0 y 65533. Ejemplos: FUNCTION_BLOCK FB10 FUNCTION_BLOCK MOTOR1
rea de declaracin de FB
El rea de declaracin del FB sirve para definir los datos especficos del bloque. Los bloques de declaracin permitidos figuran en el captulo "rea de declaracin". Tenga en cuenta que el rea de declaracin tambin determina la estructura del DB de instancia asignado.
6-15
Ejemplo
El ejemplo siguiente muestra el cdigo fuente de un bloque de funcin. Los parmetros 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 ; END_VAR VAR FX1, FX2, FY1, FY2 : REAL ; END_VAR BEGIN IF V1 = 7 THEN FX1 := 1.5 ; FX2 := 2.3 ; FY1 := 3.1 ; FY2 := 5.4 ; //Llamada de la funcin FC11 con tranferencia //de parmetros //por medio de variables estticas. V2 := FC11 (X1:= FX1, X2 := FX2, Y1 := FY1, Y2 := FY2) ; END_IF ; END_FUNCTION_BLOCK
6-16
6.13
Definicin
Una funcin (FC) es un bloque lgico que no tiene asignada ningn rea de memoria propia. No necesita bloque de datos de instancia. A diferencia de un FB, una funcin puede retornar el resultado de la funcin (valor de respuesta) al punto de llamada. Por consiguiente, la funcin se puede utilizar igual que una variable en una expresin. Las funciones del tipo VOID no tienen valor de respuesta.
Sintaxis
Funcin
VOID Identificador de FC Especificacin del tipo de datos
FUNCTION
rea de declaracin de FC
BEGIN
rea de instrucciones
END_FUNCTION
Nombre de la FC
Introduzca la palabra clave FC como nombre de la FC detrs de la palabra clave "FUNCTION" y a continuacin, el luego el nmero del bloque o el nombre simblico de la FC. El nmero del bloque puede ser un valor comprendido entre 0 y 65533. Ejemplo: FUNCTION FC17 : REAL FUNCTION FC17 : VOID
rea de declaracin de la FC
El rea de declaracin de la FC sirve para declarar datos locales (variable temporal, parmetro de entrada, parmetro de salida, parmetro entrada/salida, constantes o metas de salto).
6-17
rea de instrucciones de la FC
En el rea de instrucciones hay que asignar el resultado de la funcin al nombre de la funcin. Esta asignacin no es necesaria en las funciones de tipo VOID. Una instruccin vlida dentro de una funcin con el nombre FC31 sera, por ejemplo: FC31:=VALOR;
Ejemplo
FUNCTION FC11: REAL VAR_INPUT x1: REAL ; x2: REAL ; x3: REAL ; x4: REAL ; END_VAR VAR_OUTPUT Q2: REAL ; END_VAR BEGIN // Retorno del valor de la funcin FC11:= SQRT( (x2 - x1)**2 + (x4 - x3) **2 ) ; Q2:= x1 ; END_FUNCTION
6-18
6.14
Definicin
Al igual que un FB o una FC, el bloque de organizacin es una parte del programa de usuario que el sistema operativo llama cclicamente o cuando se producen determinados eventos. Constituye el interface entre el programa de usuario y el sistema operativo.
Sintaxis
Bloque de organizacin
ORGANIZATION_BLOCK
Identificacin de DB
Tabla de declaracin de OB
BEGIN
Area de instrucciones
END_ORGANIZATION_BLOCK
Nombre del OB
Indique la palabra clave OB como nombre del OB detrs de la palabra clave "ORGANIZATION_BLOCK" y a continuacin, el nmero del bloque o el nombre simblico del OB. El nmero del bloque puede ser un nmero comprendido entre 1 y 65533. Ejemplos: ORGANIZATION_BLOCK OB1 ORGANIZATION_BLOCK ALARM
Ejemplo
ORGANIZATION_BLOCK OB1 VAR_TEMP HEADER : ARRAY [1..20] OF BYTE ; //20 Byte para sist. op. END_VAR BEGIN FB17.DB10 (V1 := 7) ; END_ORGANIZATION_BLOCK
6-19
6.15
Definicin
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. Existen dos tipos diferentes de bloques de datos: Bloque de datos Bloques de datos a los que pueden acceder todos los bloques lgicos del programa S7. Todos los FBs, FCs y OBs pueden leer o escribir los datos contenidos en estos bloques de datos. Bloque de datos asociado a un FB (DB de instancia) Los bloques de datos de instancia son bloques de datos asignados a un determinado bloque de funcin (FB). Incluyen datos locales para el bloque de funcin asignado. Estos bloques de datos son generados automticamente por el compilador S7-SCL en cuanto se llama al FB en el programa de usuario.
Sintaxis
Bloque de datos
Identificacin de DB
DATA_BLOCK
Tabla de declaracin de DB
BEGIN
Tabla de asignacin de DB
END_DATA_BLOCK
Nombre del DB
Indique la palabra clave DB como nombre del DB destrs de la palabra clave "DATA_BLOCK" y a continuacin, el nmero del bloque o el nombre simblico del DB. El nmero del bloque puede ser un valor comprendido entre 1 y 65533. Ejemplos: DATA_BLOCK DB20 DATA_BLOCK MARGEN_DE_MEDIDA
6-20
rea de declaracin de DB
Identificador de UDT
// rea de declaracin VALOR:ARRAY [1..100] OF INT; END_STRUCT // Principio del rea de declaracin // Fin del bloque de datos
BEGIN : END_DATA_BLOCK
Variable simple
:=
Constante*
* en notacin AWL
Al asignar los valores iniciales (de inicializacin), al especificar atributos y al indicar comentarios rige la sintaxis de AWL. En la ayuda en pantalla de AWL y en la documentacin de STEP 7 puede consultar la distinta notacin de las constantes, los atributos y los comentarios.
6-21
Ejemplo
// Bloque de datos que tiene asignado un tipo de datos STRUCT DATA_BLOCK DB10 STRUCT // Declaracin de datos con preasignacin VALOR : ARRAY [1..100] OF INT := 100 (1) ; PULSADOR : BOOL := TRUE ; S_PALABRA : WORD := W#16#FFAA ; S_BYTE : BYTE := B#16#FF ; S_TIME : S5TIME := S5T#1h30m10s ; END_STRUCT BEGIN // rea de asignacin // Asignacin de valores para determinados elementos del array VALOR [1] := 5; VALOR [5] := -1 ; END_DATA_BLOCK // Bloque de datos que tiene asignado un tipo de datos de usuario DATA_BLOCK DB11 UDT 51 BEGIN END_DATA_BLOCK
6-22
6.16
TYPE
Identificacin de UDT
END_TYPE
Nombre UDT
Introduzca la palabra clave UDT detrs de la palabra clave TYPE y a continuacin, un nmero o simplemente el nombre simblico del UDT. El nmero del bloque puede ser un valor comprendido entre 0 y 65533. Ejemplos: TYPE UDT10 TYPE BLOQUE_DE_TRANSFERENCIA_DE_PARAMETROS
6-23
:=
2.7 ;
6-24
6.17
Definicin
Adems de los bloques, las fuentes de S7-SCL tambin pueden contener indicaciones sobre los ajustes del compilador con los que se deban compilar los diferentes bloques. Las opciones del compilador controlan la compilacin de distintos bloques o de toda la fuente, independientemente de los ajustes de la ficha "Compilador (Ajustes)". Las opciones del compilador se pueden utilizar en fuentes de S7-SCL o en archivos de control de compilacin.
Validez
Las opciones se aplican solamente en la compilacin de la fuente para la que han sido definidas. La validez de una opcin de compilacin comienza con su denominacin y termina al final de la fuente o del archivo de control de compilacin. Si hubiera varias opciones idnticas, se aplicar la ltima. Si se han definido opciones del compilador para un bloque, dichas opciones tendrn una prioridad mayor que los ajustes de la ficha "Compilador (Ajustes)". Sin embargo, los ajustes de la ficha se seguirn aplicando de forma global.
Reglas
Para las opciones del compilador se aplican las siguientes reglas: Las opciones figuran en la fuente fuera de los lmites de bloques. Las opciones figuran en una lnea propia. No se distingue entre maysculas y minsculas.
6-25
Opciones disponibles
La tabla muestra las opciones disponibles:
Opcin Valor Significado
[Scl_]ResetOptions
No es posible introducir Preseleccin de los ajustes valores de compilacin (ajustes del cuadro de dilogo) 'y[es]' o 'n[o]' 'y[es]' o 'n[o]' 'y[es]' o 'n[o]' 'y[es]' o 'n[o]' 'y[es]' o 'n[o]' 'y[es]' o 'n[o]' 'y[es]' o 'n[o]' 'y[es]' o 'n[o]' '1 .. 254' Sobrescribir bloques Crear datos de referencia Considerar atributo de sistema "S7_server" Crear object code Optimizar object code Vigilar lmites de arrays Crear debug info Activar OK flag Longitud mxima de string
Ejemplo
{SCL_OverwriteBlocks := 'y' ; SCL_CreateDebugInfo {SetOKFlag := 'y' ; OptimizeObjectCode := 'y'} := 'y'}
6-26
Tipos de datos
7.1
7-1
Tipos de datos
7-2
Tipos de datos
7.2
7.2.1
Disposicin comienza en el bit menos significativo del byte comienza en el byte menos significativo de la palabra comienza en un lmite de palabra comienza en un lmite de palabra
7.2.2
Tipo Carcter
Ancho en bits 8
7.2.3
Tipo Entero (nmero entero) Doble entero Nmero en coma flotante (Nmero en coma flotante IEEE)
Margen permitido
comienza en el -32_768 hasta 32_767 lmite de una palabra comienza en el -2_147_483_648 hasta lmite de una palabra 2_147_483_647 comienza en un el -3.402822E+38 hasta -1.175495E-38 lmite de una palabra +/- 0 1.175495E-38 hasta 3.402822E+38
7-3
Tipos de datos
7.2.4
Tipo Tiempo S5 Duracin: Tiempo IEC en intervalos de 1 ms. Fecha: Fecha IEC en intervalos de 1 da.
Margen permitido
Comienza en un T#0H_0M_0S_10MS hasta lmite de palabra T#2H_46M_30S_0MS Comienza en un T#24D_20H_31M_23S_647MS hasta lmite de palabra T#24D_20H_31M_23S_647MS
DATE D
16
Comienza en un D#1990-01-01 hasta lmite de palabra D#2168-12-31 Comienza en un TOD#0:0:0.0 hasta lmite de palabra TOD#23:59:59.999
32
En las variables del tipo de datos S5TIME (tiempo S5) la resolucin est limitada; es decir, slo se dispone de las bases de tiempo 0.01 s, 0.1 s, 1 s y 10 s. El compilador redondea los valores como corresponda. Si el valor ajustado es mayor de lo que permite el margen de valores se utilizar el valor lmite superior.
7-4
Tipos de datos
7.3
7.3.1
Definicin
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: ao, mes, da, horas, minutos, segundos, milisegundos
Sintaxis
DATE_AND_TIME
DATE_AND_TIME# Indicacin de fecha DT# Indicacin de hora
La sintaxis exacta para indicar la fecha y la hora est descrita en el apartado "Declaracin de constantes".
Margen permitido
Tipo Fecha y hora Palabra clave DATE_AND_TIME DT Ancho en bits 64 Disposicin Comienza y acaba en el lmite de una palabra Margen DT#1990-01-01:0:0:0.0 hasta DT#2089-12-31:23:59:59.999
7-5
Tipos de datos
7 (4 MSB)
0 ... 9
7 (4 LSB)
1 ... 7
(1 = domingo)
Ejemplo
Una definicin vlida para las 12 horas, 20 minutos, 30 segundos y 10 milisegundos del da 20.10.1995 sera: DATE_AND_TIME#1995-10-20-12:20:30.10 DT#1995-10-20-12:20:30.10
Nota Para poder acceder directamente a los componentes DATE o TIME se dispone de funciones estndar (en la librera de STEP 7).
7-6
Tipos de datos
7.3.2
Definicin
Un tipo de datos STRING define una cadena de caracteres de 254 caracteres como mximo. El rea estndar 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. El espacio de memoria reservado para una cadena de caracteres se puede reducir definiendo el nmero mximo de caracteres que deben guardarse en la cadena. Una cadena cero (es decir, una cadena sin contenido) representa el valor ms pequeo posible.
Sintaxis
Especificacin de tipo de datos STRING
STRING
La expresin simple representa el nmero mximo de caracteres del STRING. En una cadena de caracteres se pueden utilizar todos los caracteres del cdigo ASCII. La cadena tambin puede contener caracteres especiales, p. ej., caracteres de control, y caracteres no imprimibles. Estos se pueden introducir con la sintaxis $hh, en la cual hh sustituye al valor el carcter ASCII expresado en hexadecimal (ejemplo: '$0D$0AText' ) Al declarar el espacio de memoria de las cadenas de caracteres se puede definir el nmero mximo de caracteres que se deben guardar en la cadena. Si aqu no se indica la longitud mxima, se crear una cadena de caracteres de una longitud de 254. Ejemplo: VAR Text1 Text2 END_VAR La constante "123" en la declaracin de la variable "Text1" indica el nmero mximo de caracteres de la cadena. En la variable "Text2" se reserva una longitud de 254 caracteres. Nota En los parmetros de salida y en los de entrada/salida, as como en los valores de retorno de funciones, es posible reducir el margen estndar reservado de 254 caracteres para poder aprovechar mejor los recursos de la CPU. Para reducir este margen elija el comando de men Herramientas > Preferencias y, en el cuadro de dilogo que aparece a continuacin, la ficha "Compilador". A continuacin indique el nmero deseado de caracteres en la opcin "Nmero mx. de caracteres". Tenga en cuenta, que el ajuste afectar a todas las variables STRING de la fuente. Por esta razn, el valor ajustado no debe ser menor que las variables STRING utilizadas en el programa. : Cadena de caracteres [123]; : Cadena de caracteres;
7-7
Tipos de datos
Nota Si una funcin de la librera estndar suministra un valor de retorno del tipo de datos STRING, y si este valor debe ser asignado a una variable temporal, entonces se deber inicializar la variable en primer lugar.
Ejemplo: FUNCTION Test : STRING[45] VAR_TEMP x : STRING[45]; END_VAR x := 'a'; x := concat (in1 := x, in2 := x); Test := x; END_FUNCTION Sin la inicializacin x := 'a'; la funcin suministrara un resultado errneo.
Disposicin
Las variables del tipo STRING empiezan y acaban en un lmite de palabra.
7-8
Tipos de datos
7.3.3
Definicin
Los arrays tienen un nmero 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; el tipo de array bidimensional: una tabla de datos compuesta por filas y columnas. La primera dimensin se refiere al nmero de lnea, y la segunda al nmero de columna; el tipo de array de dimensin superior: una ampliacin del tipo de array bidimensional, que adopta ms dimensiones. Como mximo se admiten 6 dimensiones
Sintaxis
Especificacin de tipo de datos ARRAY
Especificacin de ndice
ARRAY
Indice
.. ,
Indice
OF
Especificacin de ndice
Describe las dimensiones del tipo de datos ARRAY: con el ndice mnimo y mximo posibles (rango de ndice) para cada dimensin. El ndice puede ser un nmero entero cualquiera (de -32768 hasta 32767). Los lmites deben indicarse separados por dos puntos. Los rangos de ndice se separan entre s por comas. La especificacin completa del ndice se debe indicar entre corchetes.
7-9
Tipos de datos
Ejemplo
VAR Regulador1 : ARRAY[1..3,1..4] OF INT:= -1289, 60, 10362, 385, 2, -54, 736, -83, 77,
Disposicin
Las variables del tipo ARRAY se crean lnea por lnea. Cada dimensin de una variable del tipo BOOL, BYTE o CHAR acaban en un lmite de BYTE, todas las dems en un lmite de WORD.
7-10
Tipos de datos
7.3.4
Definicin
El tipo de datos STRUCT describe un margen que consiste en un nmero fijo de componentes, que pueden variar en cuanto al tipo de datos. Estos elementos se indican en la declaracin de componentes inmediatamente despus de la palabra clave STRUCT. En particular, un elemento del tipo de datos STRUCT puede ser, a su vez, un tipo de datos compuesto. Por lo tanto, est permitido anidar los tipos de datos STRUCT.
Sintaxis
Especificacin de tipo de datos STRUCT
STRUCT
Declaracin de componentes
END_STRUCT
Declaracin de componentes
La declaracin de componentes es una lista de los distintos componentes del tipo de datos STRUCT. Est compuesta por: De 1 a n identificadores con el tipo de datos que tienen asignado y una inicializacin opcional con valores iniciales.
Declaracin de componentes
Especificacin de tipo de datos Inicializacin de tipo de datos
El identificador es el nombre de un elemento de estructura al que se aplica la siguiente especificacin del tipo de datos. En la especificacin del tipo de datos se admiten todos los tipos de datos, excepto los tipos de parmetros. Despus de la especificacin del tipo de datos se puede asignar opcionalmente un valor inicial a un elemento de la estructura. Esta correspondencia se establece por medio de una asignacin de valores.
7-11
Tipos de datos
Ejemplo
VAR MOTOR : STRUCT DATOS : STRUCT CORRIENTE_DE_CARGA : REAL ; TENSION : INT := 5 ; END_STRUCT ; END_STRUCT ; END_VAR
Disposicin
Las variables del tipo STRUCT empiezan y terminan en un lmite de WORD.
Atencin En caso de definir una estructura que no termine en un lmite WORD, S7-SCL rellenar automticamente los bytes que faltan, adaptando as el tamao a la estructura. La adaptacin del tamao de la estructura puede causar conflictos al acceder a tipos de datos de una longitud de bytes impar.
7-12
Tipos de datos
7.4
7.4.1
Definicin
El tipo de datos de usuario (UDT) se define como bloque. Despus 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 nmero) o con un nombre simblico asignado, en el rea de declaracin de un bloque o de un bloque de datos. El tipo de datos de usuario se puede utilizar para declarar variables, parmetros, bloques de datos y otros tipos de datos de usuario. Mediante el tipo de datos de usuario tambin se pueden declarar componentes de arrays o estructuras.
Sintaxis
Tipo de datos de usuario
Estructura especificacin del tipo de datos
TYPE
Identificacin de UDT
END_TYPE
Identificador UDT
Una declaracin del tipo de datos de usuario se inicia mediante la palabra clave TYPE, seguida del nombre del tipo de datos de usuario (identificador UDT). El nombre del tipo de datos de usaurio se puede indicar de forma absoluta, es decir mediante el nombre estndar UDTx (donde x es un nmero), o bien mediante un nombre simblico. Ejemplos: TYPE UDT10 TYPE VALORES_MEDIDOS
7-13
Tipos de datos
Ejemplo
// Definicin UDT con nombre simblico 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 ; END_STRUCT; END_STRUCT; END_TYPE //Uso de UDT en un FB FUNCTION_BLOCK FB10 VAR MARGEN_MEDICION: VALORES DE MEDICION; END_VAR BEGIN // . . . MARGEN_MEDICION.BIPOL_1 := -4 ; MARGEN_MEDICION.MEDICION.UNIPOLAR_4_20MA // . . . END_FUNCTION_BLOCK
:=
2.7 ;
7-14
Tipos de datos
7.5
Parmetro TIMER
Tamao 2 bytes
Descripcin Indica un determinado temporizador que ser utilizado por el programa en el bloque lgico llamado. Parmetro actual: p.ej. T1 Indica un determinado contador que ser utilizado por el programa en el bloque lgico llamado. Parmetro actual: p.ej. Z10 Indica un determinado bloque que deber ser utilizado por un bloque de cdigo AWL llamado. Parmetro actual: Notas: Al tipo de datos BLOCK_DB se puede acceder de forma absoluta (myDB.dw10). Tambin puede seguir procesndose con BLOCK_DB_TO_WORD(). Los tipos de datos BLOCK_SDB, BLOCK_FB y BLOCK_FC no pueden ser interpretados por programas de S7-SCL. Por consiguiente slo se pueden utilizar para transferir valores a parmetros de este tipo en las llamadas de bloques AWL. p.ej. FC101, DB42
COUNTER
2 bytes
2 bytes
ANY POINTER
10 bytes 6 bytes
Se utiliza cuando como tipo de datos del parmetro actual debe permitirse cualquier tipo de datos, a excepcin de ANY. Identifica una determinada rea de memoria que ser utilizada por el programa. Parmetro actual: p.ej. M50.0
7.5.1
7-15
Tipos de datos
7.5.2
7.5.3
7-16
Tipos de datos
Restricciones
El tipo de datos POINTER se puede utilizar para parmetros formales de entrada, para parmetros de entrada/salida de FB y FC y para parmetros de salida de FCs. Las constantes no se pueden utilizar como parmetros actuales (excepto la constante NIL). Si al llamar un FB o una FC asigna una variable temporal a un parmetro formal del tipo POINTER no se podr transferir este parmetro a otro bloque. Las variables temporales pierden su validez al pasarlas a otro bloque. Al llamar una FC o un FB, las entradas del proceso (%PEW) slo pueden ser asignadas a parmetros formales del tipo Pointer, siempre y cuando el parmetro formal haya sido declarado como parmetro de entrada. Al llamar un FB, las salidas del proceso (%PAW) slo pueden ser asignadas a parmetros formales del tipo Pointer, siempre y cuando el parmetro formal haya sido declarado como parmetro de salida.
Ejemplo
FUNCTION FC100 : VOID VAR_IN_OUT N_out : INT; out : POINTER; END_VAR VAR_TEMP ret : INT; END_VAR BEGIN // ... ret := SFC79(N := N_out, SA := out); // ... END_FUNCTION FUNCTION_BLOCK FB100 VAR ii : INT; aa : ARRAY[1..1000] OF REAL; END_VAR BEGIN // ... FC100( N_out := ii, out := aa); // ... END_FUNCTION_BLOCK
7-17
Tipos de datos
7.6
Restricciones
El tipo de datos ANY se puede utilizar para parmetros formales de entrada, para parmetros de entrada/salida de FBs y FCs y para parmetros de salida de FCs. Las constantes no se pueden utilizar como parmetros actuales, por lo que no pueden figurar a la derecha de una asignacin (a excepcin de la constante NIL). Si al llamar a un FB o FC asigna una variable temporal a un parmetro formal del tipo ANY, no podr pasar dicho parmetro a otro bloque. Las variables temporales pierden su validez al pasarlas a otro bloque. Las variables de este tipo no se deben utilizar ni como componente de una estructura ni como elemento de un array. Al llamar una FC o un FB, las entradas del proceso (%PEW) slo pueden ser asignadas a parmetros formales del tipo ANY, siempre y cuando el parmetro formal haya sido declarado como parmetro de entrada. Al llamar un FB, las salidas del proceso (%PAW) slo pueden ser asignadas a parmetros formales del tipo ANY, siempre y cuando el parmetro formal haya sido declarado como parmetro de salida.
7-18
Tipos de datos
7.6.1
CASE ii OF 1: pANY := MW4; 3..5: pANY:= aINT[ii]; 100: pANY := iANY; ELSE pANY := NIL; END_CASE; SFCxxx(IN := pANY);
// pANY contiene la direccin del ii-avo // elemento del array aINT; // pANY contiene el valor de la variable // de entrada iANY // pANY contiene el valor del puntero NIL
7-19
Tipos de datos
7-20
8.1
Categoras de variables
La siguiente tabla muestra en qu categoras se pueden dividir las variables locales:
Variable Significado
Variables estticas
Las variables estticas son variables locales cuyo valor se conservaa lo largo de todos los recorridos del bloque (memoria de bloque). Sirven para guardar los valores de un bloque de funcin y se almacenan en el bloque de datos de instancia. Las variables temporales se corresponden localmente con un bloque lgico y no ocupan rea de memoria esttica, puesto que se depositan en la pila de la CPU. Su valor slo se conserva durante un recorrido del bloque. A las variables temporales no se puede acceder fuera del bloque en el que se han declarado las variables.
Variables temporales
Parmetro de entrada Los parmetros de entrada asumen los valores de entrada actuales cuando se llama al bloque. Slo admiten lectura. Parmetros de salida Parmetros de entrada/salida Los parmetros de salida transmiten los valores de salida actuales al bloque invocante. Pueden escribirse y leerse. Los parmetros de entrada/salida adquieren valores de entrada actuales al llamar un bloque. Tras el procesamiento del valor, reciben el resultado y lo transfieren al bloque invocante.
8-1
8.2
Declaracin de variables
1) Variable simple
Especificacin de tipo de datos Inicializacin 2) de tipo de datos
IDENTIFICADOR
AT
Nombre de variable, nombre de parmetro o nombre de componente , 1) atributo de sistema para parmetros 2) salvo para AT
Ejemplos
VALOR1 : REAL; si hubiera ms variables del mismo tipo: VALOR2, VALOR3,VALOR4,....: INT; ARRAY : ARRAY[1..100, 1..10] OF REAL; FRASE : STRUCT ARRAY_DE_MEDICION:ARRAY[1..20] OF REAL; PULSADOR:BOOL; END_STRUCT
Nota Para utilizar palabras reservadas como identificadores hay que anteponerles el caracter "#" (p.ej. #FOR).
8-2
8.3
Inicializacin
Las variables estticas as como los parmetros de entrada y de salida de un FB se pueden inicializar con un valor en la declaracin. Tambin es posible inicializar parmetros de entrada/salida, siempre y cuando sean del tipo de datos simple. En las variables simples esta inicializacin se realiza por asignacin (:=) de una constante despus de la indicacin del tipo de datos.
Sintaxis
NOICAZILAICINI
Ejemplo
VALOR 20.25; :REAL :=
Nota No es posible inicializar una lista de variables ( A1, A2, A3,...: INT:=...). En este caso es preciso inicializar las variables una a una.
Inicializacin de arrays
En la inicializacin de ARRAYs se puede indicar un valor separado por coma para cada componente del array o bien inicializar varios componentes con el mismo valor anteponiendo un factor de repeticin (integer). Opcionalmente, los valores iniciales pueden ir encerrados en un parntesis. Tambin en los arrays (matrices) multidimensionales se indica solamente un par de parntesis.
.LAICINI ED ATSIL
ETNATSNOC YARRA ED
8-3
Ejemplos
VAR // Inicializacin de variables estticas: INDEX1 : INT := 3 ; //Inicializacin de arrays: REGULADOR1 : ARRAY [1..2, 1..2] OF INT := -54, 736, -83, 77; REGULADOR2 : ARRAY[1..10] OF REAL := 10(2.5); REGULADOR1 : ARRAY [1..2, 1..2] OF INT := [-54, 736, -83, 77]; REGULADOR2 : ARRAY[1..10] OF REAL := [10(2.5)]; //Inicializacin de estructura: GENERADOR: STRUCT DAT1 : REAL := 100.5; A1 : INT := 10 ; A2 : STRING[6] := 'FACTOR'; A3 : ARRAY[1..12] OF REAL:= 0.0, 10(100.0), 1.0; END_STRUCT ; END_VAR
8-4
,
, ,
NOICITEPER ED ROTCAF
[
SELAMICED ED AICNEUQES
8.4
Ejemplo
En el siguiente ejemplo se crean varias vistas sobre un parmetro de entrada: VAR_INPUT Buffer : ARRAY[0..255] OF BYTE; Telegram1 AT Buffer : UDT100 ; Telegram2 AT Buffer : UDT200 ; END_VAR El bloque invocante transfiere valores al parmetro Buffer y no ve los nombres Telegram1 y Telegram2. El bloque invocante dispone de tres posibilidades para interpretar los datos: como array con el nombre Buffer o con distinta estructura con el nombre Telegram1 o Telegram2.
8-5
Reglas
La declaracin de otra vista sobre una variable debe realizarse en el mismo bloque de declaracin despus de la declaracin de la variable a la que seala. No se puede inicializar. El tipo de datos de la vista debe ser compatible con el tipo de datos de la variable. La variable determina el tamao del rea de memoria. La memoria que requiere la vista puede ser igual o menor. Adems, rigen las siguientes reglas de combinacin:
Tipo de datos de la Tipo de datos vista: de la variable: simple FB Declaracin de una vista en simple VAR, VAR_TEMP, compuesto VAR_IN ANY/POINTER o VAR_OUT Declaracin de una vista en simple
VAR_IN_OUT
compuesto x x x (1)
ANY/POINTER
x x
x (1)
x x
compuesto ANY/POINTER
FC
Declaracin de una vista en simple VAR o VAR_TEMP compuesto ANY/POINTER Declaracin de una vista en simple VAR_IN, VAR_OUT o compuesto
VAR_IN_OUT
x x
x x x x
x x
ANY/POINTER
Simple = BOOL, BYTE, WORD, DWORD, INT, DINT, DATE, TIME, S5TIME, CHAR Compuesto = ARRAY, STRUCT, DATE_AND_TIME, STRING
8-6
8.5
Uso de multiinstancias
Segn los datos caractersticos que tengan las CPUs S7 utilizadas (p.ej. la capacidad de memoria) puede ocurrir que no quiera o no pueda crear ms que un nmero limitado de bloques de datos para datos de instancia. Si en su programa de usuario, se llaman desde un FB otros bloques de funcin ya disponibles (jerarqua de llamada de FB), entonces puede llamar a estos otros bloques de funcin sin su DB de instancia (es decir, sin uno adicional). Solucin posible: Incluya en la declaracin de variables del FB invocante los FBs a llamar como variables estticas. Desde este bloque de funcin llame otros bloques de funcin sin su DB de instancia. De esta forma podr concentrar los datos de instancia en un bloque de datos de instancia, es decir, podr aprovechar mejor la cantidad de DBs disponible.
8.6
Declaracin de instancias
En el bloque de declaracin de variables estticas (VAR; END_VAR) de los bloques de funcin es posible declarar variables del tipo FB o SFB adems de las variables de tipos de datos simples, compuestos o de usuario . Este tipo de variables se denominan instancias locales del FB o del SFB. Los datos locales de instancia se guardan en el bloque de datos de instancia del FB invocante. No es posible realizar una inicializacin local especfica de la instancia. Los bloques que se llaman como instancias locales no pueden ser de longitud 0. En un bloque de tales caractersticas tiene que declararse por lo menos una variable esttica o un parmetro.
Sintaxis
Declaracin de instancia
Los FB ya deben existir Identificador de FB IDENTIFICADOR Nombre de instancia local , : Identificacin de SFB ;
Ejemplo
Asignacion1 : FB10; Asignacion2,Asignacion3,Asignacion4 Motor1 : Motor ; : FB100;
En este caso, Motor es un smbolo registrado en la tabla de smbolos que representa a un FB.
8-7
8.7
Declaracin
OK-Flag es una variable declarada por el sistema, por lo que no es necesario declararla. No obstante, debe seleccionar la opcin del compilador "Activar OK flag" antes de compilar, si desea utilizar esta marca en su programa de usuario.
Ejemplo
// Cambiar OK flag a TRUE // para poder comprobar // si la accin se desarrolla correctamente. OK:= TRUE; Division:= 1 / IN; IF OK THEN // La divisin se desarrolla correctamente. // : // : ELSE // La divisin es errnea. // : END_IF;
8-8
8.8
8.8.1
Secciones de declaracin
Sinopsis de las secciones de declaracin
Cada categora de variables locales o de parmetros tiene asignado un bloque de declaracin propio, que se distingue por una pareja de palabras clave. Cada bloque contiene las declaraciones que admite dicho bloque de declaracin. La secuencia de estos bloques es arbitraria. La tabla siguiente muestra los tipos de variable o parmetro que se pueden declarar en los distintos bloques lgicos:
Sintaxis VAR ... END_VAR VAR_TEMP ... END_VAR VAR_INPUT ... END_VAR VAR_OUTPUT ... END_VAR VAR_IN_OUT ... END_VAR
FB X
FC X *)
OB
Variable temporal
parmetro de salida
parmetro de entrada/salida
*) En las funciones se admite la declaracin de variables dentro del par de palabras clave VAR y END_VAR; sin embargo, las declaraciones se transfieren al rea temporal al compilar la fuente.
8-9
8.8.2
Variables estticas
Las variables estticas son variables locales que mantienen su valor despus de recorrer todos los bloques (memoria de bloque). Sirven para guardar valores de un bloque de funcin y se guardan en el bloque de datos de instancia correspondiente.
Sintaxis
Las variables estticas se declaran en la seccin de declaracin VAR / END_VAR. Este bloque de declaracin forma parte del rea de declaracin del FB. Despus de compilarlo, este bloque determina, junto con los bloques de parmetros de bloque, la estructura del bloque de datos de instancia asignado. En este bloque se pueden crear variables, asignarles tipos de datos e inicializarlas. declarar un FB invocante como variable esttica para poderlo llamar desde el FB actual como instancia local.
Ejemplo
VAR EJECUCION :INT; ARRAY_DE_MEDICION :ARRAY [1..10] OF REAL; PULSADOR :BOOL; MTOR_1,MOTOR_2 :FB100; //Declaracin de instancia END_VAR
Acceso
El acceso a las variables se realiza en el rea de instrucciones: Acceso desde el interior del bloque: a la variable se accede desde el rea de instrucciones del bloque de funcin, en cuya rea de declaracin se ha declarado una variable. El procedimiento completo se explica en el captulo "Asignacin de valores". Acceso desde el exterior a travs del DB de instancia: a la variable se accede desde otros bloques mediante un acceso indexado, p.ej. DBx.variable.
8-10
8.8.3
Variables temporales
Las variables temporales pertenecen localmente a un bloque lgico y no ocupan ningn rea de memoria esttica. 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. Al iniciar la ejecucin de un OB, FB o FC, el valor de los datos temporales no est definido. Las variables temporales no se pueden inicializar. Declare como datos temporales aquellos datos que necesite solamente para guardar resultados intermedios durante el procesamiento de su OB, FB o FC.
Sintaxis
La declaracin de las variables temporales se realiza en la seccin de declaracin VAR_TEMP / END_VAR. Este bloque de declaracin forma parte de un FB, FC, o OB. En la declaracin de variables se indican los nombres de las variables y sus tipos de datos.
Bloque de variables temporales
VAR_TEMP
Declaracin de variable
END_VAR
No es posible inicializacin
Ejemplo
VAR_TEMP BUFFER 1 : ARRAY [1..10] OF INT ; AYUD1, AYUD2 : REAL; END_VAR
Acceso
El acceso a las variables se realiza siempre en el rea de instrucciones del bloque lgico, en cuyo rea de se haya declarado la variable (acceso desde el interior), consulte el captulo "Asignacin de valores".
8-11
8.8.4
Parmetros de bloques
Los parmetros son comodines que se definen slo al utilizar (llamada) el bloque. Los comodines (declarados) que residen en el bloque se denominan parmetros formales; los valores asignados cuando se llama al bloque, parmetros actuales. Por consiguiente, los parmetros constituyen un mecanismo de intercambio de informacin entre los bloques.
Sintaxis
La declaracin de los parmetros formales se realiza en el rea de declaracin de un bloque de funcin o de una funcin, por separado para cada tipo de parmetro en los tres bloques de declaracin de parmetros. En la declaracin de variables se puede definir el nombre del parmetro y su tipo de datos. Su inicializacin slo es posible en los parmetros de entrada y en los parmetros de salida de un FB. Al declarar parmetros formales se pueden utilizar los tipos de datos para parmetros adems de los tipos de datos simples, compuestos y los de usuario.
Bloque de parmetros
VAR_INPUT Declaracin de variables
VAR_OUTPUT
END_VAR
8-12
Ejemplo
VAR_INPUT // parmetro de entrada MI_DB : BLOCK_DB ; REGULADOR : DWORD ; HORA : TIME_OF_DAY ; END_VAR VAR_OUTPUT // parmetro de salida VALORES_TEORICOS: ARRAY [1..10] of INT ; END_VAR VAR_IN_OUT // parmetro de entrada/salida AJUSTE : INT ; END_VAR
Acceso
El acceso a los parmetros de bloque se realiza en el rea de instrucciones de un bloque lgico: Acceso desde el interior: es decir, en el rea de instrucciones del bloque en cuya rea de declaracin se han declarado los parmetros. Este procedimiento se explica en los captulos "Asignacin de valores" y "Expresiones, operaciones y operandos". Acceso desde el exterior a travs de un DB de instancia: A los parmetros de bloque de los bloques de funcin se accede a travs de los DB de instancia asignados.
8-13
8-14
9.1
Constantes
Las constantes son datos que poseen un valor fijo que no se puede modificar durante el tiempo de ejecucin del programa. S7-SCL distingue los siguientes grupos de constantes. Constantes de bits Constantes numricas Constantes de enteros Constantes de nmeros reales
Indicacin de tiempos Constantes de fecha Constantes de tiempo Constantes de hora Constantes de fecha y hora
9-1
9.1.1
Sintaxis
Bloque de constantes
CONST
:=
Expresin simple
END_CONST
En las expresiones simples slo se admiten las operaciones aritmticas bsicas (*, /, +, -, DIV, MOD).
Ejemplo
CONST Numero := 10 ; HORA := TIME#1D_1H_10M_22S_2MS ; NOMBRE := 'SIEMENS' ; NUMERO2 := 2 * 5 + 10 * 4 ; NUMERO3 := 3 + NUMERO2 ; END_CONST
9-2
9.1.2
De esta forma, a la constante se le asigna el tipo de datos cuyo margen sea suficiente para abarcar la constante sin que sta experimente ninguna prdida de valor. Por ejemplo, la constante "12345" no tiene siempre el tipo de datos INT como en AWL, sino que tiene la clase de tipo de datos ANY_NUM, es decir, dependiendo de su uso es INT, DINT, o REAL.
Constantes tipificadas
La notacin de constantes tipificada permite asignar explcitamente un tipo de datos con los siguientes tipos de datos numricos. Ejemplos:
Tipo de datos BOOL BYTE WORD DWORD INT DINT REAL CHAR Notacin tipificada BOOL#1 Bool#false BYTE#0 Byte#'' bool#0 BOOL#TRUE B#2#101 b#16#f
WORD#32768 word#16#f W#2#1001_0100 WORD#8#177777 DWORD#16#f000_0000 dword#32768 DW#2#1111_0000_1111_0000 DWord#8#37777777777 INT#16#3f_ff int#-32768 Int#2#1111_0000 inT#8#77777 DINT#16#3fff_ffff DInt#2#1111_0000 REAL#1 real#2e4 CHAR#A real#1.5 real#3.1 CHAR#49 dint#-65000 dinT#8#17777777777
9-3
9.1.3
Notacin de constantes
Dependiendo del tipo y del formato de datos, existe una notacin (formato) determinada para el valor de una constante. El tipo y el valor de la constante resultan directamente de la notacin, por lo que no es necesario declararlos. Ejemplos: 15 2#1111 16#F VALOR 15 VALOR 15 VALOR 15 como constante entera en representacin decimal como constante entera en representacin binaria como constante entera en representacin hexadecimal
BYTE
CHAR STRING
8 bits (1 carcter ASCII) 254 caracteres ASCII como mximo Nmero hexadecimal de 16 bits Nmero octal de 16 bits Nmero binario de 16 bits
WORD
9-4
Descripcin Nmero hexadecimal de 32 bits Nmero octal de 32 bits Nmero binario de 32 bits
Dword#8#37777777777 8#37777777777 DW#2#1111_0000_1111_0000 dword#32768 -32768 +32767 INT#16#3f_ff int#-32768 Int#2#1111_0000 inT#8#77777 -2147483648 +2147483647 DINT#16#3fff_ffff dint#-65000 Dint#2#1111_0000 dinT#8#17777777777 Representacin decimal 123.4567 REAL#1 real#1.5 Representacin exponencial real#2e4 +1.234567E+02 L#2147483648 L#+21474836 47
INT
DINT
REAL
S5TIME
16 bits Valor de tiempo en formato SIMATIC 32 bits Valor de tiempo en formato IEC De16 bits Valor de la fecha De 32 bits Hora
T#0ms TIME#2h46m30s T#0.0s TIME#24.855134d -T#24d20h31m23s647ms TIME#24d20h31m23s647ms T#0.0s TIME#24.855134d D#1990-01-01 DATE#2168-12-31 TOD#00:00:00 TIME_OF_DAY#23:59:59.999 DT#1995-01-01-12:12:12.2
S5T#0ms S5TIME#2h46m30s
TIME
DATE TIME_OF_DAY
9-5
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.
Sintaxis
CONSTANTE DE BITS
BOOL# BYTE#
SECUENCIA DE CIFRAS DECIMAL SECUENCIA DE CIFRAS OCTAL SEC. DE CIFRAS HEXADECIMAL SECUENCIA DE CIFRAS BINARIA CARCTER (1)
WORD# DWORD#
Guin inferior
Ejemplo
Los siguientes ejemplos constituyen notaciones posibles para constantes de bits: Bool#false 8#177777 DW#16#0000_0000
9-6
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
INT# DINT# + SECUENCIA DE CIFRAS DECIMAL SECUENCIA DE CIFRAS OCTAL SEC. DE CIFRAS HEXADECIMAL SECUENCIA DE CIFRAS BINARIA CARCTER (1)
Ejemplo
Los siguientes ejemplos constituyen notaciones posibles para constantes enteras: Valor_2:=2#0101; Valor_3:=8#17; Valor_4:=16#F; Valor_5:=INT#16#3f_ff // // // // // Nmero binario, valor decimal 5 Nmero octal, valor decimal 14 Nmero hexadecimal, valor decimal 15 Nmero hexadecimal, notacin tipificada
9-7
9.1.3.3
Constante real
Las constantes de nmeros reales son valores con dgitos a la derecha de la coma. Estas constantes se pueden asignar a variables del tipo de datos REAL.
Sintaxis
CONSTANTE DE NMERO REAL
SECUENCIA DE CIFRAS DECIMALES
+ REAL# -
Exponente
La indicacin del signo es opcional. Si no se indica ningn signo, el nmero se considera positivo. La secuencia de dgitos decimales en constantes se puede separar mediante caracteres de subrayado.Estos caracteres ayudan a mejorar la legibilidad cuando los nmeros son grandes. Los siguientes ejemplos muestran notaciones admisibles para una secuencia de dgitos decimales dentro de una constante: 1000 1_120_200 666_999_400_311
Exponente
En la notacin exponencial se puede utilizar un exponente para especificar nmeros en coma flotante. El exponente se especifica anteponiendo la letra "E" o "e" al valor entero. La magnitud 3x10 se puede representar en S7-SCL mediante los siguientes nmeros reales: 3.0E+10 0.3E+11 3.0E10 0.3e11 3e+10 30.0E+9 3E10 30e9
10
Ejemplos
NUMERO4:= -3.4 ; NUMERO5:= 4e2 ; NUMERO6:= real#1.5;
9-8
9.1.3.4
Sintaxis
CONSTANTE CHAR
CHAR#
' Carcter '
Ejemplo
Caracter_1 := 'B'; Caracter_2 := char#43; Caracter_3 := char#'B';
9-9
Ejemplo de especificacin de un carcter en cdigo hexadecimal: CARACTER Espacio := '$41' ; :='$20'; //corresponde al carcter 'A' //corresponde al carcter
9-10
9.1.3.5
Constante STRING
Una constante STRING es una cadena de caracteres de 254 caracteres como mximo. Los caracteres se encierran entre comillas. Las constantes STRING no se pueden utilizar en expresiones.
Sintaxis
CONSTANTE STRING
'
Carcter
Interrupcin de cadena
Carcter
'
9-11
Interrupcin de strings
Una constante STRING se puede interrrumpir y reanudar varias veces. Un string puede hallarse en una lnea de un bloque S7-SCL o estar repartido entre varias lneas medianteidentificaciones especiales. Para interrumpir una constante STRING se utiliza el identificador $>, para reanudarla en un rengln de continuacin se utiliza el identificador $<. El espacio entre el indicador de interrupcin y el de reanudacin puede abarcar varias lneas e incluir solamente un comentario junto a los espacios en blanco.
Interrupcin de String
Blanco (blank), Salto de lnea (linefeed) Retorno de carro (carriage return) Salto de pgina (formfeed, page) Tabulador horizontal (tabulator)
$<
Ejemplos
// Constante STRING: NOMBRE:= 'SIEMENS'; //Interrupcin de una constante STRING MENSAJE1:= 'Control $> $< del MOTOR'; // STRING en representacin hexadecimal: MENSAJE1:= '$41$4E' (*Secuencia de caracteres AN*);
9-12
9.1.3.6
Constante de fecha
La fecha se inicia con los prefijos DATE# D#. La fecha se indica con nmeros enteros para el ao (4 cifras), el mes y el da, que se separan por medio de guiones.
Sintaxis
Indicacin de fecha
Secuencia de cifras decimales Ao Secuencia de cifras decimales Mes Secuencia de cifras decimales Da
Ejemplo
VARIABLE_TEMPORAL1:= DATE#1995-11-11 ; VARIABLE_TEMPORAL2:= D#1995-05-05 ;
9-13
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: Representacin decimal Representacin escalonada.
Sintaxis
TIEMPO
TIME# Representacin decimal
T#
Representacin escalonada
Representacin decimal
- Cada unidad de tiempo (p.ej.: horas, minutos) slo puede indicarse una vez. - Debe respetarse la secuencia: das, horas, minutos, segundos, milisegundos.
Para cambiar de la representacin escalonada a la representacin decimal es necesario hacerlo antes de especificar las unidades de tiempo. Despus de los prefijos T# o TIME# se debe especificar al menos una unidad de tiempo.
Representacin decimal
La representacin decimal se utiliza slo para especificar como nmero decimal un componente de tiempo (p.ej., horas o minutos).
Representacin decimal
SECUENCIA DE CIFRAS DECIMALES SECUENCIA DE CIFRAS DECIMALES
Das
Horas
Minutos M
Segundos
MS
Milisegundos
El acceso a la representacin decimal slo es posible con unidades de tiempo no definidas todava.
9-14
Representacin escalonada
La representacin escalonada es una secuencia de distintos componentes de tiempo. Primero se especifican los das, luego las horas, y as sucesivamente, separados por caracteres de subrayado. Hay que indicar por lo menos un componente.
Representacin escalonada
SECUENCIA DE
CIFRAS DECIMALES
Horas
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
Minutos
Segundos
SECUENCIA DE
CIFRAS DECIMALES
MS
Milisegundos
Ejemplo
// Representacin decimal Intervalo1:= TIME#10.5S ; // Representacin escalonada Intervalo2:= T#3D_2S_3MS ; // Representacin escalonada y representacin decimal Intervalo3 := T#2D_2.3s ;
9-15
9.1.3.8
Constantes de hora
La hora del da se inicia con los prefijos TIME_OF_DAY# TOD#.
Sintaxis
HORA DEL DIA
TIME_OF_DAY# Indicacin de hora del da TOD#
Para la indicacin de la hora del da se declaran las horas, minutos y segundos separados por dos puntos. La indicacin de los milisegundos es opcional. En caso de utilizarse, se separa de los dems datos mediante un punto.
Ejemplo
HORA1:= TIME_OF_DAY#12:12:12.2 ; HORA2:= TOD#11:11:11 ;
9-16
9.1.3.9
Sintaxis
FECHA Y HORA
DATE_AND_TIME# Indicacin de fecha DT# Indicacin de hora del da
Indicacin de la fecha
Indicacin de fecha
Secuencia de cifras decimales Ao Secuencia de cifras decimales Mes Secuencia de cifras decimales Da
Indicacin de la hora
Indicacin de hora del da
SECUENCIA DE CIFRAS DECIMALES Indicacin de horas SECUENCIA DE CIFRAS DECIMALES Indicacin de minutos
Ejemplo
HORA1:= DATE_AND_TIME#1995-01-01-12:12:12.2 ; HORA2:= DT#1995-02-02-11:11:11;
9-17
9.2
Sintaxis
Bloque de metas de salto
IDENTIFICADOR Meta de salto ,
LABEL
END_LABEL
Ejemplo
LABEL META1, META2, META3; END_LABEL
9-18
10
Datos globales
10.1
10-1
Datos globales
10.2
SIMBOLO
Acceso simblico
IDENTIFICADOR DE OPERANDO
10-2
Datos globales
El identificador absoluto remite a un rea de memoria de la CPU. Esta rea se especifica indicando el identificador de operando (en este caso EB) seguido de la direccin (en este caso 10).
Prefijo de memoria
Prefijo de tamao
Prefijo de memoria
Con el prefijo de memoria se puede definir el tipo de rea de memoria que deben direccionarse.
Prefijo de memoria
E A M PE PA Nemotcnica alemana I Q M PI PQ Nemotcnica inglesa
Dependiendo de la nemotcnica que se haya ajustado (inglesa o alemana), los identificadores de operandos varan.
10-3
Datos globales
Prefijo de tamao
Indicando el prefijo de tamao 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 especificacin del prefijo de tamao es opcional si slo desea especificar un bit.
Prefijo de tamao
X B W D Bit Byte Palabra Doble palabra
Direccin
Al especificar la direccin se indica primero la direccin absoluta del byte y, a continuacin, separada por un punto, la direccin de bit del byte en cuestin. Especificar la direccin del bit es opcional.
Direccin
Nmero . Nmero Slo con direcciones de bit
Ejemplos
STATUSBYTE :=EB10; STATUS_3 :=E1.1; VALOR_MEDIDO :=EW20;
10-4
Datos globales
Acceso
El acceso se realiza asignando un valor a una variable del mismo tipo usando los smbolos declarados.
Ejemplo
VALOR_MEDIDO_1 := Contacto del motor_1; Estado_Motor1 := Entrada1 ;
10-5
Datos globales
E X [i,j]
Direccin
Expresin bsica para ndice, encerrada entre corchetes.
Identificador de operando
Prefijo de memoria
Prefijo de tamao
Expresin bsica
Identificador de operandos
Ejemplo
VALOR_MEDIDO_1 MARCA_DS :=EW[CONTADOR]; :=E[BYTE, BIT];
10-6
Datos globales
10.3
Bloques datos
Acceso
El acceso a los datos de un bloque de datos global puede ser: absoluto o simple configurado indizado
Acceso absoluto a DB
Direccin
Identificador de operando
Acceso indizado a DB
Identificador de operando
Acceso estructurado a DB
Variable simple
Identificador de DB
Acceso simblico a DB
Variable simple
Smbolo para DB
10-7
Datos globales
ESTADO_5:= DB11.DX13.1;
Direccin Prefijo de tamao Variable del mismo tipo Identificador de DB
Sintaxis
El acceso se especifica mediante el identificador DB, el prefijo de tamap y direccin
Acceso absoluto a DB
Identificador de operando Identificador de DB . D Prefijo de tamao
Direccin
Prefijo de tamao
El prefijo de tamao indica la longitud del rea de memoria del bloque de datos a que puede llamarse. Por ejemplo, puede leer un byte o una palabra del DB. La especificacin del prefijo de tamao es opcional si slo desea especificar un bit.
Prefijo de tamao
X B W D Bit Byte Palabra Doble palabra
10-8
Datos globales
Direccin
Al especificar la direccin se indica primero la direccin absoluta del byte y, a continuacin, separada por un punto, la direccin del bit correspondiente (slo en caso de acceso por bits).
Direccin
Nmero . Nmero slo con direccin de bit
Ejemplo
Veamos algunos ejemplos del acceso absoluto a un bloque de datos. El mismo bloque de datos se especifica de modo absoluto en la primera parte, y simblicamente en la segunda: STATUSBYTE :=DB101.DB10; STATUS_3 :=DB30.D1.1; VALOR_MEDIDO:=DB25.DW20; STATUSBYTE :=Datos de estado.DB10; STATUS_3 :="Nuevos datos".D1.1; VALOR_MEDIDO:=Datos medidos.DW20.DW20; STATUS_1 :=WORD_TO_BLOCK_DB (INDEX).DW10;
10-9
Datos globales
Prefijo de tamao
Prefijo de memoria
Identif_de_DB
D X [i,j]
Direccin
Expresin bsica para ndice, encerrada entre corchetes.
Identificador de operando
Sintaxis
Identificador de operando
IDENTIFICADOR DE DB
Prefijo de tamao
Expresin bsica
Expresin bsica
La indizacin debe cumplir las reglas siguientes: En un acceso con un tipo de datos BYTE, WORD o DWORD se debe utilizar exactamente un ndice. El ndice se interpreta como la direccin del byte. El ancho de acceso viene definido por el prefijo de tamao. En un acceso con un tipo de datos BOOL se debe utilizar dos ndices. El primer ndice especifica la direccin del byte, y el segundo la posicin del bit dentro del byte. Cada ndice debe ser una expresin aritmtica del tipo de datos INT (0 - 32767)
Ejemplo
STATUS_1:= STATUS_2:= STATUS_1:= STATUS_2:= STATUS_1:= DB11.DW[CONTADOR]; DB12.DX[W, BIT]; Base_de_datos.DW[CONTADOR]; Base_de_datos2.DX[W, BIT]; WORD_TO_BLOCK_DB(INDEX).DW[CONTADOR];
10-10
Datos globales
Sintaxis
IDENTIFICADOR DE DB
Variable simple
En este caso la variable simple es una variable a la que se ha asignado un tipo de datos simple o compuesto al declarar el bloque. Si se utiliza un parmetro del tipo BLOCK_DB o el resultado de la funcin de conversin WORD_TO_BLOCk_DB para iniciar un acceso a un bloque de datos, no es posible realizar un acceso estructurado, sino slo un acceso absoluto o un acceso indizado.
Ejemplo
En el rea de declaracin del FB10: VAR Resultado: STRUCT RESULT1 : INT; RESULT2 : WORD; END_STRUCT END_VAR Tipo de datos definido por el usuario UDT1 TYPE UDT1 STRUCT RESULT1 : INT; RESULT2 : WORD; END_STRUCT DB20 con tipo de datos de usuario: DB20 UDT1 BEGIN ... DB30 sin tipo de datos de usuario: DB30 STRUCT RESULT1 : INT; RESULT2 : WORD; END_STRUCT BEGIN ... Bloque de funcin con los accesos: .. FB10.DB10(); PALABRA_RESULT_A := DB10.Resultado.RESULT2; PALABRA_RESULT_B := DB20.RESULT2; PALABRA_RESULT_C := DB30.RESULT2;
10-11
Datos globales
10-12
11
11.1
11-1
11.2
Operaciones
Las expresiones estn formadas por operaciones y operandos. La mayora 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. ej. A + B). Una operacin unaria est situada siempre delante de su operando (p. ej. -B). La prioridad de operaciones que aparece en la siguiente tabla determina la secuencia del clculo. En la tabla la cifra "1" corresponde a la mxima prioridad.
Operacin Asignacin Potencia Operaciones unarias signo ms unitario Menos unario Operaciones aritmticas bsicas Multiplicacin Divisin Funcin mdulo Divisin por nm. enteros Adicin Sustraccin
Representacin := ** + -
Prioridad 11 2 3 3
4 4 4 4 5 5 6 6 6 6 7 7 3
Operaciones de comparacin:
Menor que Mayor que Menor o igual que Mayor o igual que Igualdad Desigualdad
Operaciones lgicas:
8 9 10 1
Caracteres de anidado:
Parntesis
11-2
11.3
Operandos
Los operandos son objetos con los que se puede formar una expresin. Para crear operandos se pueden utilizar los siguientes elementos:
Operando
Constante Variable ampliada
( Expresin )
NOT
Operando
Constantes:
Se pueden utilizar constantes con su valor numrico o con un nombre simblico o cadenas de caracteres.
Constante
Valor numrico Secuencia de caracteres
Nombre de constante
Los siguientes ejemplos son ejemplos de constantes vlidas: 4_711 4711 30.0 'CARACTER' FACTOR
11-3
Variable ampliada
La variable ampliada es un trmino genrico para una serie de variables. Para ms informacin al respecto, consulte el captulo "Asignacin de valores".
Variable ampliada
Variable simple Variable absoluta para reas de memoria de la CPU Variable en DB
Llamada a FC
Los siguientes ejemplos son ejemplos de variables vlidas: VALOR _TEORICO variable simple EW10 variable absoluta E100.5 variable absoluta DB100.DW [INDICE] variable del DB MOTOR.VELOCIDAD variable de instancia local SQR (20) funcin estndar FC192 (VALOR_TEORICO) Llamada a funcin
Nota En una llamada a funcin el resultado obtenido (valor de respuesta) se inserta en la expresin en la posicin del nombre de la funcin. Por este motivo, no se permite el uso de funciones VOID que no tengan ningn valor de retorno como operandos de una expresin.
11-4
11.4
Sintaxis
Expresin
Operando
Expresin
Expresin
Expresin
Secuencia de evaluacin
La secuencia de evaluacin de una expresin depende de: la prioridad de las operaciones realizadas la secuencia izquierda-derecha el uso de los parntesis (en operaciones de la misma prioridad).
11-5
Reglas
Las expresiones se procesan segn 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 jerrquico. Las operaciones de la misma prioridad se ejecutan de izquierda a derecha. Anteponer un signo menos a un identificador equivale a multiplicar por -1. Las operaciones aritmticas no pueden aparecer de forma consecutiva. Por lo tanto, la expresin a * - b no es vlida, pero s est permitida la expresin a*(-b). El uso de parntesis puede alterar la prioridad de la operacin, ya que los parntesis tienen prioridad mxima. Las expresiones entre parntesis se consideran como un nico operando y se evalan siempre en primer lugar. El nmero de parntesis de apertura debe coincidir con el nmero de parntesis de cierre. No se pueden utilizar operaciones aritmticas en combinacin con caracteres o datos lgicos. Por lo tanto, expresiones como 'A' + 'B' y (n<=0) + (m>0) no son vlidas.
Ejemplos de expresiones
EB10 A1 AND (A2) (A3) < (A4) 3+3*4/2 //operando //expresin lgica //expresin de comparacin //expresin aritmtica
11-6
11.5
Expresin simple
En S7-SCL se entiende por expresin simple las expresiones aritmticas simples. Puede multiplicar o dividir por parejas valores contantes y combinar dichas parejas mediante adicin o sustraccin.
Multiplicacin simple
* /
DIV MOD
Ejemplo:
EXPRESION_SIMPLE= A * B + D / C - 3 * VALOR1;
11-7
11.6
Expresiones aritmticas
Una expresin aritmtica es una expresin formada por operaciones aritmticas. Estas expresiones le permiten procesar datos del tipo numrico. La siguiente tabla muestra las operaciones posibles e indica a qu tipo hay que asignar el resultado en funcin de los operandos. Se han utilizado las siguientes abreviaturas:
ANY_INT ANY_NUM para los tipos de datos para los tipos de datos
er
Operacin Potencia Ms unario Menos unario Multiplicacin Divisin Divisin por nmeros enteros Divisin de mdulo Adicin
Identificador ** + * / DIV
1 operando ANY_NUM ANY_NUM TIME ANY_NUM TIME ANY_NUM TIME ANY_NUM TIME ANY_INT TIME
2 operando ANY_NUM ANY_NUM ANY_INT ANY_NUM ANY_INT ANY_INT ANY_INT ANY_INT ANY_NUM TIME TIME TIME ANY_NUM TIME TIME DATE TOD TIME DT
Resultado REAL ANY_NUM TIME ANY_NUM TIME ANY_NUM TIME ANY_NUM TIME ANY_INT TIME ANY_INT ANY_NUM TIME TOD DT ANY_NUM TIME TOD TIME TIME DT TIME
Prioridad 2 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5
MOD +
Sustraccin
Nota El tipo de datos del resultado de una divisin (/) viene dado por el tipo de datos del operando ms significativo. Si por ejemplo se dividen dos operandos del tipo INT, el resultado tambin ser del tipo INT (es decir, 10/3=3, mientras 10.0/3=3.33).
11-8
Reglas
Las operaciones de las expresiones aritmticas se ejecutan segn su prioridad. Para facilitar la lectura de los parntesis se recomienda poner los signos de los nmeros 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). Las operaciones de divisin "/", "MOD" y "DIV" requieren que el segundo operando sea distinto a cero. Cuando un operando es del tipo INT (entero) y otro del tipo REAL (nmero de coma flotante), el resultado siempre ser del tipo REAL. En la resta de datos del tipo DATE_AND_TIME y TIME, el operando del tipo TIME siempre debe figurar a la derecha del operador "-".
Ejemplos
// El resultado (11) de la expresin aritmtica se asigna // a la variable "VALOR" VALOR1 := 3 + 3 * 4 / 2 - (7+3) / (-5) ; // El VALOR de la siguiente expresin es 1 VALOR2 := 9 MOD 2 ;
11-9
11.7
Expresiones lgicas
Una expresin lgica es una expresin formada por operaciones lgicas.
AND
&
XOR
OR
Operaciones lgicas
El resultado de la expresin puede ser TRUE o FALSE cuando se combinan operandos booleanos, o un patrn de bits en caso de que se hayan combinado los dos operandos bit a bit. La tabla siguiente indica las expresiones lgicas y los tipos de datos disponibles para el resultado y los operandos. Se han utilizado las siguientes abreviaturas:
ANY_BIT para los tipos de datos
er
Prioridad 3 8 9 10
Rsultado
El resultado de una expresin lgica es 1 (true) o = 0 (false) al combinar lgicamente operaciones booleanas, o un patrn de bits, despus de combinar bit a bit los dos operandos.
11-10
Ejemplos
// Se niega el resultado de la expresin de comparacin. IF NOT (CONTADOR > 5) THEN . . . ; // Se niega el resultado de la primera expresin de comparacin y // se combina con el resultado de la segunda A := NOT (CONTADOR1 = 4) AND (CONTADOR2 = 10) ; // Disyuncin de dos expresiones de comparacin WHILE (A >= 9) OR (CONSULTAR <> "n") DO.... ; // Enmascaramiento de un byte de entrada (combinacin binaria) Resultado := EB10 AND 2#11110000 ;
11-11
11.8
Expresiones de comparacin
Con las operaciones de comparacin se comparan los valores de dos operandos y se obtiene un valor booleano. El resultado es TRUE si la comparacin se cumple, y FALSE si no se cumple.
Sintaxis
Operacin de comparacin
<
>
<=
>=
<>
Reglas
La tabla siguiente muestra los tipos de datos comparables y las reglas que se aplican a la comparacin:
<>
>0
<0
>
<
Reglas En la clase de los tipos de datos numricos se admiten todos los operadores de comparacin. El operador con el tipo ms potente determina el tipo de la operacin.
DINT REAL BOOL En la clase de los tipos de datos bit slo se admiten como operadores de comparacin IGUAL y DIFERENTE. El operador con el tipo ms potente determina el tipo de la operacin. BYTE WORD DWORD
11-12
<>
>0
<0
>
<
Reglas En el caso de los caracteres y las cadenas de caracteres se utiliza la longitud de la variables y el valor numrico de cada carcter ASCII para la comparacin. La comparacin en el caso de STRING se realiza internamente mediante las funciones EQ_STRNG, GE_STRNG, LE_STRNG, GT_STRNG y LT_STRNG de la librera IEC. Los siguientes operandos no estn permitidos para estas funciones: Parmetro de una FC. Parmetro IN_OUT de un FB del tipo STRUCT o ARRAY.
La comparacin en el caso de DT se realiza internamente mediante las funciones EQ_DT, GE_ DT, LE_ DT, GT_STRNG y LT_ DT de la librera IEC.
Los siguientes operandos no estn permitidos para estas funciones: Parmetro de una FC. Parmetro IN_OUT de un FB del tipo STRUCT o ARRAY.
TOD S5-TIME Las variables S5-TIME no se admiten como operandos de comparacin. Es necesario realizar una conversin explcita de S5TIME a TIME con las funciones IEC.
Combinacin de comparaciones
Las expresiones de comparacin se pueden combinar segn las leyes de la lgica booleana. De este modo se pueden realizar consultas como "si a < b y b < c entonces ...". (Ejemplo: Valor_A > 20 AND Valor_B < 20) Las operaciones individuales se ejecutan segn su prioridad. La prioridad se puede cambiar mediante el uso de parntesis.
11-13
Ejemplos
// Comparacin 3 MENOR IGUAL 4. El resultado // es "TRUE" A := 3 <= 4 // Comparacin 7 DIFERENTE 7. El resultado // es "FALSE" 7 <> 7 // Evaluacin de una expresin de comparacin en // una ramificacin IF IF CONTADOR < 5 THEN .... // Combinacin de dos expresiones de comparacin Valor_A > 20 AND Valor_B < 20 // Combinacin de dos expresiones de comparacin con parntesis A<>(B AND C)
11-14
12
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 expresin. Dicha expresin tambin puede incluir identificadores de funciones que se activan y devuelven valores (valor de respuesta). Segn se muestra en la figura siguiente, la expresin se evala a la derecha de la asignacin, y el resultado se memoriza junto a las variables cuyo nombre figura a la izquierda del identificador de la asignacin. En la figura aparecen las variables permitidas.
:=
Expresin
El tipo de una expresin de asignacin es el mismo que el del operando izquierdo. Una variable simple puede ser una variable del tipo de datos simple o compuesto.
12-1
Instrucciones
Ejemplo
FUNCTION_BLOCK FB12 VAR PULSADOR_1 : INT ; PULSADOR_2 : INT ; VALOR_TEORICO_1 : REAL ; VALOR_TEORICO_2 : REAL ; CONSULTAR_1 : BOOL ; TIEMPO_1 : S5TIME ; TIEMPO_2 : TIME ; FECHA_1 : DATE ; HORA_1 : TIME_OF_DAY ; END_VAR BEGIN // Asignacin de una PULSADOR_1 VALOR_TEORICO_1 CONSULTAR_1 TIEMPO_1 TIEMPO_2 FECHA_1 constante a una variable := -17 ; := 100.1 ; := TRUE ; := T#1H_20M_10S_30MS ; := T#2D_1H_20M_10S_30MS ; := D#1996-01-10 ;
// Asignacin de una variable a una variable VALOR_TEORICO_1 := VALOR_TEORICO_2 ; PULSADOR_2 := PULSADOR_1 ; // Asignacin de una expresin a una variable PULSADOR_2 := PULSADOR_1 * 3 ; END_FUNCTION_BLOCK
12-2
Instrucciones
12-3
Instrucciones
Ejemplo
FUNCTION_BLOCK FB3 VAR VARAYUD : REAL ; VALOR_MEDIDO : STRUCT
//Estructura meta TENSION:REAL ; RESISTENCIA:REAL ; ARRAY_SIMPLE : ARRAY END_STRUCT ; //Estructura fuente TENSION: REAL ; RESISTENCIA : REAL ; ARRAY_SIMPLE: ARRAY [1..2, END_STRUCT ;
1..2] OF INT ; END_VAR BEGIN //Asignacin de una estructura completa a una estructura completa VALOR_MEDIDO := VALOR REAL ; //Asignacin de un componente de estructura a un componente de estructura VALOR_MEDIDO.TENSION:= VALOR REAL.TENSION ; //Asignacin de un componente de estructura a una variable del mismo tipo VARAYUD := VALOR REAL.RESISTENCIA ; //Asignacin de una constante a un componente de estructura VALOR_MEDIDO.RESISTENCIA := 4.5; //Asignacin de una constante a un elemento de array simple VALOR_MEDIDO.ARRAY_SIMPLE[1,2] := 4; END_FUNCTION_BLOCK
12-4
Instrucciones
Nota Tenga en cuenta que no est permitido asignar constantes a arrays enteros.
12-5
Instrucciones
Ejemplo
FUNCTION_BLOCK FB3 VAR VALORES_TEORICOS :ARRAY [0..127] OF INT ; VALORES_REALES :ARRAY [0..127] OF INT ; // Declaracin de una matriz (=array bidimensional) // de 3 lneas y 4 columnas REGULADOR : ARRAY [1..3, 1..4] OF INT ; // Declaracin de un vector (=array unidimensional) de 4 componentes REGULADOR_1 : ARRAY [1..4] OF INT ; END_VAR BEGIN // Asignacin de un array completo a un array VALORES_TEORICOS := VALORES_REALES ; // Asignacin de un vector a la segunda lnea del array REGULADOR REGULADOR[2] := REGULADOR_1 ; // Asignacin de un componente de array a un componente // del array REGULADOR REGULADOR [1,4] := REGULADOR_1 [4] ; END_FUNCTION_BLOCK
12-6
Instrucciones
Ejemplo
FUNCTION_BLOCK FB3 VAR INDICADOR_1 : STRING[50] ; ESTRUCTURA1 : STRUCT INDICADOR_2 : STRING[100] ; INDICADOR_3 : STRING[50] ; END_STRUCT ; END_VAR BEGIN // Asignacin de una constante a una variable STRING INDICADOR_1 := 'error en el mdulo 1' ; // Asignacin de un componente de estructura a una variable STRING. INDICADOR_1 := ESTRUCTURA1.INDICADOR_3 ; // Asignacin de una variable STRING a una variable STRING If INDICADOR_1 <> ESTRUCTURA1.INDICADOR_3 THEN INDICADOR_1 := ESTRUCTURA1.INDICADOR_3 ; END_IF; END_FUNCTION_BLOCK
12-7
Instrucciones
Ejemplo
FUNCTION_BLOCK FB3 VAR TIEMPO_1 ESTRUCTURA1 TIEMPO_2 TIEMPO_3 END_STRUCT ; END_VAR
: : : :
BEGIN // Asignacin de una constante a una variable DATE_AND_TIME TIEMPO_1 := DATE_AND_TIME#1995-01-01-12:12:12.2 ; ESTRUCTURA1.TIEMPO_3 := DT#1995-02-02-11:11:11 ; // Asignacin de un componente de estructura a una variable DATE_AND_TIME. TIEMPO_1 := ESTRUCTURA1.TIEMPO_2 ; // Asignacin de una variable DATE_AND_TIME a una variable DATE_AND_TIME If TIEMPO_1 < ESTRUCTURA1.TIEMPO_3 THEN TIEMPO_1 := ESTRUCTURA1.TIEMPO_3 ; END_IF ; END_FUNCTION_BLOCK
12-8
Instrucciones
Variable absoluta
Identificador de operando Prefijo de memoria Prefijo de tamao Direccin
Ejemplo
FUNCTION_BLOCK FB3 VAR PALABRA_DE_ESTADO1 : WORD ; PALABRA_DE_ESTADO2 : BOOL ; PALABRA_DE_ESTADO3 : BYTE ; PALABRA_DE_ESTADO4 : BOOL ; DIRECCIN : INT ; END_VAR BEGIN DIRECCIN := 10 ; // Asignacin de una palabra de entrada a una variable // (acceso sencillo) PALABRA_DE_ESTADO1 := EW4 ; // Asignacin de una variable a un bit de salida (acceso sencillo) a1.1 := PALABRA_DE_ESTADO2 ; // Asignacin de un byte de entrada a una variable (acceso indexado) PALABRA_DE_ESTADO3 := EB[DIRECCIN] ; // Asignacin de un bit de entrada a una variable (acceso indexado) DIRECCION_FOR := 0 TO 7 BY 1 DO PALABRA_DE_ESTADO4 := e[1, DIRECCIN] ; END_FOR ; END_FUNCTION_BLOCK
12-9
Instrucciones
Sintaxis de la variable DB
Variable de DB
Identificador de operando IDENTIFICADOR DE DB . D Prefijo de tamao Direccin
12-10
Instrucciones
Ejemplo
FUNCTION_BLOCK FB3 VAR 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 // Asignacin de la palabra 1 del DB11 //a una variable (acceso simple) PALABRA_DE_ESTADO1 := DB11.DW1 ; // Al componente del array de la 1 lnea y // de la 1 columna de la matriz se le asigna // el valor de la variable "NUMERO" (acceso configurado): REGULADOR_1[1] := DB11.NUMERO ; // Asignacin del componente de estructura "NUMERO2" // de la estructura "NUMERO1" a la variable palabra de estado3 PALABRA_DE_ESTADO3 := DB11.NUMERO1.NUMERO2 ; // Asignacin de una palabra con direccin de ndice // del DB11 a una variable (acceso indexado) FOR DIRECCION := 1 TO 10 BY 1 DO PALABRA_DE_ESTADO2[DIRECCION] := DB11.DW[DIRECCION] ; // Aqu se utilizan el parmetro de entrada // PALABRA_DE_DIRECCION como // nmero del DB y el ndice DIRECCIN para indicar // la direccin de // palabra en el DB. PALABRA_DE_ESTADO4 := WORD_TO_BLOCK_DB(PALABRA_DE_DIRECCION).DW[DIRECCION] ; END_FOR ; END_FUNCTION_BLOCK
12-11
Instrucciones
12.2
Instrucciones de control
Instrucciones de seleccin
Una instruccin de seleccin permite derivar el flujo del programa a distintas secuencias de instrucciones en funcin de determinadas condiciones.
Tipo de ramificacin Instruccin IF Instruccin CASE Funcin Con la instruccin IF se deriva el flujo del programa a una de dos alternativas en funcin de una condicin que puede ser TRUE o FALSE. Con la instruccin CASE se puede controlar el flujo del programa a una ramificacin 1:n, haciendo que una variable adopte un valor de entre n valores posibles.
Edicin de bucles
El procesamiento de bucles se puede controlar mediante instrucciones de repeticin. Una instruccin de repeticin indica las partes del programa que deben repetirse en determinadas condiciones.
Tipo de ramificacin Instruccin FOR Instruccin WHILE Instruccin REPEAT Funcin Sirve para repetir una secuencia de instrucciones hasta que la variable en ejecucin se encuentre dentro del margen indicado. Sirve para repetir una secuencia de instrucciones hasta que se cumpla una condicin de ejecucin. Sirve para repetir una secuencia de instrucciones hasta que se cumpla una condicin de interrupcin.
12-12
Instrucciones
12.2.2 Condiciones
La condicin puede ser una expresin de comparacin, una expresin lgica o una expresin aritmtica. Es del tipo BOOL y puede adoptar los valores TRUE o FALSE. Las expresiones aritmticas son TRUE, si adoptan un valor no igual a cero y FALSE, si resultan cero. La siguiente tabla muestra ejemplos para condiciones:
Tipo Expresin de comparacin Ejemplo TEMP > 50 CONTADOR<= 100 CHAR1 < 'S' (ALPHA <> 12) AND NOT BETA E1.1 ALPHA = (5 + BETA)
12-13
Instrucciones
12.2.3 Instruccin IF
La instruccin IF es una instruccin condicional. Ofrece una o varias opciones y selecciona una de sus rea de instrucciones (en algunos casos ninguna); la opcin seleccionada se ejecutar. Al ejecutar la instruccin condicional se evalan las expresiones lgicas especificadas. Si el valor de una expresin es TRUE, la condicin se cumple; si el valor es FALSE, la condicin no se cumple.
Sintaxis
Instruccin IF
Area de instrucciones
IF
Expresin Condicin
THEN
ELSIF
Expresin Condicin
THEN
Area de instrucciones
ELSE
Area de instrucciones
END_IF
La instruccin IF se procesa segn las reglas siguientes: Se ejecuta la primera secuencia de instrucciones cuya expresin lgica = TRUE. Las restantes secuencias de instrucciones no se ejecutan. Si no hay ninguna expresin booleana = TRUE, se ejecuta la secuencia de instrucciones de ELSE (o ninguna, si no existe rama ELSE). Puede existir cualquier nmero de instrucciones ELSIF.
Nota Frente a una cadena de instrucciones-IF, el uso de una o varias ramas ELSIF ofrece la ventaja de que las expresiones lgicas que siguen a una expresin vlida ya no se evalan. Ello permite reducir el tiempo de ejecucin de un programa.
12-14
Instrucciones
Ejemplo
IF 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 ;
12-15
Instrucciones
Sintaxis
Instruccin CASE
Expresin de seleccin (entero) CASE Expresin Valor OF
Lista de valores
Area de instrucciones
ELSE
Area de instrucciones
END_CASE
La instruccin CASE se procesa segn las reglas siguientes: La expresin de seleccin deber suministrar un valor del tipo ENTERO. Al procesar la instruccin CASE se comprueba si el valor de la expresin de seleccin est incluida en una lista de valores especificada. En caso de coincidencia se ejecuta el rea de instrucciones asignada de la lista. Si el proceso de comparacin no localiza ninguna coincidencia, se ejecuta el rea de instrucciones que sigue a ELSE, o no se ejecuta ninguna instruccin si no existe rama ELSE.
12-16
Instrucciones
Lista de valores
La lista de valores contiene los valores permitidos para la expresin de seleccin.
Lista de valores
Nmero 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. Los valores que se encuentran en la lista de valores deben ser del tipo ENTERO. Cada valor debe figurar una sola vez.
Valor
El valor sigue la sintaxis que figura ms abajo:
Constante numrica
Ejemplo
CASE TW OF 1 : 2 : 3 : 4..10: 11,13,19: ELSE: DISPLAY:= 0; TW_ERROR:= 1; END_CASE ; DISPLAY:= OVEN_TEMP; DISPLAY:= MOTOR_SPEED; DISPLAY:= GROSS_TARE; AW4:= 16#0003; DISPLAY:= INT_TO_DINT (TW); AW4:= 16#0004; DISPLAY:= 99; AW4:= 16#0005;
12-17
Instrucciones
Sintaxis
Instruccin FOR
FOR Asignacin inicial para valor inicial TO Expresin bsica para valor final
BY
DO
Area de instrucciones
END_FOR
La instruccin FOR se procesa de la siguiente forma: Al iniciar el bucle la variable de control toma el valor inicial (asignacin inicial) y, cada vez que recorre el bucle, se produce el incremento (incremento positivo) o el decremento especificado (incremento negativo) hasta que se alcanza el valor final. Cada vez que se recorre el bucle se comprueba si se ha cumplido la condicin (valor final alcanzado). En caso afirmativo se ejecuta la secuencia de instrucciones; en caso contrario se salta el bucle y, por tanto, la secuencia de instrucciones.
Reglas
Al formular instrucciones FOR deben aplicarse las siguientes reglas: La variable de control slo puede ser del tipo INT o DINT. La especificacin de BY [paso] puede omitirse. Si falta la indicacin, el paso es de +1.
12-18
Instrucciones
:=
La especificacin de BY [paso] puede omitirse. Si falta la indicacin, el incremento es de +1. El valor inicial, el valor final y el incremento son expresiones (consulte el captulo "Expresiones, operaciones, operandos). La evaluacin tiene lugar al comienzo de la ejecucin de la instruccin FOR. No est permitido modificar los dos valores (del valor final y del incremento) durante la ejecucin.
12-19
Instrucciones
Ejemplo
FUNCTION_BLOCK FOR_BSP VAR 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
12-20
Instrucciones
Sintaxis
Instruccin WHILE
Area de instrucciones
WHILE
Expresin
DO
END_WHILE
Condicin de ejecucin
La instruccin WHILE se ejecuta de acuerdo con las siguientes reglas: Antes de cada ejecucin del rea de instrucciones se valora la condicin de ejecucin (bucle de rechazo). El rea de instrucciones que sigue a DO se repite tantas veces como la condicin de ejecucin arroje el valor TRUE. Si se produce el valor FALSE, se salta el bucle y se ejecuta la instruccin que le sigue.
Ejemplo
FUNCTION_BLOCK WHILE_BSP VAR INDEX: INT ; PALABRA_CLAVE: ARRAY [1..50] OF STRING ; END_VAR BEGIN INDEX := 1 ; WHILE INDEX <= 50 AND PALABRA_CLAVE [INDEX] <> 'KEY' DO INDEX := INDEX + 2; END_WHILE ; END_FUNCTION_BLOCK
12-21
Instrucciones
Sintaxis
Instruccin REPEAT
REPEAT
Area de instrucciones
UNTIL
Expresin
END_REPEAT
Condicin de interrupcin
La condicin se comprueba despus de ejecutar el cuerpo de la instruccin. Esto significa que el cuerpo se ejecutar como mnimo una vez, aunque la condicin de interrupcin se cumpla desde el principio.
Ejemplo
FUNCTION_BLOCK REPEAT_EXAMP VAR INDEX: INT ; PALABRA_CLAVE: ARRAY [1..50] OF STRING ; END_VAR BEGIN INDEX := 0 ; REPEAT INDEX := INDEX + 2 ; UNTIL INDEX > 50 PALABRA CLAVE OR[INDEX] = 'KEY' END_REPEAT ; END_FUNCTION_BLOCK
12-22
Instrucciones
Sintaxis
Instruccin CONTINUE
CONTINUE
La instruccin CONTINUE se ejecuta segn las reglas siguientes: Esta instruccin interrumpe de forma inmediata la ejecucin de la secuencia de instrucciones. Dependiendo de si se cumple o no la condicin de repeticin del bucle, se ejecuta de nuevo el cuerpo o se abandona la instruccin de repeticin y se ejecuta la instruccin inmediatamente posterior. En una instruccin FOR inmediatamente despus de una instruccin CONTINUE, la variable de control aumenta el incremento especificado.
Ejemplo
FUNCTION_BLOCK CONTINUE_EXAMP VAR INDEX :INT ; FELD :ARRAY[1..100] OF INT ; END_VAR BEGIN INDEX := 0 ; WHILE INDEX <= 100 DO INDEX := INDEX + 1 ; // Si ARRAY [INDEX] es igual a INDEX, // no se modificar ARRAY [INDEX] : ARRAY IF[INDEX] = INDEX THEN CONTINUE ; END_IF ; ARRAY[INDEX] := 0 ; // Otras instrucciones END_WHILE ; END_FUNCTION_BLOCK
12-23
Instrucciones
Sintaxis
Instruccin EXIT
EXIT
La instruccin EXIT se ejecuta segn las reglas siguientes: Con esta instruccin se abandona de inmediato la instruccin de repeticin en la que se encuentra la instruccin EXIT. El programa prosigue la ejecucin despus de la instruccin de fin del bucle de repeticin (p.ej., despus de END_FOR).
Ejemplo
FUNCTION_BLOCK EXIT_EXAMP VAR INDEX_1 : INT ; INDEX_2 : INT ; INDEX_BUSCADO : INT ; PALABRA CLAVE : ARRAY[1..51] OF STRING ; END_VAR BEGIN INDEX_2 := 0 ; FOR INDEX_1 := 1 TO 51 BY 2 DO // salir del bucle FOR si la // PALABRA CLAVE[INDEX_1] es igual a 'KEY': PALABRA CLAVE IF[INDEX_1] = 'KEY' THEN INDEX_2 := INDEX_1 ; EXIT ; END_IF ; END_FOR ; // La siguiente asignacin de valor se // realizar despus de ejecutar // EXIT o despus del final regular del bucle FOR: INDEX_BUSCADO:= INDEX_2 ; END_FUNCTION_BLOCK
12-24
Instrucciones
Sintaxis
Instruccin GOTO
GOTO IDENTIFICADOR Meta de salto
La meta del salto designa una marca del bloque de declaracin LABEL/END_LABEL. Esta marca precede a la instruccin que se ejecuta despus de GOTO. Al utilizar la instruccin GOTO deben observarse las siguientes reglas: El destino de una instruccin de salto debe encontrarse dentro del mismo bloque. El destino del salto debe ser inequvoco. No se puede saltar a un bucle, pero s desde un bucle.
Ejemplo
FUNCTION_BLOCK GOTO_BSP VAR INDEX : INT ; A : INT ; B : INT ; C : INT ; PALABRA_CLAVE : ARRAY[1..51] OF STRING ; END_VAR LABEL META1, META2, META3 ; END_LABEL BEGIN IF A > B THEN GOTO META1 ; ELSIF A > C THEN GOTO ETIQUETA2 ; END_IF ; // . . . META1: INDEX := 1 ; GOTO META3 ; META2: INDEX := 2 ; // . . . META3: // . . .
12-25
Instrucciones
Sintaxis
Instruccin RETURN
RETURN
Nota Una instruccin RETURN situada al final del rea de instrucciones de un bloque lgico o al final del rea de declaracin de un bloque de datos es redundante, puesto que se ejecuta automticamente.
12-26
Instrucciones
12.3
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 funcin (FB) y las funciones (FC). Desde un bloque S7-SCL se pueden realizar llamadas a otros FC o FB. Puede llamarse a los siguientes bloques: bloques de funcin y funciones creados en S7-SCL; bloques de funcin y funciones creados en otros lenguajes de S7 (KOP, FUP, AWL); funciones del sistema (SFC) y bloques de funcin del sistema (SFB) disponibles en el sistema operativo de la CPU.
12-27
Instrucciones
La indicacin de parmetros presenta la forma de una asignacin de valor. Mediante esta asignacin de valor se asigna un valor determinado (parmetro actual) a los parmetros que ha definido en la tabla de declaracin del bloque llamado (parmetros formales).
12-28
Instrucciones
Sintaxis
Llamada a FB
FB: bloque de funcin SFB: bloque de funcin del sistema
12-29
Instrucciones
MOTOR (X1:=5,X2:=78,......);
Especificacin de parmetros
12-30
Instrucciones
Para la asignacin de parmetros se aplican las siguientes reglas: Las asignaciones pueden estar en cualquier orden. El tipo de datos de los parmetros formales y de los parmetros actuales debe coincidir. Cada una de las asignaciones se separan por comas. No es posible realizar asignaciones de salida en llamadas a FB. El valor de un parmetro de salida declarado est memorizado en los datos de instancia, donde estn accesibles para todos los FB. Para poder leerlo es necesario definir un acceso desde un FB. Tenga en cuenta las particularidades de los parmetros del tipo de datos ANY y del tipo de datos POINTER.
12-31
Instrucciones
Ejemplo
Una llamada con una asignacin de un parmetro de entrada y un parmetro de entrada/salida podra presentar el siguiente aspecto, por ejemplo: FB31.DB77(E_Par:=3, D_Par:=LONGITUD);
12-32
Instrucciones
Sintaxis
Asignacin de entrada
Parmetro actual Expresin IDENTIFICADOR DE TEMPORIZADOR IDENTIFICADOR Nombre del parme tro de entrada (parmetro formal) := IDENTIFICADOR DE CONTADOR IDENTIFICADOR DE BLOQUE
12-33
Instrucciones
Sintaxis
Asignacin de entrada/salida
:=
Nota Con tipos de datos ANY y POINTER la asignacin se rige por reglas especiales. En los parmetros de entrada/salida no se permite utilizar como parmetros actuales tipos de datos que no sean simples :
12-34
Instrucciones
Ejemplo
RESULTADO := DB10.CONTROL ;
12-35
Instrucciones
Bloque de funcin
FUNCTION_BLOCK TEST VAR_INPUT VALOR_FINAL: INT; //parmetro de entrada END_VAR VAR_IN_OUT IQ1 : REAL; //parmetro entrada/salida END_VAR VAR_OUTPUT CONTROL: BOOL;//parmetro de salida END_VAR VAR INDEX: INT; END_VAR BEGIN CONTROL FOR INDEX IQ1 IF
:=FALSE; := 1 TO VALOR_FINAL DO :=IQ1*2; IQ1 > 10000 THEN CONTROL := TRUE; END_IF;
END_FOR; END_FUNCTION_BLOCK
12-36
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 simblica, instancia global: TEST.TEST_1 (VALOR_FINAL:= 10, IQ1:= VARIABLE1) ;
Resultado
Despus de ejecutar el bloque, se dispone del valor hallado para el parmetro de entrada/salida IQ1 en la VARIABLE1.
12-37
Instrucciones
Llamada
FUNCTION_BLOCK CALL VAR // declaracin de instancia local TEST_L : TEST ; VARIABLE1 : REAL ; RESULTADO : BOOL ; END_VAR BEGIN . . . // llamada, instancia local: TEST_L (VALOR_FINAL:= 10, IQ1:= VARIABLE1) ;
12-38
Instrucciones
Sintaxis
Llamada a funcin
IDENTIFICADOR DE FC Parmetro de FC
IDENTIFICADOR DE SFC
Nota Si en S7-SCL se llama a una funcin cuyo valor de respuesta no haya sido asignado, puede ejecutarse errneamente el programa de usuario:
En una funcin programada en S7-SCL puede suceder cuando el valor de respuesta ha sido asignado, pero no se ha ejecutado la instruccin correspondiente. En una funcin programada en AWL/KOP/FUP puede suceder cuando la funcin se ha programado sin asignar el valor de respuesta o cuando no se ha ejecutado la instruccin correspondiente.
12-39
Instrucciones
Nota
En las funciones con valor de retorno ANY tiene que haber por lo menos un parmetro de entrada o de entrada/salida del tipo ANY. Si ha definido varios parmetros ANY, debe asignarles parmetros actuales del mismo tipo (p.ej., INT, DINT y REAL). Entonces el valor de respuesta ser automticamente del tipo de datos de mayor tamao que se ha utilizado en esta clase. La longitud mxima del tipo de datos STRING es ahora de 254 caracteres, pero puede reducirse al nmero deseado de caracteres.
12-40
Instrucciones
12.3.3.3 Parmetros de FC
A diferencia de los bloques de funcin, las funciones no pueden memorizar los valores de los parmetros. Al ejecutarse la funcin, los datos locales slo se guardan temporalmente. Por esta razn, al llamar una funcin es necesario asignar parmetros actuales a todos los parmetros formales de entrada, de entrada/salida y de salida que estn definidos en el rea de declaracin de la funcin.
Sintaxis
Parmetro de FC
Expresin Asignacin de entrada Asignaciones de salida y de entrada/salida ,
Reglas
Para la asignacin de parmetros se aplican las siguientes reglas: Las asignaciones pueden aparecer en cualquier orden. El tipo de datos de los parmetros formales y de los parmetros actuales debe coincidir. Cada una de las asignaciones se separan por comas.
Ejemplo
Una llamada con tal asignacin de un parmetro de entrada, salida y entrada/salida podra presentar este aspecto, por ejemplo: FC32 (E_Param1:=5,D_Param1:=LONGITUD, A_Param1:=suma de control)
12-41
Instrucciones
Define un temporizador o un contador determinado que debe utilizarse en la ejecucin de un bloque Define un determinado bloque que debe utilizarse como parmetro de entrada. El tipo de bloque (FB, FC, DB) se define en la declaracin del parmetro de entrada. Al especificar el parmetro indique el nmero del bloque. El nmero puede ser tanto absoluto como simblico
Sintaxis
Asignacin de entrada
Parmetro actual Expresin IDENTIFICADOR DE TEMPORIZADOR IDENTIFICADOR Nombre del parme tro de entrada (parmetro formal) := IDENTIFICADOR DE CONTADOR IDENTIFICADOR DE BLOQUE
Nota En los parmetros de entrada formales que no sean de un tipo de datos simple no se permite el uso de parmetros de entrada/salida FB y parmetros FC como parmetros actuales. Tenga en cuenta las particularidades del tipo de datos ANY y del tipo de datos POINTER.
12-42
Instrucciones
Sintaxis
12-43
Instrucciones
Nota En parmetros formales de salida o de entrada/salida no est permitido el uso de los siguientes parmetros actuales:
Parmetros de entrada de FC/FB Parmetros de entrada/salida que no sean del tipo de datos simple Parmetros de entrada/salida de FC y parmetros de salida de FC que no sean del tipo de datos simple. Tenga en cuenta las particularidades del tipo de datos ANY y del tipo de datos POINTER. La longitud mxima del tipo de datos STRING es ahora de 254 caracteres, pero puede reducirse al nmero desesado de caracteres.
12-44
Instrucciones
Bloque invocante
Para utilizar posteriormente un valor de la funcin dispone de las siguientes posibilidades: FUNCTION_BLOCK CALL VAR LONGITUD : REAL ; SUMA_DE_VERIFICACION : REAL ; RADIO : REAL; Y : REAL; END_VAR BEGIN . . . // Llamada en una asignacin de valores: LONGITUD := DISTANCIA (X1:=3, Y1:=2, X2:=8.9, Y2:= 7.4, Q2:=SUMA DE VERIFICACION) ; //Llamada en una expresin aritmtica o lgica, p.ej. Y := RADIO + DISTANCIA (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4, Q2:=suma de control) //Utilizacin en la asignacin de parmetros de otro bloque llamado FB32.DB32 (ESPACIO:= DISTANCIA (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4), Q2:=suma de verificcin) . . . END_FUNCTION_BLOCK
12-45
Instrucciones
Nota El valor de respuesta de una funcin no est definido si no se ha llamado a la funcin (EN : FALSE).
Ejemplo
FUNCTION_BLOCK FB57 VAR MI_ENABLE: BOOL ; resultado : REAL; END_VAR // . . . BEGIN // . . . MI_ENABLE:= FALSE ; // Llamada de una funcin, en la que se asigna el parmetro EN: Resultado := FC85 (EN:= MI_ENABLE, PAR_1:= 27) ; // no se ha ejecutado FC85 porque MI_ENABLE se ha establecido como FALSE arriba.... END_FUNCTION_BLOCK
12-46
Instrucciones
Ejemplo
// Llamada a un bloque de funcin: FB30.DB30 ([asignacin de parmetros]); // comprobacin de que todo se ha desarrollado correctamente en el bloque llamado: IF ENO THEN // todo correcto // . . . ELSE // se ha producido un error por lo que es necesario un tratamiento de errores // . . . END_IF;
12-47
Instrucciones
12-48
13
Contadores y temporizadores
13.1
Contadores
13-1
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 dinmica: En cada ejecucin de un bucle //FOR se llamar otro contador: FUNCTION_BLOCK CONTAD VAR_INPUT Contad: ARRAY [1..4] of STRUCT C_NO: INT; PV : WORD; END_STRUCT; . . END_VAR . . FOR I:= 1 TO 4 DO S_CD(C_NO:=Contad[I].C_NO, S:=true, PV:= Contad[I].PV); END_FOR; //Ejemplo de una llamada dinmica utilizando una variable del //tipo de datos COUNTER: FUNCTION_BLOCK CONTADOR VAR_INPUT MiContador:COUNTER; END_VAR . . CurrVal:=S_CD (C_NO:=MiContador,.....);
Nota Los nombres de las funciones y parmetros son idnticos en la nemotcnica alemana y en la inglesa. Slo el identificador cambia (alemn: Z, ingls: C).
13-2
Contadores y temporizadores
Reglas
Debido a que los valores de los parmetros, p. ej., CD:=E0.0) se han guardado globalmente, su indicacin es opcional en algunos casos. Al especificar parmetros deben observarse las siguientes reglas: El parmetro para la designacin del contador C_NO se debe suministrar en la llamada. En la llamada tambin es posible indicar en lugar del nmero absoluto del contador (p. ej., Z12) una variable o una constante con el tipo de datos INT o un parmetro de entrada del tipo de datos COUNTER. Se deber suministrar el parmetro CU (incrementar contador ) o el parmetro CD (decrementar contador). Pueden omitirse por parejas las especificaciones del parmetro PV (valor de preseleccin) y S (ajuste). El resultado en formato BCD es siempre el valor de la funcin.
13-3
Contadores y temporizadores
Ejemplo
FUNCTION_BLOQUE FB1 VAR CurrVal, binVal: word; actFlag: bool; END_VAR BEGIN CurrVal
:=S_CD (C_NO:= Z10, CD:=TRUE, S:=TRUE, PV:=100, R:=FALSE, CV:=binVal,Q:=actFlag); CurrVal :=S_CU (C_NO:= Z11, CU:=M0.0, S:=M0.1, PV:=16#110, R:=M0.2, CV:=binVal,Q:=actFlag); CurrVal :=S_CUD(C_NO:= Z12, CD:=E0.0, CU:=E0.1, S:=E0.2 &E0.3, PV:=120, R:=FALSE, CV:=binVal,Q:=actFlag); CurrVal :=S_CD (C_NO:= Z10, CD:=FALSE, S:=FALSE, PV:=100, R:=TRUE, CV:=binVal,Q:=actFlag); END_FUNCTION_BLOQUE
13-4
Contadores y temporizadores
Formato
La siguiente figura explica la configuracin binaria del valor de contaje:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
X I X I X I X
0 I 0 I 0 I 1
0 I 0 I 1 I 0
0 I 1 I 1 I 1
Valor del contador en formato BCD (0 hasta 999) Estos bits son irrelevantes, es decir, no se tienen en cuenta al ajustar un contador.
Entrada
decimal, como valor entero: p.ej., 295, siempre que dicho valor corresponda a un formato BCD vlido, en formato BCD (introducir como constante hexadecimal): p.ej.: 16#127
Evaluacin
como resultado de funcin (tipo WORD): en formato BCD, como parmetro de salida CV (tipo WORD): binario
13-5
Contadores y temporizadores
Preseleccionar contador Cuando el estado de seal en la entrada S cambia de "0" a "1", el contador se ajusta al valor de la entrada PV. Este cambio de seal siempre es necesario para ajustar el contador. Inicializar Consultar contador El contador se inicializa cuando la entrada R = 1. Al inicializar el contador el valor del contador se pone a "0". Al consultar el estado de seal en la salida Q se obtiene "1" cuando el valor del contador es mayor que "0". La consulta arroja el resultado "0" cuando el valor del contador es igual "0".
Preseleccionar contador Cuando el estado de seal a la entrada S cambia de "0" a "1", el contador se ajusta al valor de la entrada PV. Este cambio de la seal siempre es necesario para ajustar el contador. Inicializar Consultar contador El contador se inicializa cuando la entrada R = 1. Al inicializar el contador el valor del contador se pone a "0". La consulta del estado de seal en la salida Q da el resultado "1" si el valor de contaje es mayor que "0", La consulta arroja el resultado "0" cuando el valor del contador es igual "0".
13-6
Contadores y temporizadores
Preseleccionar contador Cuando el estado de seal en la entrada S cambia de "0" a "1", el contador se ajusta con el valor de la entrada PV. Este cambio de la seal es siempre necesario para ajustar el contador. Inicializar Consultar contador El contador se inicializa cuando la entrada R = 1. Al inicializar el contador el valor del contador se coloca en "0". Al consultar el estado de la seal en la salida Q se obtiene "1" cuando el valor del contador es mayor que "0". La consulta arroja el resultado "0" cuando el valor del contador es igual "0".
Asignacin de parmetros
La tabla muestra la asignacin de parmetros de la funcin de ejemplo S_CD.
Parmetro C_NO CD S PV R Q CV Descripcin MICONTADOR ENTRADA E0.0 AJUSTAR PRESELECCION 16#0089 INICIALIZAR A0.7 VALOR_BINARIO
13-7
Contadores y temporizadores
Ejemplo
FUNCTION_BLOQUE CONTAR VAR_INPUT MICONTADOR : COUNTER ; END_VAR VAR_OUTPUT RESULTADO : INT ; END_VAR VAR SET : BOOL ; RESET : BOOL ; VALOR_BCD : WORD ; // Valor de contaje en cdigo BCD VALOR_BIN : WORD ; // valor de contaje binario PRESELECCION: WORD ; END_VAR BEGIN A0.0 := 1 ; SET := E0.2 ; RESET := E0.3 ; PREDETERMINADO := 16#0089 ; //decrementar contador BCD_VALOR := S_CD (C_NO := MICONTADOR, CD:= E0.0 , S := SET, PV:= PRESELECCION, R := RESET, CV:= VALOR_BIN , Q := A0.7) ; //Continuacin del procesamiento como parmetro de salida RESULTADO := WORD_TO_INT (VALOR_BIN) ; AW4 := VALOR_BCD_ ; END_FUNCTION_BLOCK
13-8
Contadores y temporizadores
13.2
Temporizadores
13-9
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 ejecucin de un //bucle FOR se llamar otra funcin de temporizador: FUNCTION_BLOCK TEMPORIZADOR VAR_INPUT MI_TEMPORIZADOR: ARRAY [1..4] of STRUCT T_NO: INT; TV : WORD; END_STRUCT; . . END_VAR . . FOR I:= 1 TO 4 DO CurrTime:= S_ODT(T_NO:=MI_TEMPORIZADOR[I].T_NO, S:=true, TV:= MI_TEMPORIZADOR[I].TV); END_FOR; //Ejemplo de una llamada dinmica utilizando una variable del //tipo de datos TIMER: FUNCTION_BLOCK TEMPORIZADOR VAR_INPUT mitemporizador:TIMER; END_VAR . . CurrTime:=S_ODT (T_NO:=mitemporizador,.....);
Nota Los nombres de las funciones son idnticos en la nemotcnica alemana y en la inglesa.
13-10
Contadores y temporizadores
13.2.3
Tipo de datos TIMER ENTERO BOOL S5TIME BOOL BOOL WORD S5TIME
Descripcin Identificador del temporizador; el margen depende de la CPU Entrada de arranque Preseleccin del valor de temporizacin (formato BCD) Entrada de inicializacin Estado del temporizador Valor residual de temporizacin (binario) Valor de temporizador
Reglas
Debido a que los valores de los parmetros se memorizan globalmente, su indicacin es en algunos casos opcional. Al especificar parmetros deben observarse las siguientes reglas generales: El parmetro para la designacin del temporizador T_NO se debe suministrar en la llamada. En lugar del nmero absoluto del temporizador (p. ej., T10) tambin puede indicar en la llamada una variable del tipo de datos INT o un parmetro de entrada del tipo de datos TIMER. Pueden omitirse por parejas las especificaciones del parmetro PV (valor predefinido) y S (ajuste). El resultado en el formato S5TIME es siempre un valor de funcin.
13-11
Contadores y temporizadores
Ejemplo
FUNCTION_BLOCK FB2 VAR CurrTime : S5time; BiVal : word; ActFlag : bool; END_VAR BEGIN CurrTime
:=S_ODT (T_NO:= T10, S:=TRUE, TV:=T#1s, R:=FALSE, BI:=biVal,Q:=actFlag); CurrTime :=S_ODTS (T_NO:= T11, S:=M0.0, TV:= T#1s, R:=M0.1, BI:=biVal,Q:=actFlag); CurrTime :=S_OFFDT(T_NO:= T12, S:=E0.1 & actFlag, TV:= T#1s, R:=FALSE, BI:=biVal,Q:=actFlag); CurrTime :=S_PEXT (T_NO:= T13, S:=TRUE, TV:= T#1s, R:=E0.0, BI:=biVal,Q:=actFlag); CurrTime :=S_PULSE(T_NO:= T14, S:=TRUE, TV:= T#1s, R:=FALSE, BI:=biVal,Q:=actFlag); END_FUNCTION_BLOCK
13-12
Contadores y temporizadores
Formato
La siguiente figura explica la configuracin de bit del valor de tiempo:
15... X I X I 1 I 0 ...8 0 I 0 I 0 I 1 7... 0 I 0 I 1 I 0 ...0 0 I 1 I 1 I 1
Valor del temporizador en formato BCD (0 hasta 999) Base de tiempo: 1 segundo Irrelevante: estos bits no se tienen en cuenta cuando se arranca el temporizador.
Entrada
Es valor de temporizacin preseleccionado se puede cargar con los siguientes formatos: en representacin escalonada en representacin decimal En ambos casos la base de tiempo se selecciona automticamente, y el valor del nmero inmediatamente inferior se redondea con esta base de tiempo.
Evaluacin
El resultado se puede evaluar en dos formatos diferentes: como resultado de funcin (Tipo S5TIME): en formato BCD, como parmetro de salida (valor de temporizacin sin base de tiempo del tipo WORD): binario
13-13
Contadores y temporizadores
Nota Como los valores de temporizacin slo se guardan en un intervalo de tiempo, los valores que no son un mltiplo exacto del intervalo de tiempo se truncan. Los valores cuya resolucin es demasiado grande para el margen deseado se redondean, de forma que se alcanza el margen deseado pero no la resolucin deseada.
13-14
Contadores y temporizadores
Seal de entrada
E 2.1
A 4.0
S_PULSE t
Funcionamiento
La tabla muestra el funcionamiento de la operacin "arrancar el temporizador como impulso":
Operacin Arrancar temporizador Definir tiempo de funcionamiento Concluir antes del tiempo programado Inicializar Funcionamiento La operacin "arrancar temporizador como impulso" arranca un temporizador determinado cuando el estado de seal en la salida de arranque (S) cambia de "0" a "1". Para habilitar el temporizador siempre se necesita un cambio de seal. El temporizador empieza a contar a partir del valor indicado en la entrada TV hasta que se termina el tiempo programado y la entrada S = 1. Si la entrada S cambia de "1" a "0" antes de que se agote el valor de temporizacin, el temporizador se detiene. El temporizador se inicializa cuando la entrada de inicializacin (R) cambia de "0" a "1" mientras funciona el temporizador. Este cambio tambin pone a "0" el valor de temporizacin y la base de tiempo. El estado de seal "1" en la entrada R no tiene relevancia si no funciona el temporizador.
Consultar estado de Mientras el temporizador est funcionando, el estado de seal en la salida Q dar el seal resultado "1". Si el tiempo de funcionamiento termina anticipadamente, al consultar el estado de seal en la salida Q se obtendr el resultado "0". Consultar valor de El valor de temporizacin actual puede consultarse en la salida BI y mediante el valor de temporizacin actual la funcin S_PULSE.
13-15
Contadores y temporizadores
Seal de entrada
E 2.1
A 4.0
S_PEXT t
Funcionamiento
La tabla muestra el funcionamiento de la operacin "arrancar temporizador como impulso prolongado".
Operacin Arrancar temporizador Funcionamiento La operacin "arrancar temporizador como impulso prolongado" (S_PEXT) arranca un temporizador determinado si el estado de seal en la salida de arranque (S) cambia de "0" a "1". Para habilitar el temporizador siempre se necesita un cambio de seal. Si el estado de seal en la entrada S cambia de nuevo a "1" durante el tiempo de funcionamiento, el temporizador arranca de nuevo con el valor de temporizacin indicado. El temporizador contina funcionando con el valor indicado en la entrada TV hasta que se agota el tiempo programado. El temporizador se inicializa cuando la entrada de inicializacin (R) cambia de "0" a "1"con el temporizador en funcionamiento. Este cambio tambin pone a "0" el valor de temporizacin y la base de tiempo. El estado de seal "1" en la entrada R no tiene relevancia si no funciona el temporizador. Mientras el temporizador est en funcionamiento el estado de seal en la salida Q siempre arrojar el resultado "1", independientemente de la longitud de la seal de entrada. El valor de temporizacin actual puede consultarse en la salida BI o mediante el valor de la funcin S_PEXT.
13-16
Contadores y temporizadores
Se al de entrada
E 2.1
S_ODT t
Funcionamiento
La tabla muestra el funcionamiento de la operacin "arrancar temporizador como retardo a la conexin":
Operacin Arrancar temporizador Funcionamiento La operacin "Arrancar temporizador como retardo a la entrada" arranca un temporizador determinado si el estado de seal en la entrada de arranque (S) cambia de "0" a "1". Para habilitar el temporizador siempre se necesita un cambio de seal. Si el estado de seal en la entrada S cambia de "1" a "0" mientras est en funcionamiento el temporizador, ste se detiene. El temporizador contina funcionando con el valor indicado en la entrada TV mientras el estado de seal en la entrada S = 1. El temporizador se inicializa cuando la entrada de inicializacin (R) cambia de "0" a "1" mientras funciona el temporizador. Este cambio tambin pone a "0" el valor de temporizacin y la base de tiempo. El temporizador tambin se inicializa si R = 1 mientras no funciona el temporizador. Al consultar el estado de seal en la salida Q siempre se obtiene "1"si el tiempo ha transcurrido sin errores y la entrada S contina siendo "1". Si el temporizador se ha detenido, el resultado de consultar el estado de seal siempre ser "0". Al consultar el estado de seal en la salida Q tambin se obtendr "0" si el temporizador no est en funcionamiento y el estado de seal en la entrada S contina siendo "1". Puede consultarse el valor de temporizacin actual en la salida BI y mediante el valor de la funcin S_ODT.
13-17
Contadores y temporizadores
Seal de entrada
E 2.1
A 4.0
S_ODTS t
Funcionamiento
La tabla muestra el funcionamiento de la operacin "arrancar temporizador con retardo a la conexin con memoria".
Operacin Arrancar temporizador Funcionamiento La operacin "Arrancar temporizador con retardo a la conexin con memoria" arranca un temporizador determinado cuando el estado de seal en la entrada de arranque (S) cambia de "0" a "1". Para habilitar el temporizador siempre se necesita un cambio de seal. El temporizador rearranca con el valor especificado cuando la entrada S cambia de "0" a "1"mientras el temporizador est en funcionamiento. El temporizador contina funcionando con el valor indicado en la entrada TV aunque el estado de seal en la entrada S cambie a " 0" antes de haberse agotado el tiempo. Si cambia la entrada de puesta a cero (R) de "0" a "1" se reinicializar el temporizador independientemente del estado de la seal en la entrada S . Una consulta del estado de seal en la salida Q arrojar el resultado "1" despus de haberse agotado el tiempo, independientemente del estado de seal en la entrada S. El valor actual de temporizacin puede consultarse en la salida BI y mediante el valor de la funcin S_ODTS.
Rearrancar temporizador Preseleccionar el tiempo de funcionamiento Inicializar Consultar estado de seal Consultar valor de temporizacin actual
13-18
Contadores y temporizadores
Seal de entrada
E 2.1
S_OFFDT t
Funcionamiento
La tabla muestra el funcionamiento de la operacin "arrancar temporizador como retardo a la desconexin":
Operacin Arrancar temporizador Funcionamiento La operacin "Arrancar temporizador como retardo a la desconexin" arranca el temporizador determinado cuando el estado de seal en la entrada de arranque (S) cambia de "1" a "0". Para desbloquear el temporizador siempre se necesita un cambio de seal. El temporizador se arrancar de nuevo si el estado de seal en la entrada S cambia de nuevo de "1" a "0" (p. ej., despus de reinicializar). El temporizador funciona con el valor indicado en la entrada TV. Si la entrada de inicializacin (R) cambia de "0" a "1"mientras el temporizador est funcionando, el temporizador se inicializa. Una consulta del estado de seal en la salida Q dar como resultado "1" si el estado de seal en la entrada S = 1 o si el temporizador est en funcionamiento. El valor de temporizacin actual puede consultarse en la salida BI y mediante el valor de la funcin S_OFFDT.
Rearrancar temporizador Definir tiempo de funcionamiento Inicializar Consultar estado de seal Consultar valor de temporizacin actual
13-19
Contadores y temporizadores
: TIMER ;
: S5TIME ;
: BOOL ; : BOOL ; : S5TIME ;//Base de tiempo //y valor restante en cdigo BCD : WORD ; //Valor de temporizacin binario : S5TIME ;
:= 1; := E0.0 ; := E0.1; := T#25S ; := S_PEXT (T_NO := mitemporizador , S := introducir, TV := predeterminado, R := poner a cero, BI := valor binario , Q := A0.7) ; //Continuar procesando como parmetro de salida resultado:= Valor_bcd ; //A salida para visualizacin AW4 := valor_binario ; END_FUNCTION_BLOQUE
13-20
Contadores y temporizadores
Seal de entrada
E 2.1
A 4.0
S_PULSE t El tiempo mximo durante el que la seal de salida permanece a "1" es igual al tiempo de temporizacin programado 't'. La seal de salida permanece un tiempo menor a "1" si la seal de entrada cambia a "0".
A 4.0
S_PEXT t La seal de salida permanece a "1" durante el tiempo programado independientemente del tiempo que la seal de entrada permanezca a "1". El impulso vuelve a activarse, si durante el tiempo programado "t" se vuelve a disparar la seal de arranque.
A 4.0
S_ODT t La seal de salida slo cambia de "0" a "1" cuando transcurre el tiempo programado y la seal de entrada contina a "1".
A 4.0
S_ODTS t La seal de salida slo cambia de "0" a "1" cuando transcurre el tiempo programado, independientemente del tiempo que la seal de entrada permanezca a "1".
A 4.0
S_OFFDT t La seal de salida slo cambia de "0" a "1" cuando la seal de entrada cambia de "0" a "1". La seal de salida permanece a "1" durante el tiempo programado. El temporizador arranca cuando la seal de entrada cambia de "1" a "0".
13-21
Contadores y temporizadores
13-22
14
14.1
14-1
INT_TO_REAL WORD_TO_DWORD
14-2
La cadena de bits que se encuentra en el parmetro de entrada se N introducir en el byte menos significativo del valor de la funcin. El byte de mayor valor se completa con ceros. Aceptar la cadena de bits. Aceptar la cadena de bits. Aceptar la cadena de bits. N S N
Copiar el bit para el signo. el dato existente en el parmetro de entrada se S interpreta como tipo de dato s INT. Si el valor es menor que -32_768 o mayor que 32_767, la variable OK cambia a FALSE. Aceptar la cadena de bits. Aceptar la cadena de bits. N S
DINT_TO_TIME DINT_TO_TOD
14-3
Nombre de la funcin DINT_TO_BOOL DINT_TO_BYTE DINT_TO_STRING DINT_TO_WORD DWORD_TO_BOOL DWORD_TO_BYTE DWORD_TO_DINT DWORD_TO_REAL DWORD_TO_WORD DWORD_TO_INT INT_TO_CHAR INT_TO_WORD INT_TO_BOOL INT_TO_BYTE INT_TO_DWORD INT_TO_STRING REAL_TO_DINT
Regla de conversin DWORD_TO_BOOL(DINT_TO_DWORD(x)) DWORD_TO_BYTE(DINT_TO_DWORD(x)) DI_STRNG DWORD_TO_WORD(DINT_TO_DWORD(x)) Copiar los bits menos significativos Copiar los 8 bits menos significativos Aceptar la cadena de bits Aceptar la cadena de bits. Copiar los 16 bits menos significativos DINT_TO_INT (DWORD_TO_ DINT(x)) Aceptar la cadena de bits. Aceptar la cadena de bits. WORD_TO_BOOL(INT_TO_WORD(x)) WORD_TO_BYTE(INT_TO_WORD(x)) WORD_TO_DWORD(INT_TO_WORD(x)) I_STRNG(x) Redondear el valor IEEE-REAL hasta DINT. Si el valor es menor que -2_147_483_648 o mayor que 2_147_483_647, la variable OK cambia a FALSE. Aceptar la cadena de bits. Redondear el valor IEEE-REAL hasta INT. Si el valor es menor que -32_768 o mayor que 32_767, la variable OK cambia a FALSE. R_STRNG(x) Copiar el primer carcter de la cadena. Si STRING no tiene longitud 1, la variable OK cambia a FALSE. STRNG_I(x) STRNG_DI(x) STRNG_R(x) Aceptar la cadena de bits. Aceptar la cadena de bits. Copiar el bit menos significativo Copiar los 8 bits menos significativos Aceptar la cadena de bits. INT_TO_DINT(WORD_TO_INT(x)) La configuracin binaria de WORD se interpreta como nmero del bloque de datos.
OK S S N S S S N N S S S N J S N N S
REAL_TO_DWORD REAL_TO_INT
N S
REAL_TO_STRING STRING_TO_CHAR STRING_TO_INT STRING_TO_DINT STRING_TO_REAL TIME_TO_DINT TOD_TO_DINT WORD_TO_BOOL WORD_TO_BYTE WORD_TO_INT WORD_TO_DINT WORD_TO_BLOCK_DB BLOCK_DB_TO_WORD BCD_TO_INT(x) WORD_BCD_TO_INT(x)
N S N N N N N S S N N N
El nmero del bloque de datos se interpreta como configuracin binaria de N WORD. La expresin x es del tipo WORD y se acepta como valor codificado en BCD entre -999 y +999. El resultado que se obtiene despus de la conversin es un nmero entero (en formato binario) del tipo INT. Si se produce un error durante la conversin, el sistema de automatizacin cambia a STOP. La causa del error se puede evaluar en el OB121.. N
14-4
Regla de conversin
OK
La expresin x es del tipo INT y se acepta como entero con un valor S comprendido entre -999 y +999. El resultado que se obtiene despus de la conversin es un nmero codificado en BCD del tipo WORD. Fuera del rango de valores el resultado est sin definir. En caso de haber seleccionado la opcin "Activar OK flag" el OK flag adoptar el valor false.
BCD_TO_DINT(x) DWORD_BCD_TO_DINT(x)
La expresin x es del tipo DWORD y se acepta como valor codificado en BCD entre -9999999 y +9999999. El resultado que se obtiene despus de la conversin es un nmero entero (formato binario) del tipo DINT. Si se produce un error durante la conversin, el sistema de automatizacin cambia a STOP. La causa del error puede evaluarse en el OB121.
DINT_TO_BCD(x) DINT_TO_BCD_DWORD(x)
La expresin x es del tipo DINT y se acepta como entero con un valor comprendido entre 9999999 y +9999999. El resultado que se obtiene despus de la conversin es un nmero codificado en BCD del tipo DWORD. Fuera del rango de valores el resultado est sin definir. En caso de haber seleccionado la opcin "Activar OK flag" el OK flag adoptar el valor false.
Atencin En caso de convertir una constante de un tipo de datos ms significativo en un tipo de datos menos significativo, al compilar aparecer un mensaje de error, si la constante se encuentra fuera del rango del tipo de datos menos significativo. Ejemplos: M0.0 :=WORD_TO_BOOL(W#16#FFFF); MW0 :=DINT_TO_INT(35000);
Nota Tambin es posible utilizar otras funciones IEC para la conversin del tipo de datos. Para ms informacin sobre las funciones disponibles, consulte el manual de referencia de STEP 7 "Funciones de sistema y funciones estndar para S7-300/400".
14-5
Redondear (Crear un nmero DINT). Segn DIN EN 61131-3 se redondea siempre hasta el siguiente valor par entero, es decir, 1.5 se redondea a 2; 2.5 tambin se redondea a 2.
TRUNC
REAL
DINT
Nota Tambin es posible utilizar otras funciones IEC para la conversin del tipo de datos. Para ms informacin sobre las funciones disponibles, consulte el manual de referencia de STEP 7 "Funciones de sistema y funciones estndar para S7-300/400".
Ejemplo
// Se redondea por defecto (Resultado: 3) ROUND (3.14) ; // Se redondea por exceso (Resultado: 4) ROUND (3.56) ; // Se trunca (Resultado: 3) TRUNC (3.14) ; // Se trunca (Resultado: 3) TRUNC (3.56) ;
14-6
En el siguiente ejemplo se requiere una conversin explcita del tipo de datos dado que el tipo de datos REAL no est permitido para una expresin aritmtica con la operacin MOD: FUNCTION_BLOCK FB20 VAR INTERRUPTOR : REAL VALORINT : INT := 17; CONV2 : INT ; END_VAR (* MOD slo se debe aplicar a datos del tipo INT o DINT *) CONV2 := VALORINT MOD REAL_TO_INT (INTERRUPTOR); // . . . END_FUNCTION_BLOCK En el siguiente ejemplo se requiere una conversin dado que no existe el tipo de datos correcto para una operacin lgica. La operacin NOT slo se debe aplicar a datos del tipo BOOL, BYTE, WORD o DWORD. FUNCTION_BLOCK FB30 VAR VALORINT : INT := 17; CONV1 : WORD ; END_VAR (* NOT no se debe aplicar a datos del tipo INT *) KONV1 := NOT INT_TO_WORD(VALORINT); // . . . END_FUNCTION_BLOCK
14-7
El siguiente ejemplo muestra la conversin en entradas y salidas de la periferia: FUNCTION_BLOCK FB40 VAR Radio_Con : WORD ; Radio : INT; END_VAR Radio_con := %EB0; Radio := WORD_TO_INT (radio_con); (* Conversin al cambiar a otra clase de tipo. El valor procede de la entrada y se convierte para continuar su clculo.*) Radio := Radio (superficie:= datos del crculo.superficie) %AB0 :=WORD_TO_BYTE (INT_TO_WORD(RADIO)); (*El radio se calcula deduciendo de la superficie y se encuentra en enteros. Para su salida se convierte el valor en primer lugar en otra clase de tipo (INT_TO_WORD) y, a continuacin, en un tipo menos poderoso (WORD_TO_BYTE).*) // . . . END_FUNCTION_BLOCK
14-8
14.2
Nota Tambin es posible utilizar otras funciones IEC para la conversin del tipo de datos. Para ms informacin sobre las funciones disponibles, consulte el manual de referencia de STEP 7 "Funciones de sistema y funciones estndar para S7-300/400".
Nota Tambin es posible utilizar otras funciones IEC para la conversin del tipo de datos. Para ms informacin sobre las funciones disponibles, consulte el manual de referencia de STEP 7 "Funciones de sistema y funciones estndar para S7-300/400".
14-9
Nota Tambin es posible utilizar otras funciones IEC para la conversin del tipo de datos. Para ms informacin sobre las funciones disponibles, consulte el manual de referencia de STEP 7 "Funciones de sistema y funciones estndar para S7-300/400".
14-10
14.3
ROL
BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD
INT INT INT INT INT INT INT INT INT INT INT INT
BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD
El valor que se encuentra en el parmetro IN se desplaza tantas posiciones de bits hacia la izquierda como indique el contenido del parmetro N. El valor que se encuentra en el parmetro IN se desplaza tantas posiciones de bits hacia la derecha como indique el contenido del parmetro N. En el valor existente en el parmetro IN se desplazan hacia la izquierda tantos bits y se sustituye por 0 el mismo nmero de posiciones en el lado derecho como indique el contenido del parmetro N . En el valor existente en el parmetro IN se desplazan hacia la derecha tantos bits y se reemplazan por 0 el mismo nmero de posiciones en el lado izquierdo como indique el contenido del parmetro N .
ROR
SHL
SHR
Nota Tambin es posible utilizar otras funciones IEC para la conversin del tipo de datos. Para ms informacin sobre las funciones disponibles, consulte el manual de referencia de STEP 7 "Funciones de sistema y funciones estndar para S7-300/400".
14-11
14-12
14.4
LEN
La funcin LEN (FC 21) emite la longitud actual de una cadena de caracteres (nmero de los caracteres vlidos) como valor de retorno. Una cadena de caracteres vaca ('') tiene la longitud cero. La funcin no comunica ningn error. Ejemplo: LEN (S:= 'XYZ' )
Parmetro S Valor de respuesta Declaracin INPUT Tipo de datos STRING INT rea de memoria D, L E, A, M, D, L Descripcin Variable de entrada en formato STRING Nmero de caracteres actuales
CONCAT
La funcin CONCAT agrupa como mximo 32 variables STRING en una cadena de caracteres. Si la cadena de caracteres del resultado es de mayor longitud que la variable establecida en el parmetro de salida se limitar la cadena de caracteres del resultado a la longitud establecida. En caso de utilizar la funcin S7-SCL CONCAT, automticamente se llama la FC2 de la librera "Funciones IEC". Ejemplo: CONCAT (IN1:= 'Valvula', IN2:= 'abierta')
Parmetro IN1 IN2 INn Valor de respuesta Declaracin INPUT INPUT INPUT Tipo de datos STRING CHAR STRING CHAR STRING CHAR STRING CHAR D, L D, L D, L rea de memoria D, L Descripcin Variable de entrada en formato STRING o CHAR Variable de entrada en formato STRING o CHAR Variable de entrada en formato STRING o CHAR Cadena de caracteres reagrupada
14-13
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 la cadena completa. En L = 0 se devolver una cadena vaca. Si L es negativa se emitir una cadena vaca. Ejemplo: LEFT (IN:= 'Valvula', L:= 4)
Parmetro IN L Valor de respuesta Declaracin INPUT INPUT Tipo de datos STRING INT STRING rea de memoria D, L E, A, M, D, L, Konst. D, L Descripcin Variable de entrada en formato STRING Longitud de la cadena de caracteres izquierda Variable de salida en formato STRING
MID
La funcin MID (FC 26) aporta una parte de una cadena de caracteres. L es la longitud de la cadena de caracteres que se debe leer, P es la posicin del primer carcter que se debe leer. Si la suma de L y (P-1) supera la longitud de la variable STRING se aportar una cadena de caracteres a partir del carcter P. hasta el final del valor de entrada. En todos los dems casos (P se encuentra fuera de la longitud actual, P y/o L es igual a cero o negativa) se emitir una cadena vaca. Ejemplo: MID (IN:= 'Temperatura', L:= 2, P:= 3)
Parmetro IN L P Valor de respuesta Declaracin INPUT INPUT INPUT Tipo de datos STRING INT INT STRING rea de memoria D, L E, A, M, D, L, Konst. E, A, M, D, L, Konst. D, L Descripcin Variable de entrada en formato STRING Longitud de la cadena central de caracteres Posicin del primer carcter Variable de salida en formato STRING
14-14
INSERT
La funcin INSERT (FC 17) inserta la cadena de caracteres del parmetro IN2 detrs del carcter P. en la cadena de caracteres del parmetros 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 la segunda cadena de caracteres detrs de la primera. Si P es negativa se emitir una cadena vaca. Si la cadena de caracteres del resultado es de mayor longitud que la variable indicada en el parmetro de salida, se lmitar la cadena de caracteres del resultado a la longitud mxima ajustada. Ejemplo: INSERT (IN1:= 'abonado_hallado', IN2:='Garcia':= 2, P:= 11)
Parmetro IN1 IN2 P Valor de respuesta Declaracin INPUT INPUT INPUT Tipo de datos STRING STRING INT STRING rea de memoria D, L D, L E, A, M, D, L, const. D, L Descripcin Variable STRING en la cual se insertar Variable STRING que se debe insertar Posicin de insercin Cadena de caracteres del resultado
DELETE
La funcin DELETE (FC 4) borra de una cadena de caracteres los caracteres L a partir del carcter P. (inclusive). Si L y/o P es igual a cero o si P es mayor que la longitud actual de la cadena de caracteres de entrada se devolver la cadena de caracteres de entrada. Si la suma de L y P es mayor que la cadena de caracteres de entrada se borrar hasta el final de la cadena de caracteres. Si L y/o P es negativa, se emitir una cadena vaca. Ejemplo: DELETE (IN:= 'Temperatura ok', L:= 6, P:= 5)
14-15
REPLACE
La funcin 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). Si P se encuentra fuera de la primera cadena, se insertar la segunda cadena detrs de la primera. Si L y/o P es negativa, se emitir una cadena vaca. Si la cadena de caracteres del resultado es de mayor longitud que la variable indicada en el parmetro de salida, se limitar la cadena del resultado a la longitud mxima establecida. Ejemplo: REPLACE (IN1:= 'Temperatura', IN2:= ' hoch' L:= 6, P:= 5)
Parmetro IN1 IN2 L P Valor de respuesta Declaracin INPUT INPUT INPUT INPUT Tipo de datos STRING STRING INT INT STRING rea de memoria D, L D, L E, A, M, D, L, Const. E, A, M, D, L, Const. D, L Descripcin Variable STRING en la cual se insertar Variable STRING que se debe insertar Nmero de caracteres que se deben sustituir Posicin del primer carcter sustituido Cadena de caracteres del resultado
FIND
La funcin FIND (FC 11) aporta la posicin de la segunda cadena de caracteres (IN2) dentro de la primera cadena (IN1). La bsqueda comienza a la izquierda; se notifica la primera aparicin de la cadena. Si la segunda cadena no existe en la primera, se notificar de vuelta cero. La funcin no notifica ningn error. Ejemplo: FIND (IN1:= 'Equipo de procesamiento', IN2:='station')
Parmetro IN1 IN2 Valor de respuesta Declaracin INPUT INPUT Tipo de datos STRING STRING INT rea de memoria D, L D, L E, A, M, D, L Descripcin Variable STRING, en la cual se busca Variable STRING que se debe buscar Posicin de la cadena de caracteres encontrada
14-16
EQ_STRNG y NE_STRNG
La funcin EQ_STRNG (FC 10) o (FC 29) compara el contenido de dos variables en formato STRING respecto a igual (FC10) o distinta (FC29) y emite el resultado de la comparacin como valor de retorno. El valor de retorno muestra el estado de seal "1" si la cadena de caracteres del parmetro S1 es igual (distinta) que la cadena en el parmetro S2. La funcin no notifica ningn error.
Parmetro S1 S2 Valor de respuesta Declaracin INPUT INPUT Tipo de datos STRING STRING BOOL rea de memoria D, L D, L E, A, M, D, L Descripcin Variable de entrada en formato STRING Variable de entrada en formato STRING Resultado de comparacin
GE_STRNG y LE_STRNG
La funcin GE_STRNG (FC 13) o (FC 19) compara el contenido de dos variables en formato STRING respecto a mayor (menor) o igual y emite el resultado de comparacin como valor de retorno. El valor de retorno muestra el estado de seal "1" si la cadena de caracteres del parmetro S1 es mayor (menor) o igual que la cadena de caracteres del parmetro S2. Los caracteres se comparan, empezando por la izquierda, a travs de su codificacin ASCII (p. ej., es 'a' mayor que 'A'). El primer carcter distinto decide sobre el resultado de la comparacin. Si la parte izquierda de la cadena de caracteres ms larga es idntica con la cadena de caracteres ms corta, la cadena ms larga ser vlida como la mayor. La funcin no notifica ningn error.
Parmetro S1 S2 Valor de respuesta Declaracin INPUT INPUT Tipo de datos STRING STRING BOOL rea de memoria D, L D, L E, A, M, D, L Descripcin Variable de entrada en formato STRING Variable de entrada en formato STRING Resultado de comparacin
14-17
GT_STRNG y LT_STRNG
La funcin GT_STRNG (FC 15) o (FC 24) compara el contenido de dos variables en formato STRING respecto mayor (menor) y emite el resultado de comparacin como valor de retorno. El valor de retorno muestra el estado de seal "1" si la cadena de caracteres en el parmetro S1 es mayor (menor) que la cadena de caracteres en el parmetro S2. Los caracteres se comparan a travs de la codificacin ASCII, empezando por la izquierda (p. ej., es 'a' mayor que 'A'). El primer carcter distinto decide sobre el resultado de la comparacin. Si la parte izquierda de la cadena de caracteres ms larga es idntica a la cadena de caracteres ms corta, la cadena ms larga ser vlida como mayor. La funcin no muestra ningn error.
Parmetro S1 S2 Valor de respuesta Declaracin INPUT INPUT Tipo de datos STRING STRING BOOL rea de memoria D, L D, L E, A, M, D, L Descripcin Variable de entrada en formato STRING Variable de entrada en formato STRING Resultado de comparacin
14-18
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. Implcitamente se utilizan las funciones I_STRNG (FC16) o STRNG_I (FC38) de la librera "Funciones IEC". La cadena de caracteres se representar precedida por un signo. Si la variable indicada en el parmetro de retorno demasiado corta, no tendr lugar la conversin.
Parmetro INT_TO_STRING I Valor de respuesta STRING_TO_INT S Valor de respuesta INPUT STRING INT D, L E, A, M, D, L Cadena de caracteres de entrada Resultado INPUT INT STRING E, A, M, D, L, Const. D, L Valor de entrada Cadena de caracteres como resultado Declaracin Tipo de datos rea de memoria Descripcin
DINT_TO_STRING y STRING_TO_DINT
Las funciones DINT_TO_STRING y STRING_TO_DINT convierten una variable en formato DINT en una cadena de caracteres, o una cadena de caracteres en una variable DINT. Implcitamente se utilizan las funciones DI_STRNG (FC5) o STRNG_DI (FC37) de la librera suministrada "Funciones IEC". La cadena de caracteres se representar precedida por un signo. Si la variable indicada en el parmetro de retorno es demasiado corta, no tendr lugar ninguna conversin.
Parmetro DINT_TO_STRING I Valor de respuesta STRING_TO_DINT S Valor de respuesta INPUT STRING DINT D, L E, A, M, D, L Cadena de caracteres de entrada Resultado INPUT DINT STRING E, A, M, D, L, Const. D, L Valor de entrada Cadena de caracteres de resultado Declaracin Tipo de datos rea de memoria Descripcin
14-19
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. Implcitamente se utilizan las funciones R_STRNG (FC30) o STRNG_R (FC39) de la librera "Funciones IEC" suministrada. La cadena de caracteres debe tener el siguiente formato: v.nnnnnnnExx ( = signo, v = unidad, n = decimales, x = dgitos exponenciales) Si la longitud de la cadena de caracteres es menor que 14 o si su estructura se diferencia del formato indicado arriba, no se efecta la conversin Si la variable indicada en el parmetro de retorno es demasiado corta, o si en el parmetro IN no aparece ningn nmero en coma flotante vlido, no tendr lugar ninguna.
Parmetro REAL_TO_STRING IN Valor de respuesta STRING_TO_REAL S Valor de respuesta INPUT STRING REAL D, L E, A, M, D, L Cadena de caracteres de entrada resultado INPUT REAL STRING E, A, M, D, L, Const. D, L Valor de entrada Cadena de caracteres de resultado Declaracin Tipo de datos rea de memoria Descripcin
14-20
14-21
//inicializacin 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]); valor if <> 0 then text := concat( in1 := texto, in2 := I_STRNG(valor)); end_if; else generador_de_textos:= false; end_case; else generador_de_textos:= false; end_case; i := textos_mensajes.index; textos_mensajes.buferdetexto[i] := texto; textos_mensajes.index := (i+1) mod 20; END_FUNCTION //////////////////////////////////////////////////////////////////// //La funcin se llamar en el programa cclico cuando se cambie // //de flanco en %M10.0 y registrar un mensaje una sola vez, // //si cambia un parmetro. // //////////////////////////////////////////////////////////////////// Organization_block Ciclo Var_temp Besy_ifx : array [0..20] of byte; error: BOOL; End_var; //////////////////////////////////////////////////////////////////// //La siguiente llamada causa la entrada "Motor 12 arrancado" en // //el bfer de textos del DB Textos de mensaje, teniendo que // //transmitirse a //travs de %MW0 un 1, a travs de %EW2 el 12 // //y a travs de %MW2 se debe transmitir un 2. *) // //////////////////////////////////////////////////////////////////// if %M10.0 <> %M10.1 then error:= generador_de_textos (unit nr status valor %M10.1:=M10.0; end_if; end_organization_block
:= := := :=
14-22
14.5
Nota Algunas de las funciones tambin estn incluidas en la librera estndar de STEP 7. Sin embargo, las funciones de la librera no cumplen todas las exigencias de la IEC.
SEL
La funcin SEL selecciona uno de dos valores de entrada. Como valores de entrada se admiten todos los tipos de datos, a excepcin de los tipos ARRAY, STRUCT y Parmetros. Todas las variables parametrizadas deben ser del tipo de datos de la misma clase. Ejemplo: A:= SEL (G:= SELECT, IN0:= X, IN1:= Y);
Parmetro G IN0 Declaracin INPUT INPUT Tipo de datos BOOL rea de memoria E, A, M, D, L Descripcin Criterio de seleccin Primer valor de entrada
Todos los tipos de E, A, M, D, L datos excepto ARRAY y STRUCT Todos los tipos de E, A, M, D, L datos excepto ARRAY y STRUCT Todos los tipos de E, A, M, D, L datos excepto ARRAY y STRUCT
IN1
INPUT
Valor de retorno
OUTPUT
14-23
MAX
La funcin MAX serlecciona el mayor de un nmero de valores de variables. Como valores de entrada se admiten tipos de datos numricos y de tiempo. Todas las variables parametrizadas deben ser del tipo de datos de la misma clase. La expresin adopta el tipo de datos ms significativo. Ejemplo: A:= MAX (IN1:=a, IN2:=b, IN3:=c, IN4:=d);
Parmetror IN1 Declaracin INPUT Tipo de datos ANY_NUM Tipos de datos de tiempo excepto S5TIME ANY_NUM Tipos de datos de tiempo excepto S5TIME ANY_NUM Tipos de datos de tiempo excepto S5TIME ANY_NUM Tipos de datos de tiempo excepto S5TIME rea de memoria E, A, M, D, L Descripcin Primer valor de entrada
IN2
INPUT
E, A, M, D, L
Inn (n=3...32)
INPUT
E, A, M, D, L
Valor de retorno
OUTPUT
E, A, M, D, L
MIN
La funcin MIN selecciona el menor de un nmero de valores de variables. Como valores de entrada se admiten tipos de datos numricos y de tiempo. Todas las variables parametrizadas deben ser del mismo tipo de datos. La expresin adopta el tipo de datos ms significativo. Ejemplo: A:= MIN (IN1:=a, IN2:=b, IN3:=c, IN4:=d);
Parmetror IN1 Declaracin INPUT Tipo de datos ANY_NUM Tipos de datos de tiempo excepto S5TIME ANY_NUM Tipos de datos de tiempo excepto S5TIME ANY_NUM Tipos de datos de tiempo excepto S5TIME ANY_NUM Tipos de datos de tiempo excepto S5TIME rea de memoria E, A, M, D, L Descripcin Primer valor de entrada
IN2
INPUT
E, A, M, D, L
Inn (n=3...32)
INPUT
E, A, M, D, L
Valor de retorno
OUTPUT
E, A, M, D, L
14-24
LIMIT
La funcin LIMIT limita el valor numrico de un avariable a valores lmite parametrizables. Como valores de entrada se admiten todos los tipos de datos numricos y de tiempo. Todos los parmetros deben ser del mismo tipo de datos. La expresin adopta el tipo de datos ms significativo. El valor lmite inferior (MN) no puede ser superior al valor lmite superior (MX). Ejemplo: A:= LIMIT (MN:=5, IN:= pasos de ejecucin, MX:= 10);
Parmetro MN Declaracin INPUT Tipo de datos ANY_NUM Tipos de datos de tiempo excepto S5TIME IN INPUT ANY_NUM Tipos de datos de tiempo excepto S5TIME MX INPUT ANY_NUM Tipos de datos de tiempo excepto S5TIME Valor de retorno OUTPUT ANY_NUM Tipos de datos de tiempo excepto S5TIME E, A, M, D, L Variable de salida limitada (opcional) E, A, M, D, L Lmite superior E, A, M, D, L Variable de entrada rea de memoria E, A, M, D, L Descripcin Lmite inferior
MUX
La funcin MUX selecciona un valor de entrada de un nmero de valores de entrada. La seleccin se lleva a cabo mediante el parmetro de entrada K. Como valores de entrada se admiten todos los tipos de datos. La expresin adopta el tipo de datos ms significativo. Ejemplo: A:= MUX (K:=SELECT, IN0:= Steps, IN1:=Number, IN2:=Total);
Parmetro K IN0 Declaracin INPUT INPUT Tipo de datos INT Todos los tipos de datos excepto ARRAY y STRUCT Todos los tipos de datos excepto ARRAY y STRUCT Todos los tipos de datos excepto ARRAY y STRUCT rea de memoria E, A, M, D, L E, A, M, D, L Descripcin Criterio de seleccin Primer valor de entrada
IN1
INPUT
E, A, M, D, L
Inn (n=231)
INPUT
E, A, M, D, L
14-25
Parmetro INELSE
Declaracin INPUT
rea de memoria E, A, M, D, L
Descripcin
Valor de entrada alternativo (opcional) Si K se encuentra fuera de 0...n se utiliza el valor actual de INELSE. Si INELSE no est ocupado, se utilizar el valor actual de IN0.
Valor de retorno
OUTPUT
E, A, M, D, L
14-26
14.6
14-27
Nota Si en su programa utiliza las siguientes operaciones para los tipos de datos TIME, DATE_AND_TIME y STRING, S7-SCL llamar implcitamente a los bloques estndar. Por esta razn estn reservados los smbolos y los nmeros de bloque de estos bloques estndar y no se pueden utilizar para otros bloques. S7-SCL no comprueba en todos los casos posibles incumplimientos de esta nota, por lo que pueden aparecer errores de compilacin.
La tabla siguiente muestra esquemticamente las funciones estndar IEC utilizadas implcitamente por S7-SCL.
Operacin == <> > >= <= < DATE_AND_TIME + TIME DATE_AND_TIME + TIME DATE_AND_TIME + DATE_AND_TIME TIME_TO_S5TIME(TIME) S5TIME_TO_TIME(S5TIME) DATE_AND_TIME EQ_DT (FC9) NE_DT (FC28) GT_DT (FC14) GE_DT (FC12) LE_DT (FC18) LT_DT (FC23) AD_DT_TM (FC1) SB_DT_TM (FC35) SB_DT_DT (FC34) TIM_S5TI (FC40) S5TI_TIM (FC33) STRING EQ_STRING (FC10) NE_STRING (FC29) GT_STRING (FC15) GE_STRING (FC13) LE_STRING (FC19) LT_STRING (FC24)
En el manual de referencia de STEP 7 "Funciones de sistema y funciones estndar para S7-300/400" encontrar ms informacin sobre los SFB, SFC y OBs disponibles as como una descripcin detallada de los interfaces.
14-28
Bloques de organizacin
Los bloques de organizacin 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: al arrancar la CPU, en ejecucin cclica o por ciclos de tiempo, a determinadas horas del da o en determinados das, despus de que transcurra un tiempo predefinido, cuando aparezcan errores, cuando aparezcan alarmas de proceso y de comunicacin Los bloques de organizacin se ejecutan siguiendo el orden de prioridad asignado por usted.
OB disponible
No todas las CPUs pueden procesar todas las OB disponibles en S7. En las hojas de datos de su CPU podr consultar los OB de que dispone.
14-29
14-30
15
15.1
Descripcin formal
Qu es un diagrama sintctico?
El diagrama sintctico es una representacin grfica de la estructura del lenguaje. La estructura se describe mediante una secuencia de reglas. Algunas reglas pueden basarse en reglas anteriormente expuestas.
Nombre de la regla
Secuencia
Bloque 3
Bloque 1
Bloque 2
Bloque 4 Bloque 5
Opcin Iteracin
Alternativa
El diagrama sintctico se lee de izquierda a derecha. Deben tenerse en cuenta las siguientes estructuras: Secuencia: secuencia de bloques Opcin : rama que puede saltarse Iteracin: repeticin de ramas Alternativa: ramificacin
15-1
Terminal
Elementos nonterminales
<Nombre de regla>
Elemento fundamental que no precisa mayor explicacin. Se trata de caracteres imprimibles y ca racteres especiales, palabras clave e identificadores predefinidos. Los datos relativos a estos bloques deben acep tarse sin variacin.
Cualquier nombre de regla Elemento compuesto que se describe mediante otros diagramas sintcticos.
Token
< Nombre de regla > El nombre de regla siempre en maysculas Elemento compuesto que se utiliza como elemento fundamental en las re glas sintcticas y que se explica en las reglas lxicas.
15.1.2 Reglas
Las reglas que se pueden utilizar para estructurar el programa S7-SCL se dividen en las categoras lxica y sintctica.
Reglas lxicas
Las reglas lxicas determina la estructura de los elementos (token) que se van a procesar durante el anlisis lxico del compilador. Por ello, en la escritura no hay libertad de formato y deben respetarse estrictamente las reglas. En particular, esto significa que: no est permitida la insercin de signos de formateado, no est permitido introducir comentarios de lnea ni de bloque, no pueden insertarse atributos para los identificadores.
15-2
El ejemplo muestra la regla lxica IDENTIFICADOR, que determina la estructura de un identificador (nombre), p. ej.: ARRAY_MED_12 VALOR_DE_PRESELECCION_B_1
IDENTIFICADOR Letra
_ Subrayado
Letra
Letra
Reglas sintcticas
Partiendo de las reglas lxicas, en las reglas sintcticas se describe la estructura de S7-SCL. En el margen de estas reglas, se puede crear el programa S7-SCL sin formatear:
Programa SCL
Reglas sintcticas
Reglas lxicas
Aspectos formales
Cada regla va precedida de un nombre de regla. Cuando la regla se utiliza en una regla de orden superior, su nombre aparece encerrado en un recuadro. Si el nombre de la regla est escrito en maysculas se trata de un token, que se describe en las reglas lxicas.
15-3
Aspectos semnticos
En las reglas slo se puede representar la estructura formal del lenguaje, de la cual no siempre puede deducirse su significado, es decir, su semntica. Por ello, en puntos importantes se escriben informaciones adicionales junto a las reglas. Ejemplos: en los elementos similares de distinto significado se asigna un nombre adicional: p. ej. en la regla Indicacin de fecha, en la SECUENCIA DE CIFRAS DECIMALES ao, mes o da. Del nombre se deriva el uso que se le dar. Las restricciones importantes se hacen constar junto a las reglas: p. ej. junto a la regla Smbolo aparece la nota de que es necesario definir un smbolo en la tabla de smbolos.
15-4
Definicin
Un terminal es un elemento bsico que no se explica por medio de otra regla, sino de manera verbal. En los diagramas sintcticos aparecern con el siguiente smbolo:
El elemento terminal se representa mediante un valo o un crculo. Se indicar directamente el con tenido o el nombre (en letras maysculas). Define la cantidad de caracteres ASCII que pueden utilizarse.
En las tablas siguientes se especifican los terminales por medio de la indicacin del nmero de elementos del juego de caracteres ASCII.
Letras y cifras
Las letras y las cifras son los caracteres que ms se utilizan. El IDENTIFICADOR est formado p. ej. por letras, cifras y caracteres de subrayado.
Caracteres Subgrupo Elementos del juego de caracteres
Mayscula minscula Cifra decimal Cifra octal Cifra hexadecimal Cifra binaria
15-5
Carcter imprimble
depende del cdigo de todos los caracteres imprimbles caracteres utilizado. En el cdigo ASCII p. ej. a partir del equivalente decimal 31, sin DEL y sin los siguientes caracteres sustitutivos: $ ' Cambio de pgina (formfeed, page) Cambio de lnea (linefeed) Retorno de carro (carriage return) Tabulador Lnea nueva cualquier carcter, expresable en cdigo hexadecimal (hh)
15-6
Carcter de separacin entre horas, minutos y segundos Atributos Caracteres de separacin para el direccionamiento absoluto de la representacin de intervalos de tiempo y nmeros reales Caracteres y cadena de caracteres Signo de inicio de smbolo segn las reglas de la tabla de smbolos En los IDENTIFICADORES puede haber un carcter de separacin para valores numricos en constantes. Smbolo de escape para indicar signos de control o caracteres complementarios Interrupcin de la cadena en caso de que la cadena no coincida en una lnea o se instroduzcan comentarios.
Para constantes
En la siguiente tabla encontrar ejemplos del uso de caracteres individuales y cadenas de caracteres para constantes en el mbito de las reglas lxicas. La tabla rige para la nemotcnica alemana y la inglesa.
Prefijo Identificador de Regla lxica
BOOL# BYTE# WORD# DWORD# INT# DINT# REAL# CHAR# 2# 8# 16# D# DATE# DATE_AND_TIME# DT# E e D
Constante tipificada del tipo BOOL Constante tipificada del tipo BYTE Constante tipificada del tipo WORD Constante tipificada del tipo DWORD Constante tipificada del tipo INT Constante tipificada del tipo DINT Constante tipificada del tipo REAL Constante tipificada del tipo CHAR Constante numrica Constante numrica Constante numrica Indicacin de tiempo Indicacin de tiempo Indicacin de tiempo Indicacin de tiempo Caracteres de separacin para constantes de nmero real Caracteres de separacin para constantes de nmero real Carcter de separacin para intervalo de tiempo (da)
Constante de bit Constante de bit Constante de bit Constante de bit Constante entera Constante entera Constante de nmero real Constante CHAR Secuencia de cifras binarias Secuencia de cifras octales Secuencia de cifras hexadecimales FECHA FECHA FECHA Y HORA FECHA Y HORA Exponente Exponente Das (regla: representacin escalonada)
15-7
Prefijo
Identificador de
Regla lxica
Carcter de separacin para intervalo de tiempo (hora) Carcter de separacin para intervalo de tiempo (minutos) Carcter de separacin para intervalo de tiempo (milisegundos) Carcter de separacin para intervalo de tiempo (segundos) Indicacin de tiempo Indicacin de tiempo Indicacin de tiempo Indicacin de tiempo
Horas: (regla: representacin escalonada) Minutos (regla: representacin escalonada) Milisegundos (regla: representacin escalonada) Segundos (regla: representacin escalonada) INTERVALO INTERVALO HORA HORA
.. . ()
[]
(* *) // {} % #
Declaracin de variable, declaracin de instancia, funcin, rea de instrucciones, instruccin CASE Declaracin de variable, rea de instrucciones, rea de asignacin DB, bloque de constantes, bloque de metas de salto, declaracin de componentes Carcter de separacin para listas y Declaracin de variable, especificacin de tipo bloques de metas de salto de datos ARRAY, lista de inicializacin de arrays, parmetros FB, parmetros FC, lista de valores, declaracin de instancia Indicacin de rango Especificacin de tipo de datos ARRAY, lista de valores Carcter de separacin para nombres FB y Llamada a FB, variable estructurada DB, direccionamiento absoluto Llamada a funcin y bloque de funcin Llamada de funcin, llamada a FB, expresin, Anidamiento en expresiones Lista de inicializacin de arrays, multiplicacin simple, expresin de potencia Declaracin ARRAY, Especificacin de tipo de datos ARRAY, especificacin de tipo de datos STRING Variable estructurada, array parcial, indizado en variables globales y strings Bloque de comentario consulte "Reglas lxicas" Lnea de comentario consulte "Reglas lxicas" Bloque de atributos Especificacin de atributos Prefijo para identificadores directos Para programar conforme a IEC se puede utilizar %M4.0 en lugar de M4.0. Prefijo para una no palabra clave Designa un identificador como no palabra clave, p.ej. #FOR.
Carcter de separacin para indicacin de tipo, en instruccin despus de meta del salto Terminacin de una declaracin o de una instruccin
15-8
Operaciones
En la siguiente tabla estn 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 nemotcnica alemana y la inglesa.
Operacin Descripcin Regla sintctica
:=
Operacin de asignacin, asignacin de Asignacin de valores, rea de inicio, inicializacin del tipo de datos asignacin DB, bloque de constantes, asignacin de salida o entrada/salida, asignacin de entrada, asignacin de entrada/salida Operaciones aritmticas: operaciones unarias, signo Operaciones aritmticas bsicas Operaciones aritmticas: operacin de potencia Operaciones lgicas: negacin Operaciones lgicas bsicas Operacin de comparacin Expresin, expresin simple, expresin de potencia Operaciones aritmticas bsicas, multiplicacin simple Expresin Expresin Operacin lgica bsica Operacin de comparacin
15-9
Operacin lgica Identificador del tipo de datos ANY Inicio de especificacin de un array, despus sigue la lista de ndice encerrada entre "[" y "]" Declara una vista sobre una varaible Inicio del rea de instrucciones de bloques lgicos o del rea de inicializacin de bloques de datos Identificador de tipo de datos BLOCK_DB Identificador de tipo de datos BLOCK_FB Identificador de tipo de datos BLOCK_FC Identificador de tipo de datos BLOCK_SDB Tipo de datos simple para datos binarios Inicio de salto Tipo de datos simple Inicio de instruccin de control para seleccin Tipo de datos simple Inicio de definicin de constantes Intruccin de control para los bucles FOR, WHILE y REPEAT Tipo de datos para contador, slo utilizable en bloque de parmetros Inicio del bloque de datos Tipo de datos simple para fecha Tipo de datos compuesto para fecha y hora del da Tipo de datos simple para nmero (entero) precisin doble Operacin de divisin Introduccin del rea de instrucciones en la instruccin FOR Tipo de datos simple para fecha y hora del da Tipo de datos simple Doble palabra Inicio de la condicin cuando no se ha cumplido ninguna condicin Introduccin de una condicin no combinable OK-flag para confirmacin de bloque Marca de error del bloque
Operacin lgica bsica Especificacin del tipo de datos de parmetro Especificacin de tipo de datos ARRAY Declaracin de variables Bloque de organizacin, funcin, bloque de funcin, bloque de datos Especificacin del tipo de datos de parmetro Especificacin del tipo de datos de parmetro Especificacin del tipo de datos de parmetro Especificacin del tipo de datos de parmetro Tipo de datos de bits Instruccin FOR Tipo de datos de bits Instruccin CASE Tipo de caracteres Bloque de constantes Instruccin CONTINUE Especificacin de tipo de datos de parmetro Bloque de datos Tipo de temporizador DATE_AND_TIME Tipo de datos numrico Operaciones aritmticas bsicas, multiplicacin simple Intruccin FOR, instruccin WHILE DATE_AND_TIME Tipo de datos de bits Intruccin IF, instruccin CASE Instruccin IF
BLOCK_DB BLOCK_FB BLOCK_FC BLOCK_SDB BOOL BY BYTE CASE CHAR CONST CONTINUE COUNTER DATA_BLOCK DATE DATE_AND_TIME DINT DIV DO DT DWORD ELSE ELSIF EN ENO
15-10
Palabras clave
Descripcin
Regla sintctica
Terminacin de la instruccin CASE Terminacin de la definicin de constantes Terminacin del bloque de datos Terminacin de la instruccin FOR Terminacin de la funcin Terminacin del bloque de funcin
Instruccin CASE Bloque de constantes Bloque de datos Instruccin FOR Funcin Bloque de funcin Instruccin IF Bloque de metas de salto Tipo de datos de usuario Bloque de organizacin instruccin REPEAT Especificacin de tipo de datos STRUCT Bloque de variables temporales, bloque de variables estticas, bloque de parmetros instruccin WHILE EXIT
Terminacin de la instruccin IF Terminacin de declaracin de un bloque de metas de salto END_TYPE Terminacin del UDT END_ORGANIZATION_ Terminacin del bloque de organizacin BLOCK END_REPEAT Terminacin de la instruccin REPEAT END_STRUCT Terminacin de la especificacin de una estructura END_VAR Terminacin de un bloque de declaracin
END_WHILE EXIT FALSE FOR FUNCTION FUNCTION_BLOCK GOTO IF INT LABEL MOD NIL NOT OF OK OR ORGANIZATION_ BLOCK POINTER
Terminacin de la instruccin WHILE Interrupcin directa del procesamiento de un bucle Constante booleana predefinida: condicin lgica no cumplida, valor igual a 0 Inicio de instruccin de control para el procesamiento de bucles Inicio de funcin Inicio de bloque de funcin Instruccin para ejecutar un salto hasta una meta de salto Inicio de instruccin de control para seleccin Tipo de datos simple para nmero (entero), precisin simple Inicio de declaracin de un bloque de metas de salto Operacin aritmtica de resto de divisin Puntero cero Operacin lgica, pertenece a las operaciones unarias Inicio de especificacin del tipo de datos OK flag que expresa si se han ejecutado sin error las instrucciones de un bloque Operacin lgica Inicio del bloque de organizacin Tipo de datos POINTER (puntero), slo est permitido en la declaracin de parmetros del bloque de parmetros, no se ejecuta en S7-SCL
Instruccin FOR Funcin Bloque de funcin Salto en el programa Instruccin IF Tipo de datos numrico Bloque de metas de salto Operacin aritmtica bsica, multiplicacin simple Expresin Especificacin del tipo de datos ARRAY, instruccin CASE
15-11
Palabras clave
Descripcin
Regla sintctica
PROGRAM REAL REPEAT RET_VAL RETURN S5TIME STRING STRUCT THEN TIME TIMER TIME_OF_DAY TO TOD TRUE TYPE VAR VAR_TEMP UNTIL VAR_INPUT VAR_IN_OUT VAR_OUTPUT WHILE WORD VOID XOR
Introduccin del rea de instrucciones de un FB (sinnimo de FUNCTION_BLOCK) Tipo de datos simple Inicio de instruccin de control para el procesamiento de bucles Valor de respuesta de una funcin Instruccin de control para retorno desde subrutina Tipo de datos simple para indicaciones de tiempo, formato especial S5 Tipo de datos para cadena de caracteres Inicio de la especificacin de una estructura, seguido de la lista de componentes Inicio de acciones consecutivas cuando se cumple una condicin Tipo de datos simple para indicaciones de tiempo Tipo de datos para temporizador, slo utilizable en bloque de parmetros Tipo de datos simple para hora del da Inicio del valor final Tipo de datos simple para hora del da Constante booleana predefinida; condicin lgica cumplida, valor distinto de 0 Inicio del UDT Inicio de una tabla de declaracin Inicio de una tabla de declaracin Introduccin de la condicin de interrupcin para la instruccin REPEAT Inicio de una tabla de declaracin Inicio de una tabla de declaracin Inicio de una tabla de declaracin Inicio de instruccin de control para procesamiento de bucles Tipo de datos simple (PALABRA) Sin valor de respuesta en una llamada a funcin Operacin lgica
Bloque de funcin Tipo de datos numrico Instruccin REPEAT Funcin Instruccin RETURN Tipo de temporizador Especificacin de tipo de datos STRING Especificacin de tipo de datos STRUCT Instruccin IF Tipo de tiempo Especificacin de tipo de datos de parmetro Tipo de tiempo Instruccin FOR Tipo de temporizador
Tipo de datos de usuario Bloque de variables estticas Bloque de variables temporales Instruccin REPEAT Bloque de parmetros Bloque de parmetros Bloque de parmetros Instruccin WHILE Tipo de datos de bits Funcin Operacin lgica bsica
15-12
Salida (a travs de una imagen del proceso) Salida (a travs de una imagen del proceso) Salida (a travs de una imagen del proceso) Salida (a travs de una imagen del proceso) Salida (a travs de una imagen del proceso) Bloque de datos Bloque de datos Bloque de datos Bloque de datos Bloque de datos Entrada (a travs de una imagen del proceso) Entrada (a travs de una imagen del proceso) Entrada (a travs de una imagen del proceso) Entrada (a travs de una imagen del proceso) Entrada (a travs de una imagen del proceso) Marcas Marcas Marcas Marcas Marcas Salida (periferia directa) Salida (periferia directa) Salida (periferia directa) Entrada (periferia directa) Entrada (periferia directa) Entrada (periferia directa)
Bit Byte Doble palabra Palabra Bit Bit Byte Doble palabra Palabra Bit Bit Byte Doble palabra Palabra Bit Bit Byte Doble palabra Palabra Bit Byte Doble palabra Palabra Byte Doble palabra Palabra
15-13
Bloque de datos (Data Block) Bloque de funcin (Function Block) Funcin (Function) Bloque de organizacin (Organization Block) Bloque de datos del sistema (System Data Block) Funcin del sistema (System Function) Bloque de funcin del sistema (System Function Block) Temporizador (Timer) Tipo de datos globales o de usuario (Userdefined Data Type) Contador (Counter)
15-14
Los token definidos representan identificadores que han sido obtenidos como resultado de la regla lxica. Estos token describen: IDENTIFICADORES la asignacin de nombres en S7-SCL las constantes predefinidas y los OK flags
15.1.9 Identificadores
Identificadores
Los identificadores permiten acceder a los objetos del lenguaje S7-SCL. La siguiente tabla explica el significado de las distintas clases de identificadores.
Tipo de identificador Observaciones, ejemplos
p. ej. instrucciones de control BEGIN,DO,WHILE Nombres de Tipos de datos estndar (p. ej. BOOL, BYTE, INT) Funciones estndar predefinidas, p. ej. ABS Constantes estndar TRUE y FALSE
Identificadores de operandos en identificadores absolutos Nombres de libre definicin segn la regla IDENTIFICADOR
sistema y bloques de datos: p. ej. E1.2, MW10, FC20, T5, DB30, DB10.D4.5 Nombres de variables declaradas componentes de estructura parmetros constantes declaradas metas de salto
Cumplen la regla lxica IDENTIFICADOR o la regla lxica Smbolo, es decir, aparecen entre comillas, p. ej. "xyz"
15-15
Maysculas y minsculas
En las palabras clave es irrelevante el uso de maysculas o de minsculas, ya que la versin 4.0 de S7-SCL tampoco distingue entre maysculas y minsculas cuando se trata de nombres predefinidos o nombres de libre eleccin, p. ej. para variables, as como de los smbolos de la tabla de smbolos. La siguiente tabla ofrece un resumen.
Tipo de identificador Distingue entre maysculas y minsculas?
Palabras clave Nombres predefinidos en tipos de datos estndar Nombres en funciones estndar predefinidas Nombres predefinidos en constantes estndar Identificadores de operandos en identificadores absolutos Nombres de libre eleccin Smbolos de la tabla de smbolos
no no no no no no no
Los nombres de las funciones estndar, p. ej. BYTE_TO_WORD y ABS, tambin se pueden escribir en minsculas. Lo mismo ocurre con los parmetros de las funciones de temporizacin y contaje, p. ej. SV, se o ZV.
15-16
_ Subrayado
Letra
_ Subrayado
Letra
Cifra
Cifra
SIMBOLO
" Carcter imprimible "
15-17
Restricciones
Durante la asignacin de nombres debe tener en cuenta una serie de restricciones. Los nombres deben ser unvocos 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: Nombres de palabras clave: p. ej. CONST, END_CONST, BEGIN Nombres de operaciones: p. ej. AND, XOR Nombres de identificadores predefinidos: p. ej. nombres de tipos de datos como BOOL, STRING, INT Nombres de las constantes predefinidas TRUE y FALSE Nombres de funciones estndar: p. ej. ABS, ACOS, ASIN, COS, LN Nombres de identificadores absolutos o de operandos para datos del sistema globales: p. ej. EB, EW, ED, AB, AW, AD MB, MD
Utilizacin de IDENTIFICADOR
En la siguiente tabla se muestra en qu casos puede asignar nombres que cumplan la regla IDENTIFICADOR.
IDENTIFICADOR Descripcin Regla
Nombre de bloque
Nombre de temporizador y contador Nombre simblico para temporizador DESIGNACIN DE y contador TEMPORIZADOR, DESIGNACIN DE CONTADOR Nombre de atributo Secuencia de caracteres Meta de salto Nombre de variable Nombre para un atributo Declaracin de constantes simblicas, utilizacin Declaracin de meta de salto, utilizacin de meta de salto Asignacin de atributo Bloque de constantes, Constante rea de instrucciones del bloque de metas de salto, instruccin GOTO
Declaracin de variables temporales Declaracin de variables, variable o estticas simple, Variable estructurada Instancia de declaracin local Declaracin de instancia, nombre de llamada FB
Declaracin de instancia
15-18
IDENTIFICADOR DE BLOQUE
En la regla IDENTIFICADOR DE BLOQUE puede introducir IDENTIFICADOR y Smbolo de forma alternativa:
IDENTIFICACION DE BLOQUE
Palabra clave de bloque DB, FB, FC, OB, SDB, SFC, SFB, UDT IDENTIFICADOR
Nmero
Smbolo
Las reglas IDENTIFICADOR DE TEMPORIZADOR E IDENTIFICADOR DE CONTADOR funcionan de forma anloga a la regla IDENTIFICADOR DE BLOQUE.
15-19
Constantes:
Nemotcnica Descripcin
FALSE TRUE
Constante booleana predefinida (constante estndar) con el valor 0. Tiene el significado lgico de que no se ha cumplido una condicin. Constante booleana predefinida (constante estndar) con el valor 1. Tiene el significado lgico de que se ha cumplido una condicin.
Marcas
Nemotcnica Descripcin
EN ENO OK
Flag para la habilitacin del bloque Marca de error del bloque Marca que se pone a FALSE si una instruccin se ha ejecutado con errores
15-20
15.2
Reglas lxicas
15.2.2 Identificadores
Regla Diagrama sintctico
Identificadores
Identificador de BLOQUE
IDENTIFICACION DE BLOQUE
Palabra clave de bloque DB, FB, FC, OB, SDB, SFC, SFB, UDT IDENTIFICADOR
Nmero
Smbolo
15-21
Regla
Diagrama sintctico
Identificador de temporizador
T En nemotcnica alemana e inglesa IDENTIFICADOR Nmero
Smbolo
Identificador de contador
Z Nmero
Smbolo
Bloque de funcin del sistema Bloque de datos Tipo de datos de usuario (User Data Type)
Smbolo
"
Carcter imprimible
"
15-22
Regla
Diagrama sintctico
Nmero
Cifra
15-23
15.2.3 Constantes
Regla Diagrama sintctico
CONSTANTE DE BITS
BOOL# BYTE#
SECUENCIA DE CIFRAS DECIMAL SECUENCIA DE CIFRAS OCTAL SEC. DE CIFRAS HEXADECIMAL SECUENCIA DE CIFRAS BINARIA CARCTER (1)
Constante de bits
WORD# DWORD#
Constante entera
CONSTANTE ENTERA
INT# DINT# + SECUENCIA DE CIFRAS DECIMAL SECUENCIA DE CIFRAS OCTAL SEC. DE CIFRAS HEXADECIMAL SECUENCIA DE CIFRAS BINARIA CARCTER (1)
+ REAL# -
Exponente
Cifra
Cifra hexadecimal: 0 - 9
Subrayado
15-24
Regla
Diagrama sintctico
Guin inferior
Exponente
Exponente
E + Secuencia de cifras decimales e -
Constante Character
CONSTANTE CHAR
CHAR# ' Carcter '
15-25
Regla
Diagrama sintctico
CONSTANTE STRING
Constante STRING
'
Carcter
Interrupcin de cadena
Carcter
'
Carcter
Interrupcin de String
Interrupcin de String
Blanco (blank), Salto de lnea (linefeed) Retorno de carro (carriage return) Salto de pgina (formfeed, page) Tabulador horizontal (tabulator)
$<
15-26
Regla
Diagrama sintctico
FECHA
FECHA# Indicacin de fecha D#
Fecha
Intervalo
TIEMPO
TIME# Representacin decimal
T#
Representacin escalonada
Representacin decimal
- Cada unidad de tiempo (p.ej.: horas, minutos) slo puede indicarse una vez. - Debe respetarse la secuencia: das, horas, minutos, segundos, milisegundos.
Hora del da
HORA DEL DIA
TIME_OF_DAY# Indicacin de hora del da TOD#
Fecha y hora
FECHA Y HORA
DATE_AND_TIME# Indicacin de fecha DT# Indicacin de hora del da
Indicacin de la fecha
Indicacin de fecha
Secuencia de cifras decimales Ao Secuencia de cifras decimales Mes Secuencia de cifras decimales Da
15-27
Regla
Diagrama sintctico
Indicacin de hora del da
SECUENCIA DE CIFRAS DECIMALES Indicacin de horas SECUENCIA DE CIFRAS DECIMALES Indicacin de minutos
Indicacin de la hora
Representacin decimal
Representacin decimal
SECUENCIA DE CIFRAS DECIMALES SECUENCIA DE CIFRAS DECIMALES
Das
Horas
Minutos M
Segundos
MS
Milisegundos
El acceso a la representacin decimal slo es posible con unidades de tiempo no definidas todava.
15-28
Regla
Diagrama sintctico
Representacin escalonada
Representacin escalonada
SECUENCIA DE
CIFRAS DECIMALES
Horas
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
Minutos
Segundos
SECUENCIA DE
CIFRAS DECIMALES
MS
Milisegundos
15-29
IDENTIFICADOR DE OPERANDO
IDENTIFICADOR
Smbolo
Acceso simblico
Identificador de operandos
Acceso a DB absoluto
Identificador de operando DB Direccin Acceso absoluto
Acceso a DB indexado
Indice
Identificador de operando DB
Expresin bsica
Expresin bsica
Acceso a DB configurado
IDENTIFICADOR DE DB
Variable simple
15-30
Regla
Diagrama sintctico
Identificador de operando DB
Prefijode tamao
Prefijo de memoria
Prefijo de memoria
E A M PE PA Nemotcnica alemana I Q M PI PQ Nemotcnica inglesa Entrada Salida Marca
Prefijo de tamao
X B W D Bit Byte Palabra Doble palabra
Direccin
Nmero . Nmero Slo con direcciones de bit
Variable simple
15-31
15.2.5 Comentarios
Los factores ms importantes que hay que tener en cuenta para la elaboracin de comentarios son: Se admite la anidado de comentarios cuando est activada la opcin "Admitir comentarios anidados". Es posible insertarlos en cualquier punto de las reglas sintcticas, pero no en las reglas lxicas.
Regla Diagrama sintctico
Comentario
Lnea de comentario
Bloque de comentario
Lnea de comentario
Lnea de comentario
Carcter imprimible
//
Bloque de comentario
Bloque de comentario (* *)
Carcter
15-32
Ttulo
Versin
VERSION : ' SECUENCIA DE CIFRAS DECIMALES 0 - 15 . SECUENCIA DE CIFRAS DECIMALES 0 - 15 '
Proteccin de bloque
KNOW_HOW_PROTECT
Autor
Familia de bloques
IDENTIFICADOR
:=
'
'
15-33
Opcin de compilador
15-34
15.3
Reglas sintcticas
Libertad de formato
Libertad de formato quiere decir que: es posible insertar caracteres de formateo en cualquier punto; se pueden insertar comentarios de lnea y bloques de comentarios
15-35
Programa S7-SCL
Unidad de programa SCL
Funcin
Bloque de funcin
Bloque de datos
Bloque de organizacin
Bloque de organizacin
ORGANIZATION_BLOCK
Identificacin de DB
Tabla de declaracin de OB
BEGIN
Area de instrucciones
END_ORGANIZATION_BLOCK
Funcin
Tenga en cuenta que en las funciones sin VOID en el rea de instrucciones hay que asignar el valor de retorno al nombre de la funcin
Funcin
VOID Identificador de FC Especificacin del tipo de datos
FUNCTION
rea de declaracin de FC
BEGIN
rea de instrucciones
END_FUNCTION
15-36
Regla
Diagrama sintctico
Bloque de funcin
PROGRAM FUNCTION_BLOCK Identificador de FB rea de declaracin de FB
Bloque de funcin
Bloque de datos
Bloque de datos
Identificacin de DB
DATA_BLOCK
Tabla de declaracin de DB
BEGIN
Tabla de asignacin de DB
END_DATA_BLOCK
TYPE
Identificacin de UDT
END_TYPE
15-37
rea de declaracin de OB
Bloque de constantes Bloque de metas de salto Bloque de variables temporales
Area de declaracin de FB
Interface
rea de declaracin de un DB
15-38
Regla
Diagrama sintctico
rea de asignacin de DB
rea de asignacin de DB
Variable simple
:=
Constante*
* en notacin AWL
Bloque de constantes
Bloque de constantes
CONST
:=
Expresin simple
END_CONST
* slo en FB
15-39
Regla
Diagrama sintctico
Declaracin de variables
IDENTIFICADOR Nombre de variable, nombre de parmetro o nombre de componente , No en caso de inicializacin 1) :
Especificacin de tipo de datos Inicializacin de tipo de datos
1)
mx. 24 caracteres
IDENTIFICADOR
:=
'
carcter imprimible
'
15-40
ETNATSNOC
.TITEPER ED ETSIL
ETNATSNOC ED
ETNATSNOC
.LAICINI ED ATSIL
ETNATSNOC
YARRA ED
NOICITEPER ED ROTCAF
SELAMICED ED AICNEUQES
NOICAZILAICINI [
Regla
Diagrama sintctico
Declaracin de instancia
Los FB ya deben existir Identificador de FB IDENTIFICADOR Nombre de instancia local , : Identificacin de SFB ;
VAR_TEMP
Declaracin de variable
END_VAR
No es posible inicializacin
Bloque de parmetros
Bloque de parmetros
VAR_INPUT Declaracin de variables
VAR_OUTPUT
END_VAR
15-41
Regla
Diagrama sintctico
Tipo de datos simple
DATE_AND_TIME
IDENTIFICACION DE UDT
15-42
Tipo de caracteres
Tipo de temporizador
CHAR
STRING
Nmero real
15-43
Regla
Diagrama sintctico
S5TIME TIME TIME_OF_DAY Hora del da TOD DATE Temporizador, formato S5 Temporizador
Tipo de tiempo
Fecha
DATE_AND_TIME
DATE_AND_TIME
DATE_AND_TIME# Indicacin de fecha DT# Indicacin de hora
Especificacin de ndice
Indice
OF
STRUCT
Declaracin de componentes
END_STRUCT
Declaracin de componentes
IDENTIFICADOR Nombre de componente : Especificacin de tipo de datos Inicializacin de datos ;
15-44
Regla
Diagrama sintctico
TIMER COUNTER Temporizaddor Contador Cualquier tipo Direccin
ANY POINTER
15-45
rea de instrucciones
Instruccin
Instruccin
Instruccin
Asignacin de valor
Procesamiento de subrutinas
Instruccin de control
Asignacin de valor
Asignacin de valor
:=
Expresin
Variable ampliada
Variable ampliada
Variable simple Variable absoluta para reas de memoria de la CPU Variable en DB
Llamada a FC
15-46
Regla
Diagrama sintctico
Variable simple
IDENTIFICADOR Nombre de variable o nombre de parmetro Variable estructurada
Array simple
Variable estructurada
IDENTIFICADOR Es al principio, el identificador nombre de variable o nombre de parmetro, y despus del punto, nombre de componente
Array simple
15-47
Llamada a FB
Llamada a funcin
Llamada a funcin
IDENTIFICADOR DE FC Parmetro de FC
IDENTIFICADOR DE SFC
Parmetros de FB
Parmetros de FB
Asignacin de entrada Asignacin de entrada/salida
Parmetros de FC
Parmetro de FC
15-48
Regla
Diagrama sintctico
Asignacin de entrada
Parmetro actual Expresin IDENTIFICADOR DE TEMPORIZADOR IDENTIFICADOR Nombre del parme tro de entrada (parmetro formal) := IDENTIFICADOR DE CONTADOR IDENTIFICADOR DE BLOQUE
Asignacin de entrada
Asignacin de de entrada/salida
Asignacin de entrada/salida
:=
Asignacin de salida
15-49
Instruccin IF
No olvide escribir un punto y coma detrs de la palabra clave END_IF.
IF
Expresin Condicin
THEN
ELSIF
Expresin Condicin
THEN
Area de instrucciones
ELSE
Area de instrucciones
END_IF
Instruccin CASE
No olvide escribir un punto y coma detrs de la palabra clave END_CASE.
Instruccin CASE
Expresin de seleccin (entero) CASE Expresin Valor OF
Lista de valores
Area de instrucciones
ELSE
Area de instrucciones
END_CASE
15-50
Regla
Diagrama sintctico
Lista de valores
Nmero entero Valor
Lista de valores
Valor
..
Valor
Valor
Constante numrica
Instruccin FOR
Instruccin WHILE
Instruccin REPEAT
Instruccin CONTINUE
Instruccin EXIT
Instruccin RETURN
Instruccin GOTO
15-51
Regla
Diagrama sintctico
Instruccin FOR
FOR Asignacin inicial para valor inicial TO Expresin bsica para valor final
Instruccin FOR
No olvide escribir un punto y coma detrs de la palabra clave END_FOR.
BY
DO
Area de instrucciones
END_FOR
Asignacin inicial
Asignacin inicial
Variable simple del tipo de datos INT/DINT Expresin bsica para valor inicial
:=
Instruccin WHILE
No olvide escribir un punto y coma detrs de la palabra clave END_WHILE.
Instruccin WHILE
Area de instrucciones
WHILE
Expresin
DO
END_WHILE
Condicin de ejecucin
Instruccin REPEAT
No olvide escribir un punto y coma detrs de la palabra clave END_REPEAT.
Instruccin REPEAT
REPEAT
Area de instrucciones
UNTIL
Expresin
END_REPEAT
Condicin de interrupcin
Instruccin CONTINUE
Instruccin CONTINUE
CONTINUE
Instruccin RETURN
Instruccin RETURN
RETURN
15-52
Regla
Diagrama sintctico
Instruccin EXIT
Instruccin EXIT
EXIT
Salto en el programa
Instruccin GOTO
GOTO IDENTIFICADOR Meta de salto
15-53
15-54
16
Consejos y trucos
Cdigo con tiempo de ejecucin optimizado para el acceso a estructuras de bloques de datos
Si tiene que acceder a una estructura de un bloque de datos en ms de una ocasin, es recomendable que utilice el siguiente procedimiento: 1. Cree una variable local con el tipo de la configuracin. 2. Asigne a la variable la estructura del bloque de datos. 3. A partir de entonces podr utilizar la variable en el cdigo tantas veces como desee sin tener que volver a acceder al DB. Ejemplo: DB100.array[i].value := DB100.array[i].valor1 * DB100.array[i].valor2 / DB100.array[i].valor3 ;
16-1
Consejos y trucos
Este ejemplo requiere menos memoria y menos tiempo de ejecucin si se programa de la siguiente forma: VAR_TEMP tmp : STRUCT value valor1 valor2 valor3 END_STRUCT; : : : : REAL; REAL; REAL; REAL;
Con VAR_TEMP se almacenan las variables en la pila de la CPU. En las CPUs pequeas, esto puede provocar un desbordamiento de la pila. Por consiguiente, se recomienda no abusar de variables temporales.
Evite las expresiones largas. Al ejecutar las expresiones largas, el compilador guarda resultados intermedios en la pila. Dependiendo del tipo y de la cantidad de resultados intermedios se puede exceder el tamao de pila disponible. Remedio: Fraccione la expresin en partes ms pequeas y asigne los resultados intermedios a variables explcitas.
16-2
Consejos y trucos
16-3
Consejos y trucos
Recableado de bloques
En los bloques S7-SCL no es posible recablear la llamada de bloques con la funcin del administrador SIMATIC Herramientas > Recablear. El recableado se efecta manualmente modificando la llamada del bloque correpondiente en la fuente SCL. Recomendaciones: Defina en la tabla de smbolos nombres simblicos para el bloque y llame al bloque de forma simblica. Defina en la tabla de smbolos nombres simblicos para las direcciones absolutas (E, M, A etc.) y utilice estos nombres simblicos en su programa. Cuando desee recablear un bloque slo deber modificar la correspondencia en la tabla de smbolos y no necesitar realizar ninguna modificacin en la fuente SCL.
16-4
Consejos y trucos
Ejemplo:
VAR theStruct : STRUCT twoBytes : ARRAY [0..1] OF BYTE; oneInt : INT oneByte : BYTE; END_STRUCT; fiveBytes AT theStruct : ARRAY[0..4] OF BYTE; END_VAR
Ah donde se exigen 5 BYTEs, utilice el identificador fiveBytes. Con el identificador theStruct se podr acceder entonces de forma estructurada.
Regla
FOR ii := anfang TO ende BY schritt DO
Si... ...entonces Observacin
Valores lmite
Para ambos tipos de datos posibles se aplican valores lmite diferentes:
Tipo de datos PMAX NMAX
32_767 2_147_483_647
-32_768 -2_147_483_648
16-5
Consejos y trucos
16-6
Glosario
Archivo fuente
Parte de un programa que se crea con un editor grfico o textual y a partir del que, por compilacin, se crea un programa de usuario ejecutable .
rea de declaracin
En caso de crear el programa con un editor de textos, los datos locales de un bloque lgico se declaran en el rea de declaracin.
rea de memoria
Un mdulo central (CPU) de SIMATIC S7 dispone de tres distintas reas de memoria: la memoria de carga, la memoria de trabajo y la memoria del sistema.
Array
Un array es un tipo de datos compuesto que contiene elementos de datos del mismo tipo. A su vez estos elementos de datos pueden ser simples o compuestos.
Asignacin
Mecanismo utilizado para asignar un valor a una variable.
Atributo
Un atributo es una propiedad que, por ejemplo, puede vincularse al nombre de un bloque o de una variable. En S7-SCL existen, por ejemplo, atributos para las siguientes tareas: ttulo del bloque, versin, proteccin del bloque, autor, nombre del bloque, familia del bloque.
Ayuda en pantalla
STEP 7 ofrece la posibilidad de visualizar en la pantalla textos de ayuda contextual al trabajar con el software de programacin.
BCD
Decimal codificado en binario. En STEP 7, los temporizadores y contadores se indican internamente en la CPU en formato BCD.
Glosario-1
Glosario
Bloque
Los bloques son componentes del programa de usuario delimitados por su funcin, por su estructura o por el uso para el que estn destinados. En STEP 7 hay bloques lgicos (FB, FC, OB, SFC; SFB), bloques de datos (DB, SDB) y tipos de datos de usuario (UDT).
Bloque lgico
En SIMATIC S7 un bloque lgico es un bloque que contiene una seccin del programa de usuario STEP 7. Por el contrario, un bloque de datos slo contiene datos. Existen los siguientes bloques lgicos: bloques de organizacin (OB), bloques de funcin (FB), funciones (FC), bloques de funcin del sistema (SFB) y funciones del sistema (SFC).
Glosario-2
Glosario
Clase de bloque
Los bloques se subdividen en dos clases, dependiendo de su contenido: bloques lgicos y bloques de datos.
Comentario
Estructura de lenguaje para la integracin de textos explicativos en un programa que no tiene influencia alguna sobre la ejecucin del programa.
Compilador S7-SCL
El compilador S7-SCL es un compilador por lotes que permite compilar el programa previamente editado (fuente S7-SCL) al cdigo mquina MC7. Los bloqes as generados se almacenan en la carpeta "Bloques" del programa S7.
Compilar
Crear un programa de usuario ejecutable a partir de un archivo fuente.
Constante
Comodn que se utiliza en bloques lgicos para valores constantes. Las constantes se utilizan para incrementar la legibilidad del programa. Ejemplo: en lugar de indicar un valor directamente (p.ej. 10 ), se indica el comodn "recorridos_bucle_max". Al llamarlo, el comodn se sustituye por el valor de la constante (p.ej. 10).
Constante (simblica)
Las constantes con nombres simblicos son comodines para los valores constantes de los bloques lgicos. Se utilizan para mejorar la legibilidad de un programa.
Glosario-3
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 asncrona con respecto al programa de usuario. Con las instrucciones de STEP 7 se determina la funcin exacta de la clula de contaje (p. ej. contador incremental) y se activa su ejecucin (inicio).
Datos estticos
Los datos estticos son datos locales de un bloque de funcin que se almacenan en el bloque de datos de instancia y, por tanto, conservan su valor hasta la prxima ejecucin del bloque de funcin.
Datos globales
Los datos globales son datos a los que se puede acceder desde cualquier bloque lgico (FC, FB, OB). En concreto, se trata de las marcas (M), entradas (E), salidas (A), temporizadores (T), contadores (Z) y elementos de los bloques de datos DB. A los datos globales se puede acceder tanto con direccionamiento simblico como con direccionamiento absoluto.
Datos locales
Los datos locales son los datos que estn asignados a un bloque lgico y que se declaran en el rea de declaracin del bloque. Dependiendo del bloque en cuestin, incluyen parmetros formales, datos estticos y datos temporales.
Datos temporales
Los datos temporales son datos locales de un bloque que se almacenan en la pila de datos locales durante el procesamiento de un bloque y que dejan de estar disponibles al terminarse de procesar.
Datos tiles
Los datos tiles se intercambian entre una mdulo central y un mdulo de seales, entre un mdulo de funcin y procesadores de comunicacin a travs de la imagen del proceso o a travs de accesos directos. Datos tiles pueden ser seales de entrada/salida digitales y analgicas de mdulos de seales as como informaciones de estado y de forzado de los mdulos de funcin.
Glosario-4
Glosario
Declaracin
Mecanismo para definir un elemento del lenguaje. Una declaracin contiene la conexin de un identificador con un elemento de lenguaje as como la asignacin de atributos a tipos de datos.
Declaracin de variables
La declaracin de variables contiene la indicacin de un nombre simblico, un tipo de datos y, eventualmente, un valor inicial y un comentario.
Depurador S7-SCL
El depurador S7-SCL es un depurador para lenguajes de alto nivel que permite localizar errores lgicos en los programas de usuario creados con S7-SCL.
Direccionamiento
Asignacin de una direccin en el programa de usuario. Las direcciones se pueden asignar a determinados operandos o reas de operandos (ejemplos: entrada 12.1, palabra de marcas MW25)
Direccionamiento absoluto
En el direccionamiento absoluto se indica explcitamente la direccin del operando a procesar. Ejemplo: la direccin A 4.0 designa al bit 0 del byte 4 de la imagen del proceso de las salidas.
Direccionamiento simblico
En el direccionamiento simblico, el operando a procesar se indica mediante un nombre simblico. La correspondencia entre smbolos y direcciones se establece en la tabla de smbolos o en un archivo de smbolos.
Editor S7-SCL
El editor S7-SCL es un editor especfico para S7-SCL que permite crear fuentes en el lenguaje S7-SCL.
Enable (EN)
En STEP 7, cada bloque de funcin y cada funcin contiene el parmetro de entrada "Enable" (EN), definido implcitamente, que se puede activar al ejecutar el bloque. Cuando EN es TRUE, el bloque llamado se ejecuta, en caso contrario no.
Glosario-5
Glosario
Entero (INT)
Entero (INT) es uno de los tipos de datos simples. Se representa por medio de un nmero entero de 16 bits.
Estructura (STRUCT)
Tipo de datos que se compone de elementos de distinto tipos de datos. Los tipos de datos que contiene una estructura pueden ser simples o compuestos.
Expresin
En S7-SCL las expresiones sirven para procesar datos. Se distingue entre expresiones aritmticas, lgicas y de comparacin.
Fuente S7-SCL
La fuente S7-SCL es el archivo en el que se crea el programa S7-SCL. Una vez creado, el archivo fuente se compila con el compilador S7-SCL.
Funcin (FC)
Segn IEC 1131-3, una funcin (FC) es un bloque lgico sin datos estticos. La funcin ofrece la posibilidad de transferir parmetros dentro del programa de usuario. Por consiguiente, las funciones resultan idneas para programar funciones complejas que se repiten con frecuencia; p.ej., los clculos.
Glosario-6
Glosario
Identificadores
Combinacin de letras, cifras y guiones bajos mediante la cual se designa un elemento del lenguaje.
Instancia
El trmino "instancia" sirve para designar la llamada de un bloque de funcin que tiene asignado un bloque de datos de instancia o una instancia local. Cuando en el programa de usuario STEP 7 se llama n veces a un bloque de funcin, y cada vez con un parmetro y con un nombre de bloque de datos de instancia diferentes, existen n instancias.
Instruccin
Una instruccin es la unidad independiente ms pequea de un programa de usuario elaborado con un lenguaje textual. Representa una orden de trabajo para el procesador.
Instruccin CASE
Esta instruccin es una instruccin de ramificacin. Dependiendo del valor de una expresin de seleccin, sirve para seleccionar una seccin del programa dentro de 1-n opciones posibles.
Instruccin CONTINUE
En S7-SCL, una instruccin CONTINUE sirve para cancelar la ejecucin actual del bucle dentro de una instruccin de repeticin (FOR, WHILE o REPEAT).
Instruccin EXIT
Conjunto de instrucciones del lenguaje dentro de un programa que permite interrumpir un bucle en cualquier momento e independientemente de las condiciones (interrupcin incondicional).
Glosario-7
Glosario
Instruccin FOR
Estructura de un programa. La instruccin FOR ejecuta una secuencia de instrucciones dentro de un bucle, en el que se van asignando valores consecutivos a una variable.
Instruccin GOTO
Estructura de un programa. Una instruccin GOTO tiene como consecuencia el salto inmediato a una meta de salto dada y, por tanto, a otra instruccin del mismo bloque.
Instruccin REPEAT
Estructura de un programa que sirve para repetir una secuencia de instrucciones hasta que se se cumpla una condicin de interrupcin.
Instruccin RETURN
Estructura de un programa que provoca la salida del bloque que se est ejecutando.
Interface de llamada
El interface de llamada queda definido por los parmetros de entrada, de salida y de entrada/salida (parmetros formales) de un bloque del programa de usuario. Al llamar al bloque se sustituyen por los parmetros actuales.
Jerarqua de llamada
Todos los bloques deben ser llamados antes de ser procesados. El orden y el anidamiento de estas llamadas se denomina jerarqua de llamada.
Literal
Notacin formal que determina el valor y el tipo de una constante.
Llamada de bloque
Inicio de un bloque en el programa de usuario de STEP 7: los bloques de organizacin son llamados bsicamente por el sistema operativo; todos los dems bloques son llamados por el programa de usuario de STEP 7.
Marcadores
Los marcadores son marcadores de texto temporales que marcan una posicin cualquiera de la fuente y facilitan la navegacin por la fuente.
Glosario-8
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.
Multiinstancia
Cuando se utilizan multiinstancias, el bloque de datos de instancia contiene datos para distintos bloques de funcin de una misma jerarqua de llamada.
Nemotcnica
La nemotcnica es una forma de representacin abreviada de los operandos y de las operaciones del programa. STEP 7 asiste tanto la representacin inglesa (p.ej."I" para entrada) como la representacin alemana (p.ej. "E" para entrada).
Nonterminal
Nonterminal es un elemento compuesto de una descripcin sintctica que se describe mediante otra regla lxica o sintctica.
Nmero real
Un nmero real es una cifra positiva o negativa que representa un valor decimal, por ejemplo 0,339 o 11,1.
Observar
Al observar un programa se controla su ejecucin en la CPU. Durante este proceso se visualizan, por orden cronolgico, y se actualizan cclicamente los valores actuales de las variables y de los parmetros.
Offline
Offline designa aquel estado operativo en el que la unidad de programacin no est conectada al sistema de automatizacin (ni de forma fsica, ni de forma lgica).
OK flag
OK flag sirve para indicar la ejecucin correcta o incorrecta de una secuencia de instrucciones de un bloque. Es un tipo de datos BOOL global.
Glosario-9
Glosario
Online
Online designa aquel estado operativo en el que la unidad de programacin est conectada al sistema de automatizacin (de forma fsica o lgica).
Operacin
Una operacin es parte de una instruccin e indica qu tiene que hacer el procesador.
Operando
Un operando es parte de una instruccin e indica, con qu tiene que operar el procesador. El operando se puede direccionar tanto absoluta como simblicamente.
Palabra clave
Unidad lxica que caracteriza a un elemento de lenguaje, p.ej. "IF". Las palabras clave se utilizan en S7-SCL para sealar el principio de un bloque, para marcar secciones del rea de declaracin, para identificar instrucciones as como para comentarios y atributos.
Palabra de estado
La palabra de estado forma parte de los registros del mdulo central (CPU). En ella se memorizan informaciones sobre estados y errores que se registran durante la ejecucin de los comandos de STEP 7. Los bits de estado se pueden leer y escribir, mientras que los bits de error slo permiten accesos de lectura.
PARADA
El estado operativo PARADA se alcanza desde el estado operativo RUN tras una peticin de la unidad de programacin. En este estado operativo es posible efectuar funciones de test especiales.
Parmetros actuales
Los parmetros actuales sustituyen a los parmetros formales al llamar a un bloque de funcin (FB) o a una funcin (FC). Ejemplo: el parmetro formal "Start" se sustituye por el parmetro actual "E 3.6".
Parmetros de entrada
Los parmetros de entrada slo se encuentran en funciones y bloques de funcin. Mediante los parmetros de entrada se transfieren datos al bloque llamado para el procesamiento de los mismos.
Glosario-10
Glosario
Parmetro de entrada/salida
Los parmetros de entrada/salida se encuentran en funciones y bloques de funcin. Con estos parmetros se transfieren datos al bloque llamado; all se procesan y los resultados se vuelven a depositar a continuacin en la misma variable.
Parmetros de salida
Los parmetros de salida de un bloque del programa de usuario permiten transferir resultados al bloque invocante.
Parmetros formales
Un parmetro formal es un comodn para el parmetro real (parmetro actual) que se emplea en los bloques lgicos parametrizables. En el caso de los bloques de funcin (FB) y de las funciones (FC), es el usuario quien define los parmetros formales, mientras que en el caso de los bloques de funcin de sistema (SFB) y de las funciones de sistema (SFC), los parmetros formales ya estn definidos. Al llamar a un bloque se asigna un parmetro actual al parmetro formal para que el bloque llamado trabaje con el valor actual. Los parmetros formales pertenecen a los datos locales del bloque y se dividen a su vez en parmetros de entrada, salida y de entrada/salida.
Programa de usuario
El programa de usuario contiene todas las instrucciones y declaraciones necesarias para procesar las seales que permiten controlar una instalacin o un proceso. Est asignado a un mdulo programable (p. ej. CPU, FM) y puede estructurarse en unidades (bloques) ms pequeas.
Programa de usuario S7
Una carpeta que contiene bloques que se cargan en un mdulo S7 programable (p. ej. CPU, FM) donde son ejecutados para controlar una instalacin o un proceso.
Programacin estructurada
Para soluciones de automatizacin complejas, el programa de usuario se subdivide en secciones del programa individuales e independientes (bloques). El programa de usuario se organiza siguiendo la estructura funcional o tecnolgica de las instalaciones.
Glosario-11
Glosario
Programacin simblica
El lenguaje de programacin S7-SCL permite utilizar cadenas de caracteres simblicas en lugar de operandos. As p.ej., es posible sustituir el operando A1.1 por la cadena "vlvula_17". La tabla de smbolos establece la conexin entre el operando y la cadena de caracteres simblica asignada ste.
Proyecto
Una carpeta que contiene todos los objetos de una solucin de automatizacin independientemente del nmero de equipos y mdulos y de su conexin a la red.
Punto de parada
Esta funcin permite conmutar el mdulo central (CPU) al estado operativo PARADA en determinadas posiciones del programa. Cuando se alcanza un punto de parada se puede proceder a realizar funciones de test como p.ej., la ejecucin paso a paso de las instrucciones o la observacin o el forzado de una variable de estado.
Regla sintctica
El mximo nivel regulador de la descripcin formal del lenguaje S7-SCL est constituido por reglas sintticas. Al utilizar estas reglas no existe libertad de formato, es decir, no est permitido utilizar espacios en blanco ni caracteres de control.
RUN
En el estado operativo RUN se procesa el programa de usuario y se actualiza la imagen del proceso de forma cclica. Todas las salidas digitales estn habilitadas.
RUN-P
El estado operativo RUN-P equivale al estado operativo RUN, con la diferencia de que en aqul se permiten todas las funciones de la unidad de programacin sin restriccin alguna.
S7-SCL
Lenguaje de alto nivel similar a PASCAL que cumple la norma DIN EN-61131-3 (int. IEC 1131-3) y que ha sido diseado para la programacin de tareas complejas en un PLC, p. ej. algoritmos o tareas de procesamiento de datos. S7-SCL es la abreviatura de "Structured Control Language".
Glosario-12
Glosario
Seccin de declaracin
La declaracin de variables de un bloque se divide en diversas secciones en las que se declaran los distintos parmetros del bloque. Por ejemplo, la seccin de declaracin IN contiene la declaracin de los parmetros de entrada, y la seccin de declaracin OUT la declaracin de los parmetros de salida.
Semntica
Relacin entre los distintos elementos simblicos de un lenguaje de programacin y su significado, diseo y uso.
Smbolo
Un smbolo es un nombre definido por el usuario respetando determinadas reglas sintcticas. Una vez determinado lo que simboliza este nombre (p.ej., variable, tipo de datos, bloque), se puede utilizar en la programacin y en el manejo y visualizacin. Ejemplo: operando: E 5.0; tipo de datos: BOOL; smbolo: pulsador_paro_de_emergencia.
Tabla de smbolos
Tabla de asignacin de smbolos (=nombre) a direcciones para datos globales y bloques. Ejemplos: paro de emergencia (smbolo); E1.7 (direccin), o regulador (smbolo) SFB 24 (bloque).
Tabla de variables
En la tabla de variables se reunen las variables a observar o forzar, incluido su formato.
Temporizadores
Los temporizadores son parte de la memoria del sistema de la CPU. El sistema operativo actualiza el contenido de estos temporizadores de forma asncrona con respecto al programa de usuario. Con las instrucciones de STEP 7 se determina la funcin exacta de la clula de temporizacin (p. ej. retardo a la conexin) y se activa su ejecucin (inicio).
Terminal
Un terminal es un elemento bsico de una regla lxica o sintctica que no se explica por medio de otra regla, sino de manera verbal. Un terminal puede ser, p.ej,. una palabra clave o un carcter aislado.
THEN
En S7-SCL, una expresin sirve para el procesamiento de datos. Se distinguen expresiones aritmticas, expresiones lgicas y expresiones de comparacin.
Glosario-13
Glosario
Tiempo de ciclo
El tiempo de ciclo es el tiempo que necesita la CPU para ejecutar una vez el programa de usuario.
Tipo de bloque
La arquitectura orientada a bloques de STEP 7 distingue los siguientes tipos de bloques: bloques de organizacin, bloques de funcin, funciones, bloques de datos, bloques de funcin de sistema, funciones de sistema, bloques de datos de sistema y tipos de datos personalizados.
Tipo de datos
El tipo de datos determina 1. el tipo y el significado de los elementos de datos 2. las reas de memoria admisibles y valores de los elementos de datos 3. la cantidad admisible de operaciones que pueden ejecutarse con un operando de un determinado tipo de datos. 4. la notacin de los elementos de datos
Glosario-14
Glosario
UDT
Vase: Tipo de datos de usuario.
Variable
Una variable define un dato de contenido variable que se puede utilizar en el programa de usuario STEP 7. Una variable se compone de un operando (p. ej. M 3.1) y un tipo de datos (p. ej. BOOL) y se puede declarar con un smbolo (p. ej. BAND_EIN). La variable se declara en el rea de declaracin.
Valor inicial
Valor que se asigna a una variable al arrancar el sistema.
Vista
Para acceder con otro tipo de datos a una variable declarada, es posible definir vistas sobre la variable o sobre reas de la variable. La vista se utiliza como cualquier otra variable del bloque, heredando todas las propriedades de la variable a la que seala, pero con un tipo de datos distinto.
Glosario-15
Glosario
Glosario-16
ndice alfabtico
*
* 11-8, 11-9 ** 11-8 Ajustar la hora 4-39 Alineacin automtica de las lneas 4-13 AND 11-10, 11-11 ANY 7-18, 7-19 Archivo de control de compilacin 4-21, 6-25 Archivo de control para la compilacin 4-21 rea de declaracin 6-11, 8-3 - 8-13 definicin 6-11 estructura 6-11 inicializacin 8-3 parmetros de bloque 8-12, 8-13 reglas sintcticas 15-38 sinopsis de las secciones de declaracin 8-9 variables estticas 8-10 variables temporales 8-11 rea de instrucciones 15-46 estructura 6-13 rea de operando 5-9 rea de trabajo 4-2 reas de memoria de la CPU 10-3 reas de memoria de la CPU 10-1 - 10-6 ARRAY 7-9, 7-10, 8-4, 12-5, 12-6 asignacin con variables del tipo de datos ARRAY 12-5 Array (ARRAY) asignacin con variables del tipo de datos ARRAY 12-5 inicializacin 8-3 Arrays 7-9 Asignacin 12-3 - 12-11 asignacin con variables del tipo STRING 12-7 con variables absolutas para reas de memoria 12-9 con variables del tipo DATE_AND_TIME 12-8 con variables del tipo STRUCT y UDT 12-3 con variables globales 12-10 Asignacin de entrada FB 12-33 Asignacin de entrada/salida 12-34, 12-43 asignacin de entrada/salida (FB/SFB) 12-34 asignacin de entrada/salida (FC) 12-43 Asignacin de estructuras con una longitud de bytes impar 16-5 Asignacin de parmetros 12-27
/
/ 11-8
+
+ 11-8, 11-9
<
< 11-13, 11-14 <= 11-14 <> 11-12, 11-14
=
= 11-12
>
> 11-13, 11-14 >= 11-12
A
Abrir bloques 4-6 Abrir una fuente SCL 4-5 ABS 14-9 Acceso absoluto a bloques de datos 10-8 a las reas de memoria de la CPU 10-3 Acceso estructurado a bloques de datos 10-11 Acceso indizado a reas de memoria de la CPU 10-6 Acceso indizado a bloques de datos 10-10 Acceso simblico a reas de memoria de la CPU 10-5 ACOS 14-10 Adicin 11-2 Advertencias 4-21 Ajustar el diseo de pgina 4-22 Ajustar la fecha 4-39
ndice alfabtico-1
ndice alfabtico
Asignacin de parmetros en funciones de contaje 13-3 Asignacin de parmetros en funciones de tiempo 13-11 Asignacin de valor 12-2 asignaciones con variables de un tipo de datos simple 12-2 asignaciones de valor con variables del tipo ARRAY 12-5 Asignacin de valores 6-14 ASIN 14-10 AT 8-5 ATAN 14-10 Atributos 6-7, 6-10, 6-12 Atributos de bloque 15-33 Atributos del bloque 6-7, 6-10 atributos del sistema para bloques 6-10 definicin 6-6 Atributos del sistema 6-10, 6-12 para bloques 6-10 para parmetros 6-12 AUTHORS.EXE 2-6 AuthorsW 2-4 AuthorsW.exe 2-4 Automation License Manager 2-1 Autorizacin 2-6 disquete original 2-4 instalar 2-4 perder 2-4 Primera instalacin 2-4 realizar posteriormente 2-4 transferir 2-4 Autorizacin de emergencia 2-1, 2-4, 2-6 Autorizacin de uso 2-6 Autorizacin de utilizacin con el Automation License Manager 2-1
Borrado total de la memoria de la CPU 4-25 Borrar texto 4-11 Bfer de diagnstico 4-40 Buscar texto 4-9 BYTE 7-3 BYTE_TO_BOOL 14-3 BYTE_TO_CHAR 14-3
C
Cadenas de caracteres 5-13 Campo de aplicacin 1-1 Caracteres imprimibles 9-9, 9-11 Caracteres no imprimibles 9-10, 9-11 Cargar 4-25 Cargar en la CPU 4-25 Cerrar una fuente S7-SCL 4-5 Certificate of License 2-1, 2-3 CHAR 7-3 CHAR_TO_BYTE 14-3 CHAR_TO_INT 14-3 Clave de licencia 2-1, 2-2 Claves de licencia 2-5 Color y tipo de letra del texto fuente 4-14, 4-24 Comentario bloque de comentario 5-15 comentario de lnea 5-16 Insertar plantillas para comentarios 4-16 regulacin lxica 15-32 Comentario de lnea 5-16 Compilador 1-2, 4-19 ajuste del compilador 4-19 Compilar 4-18, 4-19, 4-20, 4-21, 6-25 Comprobar la coherencia de los bloques 4-37 Compuestos tipos de datos 7-1 Comunicacin de la CPU 4-42 CONCAT 14-13 Conceptos bsicos SCL 5-4 - 5-13 Condicin de cancelar 12-22, 12-24 Condiciones 12-13 Configuraciones 7-11 Constante CHAR 9-9 Constante de fecha 9-13 Constante de hora 9-16 Constante de tiempo 9-14 Constante entera 9-7 Constantes 9-2 - 9-17 Constantes de bits 9-6 Constantes reales 9-8 Constantes simblicas 9-2 Constantes y flags predefinidas DEscripcin del lenguaje formal 15-20
B
Barra de estado 4-2 Barra de herramientas 4-2 Barra de mens 4-2 Barra de ttulo 4-2 Bifurcacin del programa 12-12 BIT 7-3 BLOCK_DB_TO_WORD 14-4 Bloque de comentario 5-15 Bloque de funcin (FB) 6-15, 12-27 - 12-31 Bloque de organizacin 6-19 Bloques 3-4, 3-5, 4-6, 6-1 llamar 4-16 bloques de datos 10-8 Bloques de datos 6-20, 10-7 - 10-11 Bloques de los diagramas sintcticos 5-1 Bloques lgicos 3-4, 4-8, 6-1
ndice alfabtico-2
ndice alfabtico
Contador 13-1 - 13-8 asignacin de parmetros en funciones de contaje 13-3 Contador ascendente y decrementante (S_CUD) 13-7 Contador ascendente(S_CU) 13-6 Contar en sentido descendente (S_CD) 13-6 Ejemplo de funciones de contaje 13-7 Entrada y evaluacin del valor del contador 13-5 Llamada de funciones de contaje 13-1 Contador ascendente (S_CU) 13-6 Contador ascendente y decrementante (S_CUD) 13-7 Contador decrementante (S_CD) 13-6 Copiar texto 4-10 Cortar texto 4-11 COS 14-10 COUNTER 7-15, 13-1 Crear fuentes S7-SCL con un editor estndar 4-6 Crear o visualizar datos de referencia 4-36 Crear un archivo de control de compilacin 4-21 Crear una fuente SCL 4-4 Cumplimiento de la norma 1-1
D
DATE 7-4 DATE_AND_TIME 7-5, 7-6 DATE_TO_DINT 14-3 Datos de referencia 4-36 Datos de usuario 10-1 globales 10-1 Datos globales 10-1 Sinopsis de los datos globales 10-2 Datos locales 5-17, 8-1 - 8-11 Debugger 1-2 Declaracin 6-11 Declaracin de instancias 8-7 Declaracin de variables estticas 8-2 Definir las propiedades de un objeto 4-6 Definir un entorno de llamada para los bloques 4-31 Definir un entorno de llamada para los puntos de parada 4-34 DELETE 14-15 Depurador 1-2 Descripcin de bloque 6-4 Descripcin del lenguaje 5-1, 15-1 Descripcin del lenguaje formal 15-1 Deshacer la ltima accin 4-9
Designaciones regulacin lxica 15-21 Desigualdad 11-2 Desinstalar la autorizacin de utilizacin 2-5 DI_STRNG 14-19 Diagrama de flujo de ADQUISICION 3-17 Diagrama de flujo de EVALUACIN 3-13 Diagramas sintcticos 5-1, 15-1 DINT 7-3 DINT_TO_DATE 14-3 DINT_TO_DWORD 14-3 DINT_TO_INT 14-3, 14-4 DINT_TO_TIME 14-3 DINT_TO_TOD 14-3 Direccionamiento absoluto 15-30 Direcciones 10-2 Diseo de pgina 4-22 Diseo de programas 3-1 Diseo de programas SCL 3-1 Disquete de autorizacin 2-4, 2-6 DIV 11-8 Divisin 11-2 Divisin de enteros 11-2 Download 4-25 DWORD 7-3 DWORD_TO_BOOL 14-4 DWORD_TO_BYTE 14-4 DWORD_TO_DINT 14-4 DWORD_TO_REAL 1) 14-3 DWORD_TO_WORD 14-4
E
Editar una fuente SCL 4-9 - 4-17 Editor 1-2 Ejemplo "Adquisicin de valores medidos" 3-1 Ejemplo de iniciacin 3-1 Ejemplos 7-19, 12-36 - 12-45, 13-7, 13-20, 14-6 - 14-12 Eliminacin de errores despus de compilar 4-21 Eliminar errores tras la compilacin 4-21 EN 12-46 Entorno de desarrollo 1-2 Entorno de llamada 4-31 Entradas/salidas de periferia 10-2 EQ_STRNG 14-17 Estado operativo 4-39 Estilo y color de letra 4-14, 4-24 Estructura bsica 6-3 Estructura de un bloque de datos (DB) 6-20 Estructura de un bloque de funcin (FB) 6-15 Estructura de un bloque de organizacin (OB) 6-19
ndice alfabtico-3
ndice alfabtico
Estructura de una fuente SCL 6-11 - 6-20 Estructura de una funcin (FC) 6-17 Estructura del rea de declaracin 6-11 EXP 14-9 EXPD 14-9 Expresin booleana 11-12 Expresin simple 11-7 Expresiones 11-2 - 11-14 Expresiones aritmticas 11-9 Expresiones de comparacin 11-13, 11-14
I
I_STRNG 14-19 Identificador 5-6 definicin 5-6 ejemplos 5-6 Reglas 5-6 Identificadores 15-17, 15-18 descripcin del lenguaje formal 15-15, 15-17 Identificadores de contadores 5-10 Identificadores estndar 5-7 Igualdad 11-2 Imagen del proceso de las entradas/salidas 10-2 Imprimir una fuente SCL 4-23 Inicializacin 8-3 Inicio SCL 4-1 INSERT 14-15 Insertar estructuras de control 4-17 Insertar llamadas de bloque 4-16 Insertar plantillas de bloque 4-16 Insertar plantillas de parmetros 4-17 Insertar plantillas para comentarios 4-16 Instalacin 2-6 Instalar la autorizacin despus de la instalacin 2-4 Instalar la autorizacin durante la instalacin 2-4 Instancia global 12-29, 12-36 Instancia local 12-29 - 12-38 Instruccin CASE 12-12, 12-16 Instruccin CONTINUE 12-12, 12-23 Instruccin de seleccin 12-12 Instruccin EXIT 12-12, 12-24 Instruccin FOR 12-12, 12-18, 16-5 Instruccin GOTO 12-25 Instruccin IF 12-12, 12-14 Instruccin REPEAT 12-12, 12-22 Instruccin RETURN 12-12, 12-26 Instruccin WHILE 12-12, 12-21 Instrucciones 12-14 - 12-26 Instrucciones de control 4-17, 12-14 insertar instrucciones de control 4-17 Instruccin CASE 12-16 Instruccin CONTINUE 12-23 Instruccin EXIT 12-24 Instruccin FOR 12-18, 12-19 Instruccin GOTO 12-25 Instruccin IF 12-14 Instruccin REPEAT 12-22 Instruccin WHILE 12-21
F
FC 6-17, 6-18, 12-27, 12-39 Fin de bloque 6-4 FIND 14-16 Formateo del texto fuente conforme a la sintaxis 4-14 Fuente 4-4 - 4-23, 6-13, 6-23 Funcin (FC) 6-17, 12-27, 12-39 Funcin estndar de cadena de bits 14-11 Funcin mdulo 11-2 Funcionamiento de S7-SCL 1-2 Funciones de conversin 14-3 Funciones de conversin de tipos de datos 14-3 Funciones de conversin del tipo de datos 14-3, 14-5 Funciones de conversinClase B 14-3 Funciones de S7-SCL 1-4 Funciones de sistema bloques de funcin de sistema y librera estndar 14-27 Funciones de test de S7-SCL 4-27 - 4-31 Funciones de test de STEP 7 4-36, 4-37 Funciones de test STEP 7 4-36 Funciones estndar 14-5 - 14-11 Funciones estndar matemticas 14-9, 14-10 Funciones estndar numricas 14-9, 14-10 Funciones logartmicas 14-9 Funciones para la seleccin de valores 14-23 Funciones para redondear y truncar 14-5 Funciones trigonomtricas 14-10
G
GE_STRNG 14-17 GT_STRNG 14-18 Guardar una fuente S7-SCL 4-22
ndice alfabtico-4
ndice alfabtico
Instrucciones de salto 12-12 INT 7-3 INT_TO_CHAR 14-4 INT_TO_WORD 14-4 Interface de usuario 4-2 Intrucciones 12-1 Intrucciones de control 6-14 instrucciones 6-14 regulacin sintctica 15-50 Ir a 4-12
Llamada de funciones de contaje 13-1 Llamada de funciones de tiempo 13-9 LN 14-9 LOG 14-9 LT_STRNG 14-18
M
Manejo de una fuente S7-SCL 4-5 Marca OK 8-8 Marcador 4-15 Marcador de texto 4-15 Marcas 10-2 Memoria de usuario 4-40 Metas de salto 9-18 MID 14-14 MOD 11-8, 11-9 Multiplicacin 11-2
J
Juego de caracteres 5-4
L
Labels - metas de salto 9-18 LE_STRNG 14-17 Leer el bfer de diagnstico de la CPU 4-40 Leer los datos de la CPU 4-40 Leer valores de salida 12-35 asignacin de salida en la llamada a FC 12-43 asignacin de salidas en la llamada a FB 12-35 LEFT 14-14 LEN 14-13 Lenguaje de programacin de alto nivel 1-1, 1-4, 1-5 Libertad de formato 5-2, 5-3 Licencia 2-1, 2-2, 2-3 License Manager 2-1, 2-2 Lneas alinear 4-13 Literales 9-6 - 9-17 consule Constantes 15-24 Llamada de bloque 4-16 Llamada de bloques de funcin (FB o SFB) 12-29 asignacin de entrada/salida 12-34 asignacin de parmetros FB 12-31 leer valores de salida 12-35 llamada como instancia global 12-29 llamada como instancia local 12-29 procedimiento 12-29 sintaxis 12-29 Llamada de funciones (FC) 12-39 asignacin de entrada 12-42 asignacin de parmetros 12-41 asignacin de salida y de entrada/salida 12-43 parmetro de entrada EN 12-46 procedimiento 12-39 Sintaxis 12-39 valor de retorno 12-40
N
NE_STRNG 14-17 Negacin 11-2 Nociones bsicas de SCL 5-7 Nombres 5-6 definicin 5-6 descripcin del lenguaje formal 15-15, 15-17 ejemplos 5-6 Reglas 5-6 Nombres de bloques 5-7 Nombres de temporizadores 5-10 Non-Terminal (en diagramas sintcticos) 15-14 Norma DIN EN-61131-3 1-1 NOT 11-10, 11-11 Novedades 1-6 Nmeros 5-11, 5-12 Nmeros de lnea 4-3, 4-24
O
O 11-2 O exclusivo 11-2 OB 6-19 Observacin continua 4-28 Observar 4-28, 4-30, 4-31 OK flag 8-8 OK-Flag 8-1 Opciones de compilador 15-34 Opciones del compilador 6-25 Operaciones 15-9 clasificacin alfabtica 15-7 Operandos 11-3, 11-4 OR 11-10, 11-11
ndice alfabtico-5
ndice alfabtico
P
Palabra doble 7-3 Palabras clave 5-5, 15-10 Palabras reservadas 5-5 Parmetro 7-16 Parmetro actual 8-1 definicin 8-1 Parmetro de entrada 8-1, 12-42, 12-46 asignacin de entrada (FC) 12-42 definicin 8-1 parmetro de entrada EN 12-46 Parmetro de entrada/salida 8-1, 12-34 Parmetro de salida 8-1 Parmetro formal 8-1 Parmetros 6-12, 7-15, 8-9 - 8-13, 12-31 - 12-44 Parmetros actuales asignacin de entrada 12-42 Parmetros de bloque 5-17, 8-12 Parmetros de FB 12-34 Parmetros FB 12-31, 12-35 Parmetros FC 12-41 - 12-43 ParmetrosVariables estticas 8-1 Parntesis 11-2 Paso individual 4-29 Prdida de la autorizacin 2-4 Pilas (stacks) 4-42 Plantillas 4-16 para bloques 4-16 para comentario 4-16 para estructuras de control 4-17 para parmetros 4-17 Plantillas de bloque 4-16 Plantillas de parmetros 4-17 POINTER 7-16, 7-17 Pointer cero 7-18 Posicin en memoria de las variables 8-5 Posicionar el cursor en una lnea determinada 4-12 Posicionar marcadores en el texto fuente 4-15 Potencia 11-2 Preferencias 4-3, 4-19 Principio de bloque 6-4 Procesamiento de bucles 12-12 Procesamiento de un subprograma 6-14 Programa de autorizacin 2-4 Programa de usuario 3-4, 6-1 Programacin estructurada 1-4 Programacin estructurada 3-4, 3-6 Programacin simblica 4-8 Proteccin de bloques 4-7 Puntos de parada 4-32, 4-33, 4-35
R
R_STRNG 14-20 REAL 7-3 REAL_TO_DINT 14-4 REAL_TO_DWORD 2) 14-3 REAL_TO_INT 14-4 Reemplazar texto 4-9 Reglas 5-1, 5-2, 5-3 para el uso de claves de licencia 2-5 Reglas lxicas 15-21 Reglas para el uso de claves de licencia 2-5 Reglas para las fuentes SCL 4-7 Reglas sintcticas 15-35 Regulacin lxica 15-30, 15-33 REPLACE 14-16 Requisitos de instalacin 2-6 Restablecer una accin 4-9 RIGHT 14-14 ROL 14-11 ROR 14-11 ROUND 14-6
S
S_CD 13-6 S_CU 13-6 S_CUD 13-7 S_ODT 13-17 S_ODTS 13-18 S_OFFDT 13-19 S_PEXT 13-16 S_PULSE 13-15 S5TIME 7-4, 13-13 S7-SCL 1-2, 1-4, 4-2 funcionamiento 1-2 funciones 1-4 interface de usuario 4-2 Salto de pgina 4-24 Salto del programa 12-12 Secuencia de los bloques 4-8 Seleccin del temporizador correcto 13-21 Seleccionar texto 4-10 SFC/SFB 14-27 SHL 14-11 SHR 14-11 Signo ms unario 11-2 Signo menos unario 11-2 Simples tipos de datos 7-1, 7-2 SIN 14-10 Sistema de reloj de la CPU 4-41 SQR 14-9 SQRT 14-9 STRING 7-7, 7-8, 9-9 - 9-12, 14-13 - 14-20
ndice alfabtico-6
ndice alfabtico
STRING_TO_CHAR 14-4 STRNG_DI 14-19 STRNG_I 14-19 STRNG_R 14-20 STRUCT 7-11, 7-12 Sustraccin 11-2
T
TAN 14-10 temporizadores 13-9 Temporizadores 13-9 - 13-20 Arrancar el temporizador como retardo a la conexin con memoria (S_ODTS) 13-18 Arrancar temporizador como impulso prolongado (S_PEXT) 13-16 Arrancar temporizador como retardo a la conexin (S_ODT) 13-17 Arrancar temporizador como retardo a la desconexin (S_OFFDT) 13-19 asignacin de parmetros en funciones de tiempo 13-11 ejemplos 13-20 Entrada y evaluacin del valor de temporizacin 13-13 Iniciar temporizacin como impulso (S_PULSE) 13-15 llamada de funciones de tiempo 13-9 Terminales de las reglas lxicas (diagramas sintcticos) 15-5 Test con puntos de parada 4-29 Test paso a paso 4-29 Tiempo de ciclo 4-41 TIME 7-4 TIME_OF_DAY 7-4 TIME_TO_DINT 14-4 Timer 13-9, 13-11, 13-15, 13-20 TIMER 7-15 Tipo de datos ANY 7-18 Tipo de datos ARRAY 7-9 Tipo de datos bit 7-3 Tipo de datos BLOCK 7-16 Tipo de datos COUNTER 7-15 Tipo de datos DATE_AND_TIME 7-5 Tipo de datos Parmetro 7-16 Tipo de datos POINTER 7-16 Tipo de datos STRING 7-7 Tipo de datos STRUCT 7-11 Tipo de datos TIMER 7-15 Tipo de datos UDT 7-13 Tipos de caracteres 7-3 Tipos de datos 7-1 - 7-13 de usuario(UDT) 6-23 definidos por el usuario (UDT) 7-13
descripcin 7-1 Tipos de datos compuestos 7-2 - 7-7 Tipos de datos de usuario (UDT) 6-23, 12-3 Tipos de datos definidos por el usuario (UDT) 7-13 Tipos de datos numricos 7-3 Tipos de datos para parmetros 7-15, 7-16 Tipos de datos simples 7-1 - 7-4 Tipos de licencia 2-1 Enterprise License 2-1 Floating License 2-3 Licencia de actualizacin 2-3 Rental License 2-3 Single License 2-3 Trial License 2-3 TOD_TO_DINT 14-4 TRUNC 14-6
U
UDT 7-13, 7-14 definicin 6-23, 6-24 elementos 6-23 llamada 6-23 Uso de multiinstancias 8-7 Uso de una fuente S7-SCL 4-22 Uso de una fuente SCL 4-5, 4-6, 4-22, 4-23
V
Valor de retorno (FC) 12-40 Valor de temporizacin 13-13, 13-14 Valor return 12-40 consulte valor de retorno 12-40 Valores iniciales 8-3 Valores lmite para instrucciones FOR 16-5 VAR 8-9 VAR_IN_OUT 8-9 VAR_INPUT 8-9 VAR_OUTPUT 8-9 VAR_TEMP 8-9 Variablees temporales 5-17 Variables declaracin de instancias 8-7 inicializacin 8-3, 8-4 observar y forzar 4-37 sinopsis de los secciones de declaracin 8-9 sintaxis general de una declaracin de variables o de parmetros 8-2 variables estticas 5-17, 8-1 variables locales y parmetros de bloque 8-1 variables temporales 5-17, 8-1 Variables ampliadas 11-3 Variables estticas 5-17, 8-2, 8-7, 8-10
ndice alfabtico-7
ndice alfabtico
Variables temporales 8-1, 8-11 Vistas sobre reas de variables 8-5 Visualizar el sistema de reloj de la CPU 4-41 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 Visualizar los datos de comunicacin de la CPU 4-42 Visualizar y ajustar la fecha y la hora de la CPU 4-39 Visualizar y cambiar el estado operativo de la CPU 4-39 Visualizar y comprimir la memoria de usuario de la CPU 4-40
X
XOR 11-10
Y
Y 11-2
Z
Zonas de memoria de la CPU 5-9
W
WORD 7-3 WORD_TO_BLOCK_DB 14-4
ndice alfabtico-8