Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SCL S
SCL S
Prolgo, ndice
SIMATIC
Instalacin
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
Manual
Datos globales
10
Expresiones, operaciones y
operandos
11
Instrucciones
12
Contadores y temporizadores
13
Funciones estndar
de S7-SCL
14
15
Consejos y trucos
16
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
Advertencia
Precaucin
Significa que, si no se adoptan las medidas preventivas adecuadas se producir la muerte, o bien
lesiones corporales graves.
Significa que, si no se adoptan las medidas preventivas adecuadas puede producirse la muerte o
bien lesiones corporales graves.
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
Exencin de responsabilidad
Siemens AG
Automation and Drives
Postfach 4848, 90327 Nrnberg, Alemania
Siemens AG 2005
Sujeto a cambios sin previo aviso.
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
Finalidad
Nmero de referencia
Informacin bsica y de
El manual no se puede
adquirir por separado.
ste se encuentra
disponible en el CD del
producto, en la Manual
Collection y en Internet.
6ES7810-4CA07-8DW0
6ES7810-4CA07-8DW1
Configurar el hardware y la
comunicacin con STEP 7 V5.3
Manuales KOP/FUP/AWL
para S7-300/400
Funciones estndar y de
sistema para S7-300/400
Ayudas en pantalla
Finalidad
Nmero de referencia
Informacin bsica y de
Componente del
Componente del
Informacin de referencia
contextual
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/
Internet:
http://www.sitrain.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:
vi
ndice
1
Instalacin .................................................................................................................................2-1
2.1
2.1.1
2.1.2
2.1.3
2.2
2.2.1
2.2.2
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
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
ix
ndice
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
11
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
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
14
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
xii
ndice
14.5
14.5.1
14.6
14.6.1
14.6.2
15
16
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
Consejos y trucos...................................................................................................................16-1
Glosario
ndice alfabtico
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
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.
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
Descripcin
Single License
Floating License
Trial License
Rental License
Upgrade License
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.
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.
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.
2-5
Instalacin
2.2
Instalacin
2.2.1
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
Clculos
49
31
15
225
15
31
961
63
3969
127
11
255
16
16129
*
(* = Desbordamiento)
Adquirir valores
medidos
3-2
Clasificar valores
medidos
Calcular resultados
Salidas ajustables
En el mdulo de salida slo se puede mostrar un valor. Por eso se programarn las
siguientes opciones:
Seleccin de un elemento de una lista
Seleccin entre valor medido, raz y cuadrado
La seleccin del valor mostrado se realiza de la manera siguiente:
Con tres interruptores se ajusta una codificacin que se acepta al detectarse un flanco en
el cuarto interruptor, el interruptor de codificacin. A partir de aqu se calcula la direccin
con la que se direccionar la salida.
Con la misma direccin se ponen a disposicin tres valores para la salida: valor medido,
raz y cuadrado. Para seleccionar uno de estos valores, hay que programar dos
conmutadores.
Introducir datos
Interruptor de codificacin
Raz o
cuadrado
Valor medido
o resultado
Valor medido
Raz
1
3
Direccionar
salida
7
15
31
Conmutador
63
Seleccionar
salida
127
255
Cuadrado
49
225
961
3969
11
16129
*
16
Direccin
Direccin
Valores
clasificados
Resultados
(* = 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
FB
Bloques
de STEP 7
FC
DB
UDT
3-4
.
FB22
.
.
.
FC2
.
.
.
OB1
.
Fuente SCL
Fuente
SCL
para
FC2
Fuente
SCL
para
FB22
FB22
FC2
OB1
DB de
instancia
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
ADQUISICION_DATOS
Bloque de datos (DB)
3-6
ADQUISICION
Bloque de funcin (FB)
Adquirir valo
res medidos
Direccionar y
seleccionar
salida
VALORACION
Bloque de funcin (FB)
Clasificar
valores
medidos
RAIZ Funciones
y CUADRADO
Calcular
resultados
Raz,
cuadrado
Guardar
datos
Flujo del programa
Flujo de datos
Nombre de bloque
Los programas de usuario slo se pueden iniciar desde un OB. Dado que los
valores medidos se adquieren de manera cclica, se requiere un OB para
llamadas cclicas (OB1). Una parte del procesamiento - entrada de datos y
salida de datos - se programa en el OB.
OB "Ciclo"
FB "ADQUISICION"
FB "EVALUACION"
FC "SQRT" (raz) y
FC "CUADRADO"
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
Significado
Declaracin con
Parmetros de entrada
VAR_INPUT
Parmetros de salida
VAR_OUTPUT
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
Tipo de
datos
Tipo de
declaracin
Descripcin
intr_val_med
INT
VAR_INPUT
Valor medido
nue_val
BOOL
VAR_INPUT
nue_clas
BOOL
VAR_INPUT
sel_funcion
BOOL
VAR_INPUT
seleccion
WORD
VAR_INPUT
nue_sel
BOOL
VAR_INPUT
sal_resultado
DWORD
VAR_OUTPUT
sal_v_med
DWORD
VAR_OUTPUT
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
Tipo de datos
Tipo de
declaracin
Descripcin
bufer_clasif
ARRAY[..] OF
REAL
VAR_IN_OUT
bufer_calculo
ARRAY[..]OF
STRUCT
VAR_OUTPUT
SQRT y cuadrado
Las funciones se llaman desde EVALUACION. Necesitan un valor de entrada y proporcionan
un valor de funcin como resultado.
Nombre
Tipo de datos
Tipo de
declaracin
Valor
REAL
VAR_INPUT
SQRT
REAL
Valor de funcin
Valor
INT
VAR_INPUT
CUADRADO
INT
Valor de funcin
Descripcin
3-9
3.6
Byte 4
Byte 1
Byte 5
Sistema de automatizacin
Mdulo de
entrada digital
Mdulo de
entrada
Mdulo de
salida digital
Byte 0
E 0.3
E 0.4
0
1
2
3
4
5
6
7
0a7
Byte 1
Mdulo de
Byte 4
salida
0
1
0a7
0a7
2
3
4
5
6
7
0
1
2
3
4
5
Byte 5
3-10
6
7
3.7
CUADRADO FC
Llama a
EVALUAR FB
Llama a
REGISTRAR FB
Llama a
CICLO OB
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
Inicio
Inicio de la
instruccin REPEAT
Cambio := FALSE
I := LIMITE
I significa ndice
Inicio de la
instruccin FOR
No
I >= 1 ?
S
No
CAMBIO = TRUE
I := I-1
Fin de la
instruccin FOR
Fin de la
instruccin REPEAT
Cambiar ?
TRUE
FALSE
I := 0
Inicio de la
instruccin FOR
I
<= LIMITE ?
No
RAIZ
CUADRADO
Fin de la
instruccin FOR
I := I+1
Fin
3-13
Parmetros de entrada/salida:
Parmetros de salida:
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
bufer_clasif
valores_medidos
bufer_calculo
EVALUACION
Este interface muestra el ncleo del intercambio de datos para procesar los valores
medidos. Los valores se guardan en el bloque de datos de instancia ADQUISICION_DATOS
ya que en el FB ADQUISICION invocante se ha creado una instancia local para el FB
EVALUACION.
3-15
3-16
3.11
Cambio
valor nuevo
?
S
Leer valor medido en el bfer de
circulacin, recalcular el puntero
No
Cambio
clasificacin
nueva?
No
VALORACION
Cambio
cdigo nuevo
?
No
Seleccin de
funcin?
FALSE
Cargar resultado de
RAIZ
TRUE
Cargar resultado de
CUADRADO
Cargar:
escribir elementos de la lista en los parme
tros de salida junto con la direccin de salida,
Fin
3-17
Parmetro de entrada:
Parmetros de salida:
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.
Tipo de datos
Pre-ajuste
Descripcin
valores_medidos
ARRAY [..]
OF INT
8(0)
bufer_resultado
ARRAY[..]
OF STRUCT
puntero
INT
ant_val
BOOL
FALSE
ant_clas
BOOL
FALSE
ant_sel
BOOL
FALSE
direccion
INT
valorar_instancia
Instancia local
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".
Interruptor
para valor de
codificacin
Interruptor
de codifi
cacin
Interruptor
del mdulo
Palabra de
la memoria
Despus de SHR
12 posiciones
Despus de AND,
mscara 0007
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
8
9
10
11
12
13
14
15
8
9
10
11
12
13
14
15
Byte1
EW0
"direccin"
Byte0
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
Accin
Resultado
3-25
Paso
8a
8b
Accin
Resultado
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
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
Canal 3
Canal 4
Canal 5
Canal 6
Canal 7
Explicacin
3-26
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
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
Significado
Tipo de letra
Significado
Sangrar automticamente
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
Bloque
(p.ej.: FB1, OB1)
Fuentes
Fuente
(p.ej.: Fuente SCL)
Smbolos
un proyecto,
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
el proyecto deseado,
el programa S7 deseado y
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:
-
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:
-
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:
-
Nota
4.6.7
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.
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
4-13
Manejo de S7-SCL
Ocre
Ejemplo
Palabras clave
ORGANIZATION_BLOCK
INT
Identificadores predeterminados
ENO
Funciones estndar
BOOL_TO_WORD
Operaciones
NOT
Rosa
Constantes
TRUE
Verde azulado
Comentario
//... (*...*)
Violeta
"Motor"
Negro
Texto normal
Variables
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.
Con esta opcin puede determinar si desea crear un cdigo ejecutable o no.
El proceso de compilacin sin esta opcin sirve simplemente para una prueba
de sintaxis.
Esta opcin permite realizar una pasada del test con el depurador despus
de haber compilado el programa y haberlo cargado en la CPU. La memoria
necesaria del programa y los tiempos de ejecucin en el PLC se prolongan
con esta opcin.
Activar OK flag
Posibilidad de anidar comentarios Seleccione esta opcin si desea anidar varios comentarios en su fuente
S7-SCL.
Nmero mx. de caracteres
4-19
Manejo de S7-SCL
Mostrar advertencias
Considerar atributo de
sistema 'S7_server'
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.
4-20
Manejo de S7-SCL
4.7.4
4.7.5
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.
4-22
Manejo de S7-SCL
4.8.3
4-23
Manejo de S7-SCL
4.8.4
Ejemplo
Texto normal
Palabras clave
ORGANIZATION_BLOCK
INT
Identificador predeterminado
ENO
BOOL_TO_WORD
Operaciones
NOT
Constantes
TRUE
Bloque de comentario
(* *)
Lnea de comentario
//...
"Motor"
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
Explicacin
Modo Test
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.
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
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
Posicione el cursor en aquella lnea del texto fuente que contiene la primera
instruccin del rea que va a someterse a test. S7-SCL seleccionar entonces un
rea de observacin lo mayor posible a partir de la posicin del cursor.
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
Opcin posible
Ruta de llamada
4-31
Manejo de S7-SCL
4-32
elija el comando de men Test > Continuar o haga clic en el botn "Continuar" de
la barra de herramientas.
La CPU pasar al estado operativo RUN. Cuando se alcance el siguiente punto de
parada activo se parar visualizando el punto de parada en la parte izquierda de la
ventana.
elija el comando de men Test > Ejecutar instruccin siguiente o haga clic en el
botn "Ejecutar instruccin siguiente" de la barra de herramientas.
La CPU pasa a estado operativo RUN. Despus de ejecutar la instruccin
seleccionada se vuelve a parar, y en la mitad derecha de la ventana se visualiza el
contenido de las variables recin procesadas.
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.
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.
Activar o desactivar los puntos de parada que usted elija marcndolos con una
marca de verificacin.
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
Opcin posible
Ruta de llamada
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
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
Opcin
Bloque 4
Bloque 5
Iteracin
Alternativa
5-1
Regla lxica
IDENTIFICADOR
Letra
Letra
Subrayado
Letra
Subrayado
Cifra
Cifra
5-2
Regla sintctica
En las reglas sintcticas existe libertad de formato.
Variable simple
:=
Constante
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
END_CASE
ORGANIZATION_BLOCK
ANY
END_CONST
POINTER
ARRAY
END_DATA_BLOCK
PROGRAM
AT
END_FOR
REAL
BEGIN
END_FUNCTION
REPEAT
BLOCK_DB
END_FUNCTION_BLOCK
RETURN
BLOCK_FB
END_IF
S5TIME
BLOCK_FC
END_LABEL
STRING
BLOCK_SDB
END_TYPE
STRUCT
BLOCK_SFB
END_ORGANIZATION_BLOCK
THEN
BLOCK_SFC
END_REPEAT
TIME
BOOL
END_STRUCT
TIMER
BY
END_VAR
TIME_OF_DAY
BYTE
END_WHILE
TO
CASE
ENO
TOD
CHAR
EXIT
TRUE
CONST
FALSE
TYPE
CONTINUE
FOR
VAR
COUNTER
FUNCTION
VAR_TEMP
DATA_BLOCK
FUNCTION_BLOCK
UNTIL
DATE
GOTO
VAR_INPUT
DATE_AND_TIME
IF
VAR_IN_OUT
DINT
INT
VAR_OUTPUT
DIV
LABEL
VOID
DO
MOD
WHILE
DT
NIL
WORD
DWORD
NOT
XOR
ELSE
OF
ELSIF
OK
EN
OR
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
Letra
_
Subrayado
Letra
Subrayado
Cifra
Cifra
Ejemplos
Los nombres siguientes son ejemplos de identificadores vlidos.
X
y12
Suma
Temperatura
Nombre
Superficie
Regulador
Tabla
Los nombres siguientes no son identificadores vlidos por las razones indicadas.
4ter
Array
Valor S
Nota
5-6
Recuerde que el nombre no se asigna por medio de palabras clave o identificadores estndar.
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)
Nemotcnica
(IEC)
Significado
DBx
DBx
FBx
FBx
FCx
FCx
Funcin (Function)
OBx
OBx
SDBx
SDBx
SFCx
SFCx
SFBx
SFBx
Tx
Tx
Temporizador (Timer)
UDTx
UDTx
Zx
Cx
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
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)
Nemotcnica direccionado
(IEC)
Tipo de dato
Ax.y
Qx.y
Bit
ABx
QBx
Byte
ADx
QDx
Doble palabra
AWx
QWx
Palabra
AXx.y
QXx.y
Bit
Dx.y
Dx.y
Bloque de datos
Bit
DBx
DBx
Bloque de datos
Byte
DDx
DDx
Bloque de datos
Doble palabra
DWx
DWx
Bloque de datos
Palabra
DXx.y
DXx.y
Bloque de datos
Bit
Ex.y
Ix.y
EBx
IBx
Byte
EDx
IDx
Doble palabra
EWx
IWx
EXx.y
IXx.y
Mx.y
Mx.y
Marcas
Bit
MBx.y
MBx.y
Marcas
Byte
MDx
MDx
Marcas
Doble palabra
MWx.y
MWx
Marcas
Palabra
MXx
MXx
Marcas
Bit
PABx
PQBx
Byte
PADx
PQDx
Doble palabra
PAWx
PQWx
Palabra
PEBx
PIBx
Byte
PEDx
PIDx
Doble palabra
PEWx
PIWx
Palabra
Ejemplo
E1.0 MW10 PAW5 DB20.DW3
5-9
5.8
Identificadores de temporizadores
Reglas
S7-SCL ofrece varias posibilidades para indicar un temporizador. Como nmero del
temporizador puede introducir un nmero decimal entero.
Nmero
T
En nemotcnica
alemana e inglesa
IDENTIFICADOR
Smbolo
5.9
Identificadores de contadores
Reglas
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
-5280
+1
-1
600_00
-32_211
Los siguientes nmeros enteros son errneos por las razones indicadas:
123,456
36.
10
20
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
1.0
50000.0
-0.000743
-0.2
827.602
12.3
-315.0066
Los siguientes nmeros reales son errneos por las razones que se indican:
1.
.3333
3.0E+10
3.0E10
3e+10
3E10
0.3E+11
0.3e11
30.0E+9
30e9
Los siguientes nmeros reales son errneos por las razones que se indican:
5-12
3.E+10
8e2.3
.333e-3
30
E10
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
Despus de compilar
'SIGN$'RED$''
SEAL 'ROJO'
'50.0$$'
50.0$
'VAL$P'
'REG-$L'
REG-Cambio de lnea
'REGL$R
'STEP$T'
ETAPA Tabulador
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:
"
5-14
Carcter
imprimible
"
5.13
Bloque de comentario
Reglas
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
Lnea de comentario
Reglas
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
CR
Retorno de carro (carriage return)
Ejemplo
VAR
INTERRUPTOR : INT ; // Lnea de comentario
END_VAR
Nota
5-16
En las lneas de comentario las parejas de caracteres "(*" y "*)" carecen de significado.
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
Significado
Variables estticas
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.
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
UDT
llama a
DB
llama a
DB de UDT
llama a
FB3
asignado a
OB1
6-2
6.3
6-3
6.4
6-4
Nombre
Bloque de funcin
FB
FUNCTION_BLOCK fb_name
...
END_FUNCTION_BLOCK
Funcin
FC
Bloque de organizacin
OB
ORGANIZATION_BLOCK ob_name
...
END_ORGANIZATION_BLOCK
Bloque de datos
DB
DATA_BLOCK db_name
...
END_DATA_BLOCK
UDT
TYPE udt_name
...
END_TYPE
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
Significado
Ejemplos
TITLE='caracter_imprimible'
TITLE='CLASIFICAR'
VERSION :
'secuencia_de_numeros_decimales.
secuencia_de_numeros_decimales'
KNOW_HOW_PROTECT
AUTHOR :
NAME:
FAMILY :
6-6
NAME : PID
NAME : 'A&D AS'
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).
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:
7WXOR
&DUFWHU
LPSULPLEOH
7,7/(
9HUVLQ
9HUVLRQ
6(&8(1&,$'(
&,)5$6'(&,0
6(&8(1&,$'(
&,)5$6'(&,0
3URWHFFLQGHEORTXH
.12:B+2:B3527(&7
0D[FDUFWHUHV
$XWKRU
$87+25
,'(17,),&$'25
&DUFWHU
LPSULPLEOH
LPSULPDEOH
1RPH
0D[FDUFWHUHV
1$0(
,'(17,),&$'25
&DUFWHU
LPSULPLEOH
LPSULPDEOH
)DPLOLDGHEORTXHV
)$0,/<
0D[FDUFWHUHV
,'(17,),&$'25
&DUFWHU
LPSULPLEOH
LPSULPDEOH
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
IDENTIFICADOR
:=
'
carcter
imprimible
'
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
Sintaxis
FB
FC
OB
Constantes:
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
X *)
VAR_INPUT;
lista de declaracin
END_VAR
VAR_OUTPUT;
lista de declaracin
END_VAR
VAR_IN_OUT;
lista de declaracin
END_VAR
Metas de salto
Variables temporales
Variables estticas
Parmetros de entrada
Parmetros de salida
Parmetros de
entrada/salida
DB
UDT
X **)
X **)
*)
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
IDENTIFICADOR
:=
'
carcter
imprimible
'
Ejemplo
VAR_INPUT
in1
{S7_server:='alarm_archiv';
S7_a_type:='ar_send'}: DWORD ;
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".
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
IDENTIFICADOR
Instruccin
Meta de salto
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
Identificador
de FB
rea de
declaracin de FB
FUNCTION_BLOCK
END_PROGRAM
BEGIN
rea de instrucciones
END_FUNCTION_BLOCK
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
FUNCTION
Identificador
de FC
rea de declaracin de FC
BEGIN
rea de instrucciones
Especificacin
del tipo de datos
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
BEGIN
Area de instrucciones
Identificacin
de DB
Tabla de declaracin de OB
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
DATA_BLOCK
BEGIN
Identificacin
de DB
Tabla de asignacin de DB
Tabla de declaracin 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
Ejemplo:
DATA_BLOCK DB20
STRUCT
// rea de declaracin
VALOR:ARRAY [1..100] OF INT;
END_STRUCT
BEGIN
:
END_DATA_BLOCK
Variable simple
:=
Constante*
* en notacin AWL
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
Estructura
especificacin
del tipo de datos
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
6-24
:=
2.7 ;
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
[Scl_]OverwriteBlocks
'y[es]' o 'n[o]'
Sobrescribir bloques
[Scl_]GenerateReferenceData
'y[es]' o 'n[o]'
[Scl_]S7ServerActive
'y[es]' o 'n[o]'
Considerar atributo de
sistema "S7_server"
[Scl_]CreateObjectCode
'y[es]' o 'n[o]'
[Scl_]OptimizeObjectCode
'y[es]' o 'n[o]'
[Scl_]MonitorArrayLimits
'y[es]' o 'n[o]'
[Scl_]CreateDebugInfo
'y[es]' o 'n[o]'
[Scl_]SetOKFlag
'y[es]' o 'n[o]'
Activar OK flag
[Scl_]SetMaximumStringLength
'1 .. 254'
Ejemplo
{SCL_OverwriteBlocks := 'y'
; SCL_CreateDebugInfo
{SetOKFlag := 'y'
; OptimizeObjectCode
:= 'y'}
6-26
:= 'y'}
Tipos de datos
7.1
Tipos de datos
Significado
BOOL
BYTE
WORD
DWORD
Tipo de datos
Carcter
CHAR
Datos numricos
INT
DINT
REAL
Tiempos
TIME
DATE
TIME_OF_DAY
S5TIME
7-1
Tipos de datos
Significado
DATE_AND_TIME
Define un rea de 64 bits (8 bytes). Este tipo de datos memoriza (en formato decimal
codificado en binario) la fecha y hora del da, y est predefinido en S7-SCL.
DT
STRING
Define un rea para una secuencia de caracteres de 254 caracteres como mximo (tipo
de datos CHAR).
ARRAY
STRUCT
Significado
TIMER
COUNTER
BLOQUE_xx
ANY
POINTER
7-2
Tipos de datos
7.2
7.2.1
Tipo
Palabra clave
Bit
BOOL
Byte
Disposicin
Margen permitido
bit 1
0, 1 o FALSE, TRUE
BYTE
8 bits
Palabra
WORD
16 bits
comienza en un lmite de
palabra
Doble palabra
DWORD
32
comienza en un lmite de
palabra
7.2.2
Ancho en
bits
Tipo
Palabra clave
Ancho en
bits
Margen permitido
Carcter
CHAR
7.2.3
Tipo
Palabra
clave
Ancho en Disposicin
bits
Entero
(nmero entero)
INT
16
comienza en el
-32_768 hasta 32_767
lmite de una palabra
Doble entero
DINT
32
comienza en el
-2_147_483_648 hasta
lmite de una palabra 2_147_483_647
Nmero en coma
flotante
(Nmero en coma
flotante IEEE)
REAL
32
comienza en un el
-3.402822E+38 hasta -1.175495E-38
lmite de una palabra +/- 0
1.175495E-38 hasta 3.402822E+38
Margen permitido
7-3
Tipos de datos
7.2.4
Tipo
Palabra clave
Ancho en Disposicin
bits
Tiempo S5
S5TIME
16
S5T
Margen permitido
Duracin:
Tiempo IEC en
intervalos
de 1 ms.
TIME
T
32
Fecha:
Fecha IEC en
intervalos de 1 da.
DATE
D
16
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
Indicacin de hora
DT#
La sintaxis exacta para indicar la fecha y la hora est descrita en el apartado "Declaracin
de constantes".
Margen permitido
Tipo
Palabra clave
Ancho en
bits
Disposicin
Margen
Fecha y hora
DATE_AND_TIME
DT
64
Comienza y
acaba en el
lmite de una
palabra
DT#1990-01-01:0:0:0.0
hasta
DT#2089-12-31:23:59:59.999
7-5
Tipos de datos
Contenido
Margen
Ao
Mes
01 ... 12
Da
1 ... 31
Hora
0 ... 23
Minuto
0 ... 59
Segundo
0 ... 59
2 MSD (most
significant decade)
de ms
00 ... 99
7 (4 MSB)
LSD (least
significant decade)
de ms
0 ... 9
7 (4 LSB)
Da de la semana
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
Expresin
simple
Dimensin de la cadena
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.
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
ARRAY
Especificacin de ndice
Indice
..
Indice
,
Mx. 6 dimensiones
OF
Especificacin
de tipo de datos
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,
10362,
385,
-54,
736,
-83,
77,
2,
60,
-37, -7,
103 ;
Regulador2 : ARRAY[1..10] OF REAL ;
END_VAR
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
Declaracin
de componentes
STRUCT
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
IDENTIFICADOR
Especificacin
de tipo de datos
Inicializacin
de tipo de datos
Nombre del
componente
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
TYPE
Identificacin
de UDT
Estructura
especificacin
del tipo de datos
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
7-14
:=
2.7 ;
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:
COUNTER
2 bytes
BLOCK_FB
BLOCK_FC
BLOCK_DB
BLOCK_SDB
2 bytes
p.ej. T1
p.ej. Z10
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.
ANY
10 bytes
Se utiliza cuando como tipo de datos del parmetro actual debe permitirse
cualquier tipo de datos, a excepcin de ANY.
POINTER
6 bytes
7.5.1
p.ej. M50.0
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);
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
Variables temporales
Significado
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
8-1
8.2
Declaracin de variables
IDENTIFICADOR
1)
AT
Variable
simple
Especificacin
de tipo de
datos
Inicializacin 2)
de tipo de
datos
Nombre de variable,
nombre de parmetro
o
nombre de
componente
,
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
INICIALIZACION
CONSTANTE
LISTA DE INICIAL.
DE ARRAY
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.
8-3
LISTA DE REPETITION
DE CONSTANTES
SEQUENCIA
DE DECIMALES
CONSTANTE
FACTOR DE REPETICION
LISTE DE REPETIT.
DE CONSTANTE
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
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:
FB
simple
compuesto
VAR_IN_OUT
ANY/POINTER
x (1)
x (1)
compuesto
ANY/POINTER
FC
ANY/POINTER
Declaracin de una vista en simple
VAR_IN, VAR_OUT o
compuesto
VAR_IN_OUT
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
IDENTIFICADOR
Nombre de instancia local
:
Identificacin
de SFB
Ejemplo
Asignacion1
: FB10;
Asignacion2,Asignacion3,Asignacion4
Motor1
: Motor ;
: FB100;
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
Secciones de declaracin
8.8.1
Datos
Sintaxis
FB
FC
Variables como:
variable esttica
VAR
...
END_VAR
X *)
VAR_TEMP
...
END_VAR
VAR_INPUT
...
END_VAR
parmetro de salida
VAR_OUTPUT
...
END_VAR
parmetro de entrada/salida
VAR_IN_OUT
...
END_VAR
Variable temporal
OB
*) 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.
VAR
Declaracin
de instancia
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
VAR_OUTPUT
Declaracin
de variables
END_VAR
VAR_IN_OUT
La inicializacin slo es posible para VAR_INPUT y VAR_OUTPUT.
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 caracteres
-
Constantes CHAR
Constantes STRING
Indicacin de tiempos
-
Constantes de fecha
Constantes de tiempo
Constantes de hora
9-1
9.1.1
Sintaxis
Bloque de constantes
CONST
IDENTIFICADOR
:=
Expresin
simple
END_CONST
Nombre de constante
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
Notacin tipificada
BOOL
BOOL#1
Bool#false
bool#0
BOOL#TRUE
BYTE
BYTE#0
Byte#''
B#2#101
b#16#f
WORD
WORD#32768 word#16#f
W#2#1001_0100 WORD#8#177777
DWORD
DWORD#16#f000_0000 dword#32768
DW#2#1111_0000_1111_0000
DWord#8#37777777777
INT
INT#16#3f_ff
int#-32768
Int#2#1111_0000 inT#8#77777
DINT
DINT#16#3fff_ffff
DInt#2#1111_0000
REAL
REAL#1
real#2e4
real#1.5
real#3.1
CHAR
CHAR#A
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
Descripcin
Ejemplos en S7-SCL
BOOL
1 bit
FALSE
TRUE
BOOL#0
BOOL#1
BOOL#FALSE
BOOL#TRUE
BYTE
Nmero
hexadecimal de
8 bits
B#16#00
B#16#FF
BYTE#0
B#2#101
Byte#''
b#16#f
CHAR
8 bits
(1 carcter ASCII)
'A'
CHAR#49
STRING
254 caracteres
ASCII como
mximo
'direccin'
WORD
Nmero
hexadecimal de
16 bits
W#16#0000
W#16#FFFF
word#16#f
Nmero octal de
16 bits
WORD#8#177777
8#177777
Nmero binario de
16 bits
W#2#1001_0100
WORD#32768
9-4
Ejemplos en AWL, si
difieren
Tipo de datos
Descripcin
Ejemplos en S7-SCL
DWORD
Nmero
hexadecimal de
32 bits
DW#16#0000_0000
DW#16#FFFF_FFFF
Nmero octal de
32 bits
Dword#8#37777777777
8#37777777777
Nmero binario de
32 bits
DW#2#1111_0000_1111_0000
dword#32768
16 bits
Nmero en coma
fija
-32768
+32767
INT#16#3f_ff
int#-32768
Int#2#1111_0000
inT#8#77777
32 bits
Nmero en coma
fija
-2147483648
+2147483647
DINT#16#3fff_ffff
dint#-65000
Dint#2#1111_0000
dinT#8#17777777777
Nmero en coma
flotante de 32 bits
Representacin decimal
123.4567
REAL#1
real#1.5
INT
DINT
REAL
Ejemplos en AWL, si
difieren
L#2147483648
L#+21474836
47
Representacin exponencial
real#2e4
+1.234567E+02
S5TIME
16 bits
Valor de tiempo en
formato SIMATIC
T#0ms
TIME#2h46m30s
T#0.0s
TIME#24.855134d
TIME
32 bits
Valor de tiempo en
formato IEC
-T#24d20h31m23s647ms
TIME#24d20h31m23s647ms
T#0.0s
TIME#24.855134d
DATE
De16 bits
Valor de la fecha
D#1990-01-01
DATE#2168-12-31
TIME_OF_DAY
De 32 bits
Hora
TOD#00:00:00
TIME_OF_DAY#23:59:59.999
S5T#0ms
S5TIME#2h46m30s
DT#1995-01-01-12:12:12.2
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#
WORD#
DWORD#
(1) slo en el tipo de datos BYTE
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#
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
//
//
//
//
//
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
SECUENCIA DE
CIFRAS DECIMALES
REAL#
-
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
Exponente
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.
10
3.0E10
0.3e11
3e+10
30.0E+9
3E10
30e9
Ejemplos
NUMERO4:= -3.4 ;
NUMERO5:= 4e2 ;
NUMERO6:= real#1.5;
9-8
9.1.3.4
Sintaxis
CONSTANTE CHAR
CHAR#
'
Carcter
'
SECUENCIA DE
CIFRAS DECIMAL
Ejemplo
Caracter_1 := 'B';
Caracter_2 := char#43;
Caracter_3 := char#'B';
9-9
6PERORGHHVFDSH
&KDUFWHUGHVXVWLWXFLQ
RX
&KDUFWHUGHFRQWURO
3/571
&LIUD
KH[DGHFLPDO
&LIUD
KH[DGHFLPDO
5HSUHVHQWDFLQGHUHVHUYHHQFGLJRKH[DGHFLPDO
3
/
5
7
1
6DOWRGHSJLQD
6DOWRGHOQHD
5HWRUQRGHFDUUR
7DEXODGRU
/QHDQXHYD
QRSHUPLWLGR
9-10
:= '$41' ;
:='$20';
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
'
Interrupcin
de cadena
Carcter
Carcter
'
6PERORGHHVFDSH
&KDUFWHU
LPSULPLEOH
&KDUFWHUGHVXVWLWXFLQ
RX
&KDUFWHUGHFRQWURO
3/571
&LIUD
KH[DGHFLPDO
&LIUD
KH[DGHFLPDO
5HSUHVHQWDFLQGHUHVHUYHHQFGLJRKH[DGHFLPDO
3
/
5
7
1
6DOWRGHSJLQD
6DOWRGHOQHD
5HWRUQRGHFDUUR
7DEXODGRU
/QHDQXHYD
QRSHUPLWLGR
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
Signo de
formateado
$>
Blanco (blank),
Salto de lnea (linefeed)
Retorno de carro (carriage return)
Salto de pgina (formfeed, page)
Tabulador horizontal (tabulator)
$<
Comentario
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.
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
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
Segundos
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
MS
Milisegundos
Minutos
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
SECUENCIA DE
CIFRAS DECIMALES
Das
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
Horas
SECUENCIA DE
CIFRAS DECIMALES
Minutos
CIFRAS DECIMALES
Segundos
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.
SECUENCIA DE
CIFRAS DECIMALES
Indicacin de horas
SECUENCIA DE
CIFRAS DECIMALES
Indicacin de segundos
Indicacin de minutos
SECUENCIA DE
CIFRAS DECIMALES
Indicacin de milisegundos
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 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 segundos
SECUENCIA DE
CIFRAS DECIMALES
Indicacin de minutos
SECUENCIA DE
CIFRAS DECIMALES
Indicacin de milisegundos
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
LABEL
IDENTIFICADOR
END_LABEL
Meta de salto
,
Ejemplo
LABEL
META1, META2, META3;
END_LABEL
9-18
10
Datos globales
10.1
absoluto
simblico
indizado
estructurado
No
10-1
Datos globales
10.2
Direccin
Acceso absoluto
IDENTIFICADOR
Acceso simblico
SIMBOLO
IDENTIFICADOR
DE OPERANDO
Indice
[
Expresin
bsica
10-2
Datos globales
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
I
Q
Entrada
Salida
Marca
PE
PI
Entrada de periferia
PA
PQ
Salida de periferia
Nemotcnica alemana
Nemotcnica inglesa
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
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
Direccin absoluta
Tipo de datos
Comentario
Contacto_motor_1
E 1.7
BOOL
Entrada1
EW10
INT
Palabra de estado
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
Identificador de operandos
Expresin
bsica
Expresin
bsica
ndice
Slo en el concepto bit
Ejemplo
VALOR_MEDIDO_1
MARCA_DS
10-6
:=EW[CONTADOR];
:=E[BYTE, BIT];
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
Indice
[
Expresin
bsica
Acceso estructurado a DB
Identificador de DB
Variable
simple
Variable
simple
Acceso simblico a DB
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
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
10-8
Bit
Byte
Palabra
Doble palabra
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
Identif_de_DB
Prefijo de memoria
Direccin
D X [i,j]
Identificador de operando
Sintaxis
Identificador de operando
IDENTIFICADOR
DE DB
Prefijo de
tamao
Expresin
bsica
Expresin
bsica
Ejemplo
STATUS_1:=
STATUS_2:=
STATUS_1:=
STATUS_2:=
STATUS_1:=
10-10
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];
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.
Clase
Operacin
Representacin
Prioridad
Operacin de asignacin:
Asignacin
:=
11
Operaciones aritmticas:
Potencia
**
Operaciones unarias
signo ms unitario
Menos unario
Operaciones aritmticas
bsicas
Multiplicacin
Operaciones de comparacin:
Operaciones lgicas:
Divisin
Funcin mdulo
MOD
DIV
Adicin
Sustraccin
Menor que
<
Mayor que
>
<=
>=
Igualdad
Desigualdad
<>
Negacin
NOT
AND o &
O exclusivo
XOR
OR
10
Parntesis
()
Operaciones lgicas
bsicas
Caracteres de anidado:
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
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
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
Operaciones
lgicas bsicas
Expresin
Expresin
Operaciones
de comparacin
Operaciones
aritmticas bsicas
Potencia
Exponente
**
Expresin
Expresin
+
Ms unario
-
Menos unario
NOT
Negacin
(
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
11-6
//operando
//expresin lgica
//expresin de comparacin
//expresin aritmtica
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.
+
Expresin
simple
Multiplicacin
simple
-
Multiplicacin
simple
DIV
MOD
Constante
(
Expresin
simple
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
INT, DINT
ANY_NUM
ANY_INT y REAL
Operacin
Identificador
Potencia
**
er
1 operando
ANY_NUM
2 operando
ANY_NUM
Prioridad
REAL
ANY_NUM
Ms unario
ANY_NUM
TIME
TIME
Menos unario
ANY_NUM
ANY_NUM
TIME
TIME
Multiplicacin
Resultado
ANY_NUM
ANY_NUM
ANY_NUM
TIME
ANY_INT
TIME
ANY_NUM
ANY_NUM
ANY_NUM
Divisin
TIME
ANY_INT
TIME
Divisin por
nmeros enteros
DIV
ANY_INT
ANY_INT
ANY_INT
TIME
ANY_INT
TIME
Divisin de mdulo
MOD
ANY_INT
ANY_INT
ANY_INT
Adicin
ANY_NUM
ANY_NUM
ANY_NUM
TIME
TIME
TIME
TOD
TIME
TOD
Sustraccin
DT
TIME
DT
ANY_NUM
ANY_NUM
ANY_NUM
TIME
TIME
TIME
TOD
TIME
TOD
DATE
DATE
TIME
TOD
TOD
TIME
DT
TIME
DT
DT
DT
TIME
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
er
Operacin
Identificador
1 operando
2 operando
Resultado
Prioridad
Negacin
NOT
ANY_BIT
ANY_BIT
Conjuncin
AND
ANY_BIT
ANY_BIT
ANY_BIT
Disyuncin exclusiva
XOR
ANY_BIT
ANY_BIT
ANY_BIT
Disyuncin
OR
ANY_BIT
ANY_BIT
ANY_BIT
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:
Tipo de
datos
<>
>0
<0
>
<
Reglas
INT
DINT
REAL
BOOL
BYTE
WORD
DWORD
11-12
Tipo de
datos
<>
>0
<0
>
<
Reglas
CHAR
STRING
DATE
TIME
DT
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:
TOD
S5-TIME
9
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.
Variable simple
:=
Expresin
Variable absoluta
en reas de memoria de la CPU
Variable en DB
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
12-2
Instrucciones
:=
:=
:=
:=
:=
Valor ;
20.0 ;
nombrestruct_2.elemento1 ;
nombrestruct_2.nombrearray2 ;
100 ;
12-3
Instrucciones
Ejemplo
FUNCTION_BLOCK FB3
VAR
VARAYUD : REAL ;
VALOR_MEDIDO : STRUCT
//Estructura meta
TENSION:REAL ;
RESISTENCIA:REAL ;
ARRAY_SIMPLE : ARRAY
: STRUCT
END_STRUCT ;
//Estructura fuente
TENSION: REAL ;
RESISTENCIA : REAL ;
ARRAY_SIMPLE: ARRAY [1..2,
1..2] OF INT ;
END_STRUCT ;
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
:
:
:
:
DATE_AND_TIME ;
STRUCT
DATE_AND_TIME ;
DATE_AND_TIME ;
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
12-10
Prefijo de
tamao
Direccin
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
Funcin
Instruccin IF
Instruccin CASE
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
Funcin
Instruccin FOR
Instruccin WHILE
Sirve para repetir una secuencia de instrucciones hasta que se cumpla una
condicin de ejecucin.
Instruccin REPEAT
Sirve para repetir una secuencia de instrucciones hasta que se cumpla una
condicin de interrupcin.
Funcin
Instruccin CONTINUE
Sirve para interrumpir la ejecucin del bucle que se est ejecutando en este
momento.
Instruccin EXIT
Instruccin GOTO
Instruccin RETURN
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
Ejemplo
Expresin de comparacin
TEMP > 50
CONTADOR<= 100
CHAR1 < 'S'
Operando booleano
E1.1
Expresin aritmtica
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
IF
Expresin
THEN
Area de
instrucciones
THEN
Area de
instrucciones
Condicin
ELSIF
Expresin
Condicin
ELSE
Area de
instrucciones
END_IF
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
OF
Valor
Lista de
valores
Area de
instrucciones
ELSE
Area de
instrucciones
END_CASE
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
Valor
El valor sigue la sintaxis que figura ms abajo:
Constante numrica
IDENTIFICADOR
Nombre de constante
Ejemplo
CASE TW OF
1 :
2 :
3 :
4..10:
11,13,19:
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;
ELSE:
DISPLAY:= 0;
TW_ERROR:= 1;
END_CASE ;
12-17
Instrucciones
Sintaxis
Instruccin FOR
FOR
Asignacin
inicial
TO
BY
Expresin
bsica
Expresin
bsica
para valor final
DO
Area de
instrucciones
END_FOR
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
:=
Expresin
bsica
para valor inicial
Operando
Expresin
base
Operador de
base aritmtico
Expresin
base
Expresin
base
Expresin
base
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
WHILE
Expresin
DO
Area de
instrucciones
END_WHILE
Condicin de ejecucin
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
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
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
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.
Parmetros actuales
3
LONGITUD
Suma_verificacion
Parmetros formales
E_Par
D_Par
A_Par
12-27
Instrucciones
Llamada absoluta:
FB10.DB20 (X1:=5,X2:=78,......);
Especificacin de parmetros
Llamada simblica:
ACCIONAMENTO.INTRO (X1:=5,X2:=78,......);
12-28
Instrucciones
Sintaxis
Llamada a FB
FB: bloque de funcin
SFB: bloque de funcin del sistema
IDENTIFICADOR
DE FB
Nombre de instancia global
IDENTIFICADOR
DE SFB
IDENTIFICADOR
DE DB
Parmetro de FB
IDENTIFICADOR
Nombre de instancia local
Llamada absoluta:
FB10.DB20 (X1:=5,X2:=78,......);
Especificacin de parmetros
Llamada simblica:
ACCIONAMENTO.INTRO (X1:=5,X2:=78,......);
12-29
Instrucciones
MOTOR (X1:=5,X2:=78,......);
Especificacin de parmetros
12-30
Instrucciones
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
Explicacin
THEN
Identificador de
Define un temporizador o un contador determinado a utilizar en la ejecucin de un
TEMPORIZADOR/CONT bloque
ADOR
Identificador de
BLOQUE
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
Explicacin
Se dispone de los siguientes tipos de variables ampliadas:
Variables simples y parmetros
Acceso a variables absolutas
Acceso a bloques de datos
Llamadas a funciones
Sintaxis
Asignacin de entrada/salida
IDENTIFICADOR
:=
Variable
ampliada
Parmetro actual
(parmetro formal)
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
Parmetros de entrada/salida de FB
Parmetros de FC
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
IDENTIFICADOR
DE SFC
IDENTIFICADOR
Nombre de funcin estndar o
nombre simblico
Parmetro
de FC
FC: funcin
SFC: funcin de sistema
Funcin estndar realizada en el compilador
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:
12-39
Instrucciones
Nota
12-40
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.
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
Explicacin
THEN
Constante
Variable ampliada
Identificador de
TEMPORIZADOR/CON
TADOR
Identificador de
BLOQUE
Sintaxis
Parmetro actual
Asignacin de entrada
Expresin
IDENTIFICADOR
DE TEMPORIZADOR
IDENTIFICADOR
:=
IDENTIFICADOR
DE CONTADOR
(parmetro formal)
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
Explicacin
Variable ampliada
Llamadas a funciones
Sintaxis
$VLJQDFLQGHVDOLGD
9DULDEOH
DPSOLDGD
,'(17,),&$'25
1RPEUHGHSDUPHWUR
GHVDOLGD
SDUPHWURIRUPDO
3DUPHWURDFWXDO
!
HQFDVRGH)&
$VLJQDFLQGHHQWUDGDVDOLGD
,'(17,),&$'25
1RPEUHGHOSDUPHWUR
GHHQWUDGDVDOLGD
3DUPHWURIRUPDO
9DULDEOH
DPSOLDGD
3DUPHWURDFWXDO
12-43
Instrucciones
Nota
En parmetros formales de salida o de entrada/salida no est permitido el uso de los
siguientes parmetros actuales:
12-44
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.
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
Significado
S_CU
S_CD
S_CUD
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
Tipo de datos
Descripcin
C_NO
COUNTER
INT
CD
BOOL
CU
BOOL
BOOL
PV
WORD
Valor entre 0 y 999 para ajustar el valor del contador (introducido como
16#<Valor>, estando el valor en formato BCD)
BOOL
Entrada de inicializacin
BOOL
CV
WORD
RET_VAL
WORD
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
13-4
Contadores y temporizadores
Formato
La siguiente figura explica la configuracin binaria del valor de contaje:
15 14
13
12
X I X I X I X
11 10
0 I 0 I 0 I 1
0 I 0 I 1 I 0
0 I 1 I 1 I 1
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
Funcionamiento
Incrementar contador
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
Funcionamiento
Decrementar contador
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
13-6
Contadores y temporizadores
Funcionamiento
Incrementar contador
Decrementar contador
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
Asignacin de parmetros
La tabla muestra la asignacin de parmetros de la funcin de ejemplo S_CD.
Parmetro
Descripcin
C_NO
MICONTADOR
CD
ENTRADA E0.0
AJUSTAR
PV
PRESELECCION 16#0089
INICIALIZAR
A0.7
CV
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
Significado
S_PULSE
S_PEXT
S_ODT
S_ODTS
S_OFFDT
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
Parmetro
Tipo de datos
Descripcin
T_NO
TIMER
ENTERO
BOOL
Entrada de arranque
TV
S5TIME
BOOL
Entrada de inicializacin
BOOL
BI
WORD
RET_VAL
S5TIME
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
0 I 0 I 1 I 0
0 I 1 I 1 I 1
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
10 ms
00
100 ms
01
1s
10
10 s
11
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
Seal de salida
(temporizador
como impulso)
A 4.0
S_PULSE
t
Funcionamiento
La tabla muestra el funcionamiento de la operacin "arrancar el temporizador como
impulso":
Operacin
Funcionamiento
Arrancar
temporizador
Definir tiempo de
funcionamiento
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.
Inicializar
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
Seal de salida
(temporizador como
impulso prolongado)
A 4.0
S_PEXT
t
Funcionamiento
La tabla muestra el funcionamiento de la operacin "arrancar temporizador como impulso
prolongado".
Operacin
Funcionamiento
Arrancar temporizador
Preseleccin del
tiempo de
funcionamiento
Inicializar
Consultar estado de
seal
Consultar valor de
temporizacin actual
13-16
Contadores y temporizadores
Se al de entrada
E 2.1
A 4.0
Seal de salida
(temporizador como
retardo a la conexin)
S_ODT
t
Funcionamiento
La tabla muestra el funcionamiento de la operacin "arrancar temporizador como retardo a
la conexin":
Operacin
Funcionamiento
Arrancar temporizador
Conservar
temporizador
Preseleccionar el
tiempo de
funcionamiento
Inicializar
Consultar estado de
seal
Consultar valor de
temporizacin actual
13-17
Contadores y temporizadores
Seal de entrada
E 2.1
Seal de salida
(temporizador como
retardo a la conexin
con memoria)
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
Funcionamiento
Arrancar temporizador
Rearrancar
temporizador
Preseleccionar el
tiempo de
funcionamiento
Inicializar
Consultar estado de
seal
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.
Consultar valor de
temporizacin actual
13-18
Contadores y temporizadores
Seal de entrada
E 2.1
Seal de salida
A 4.0
(temporizador como
retardo a la desconexin)
S_OFFDT
t
Funcionamiento
La tabla muestra el funcionamiento de la operacin "arrancar temporizador como retardo a
la desconexin":
Operacin
Funcionamiento
Arrancar temporizador
Rearrancar
temporizador
Definir tiempo de
funcionamiento
Inicializar
Consultar estado de
seal
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.
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
Seal de salida
(temporizador
como impulso)
A 4.0
Seal de salida
(temporizador como
impulso prolongado)
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".
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.
Seal de salida
(temporizador como
retardo a la conexin)
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".
Seal de salida
(temporizador como
retardo a la conexin
con memoria)
A 4.0
Seal de salida
(temporizador como
retardo a la
desconexin)
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".
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
Secuencia de conversin
ANY_BIT
ANY_NUM
Regla de conversin
BOOL_TO_BYTE
BOOL_TO_DWORD
BOOL_TO_WORD
BYTE_TO_DWORD
BYTE_TO_WORD
CHAR_TO_STRING
DINT_TO_REAL
INT_TO_DINT
INT_TO_REAL
WORD_TO_DWORD
14-2
Regla de conversin
OK
BOOL_TO_INT
WORD_TO_INT(BOOL_TO_WORD(x))
BOOL_TO_DINT
DWORD_TO_DINT(BOOL_TO_DWORD(x))
BYTE_TO_BOOL
BYTE_TO_CHAR
BYTE_TO_INT
WORD_TO_INT(BYTE_TO_WORD(x))
BYTE_TO_DINT
DWORD_TO_DINT(BYTE_TO_DWORD(x))
CHAR_TO_BYTE
CHAR_TO_INT
DATE_TO_DINT
DINT_TO_DATE
DINT_TO_DWORD
DINT_TO_INT
DINT_TO_TIME
DINT_TO_TOD
14-3
Nombre de la funcin
Regla de conversin
OK
DINT_TO_BOOL
DWORD_TO_BOOL(DINT_TO_DWORD(x))
DINT_TO_BYTE
DWORD_TO_BYTE(DINT_TO_DWORD(x))
DINT_TO_STRING
DI_STRNG
DINT_TO_WORD
DWORD_TO_WORD(DINT_TO_DWORD(x))
DWORD_TO_BOOL
DWORD_TO_BYTE
DWORD_TO_DINT
DWORD_TO_REAL
DWORD_TO_WORD
DWORD_TO_INT
INT_TO_CHAR
INT_TO_WORD
INT_TO_BOOL
WORD_TO_BOOL(INT_TO_WORD(x))
INT_TO_BYTE
WORD_TO_BYTE(INT_TO_WORD(x))
INT_TO_DWORD
WORD_TO_DWORD(INT_TO_WORD(x))
INT_TO_STRING
I_STRNG(x)
REAL_TO_DINT
REAL_TO_DWORD
REAL_TO_INT
REAL_TO_STRING
R_STRNG(x)
STRING_TO_CHAR
STRING_TO_INT
STRNG_I(x)
STRING_TO_DINT
STRNG_DI(x)
STRING_TO_REAL
STRNG_R(x)
TIME_TO_DINT
TOD_TO_DINT
WORD_TO_BOOL
WORD_TO_BYTE
WORD_TO_INT
WORD_TO_DINT
INT_TO_DINT(WORD_TO_INT(x))
WORD_TO_BLOCK_DB
BLOCK_DB_TO_WORD
BCD_TO_INT(x)
WORD_BCD_TO_INT(x)
14-4
Nombre de la funcin
Regla de conversin
INT_TO_BCD(x)
INT_TO_BCD_WORD(x)
OK
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)
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
Tipo de datos
Parmetro de
entrada
Tipo de datos
Valor de la
funcin
Tarea
ROUND
REAL
DINT
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
14-8
14.2
Tipo de datos
Parmetro de entrada
Tipo de datos
Valor de la funcin
Descripcin
ABS
ANY_NUM
ANY_NUM
Valor absoluto
SQR
ANY_NUM
REAL
Cuadrado
SQRT
ANY_NUM
REAL
Raz
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".
Tipo de datos
Parmetro de entrada
Tipo de datos
Valor de la funcin
Descripcin
EXP
ANY_NUM
REAL
e elevado a IN
EXPD
ANY_NUM
REAL
10 elevado a IN
LN
ANY_NUM
REAL
logaritmo
natural
LOG
ANY_NUM
REAL
logaritmo
decimal
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
Tipo de datos
Parmetro de entrada
Tipo de datos
Valor de la funcin
Descripcin
ACOS
ANY_NUM
REAL
Arco coseno
ASIN
ANY_NUM
REAL
Arco seno
ATAN
ANY_NUM
REAL
Arco tangente
COS
ANY_NUM
REAL
Coseno
SIN
ANY_NUM
REAL
Seno
TAN
ANY_NUM
REAL
Tangente
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
Llamada
RESULTADO
// 5
// 9
// 529
// 60.340 ...
// 1_000
// 1
// 2.389_166 ...
PI := 3.141592;
RESULTADO := SIN (PI / 6) ;
// 0.5
// 1.047_197 (=PI / 3)
14.3
Tipo de datos
Parmetro de
entrada IN
Tarea
ROL
BOOL
BYTE
WORD
DWORD
INT
INT
INT
INT
BOOL
BYTE
WORD
DWORD
ROR
BOOL
BYTE
WORD
DWORD
INT
INT
INT
INT
BOOL
BYTE
WORD
DWORD
SHL
BOOL
BYTE
WORD
DWORD
INT
INT
INT
INT
BOOL
BYTE
WORD
DWORD
SHR
BOOL
BYTE
WORD
DWORD
INT
INT
INT
INT
BOOL
BYTE
WORD
DWORD
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
Resultado
// 2#0111_1010
// (= 122 decimal)
// 2#1111_0100
// (= 244 decimal)
// 2#1001_1000
// (= 152 decimal)
// 2#0011_0100
// (= 52 decimal)
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
Declaracin
Tipo de
datos
rea de memoria
Descripcin
INPUT
STRING
D, L
INT
E, A, M, D, L
Valor de
respuesta
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
Declaracin
Tipo de
datos
rea de memoria
Descripcin
IN1
INPUT
STRING
D, L
D, L
D, L
D, L
CHAR
IN2
INPUT
STRING
INn
INPUT
STRING
CHAR
CHAR
Valor de
respuesta
STRING
CHAR
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
Declaracin
Tipo de
datos
rea de memoria
Descripcin
IN
INPUT
STRING
D, L
INPUT
INT
E, A, M, D, L, Konst.
STRING
D, L
Valor de
respuesta
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
Declaracin
Tipo de
datos
rea de memoria
Descripcin
IN
INPUT
STRING
D, L
INPUT
INT
E, A, M, D, L, Konst.
INPUT
INT
E, A, M, D, L, Konst.
STRING
D, L
Valor de
respuesta
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
Declaracin
Tipo de
datos
rea de memoria
Descripcin
IN1
INPUT
STRING
D, L
IN2
INPUT
STRING
D, L
INPUT
Valor de
respuesta
INT
E, A, M, D, L, const.
Posicin de insercin
STRING
D, L
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
Declaracin
Tipo de
datos
rea de memoria
Descripcin
IN1
INPUT
STRING
D, L
IN2
INPUT
STRING
D, L
INPUT
INT
E, A, M, D, L, Const.
INPUT
INT
E, A, M, D, L, Const.
STRING
D, L
Valor de
respuesta
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
Declaracin
Tipo de
datos
rea de memoria
Descripcin
IN1
INPUT
STRING
D, L
IN2
INPUT
STRING
D, L
INT
E, A, M, D, L
Valor de
respuesta
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
Declaracin
Tipo de
datos
rea de memoria
Descripcin
S1
INPUT
STRING
D, L
S2
INPUT
STRING
D, L
BOOL
E, A, M, D, L
Resultado de comparacin
Valor de
respuesta
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
Declaracin
Tipo de
datos
rea de memoria
Descripcin
S1
INPUT
STRING
D, L
S2
INPUT
STRING
D, L
BOOL
E, A, M, D, L
Resultado de comparacin
Valor de
respuesta
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
Declaracin
Tipo de
datos
rea de memoria
Descripcin
S1
INPUT
STRING
D, L
S2
INPUT
STRING
D, L
BOOL
E, A, M, D, L
Resultado de comparacin
Valor de
respuesta
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
Declaracin Tipo de
datos
rea de memoria
Descripcin
INPUT
INT
E, A, M, D, L, Const.
Valor de entrada
STRING
D, L
STRING
D, L
INT
E, A, M, D, L
Resultado
INT_TO_STRING
I
Valor de respuesta
STRING_TO_INT
S
INPUT
Valor de respuesta
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
Declaracin Tipo de
datos
rea de memoria
Descripcin
INPUT
DINT
E, A, M, D, L, Const.
Valor de entrada
STRING
D, L
STRING
D, L
DINT
E, A, M, D, L
Resultado
DINT_TO_STRING
I
Valor de respuesta
STRING_TO_DINT
S
INPUT
Valor de respuesta
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
Declaracin
Tipo de
datos
rea de
memoria
Descripcin
INPUT
REAL
E, A, M, D, L,
Const.
Valor de entrada
STRING
D, L
Cadena de caracteres de
resultado
STRING
D, L
REAL
E, A, M, D, L
resultado
REAL_TO_STRING
IN
Valor de respuesta
STRING_TO_REAL
S
Valor de respuesta
14-20
INPUT
14-21
14-22
:=
:=
:=
:=
word_to_int(%MW0),
word_to_int(%EW2),
word_to_int(%MW2),
0);
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
Declaracin
Tipo de datos
rea de memoria
INPUT
BOOL
E, A, M, D, L
IN0
INPUT
IN1
INPUT
Valor de retorno
OUTPUT
Descripcin
Criterio de seleccin
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
Declaracin
Tipo de datos
rea de memoria
Descripcin
IN1
INPUT
E, A, M, D, L
IN2
INPUT
E, A, M, D, L
Segundo valor de
entrada
Inn
(n=3...32)
INPUT
E, A, M, D, L
Valor de retorno
OUTPUT
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
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
Declaracin
Tipo de datos
rea de memoria
Descripcin
IN1
INPUT
E, A, M, D, L
IN2
INPUT
E, A, M, D, L
Segundo valor de
entrada
Inn
(n=3...32)
INPUT
E, A, M, D, L
Valor de retorno
OUTPUT
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
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
Declaracin
Tipo de datos
rea de memoria
Descripcin
MN
INPUT
ANY_NUM
E, A, M, D, L
Lmite inferior
E, A, M, D, L
Variable de entrada
E, A, M, D, L
Lmite superior
E, A, M, D, L
Variable de salida
limitada
(opcional)
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
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
Declaracin
Tipo de datos
INPUT
INT
E, A, M, D, L
Criterio de seleccin
IN0
INPUT
E, A, M, D, L
IN1
INPUT
E, A, M, D, L
Segundo valor de
entrada
Inn
INPUT
E, A, M, D, L
(n=231)
rea de memoria
Descripcin
14-25
Parmetro
Declaracin
Tipo de datos
rea de memoria
Descripcin
INELSE
INPUT
E, A, M, D, L
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
14-26
OUTPUT
E, A, M, D, L
Valor seleccionado
(opcional)
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.
DATE_AND_TIME
STRING
==
EQ_DT (FC9)
EQ_STRING (FC10)
<>
NE_DT (FC28)
NE_STRING (FC29)
>
GT_DT (FC14)
GT_STRING (FC15)
>=
GE_DT (FC12)
GE_STRING (FC13)
<=
LE_DT (FC18)
LE_STRING (FC19)
<
LT_DT (FC23)
LT_STRING (FC24)
DATE_AND_TIME + TIME
AD_DT_TM (FC1)
DATE_AND_TIME + TIME
SB_DT_TM (FC35)
DATE_AND_TIME + DATE_AND_TIME
SB_DT_DT (FC34)
TIME_TO_S5TIME(TIME)
TIM_S5TI (FC40)
S5TIME_TO_TIME(S5TIME)
S5TI_TIM (FC33)
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
Opcin
Bloque 4
Bloque 5
Iteracin
Alternativa
15-1
Terminal
Elementos nonterminales
<Nombre de regla>
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
Letra
Subrayado
Letra
Subrayado
Cifra
Cifra
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
Libertad de formato
Sin
libertad de formato
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:
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
Letra
Mayscula
minscula
A.. Z
a.. z
Cifra
Cifra decimal
0.. 9
Cifra octal
Cifra octal
0.. 7
Cifra hexadecimal
Cifra hexadecimal
0.. 9,
Bit
Cifra binaria
0, 1
A.. F, a.. f
15-5
15-6
Caracteres
Subgrupo
Carcter imprimble
$
'
Signos de control
$P o $p
$L o $l
$R o $r
$T o $t
$N o $n
Representacin
complementaria en
cdigo hexadecimal
$hh
cualquier carcter,
expresable en cdigo hexadecimal (hh)
Descripcin
Atributos
''
""
_subrayado
$> $<
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
BOOL#
BYTE#
WORD#
DWORD#
INT#
DINT#
REAL#
CHAR#
2#
8#
16#
D#
DATE#
DATE_AND_TIME#
DT#
E
e
D
Identificador de
Regla lxica
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
H
M
MS
S
T#
TIME#
TIME_OF_DAY#
TOD#
Identificador de
Regla lxica
..
.
()
[]
(* *)
//
{}
%
#
15-8
Descripcin
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
:=
+, -
+, -, *, /
**
Expresin
NOT
Expresin
<,>,<=,>=,=,<>
Operacin de comparacin
Operacin de comparacin
MOD; DIV
15-9
Descripcin
Regla sintctica
AND
ANY
Operacin lgica
Identificador del tipo de datos ANY
ARRAY
BLOCK_DB
BLOCK_FB
BLOCK_FC
BLOCK_SDB
BOOL
BY
BYTE
CASE
CHAR
CONST
CONTINUE
AT
BEGIN
COUNTER
DATA_BLOCK
DATE
DATE_AND_TIME
DINT
DIV
DO
DT
DWORD
ELSE
ELSIF
EN
ENO
15-10
Palabras clave
Descripcin
Regla sintctica
END_CASE
END_CONST
END_DATA_BLOCK
END_FOR
END_FUNCTION
END_FUNCTION_BLO
CK
END_IF
END_LABEL
Instruccin CASE
Bloque de constantes
Bloque de datos
Instruccin FOR
Funcin
Bloque de funcin
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
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
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
Bloque de funcin
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
15-12
Nemotcnica
inglesa
Bit
AB
QB
Byte
AD
QD
Doble palabra
AN
QW
Palabra
AX
QX
Bit
Bloque de datos
Bit
DB
DB
Bloque de datos
Byte
DD
DD
Bloque de datos
Doble palabra
DW
DW
Bloque de datos
Palabra
DX
DX
Bloque de datos
Bit
Bit
EB
IB
Byte
ED
ID
Doble palabra
EW
IW
Palabra
EX
IX
Bit
Marcas
Bit
Prefijo de tamao
MB
MB
Marcas
Byte
MD
MD
Marcas
Doble palabra
MW
MW
Marcas
Palabra
MX
MX
Marcas
Bit
PAB
PQB
Byte
PAD
PQD
Doble palabra
PAW
PQW
Palabra
PEB
PIB
Byte
PED
PID
Doble palabra
PEW
PIW
Palabra
15-13
Nemotcnica
inglesa
DB
DB
FB
FB
FC
FC
Funcin (Function)
OB
OB
SDB
SDB
SFC
SFC
SFB
SFB
Temporizador (Timer)
UDT
UDT
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
Palabras clave
Nombres predefinidos
Nombres de
Tipos de datos estndar (p. ej. BOOL, BYTE, INT)
Funciones estndar predefinidas, p. ej. ABS
Constantes estndar TRUE y FALSE
Nombres de
IDENTIFICADOR
variables declaradas
componentes de estructura
parmetros
constantes declaradas
metas de salto
Smbolos de la tabla de smbolos
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
Palabras clave
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
Letra
Letra
Subrayado
Subrayado
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
DESIGNACIN DE BLOQUE,
llamada de funcin
Asignacin de atributo
Secuencia de caracteres
Declaracin de constantes
simblicas, utilizacin
Bloque de constantes,
Meta de salto
Nombre de variable
Constante
Variable estructurada
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
Nmero
Smbolo
15-19
Constantes:
Nemotcnica
Descripcin
FALSE
TRUE
Marcas
Nemotcnica
Descripcin
EN
ENO
OK
15-20
15.2
Reglas lxicas
15.2.2 Identificadores
Regla
Diagrama sintctico
Identificadores
,'(17,),&$'25
&DUFWHU
&DUFWHU
&DUFWHU
*XLQLQIHULRU
*XLQLQIHULRU
&LIUD
&LIUD
Identificador de
BLOQUE
IDENTIFICACION DE BLOQUE
Palabra clave
de bloque
Nmero
Smbolo
15-21
Regla
Diagrama sintctico
Identificador de
temporizador
Nmero
T
En nemotcnica
alemana e inglesa
IDENTIFICADOR
Smbolo
Identificador de contador
Nmero
Smbolo
OB
Bloque de organizacin
FC
Funcin
SFC
FB
SFB
Bloque de datos
DB
UDT
Smbolo
"
15-22
Carcter
imprimible
"
Regla
Diagrama sintctico
Nmero
Cifra
15-23
15.2.3 Constantes
Regla
Diagrama sintctico
Constante de bits
CONSTANTE DE BITS
BOOL#
SECUENCIA DE CIFRAS DECIMAL
SECUENCIA DE CIFRAS OCTAL
SEC. DE CIFRAS HEXADECIMAL
SECUENCIA DE CIFRAS BINARIA
CARCTER (1)
BYTE#
WORD#
DWORD#
Constante entera
CONSTANTE ENTERA
INT#
DINT#
Constante de nmero
real
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
REAL#
-
Secuencia de cifras
decimales
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
Exponente
Cifra
Cifra hexadecimal: 0 - 9
15-24
Subrayado
Regla
Diagrama sintctico
Secuencia de cifras
binarias
Cifra binaria
2#
_
Guin inferior
Cifra binaria: 0 1
Secuencia de cifras
octales
8#
Guin inferior
Secuencia de cifras
hexadecimales
CIFRA HEXADECIMAL
Cifra hexadecimal
16#
_
Cifra hexadecimal: 0 - 9
A-F
Guin inferior
Exponente
Exponente
E
+
Secuencia de
cifras decimales
Constante Character
CONSTANTE CHAR
CHAR#
'
Carcter
'
SECUENCIA DE
CIFRAS DECIMAL
15-25
Regla
Diagrama sintctico
Constante STRING
CONSTANTE STRING
'
Interrupcin
de cadena
Carcter
'
Carcter
Carcter
&KDUFWHU
&KDUFWHU
LPSULPLEOH
6PERORGHHVFDSH
&KDUFWHUGHVXVWLWXFLQ
RX
&KDUFWHUGHFRQWURO
3/571
&LIUD
KH[DGHFLPDO
&LIUD
KH[DGHFLPDO
5HSUHVHQWDFLQGHUHVHUYHHQFGLJRKH[DGHFLPDO
3
/
5
7
1
6DOWRGHSJLQD
6DOWRGHOQHD
5HWRUQRGHFDUUR
7DEXODGRU
/QHDQXHYD
QRSHUPLWLGR
Interrupcin de String
Interrupcin de String
Signo de
formateado
$>
Blanco (blank),
Salto de lnea (linefeed)
Retorno de carro (carriage return)
Salto de pgina (formfeed, page)
Tabulador horizontal (tabulator)
$<
Comentario
15-26
Regla
Diagrama sintctico
Fecha
FECHA
FECHA#
Indicacin de fecha
D#
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 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 la hora
Indicacin de hora del da
SECUENCIA DE
CIFRAS DECIMALES
Indicacin de horas
SECUENCIA DE
CIFRAS DECIMALES
Indicacin de minutos
SECUENCIA DE
CIFRAS DECIMALES
Indicacin de segundos
SECUENCIA DE
CIFRAS DECIMALES
Indicacin de milisegundos
Representacin decimal
Representacin decimal
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
Das
Horas
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
Segundos
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
MS
Milisegundos
Minutos
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
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
Segundos
Minutos
CIFRAS DECIMALES
Horas
Das
CIFRAS DECIMALES
MS
Milisegundos
15-29
Diagrama sintctico
Acceso a memoria
simple
IDENTIFICADOR
DE OPERANDO
Direccin
Acceso absoluto
IDENTIFICADOR
Acceso simblico
Smbolo
Acceso a memoria
indexado
Prefijo de
memoria
Prefijo de
tamao
Expresin
bsica
Identificador de operandos
Expresin
bsica
ndice
Slo en el concepto bit
Identificador de
operandos para memoria Identificador de operando
Prefijo de
memoria
Prefijo de
tamao
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
15-30
Variable
simple
Regla
Diagrama sintctico
Identificador
de operando DB
Identificador de operando
IDENTIFICADOR
DE DB
Prefijode
tamao
Prefijo de memoria
Prefijo de memoria
E
A
Direccin
para memoria y DB
Entrada
Salida
Marca
PE
PI
Entrada de periferia
PA
PQ
Salida de periferia
Nemotcnica alemana
Prefijo de tamao
para memoria y DB
Nemotcnica inglesa
Prefijo de tamao
X
Bit
Byte
Palabra
Doble palabra
Direccin
Nmero
Nmero
Slo con direcciones de bit
IDENTIFICADOR
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
//
CR
Retorno de carro (carriage return)
Bloque de comentario
Bloque de comentario
(*
15-32
Carcter
*)
Diagrama sintctico
Ttulo
&DUFWHU
LPSULPLEOH
7,7/(
Versin
VERSION
'
SECUENCIA DE
CIFRAS DECIMALES
SECUENCIA DE
CIFRAS DECIMALES
0 - 15
'
0 - 15
Proteccin de bloque
KNOW_HOW_PROTECT
Autor
0D[FDUFWHUHV
$87+25
,'(17,),&$'25
&DUFWHU
LPSULPLEOH
,'(17,),&$'25
&DUFWHU
LPSULPLEOH
Familia de bloques
0D[FDUFWHUHV
)$0,/<
,'(17,),&$'25
&DUFWHU
LPSULPLEOH
Atributos de sistema
para bloques
IDENTIFICADOR
:=
'
carcter
imprimible
'
15-33
Diagrama de sintaxis
Opcin de compilador
5HVHW2SWLRQV
2YHUZULWH%ORFNV
*HQHUDWH5HIHUHQFH'DWD
^{
6&/B
66HUYHU$FWLYH
9DORU
&UHDWH2EMHFW&RGH
2SWLPL]HG2EMHFW&RGH
0RQLWRU$UUD\/LPLWV
&UHDWH'HEXJ,QIR
6HW2.)ODJ
6HW0D[LPXP6WULQJ/HQJWK
9DORU \>HV@RELHQQ>R@
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
Diagrama sintctico
Programa S7-SCL
Unidad de programa SCL
Unidad de programa
S7-SCL
Bloque de organizacin
Funcin
Bloque de funcin
Bloque de datos
Bloque de organizacin
Bloque de organizacin
ORGANIZATION_BLOCK
BEGIN
Identificacin
de DB
Area de instrucciones
Tabla de declaracin de OB
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
FUNCTION
rea de declaracin de FC
15-36
Identificador
de FC
BEGIN
Especificacin
del tipo de datos
rea de instrucciones
END_FUNCTION
Regla
Bloque de funcin
Diagrama sintctico
Bloque de funcin
PROGRAM
Identificador
de FB
rea de
declaracin de FB
FUNCTION_BLOCK
END_PROGRAM
BEGIN
rea de instrucciones
END_FUNCTION_BLOCK
Bloque de datos
Bloque de datos
DATA_BLOCK
BEGIN
Tabla de declaracin de DB
Tabla de asignacin de DB
END_DATA_BLOCK
TYPE
Identificacin
de DB
Identificacin
de UDT
Estructura
especificacin
del tipo de datos
END_TYPE
15-37
Diagrama sintctico
rea de declaracin de
OB
Bloque de constantes
Bloque de metas de salto
Bloque de variables
temporales
rea de declaracin de
una FC
Bloque de constantes
Bloque de metas de salto
Bloque de variables
temporales
Bloque de parmetros
Interface
Area de declaracin de
FB
Bloque de constantes
Bloque de metas de salto
Bloque de variables
temporales
Bloque de variables
estticas
Bloque de parmetros
rea de declaracin de
un DB
Interface
IDENTIFICACION
DE UDT
Especificacin de tipo
de datos STRUCT
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
IDENTIFICADOR
:=
Expresin
simple
END_CONST
Nombre de constante
IDENTIFICADOR
END_LABEL
Meta de salto
,
Bloque de variables
estticas
VAR
declaracin
de instancia*
* slo en FB
15-39
Regla
Diagrama sintctico
Declaracin de variables
IDENTIFICADOR
Especificacin
de tipo de datos
1)
Nombre de variable,
nombre de parmetro
o
nombre de componente
Inicializacin
de tipo de datos
,
No en caso de inicializacin
1)
mx. 24 caracteres
IDENTIFICADOR
:=
carcter
imprimible
'
'
INICIALIZACION
CONSTANTE
LISTA DE INICIAL.
DE ARRAY
Lista de inicializacin de
arrays
LISTA DE REPETITION
DE CONSTANTES
SEQUENCIA
DE DECIMALES
CONSTANTE
FACTOR DE REPETICION
LISTE DE REPETIT.
DE CONSTANTE
15-40
Regla
Declaracin de instancia
(slo es posible en el
apartado VAR de un FB)
Diagrama sintctico
Declaracin de instancia
IDENTIFICADOR
Identificacin
de SFB
Bloque de variables
temporales
Declaracin
de variable
VAR_TEMP
END_VAR
No es posible inicializacin
Bloque de parmetros
Bloque de parmetros
VAR_INPUT
VAR_OUTPUT
Declaracin
de variables
END_VAR
VAR_IN_OUT
La inicializacin slo es posible para VAR_INPUT y VAR_OUTPUT.
15-41
Regla
Diagrama sintctico
Tipo de datos
simple
DATE_AND_TIME
Especificacin de
tipo de datos STRING
Especificacin de
tipo de datos ARRAY
Especificacin de
tipo de datos STRUCT
IDENTIFICACION
DE UDT
Especificacin de tipo
de datos de parmetro
15-42
Diagrama sintctico
Tipo de
caracteres
Tipo de datos
numricos
Tipo de
temporizador
BOOL
Bit
BYTE
Byte
WORD
Palabra
DWORD
Doble palabra
CHAR
STRING
Expresin
simple
Dimensin de la cadena
INT
DINT
REAL
Entero
Entero, doble precisin
Nmero real
15-43
Regla
Diagrama sintctico
Tipo de tiempo
S5TIME
Temporizador,
formato S5
TIME
Temporizador
TIME_OF_DAY
Hora del da
TOD
DATE
DATE_AND_TIME
Fecha
DATE_AND_TIME
DATE_AND_TIME#
Indicacin de fecha
Indicacin de hora
DT#
Especificacin de ndice
Indice
..
Indice
,
Mx. 6 dimensiones
OF
Especificacin
de tipo de datos
Declaracin
de componentes
STRUCT
END_STRUCT
Declaracin de
componentes
IDENTIFICADOR
Especificacin
de tipo de datos
Inicializacin
de datos
Nombre de
componente
15-44
Regla
Diagrama sintctico
TIMER
COUNTER
ANY
POINTER
Contador
Cualquier tipo
Direccin
BLOCK_FC
Funcin
BLOCK_FB
Bloque de funcin
BLOCK_DB
Bloque de datos
BLOCK_SDB
Temporizaddor
15-45
rea de instrucciones
Diagrama sintctico
Area de instrucciones
IDENTIFICADOR
Instruccin
Meta de salto
Instruccin
Instruccin
Asignacin de valor
Procesamiento
de subrutinas
Instruccin de control
Asignacin de valor
Asignacin de valor
Variable simple
Expresin
:=
Variable absoluta
en reas de memoria de la CPU
Variable en DB
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
Array
simple
Es al principio,
el identificador
nombre de variable o
nombre de parmetro, y
despus del punto, nombre
de componente
15-47
Diagrama sintctico
Llamada a FB
Llamada a FB
FB: bloque de funcin
SFB: bloque de funcin del sistema
IDENTIFICADOR
DE FB
Nombre de instancia global
IDENTIFICADOR
DE SFB
IDENTIFICADOR
DE DB
Parmetro de FB
IDENTIFICADOR
Nombre de instancia local
Llamada a funcin
Llamada a funcin
IDENTIFICADOR
DE FC
IDENTIFICADOR
DE SFC
IDENTIFICADOR
Nombre de funcin estndar o
nombre simblico
Parmetros de FB
Parmetro
de FC
FC: funcin
SFC: funcin de sistema
Funcin estndar realizada en el compilador
Parmetros de FB
Asignacin
de entrada
Asignacin de
entrada/salida
Parmetros de FC
Parmetro de FC
Expresin
Asignacin
de entrada
Asignaciones
de salida y de
entrada/salida
,
15-48
Regla
Asignacin de entrada
Diagrama sintctico
Asignacin de entrada
Parmetro actual
Expresin
IDENTIFICADOR
DE TEMPORIZADOR
IDENTIFICADOR
:=
IDENTIFICADOR
DE CONTADOR
IDENTIFICADOR
DE BLOQUE
(parmetro formal)
Asignacin de de
entrada/salida
Asignacin de entrada/salida
IDENTIFICADOR
:=
Variable
ampliada
Parmetro actual
(parmetro formal)
Asignacin de salida
$VLJQDFLQGHVDOLGD
9DULDEOH
DPSOLDGD
,'(17,),&$'25
1RPEUHGHSDUPHWUR
GHVDOLGD
SDUPHWURIRUPDO
!
3DUPHWURDFWXDO
HQFDVRGH)&
15-49
Instruccin IF
Diagrama sintctico
Instruccin IF
IF
Expresin
THEN
Area de
instrucciones
THEN
Area de
instrucciones
Condicin
ELSIF
Expresin
Condicin
Area de
instrucciones
ELSE
Instruccin CASE
END_IF
Instruccin CASE
Expresin de seleccin (entero)
15-50
CASE
Expresin
OF
Valor
Lista de
valores
Area de
instrucciones
ELSE
Area de
instrucciones
END_CASE
Regla
Lista de valores
Diagrama sintctico
Lista de valores
Nmero entero
Valor
Valor
..
Valor
Valor
Constante numrica
IDENTIFICADOR
Nombre de constante
Intrucciones de
repeticin de de salto
Instruccin
FOR
Instruccin
WHILE
Instruccin
REPEAT
Instruccin
CONTINUE
Instruccin
EXIT
Instruccin
RETURN
Instruccin
GOTO
15-51
Regla
Instruccin FOR
No olvide escribir un punto y
coma detrs de la palabra
clave END_FOR.
Diagrama sintctico
Instruccin FOR
Asignacin
inicial
FOR
Expresin
bsica
TO
Expresin
bsica
BY
Area de
instrucciones
DO
END_FOR
Asignacin inicial
Asignacin inicial
Variable
simple
Expresin
bsica
:=
Instruccin WHILE
No olvide escribir un punto y
coma detrs de la palabra
clave END_WHILE.
Instruccin REPEAT
No olvide escribir un punto y
coma detrs de la palabra
clave END_REPEAT.
Instruccin WHILE
WHILE
Expresin
Area de
instrucciones
DO
END_WHILE
Condicin de ejecucin
Instruccin REPEAT
REPEAT
Area de
instrucciones
UNTIL
END_REPEAT
Expresin
Condicin de interrupcin
Instruccin CONTINUE
Instruccin CONTINUE
CONTINUE
Instruccin RETURN
Instruccin RETURN
RETURN
15-52
Regla
Instruccin EXIT
Diagrama sintctico
Instruccin EXIT
EXIT
Salto en el programa
Instruccin GOTO
GOTO
IDENTIFICADOR
Meta de salto
15-53
15-54
16
Consejos y trucos
16-1
Consejos y trucos
:
:
:
:
REAL;
REAL;
REAL;
REAL;
END_VAR
tmp := DB100.feld[i];
DB100.feld[i].value := tmp.valor1 * tmp.valor2 / tmp.valor3;
Nota
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
Representacin
+ infinity
1.#INFrandom-digits
- infinity
-1.#INFrandom-digits
Indefinite
digit.#INDrandom-digits
NaN digit.
#NANrandom-digits
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
Regla
FOR ii := anfang TO ende BY schritt DO
Si...
...entonces
Observacin
La variable ii se desplaza
en direccin positiva.
La variable ii se desplaza
en direccin negativa.
Valores lmite
Para ambos tipos de datos posibles se aplican valores lmite diferentes:
Tipo de datos
PMAX
NMAX
32_767
-32_768
2_147_483_647
-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
/
/ 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
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
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
ndice alfabtico
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
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
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
ndice alfabtico
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
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
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
ndice alfabtico-6
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
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
WORD_TO_BOOL 14-4
WORD_TO_BYTE 14-4
WORD_TO_INT 14-4
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