SIMATIC S7 Controlador programable S7-1200

Anuncio
SIMATIC S7 Controlador programable S7-1200
SCL
SCL
El lenguaje de control estructurado (SCL, Structured Control Language) es un lenguaje de
programación de alto nivel basado en PASCAL para las CPU de SIMATIC S7. SCL soporta la
estructura de bloques de STEP 7. Su proyecto puede incluir bloques de programa en uno de
los tres lenguajes de programación: SCL, KOP y FUP.
Las instrucciones de SCL emplean operadores de programación estándar, p. ej. para
asignación (:=) o para funciones matemáticas (+ para la suma, - para la resta, * para la
multiplicación y / para la división). SCL también utiliza operaciones de control de programa
PASCAL estándar, tales como IF-THEN-ELSE, CASE, REPEAT-UNTIL, GOTO y RETURN.
Es posible utilizar cualquier referencia PASCAL para elementos sintácticos del lenguaje de
programación SCL. Muchas otras instrucciones de SCL, como los temporizadores y
contadores, se corresponden con las instrucciones de KOP y FUP. Para más información
sobre determinadas instrucciones, véanse las instrucciones específicas de las secciones
correspondientes a Instrucciones básicas e Instrucciones avanzadas.
Es posible designar cualquier tipo de bloque (OB, FB o FC) para utilizar el lenguaje de
programación en el momento de crear el bloque. STEP 7 cuenta con un editor de programas
SCL que incluye los elementos siguientes:
•
•
•
Sección de interface para definir los parámetros del bloque lógico
Sección de código para el código del programa
Árbol de instrucciones que contiene las instrucciones SCL soportadas por la CPU
El código SCL para la instrucción se introduce directamente en la sección de código. El editor
incluye botones para las construcciones y comentarios de código habituales. Para obtener
instrucciones más complejas, basta con arrastrar las instrucciones SCL del árbol de
instrucciones y soltarlas en el programa. También se puede emplear cualquier editor de texto
para crear un programa SCL y, a continuación, importar el archivo a STEP 7.
This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims
all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete
documentation can be found at:
/dokumentation/default.aspx?DocVersionId=62121591435&Language=es-ES&TopicId=52965963659
21/11/2016
SIMATIC S7 Controlador programable S7-1200
SCL
En la sección de interfaz del bloque lógico SCL se pueden declarar los tipos de parámetros
siguientes:
•
•
•
Input, Output, InOut y Ret_Val: estos parámetros definen las variables de entrada, las variables de
salida y el valor de retorno del bloque lógico. El nombre de la variable introducida en este punto se
emplea de forma local durante la ejecución del bloque lógico. Normalmente, no se emplea el nombre
de variables globales en la tabla de variables.
Static (solo FB; la figura de arriba corresponde a una FC): el bloque lógico utiliza variables estáticas
para almacenar resultados intermedios estáticos en el bloque de datos de instancia. El bloque
retiene datos estáticos hasta que se sobrescriben, lo cual puede ocurrir después de varios ciclos.
Los nombres de los bloques, que este bloque llama como multiinstancia, también se almacenan en
los datos locales estáticos.
Temp: estos parámetros son variables temporales que se emplean durante la ejecución del bloque
lógico.
Si se llama el bloque lógico SCL desde otro bloque lógico, los parámetros del bloque lógico
SCL aparecen como entradas o salidas.
En este ejemplo, las variables de "Start" y "On" (de la tabla de variables de proyecto) se
corresponden con "StartStopSwitch" y "RunYesNo" en la tabla de declaración del programa
SCL.
This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims
all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete
documentation can be found at:
/dokumentation/default.aspx?DocVersionId=62121591435&Language=es-ES&TopicId=52965963659
21/11/2016
SIMATIC S7 Controlador programable S7-1200
SCL
Construir una expresión SCL
Una expresión SCL es una fórmula para calcular un valor. La expresión consiste en operandos
y operadores (p. ej. *, /, + o -). Los operandos pueden ser variables, constantes o expresiones.
La evaluación de la expresión se desarrolla en un orden determinado, que está definido por
los siguientes factores:
•
•
•
Cada operador tiene una prioridad predefinida y la operación con mayor prioridad se ejecuta en
primer lugar.
Si tienen la misma prioridad, los operadores se procesan en una secuencia de izquierda a derecha.
Se utilizan paréntesis para designar una serie de operadores que deben evaluarse conjuntamente.
El resultado de una expresión se puede utilizar para asignar un valor a una variable utilizada
por el programa, como una condición que debe ser considerada en una instrucción de control,
o como parámetros para otra instrucción SCL o para llamar un bloque lógico.
Tabla 1
Operadores en SCL
Tipo
Operación
Operador
Prioridad
Paréntesis
(Expresión)
(,)
1
Matemáticas
Alimentación
**
2
Signo (más unario)
+
3
Signo (menos unario)
-
3
Multiplicación
*
4
División
/
4
Modulo
MOD
4
Suma
+
5
Resta
-
5
Menor
<
6
Menor o igual
<=
6
Mayor
>
6
Mayor o igual
>=
6
Igual
=
7
Diferente
<>
7
Negación (unaria)
NOT
3
Combinación Y lógica
Yo&
8
Combinación lógica O-exclusiva
XOR
9
Combinación lógica O
O
10
Parametrización
:=
11
Comparación
Lógica con bits
Parametrización
This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims
all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete
documentation can be found at:
/dokumentation/default.aspx?DocVersionId=62121591435&Language=es-ES&TopicId=52965963659
21/11/2016
SIMATIC S7 Controlador programable S7-1200
SCL
Como lenguaje de programación de alto nivel, SCL utiliza instrucciones estándar para tareas
básicas:
•
•
•
•
Instrucción de asignación: :=
Funciones matemáticas: +, -, * y /
Direccionamiento de variables globales (variables): "<nombre de variable>" (nombre de la variable
o nombre del bloque de datos encerrado entre comillas dobles)
Direccionamiento de variables locales: #<nombre de variable> (nombre de la variable precedido por
el símbolo "#")
Los ejemplos siguientes muestran diferentes expresiones para diversos usos.
"C" := #A+#B;
Asigna la suma de dos variables locales a una
variable
"Data_block_1".Tag := #A;
Asignación a una variable de bloque de datos
IF #A > #B THEN "C" := #A;
Condición de la instrucción IF-THEN
"C" := SQRT (SQR (#A) + SQR (#B));
Parámetros de la instrucción SQRT
Los operadores aritméticos pueden procesar varios tipos de datos numéricos. El tipo de datos
resultante lo determina el tipo de datos de los operandos más significativos. Por ejemplo, una
operación de multiplicación que emplea un operando INT y un operando REAL da como
resultado un valor REAL.
Instrucciones de control
Una instrucción de control es un tipo de expresión SCL especializada, que realiza las siguiente
tareas:
•
•
•
•
Ramificación del programa
Repetición de secciones del código del programa SCL
Salto a otras partes del programa SCL
Ejecución condicionada
Las instrucciones de control de SCL incluyen IF-THEN, CASE-OF, FOR-TO-DO, WHILE-DO,
REPEAT-UNTIL, CONTINUE, GOTO y RETURN.
Una instrucción única generalmente ocupa una línea de código. Es posible introducir varias
instrucciones en una línea o dividir una instrucción en varias líneas de código para que el
código resulte más comprensible. Los separadores (como tabulaciones, saltos de línea o
espacios adicionales) se ignoran durante la comprobación de sintaxis. Una instrucción END
termina la instrucción de control.
Los siguientes ejemplos muestran una instrucción de control FOR-TO-DO. (Ambas formas de
codificación son válidas sintácticamente.)
FOR x := 0 TO max DO sum := sum + value(x); END_FOR;
This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims
all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete
documentation can be found at:
/dokumentation/default.aspx?DocVersionId=62121591435&Language=es-ES&TopicId=52965963659
21/11/2016
SIMATIC S7 Controlador programable S7-1200
SCL
FOR x := 0 TO max DO
sum := sum + value(x); END_FOR;
Una instrucción de control también puede llevar una etiqueta. Una etiqueta se inserta
colocando dos puntos (:) al comienzo de la instrucción:
Etiqueta: <Instrucción>;
La ayuda en línea de STEP 7 ofrece una completa referencia del lenguaje de programación
SCL.
Condiciones
Una condición es una expresión de comparación o una expresión lógica cuyo resultado es del
tipo BOOL (con el valor TRUE o bien FALSE). El siguiente ejemplo muestra condiciones de
varios tipos.
#Temperatura > 50
Expresión de relación
#Contador <= 100
#CHAR1 < 'S'
(#Alpha <> 12) AND NOT #Beta
Comparación y expresión lógica
5 + #Alpha
Expresión aritmética
Una condición puede utilizar expresiones aritméticas:
•
•
La condición de la expresión es TRUE si el resultado es cualquier valor diferente a cero.
La condición de la expresión es FALSE si el resultado es igual a cero.
Direccionamiento
Igual que en el caso de KOP y FUP, SCL permite utilizar variables (direccionamiento simbólico)
o direcciones absolutas en el programa de usuario. SCL también permite utilizar una variable
como índice de matriz.
Direccionamiento absoluto
%I0.0
%MB100
Debe colocar el símbolo "%" delante de las direcciones
absolutas. Sin el símbolo "%", STEP 7 genera un error
de variable no definido durante el tiempo de compilación.
Direccionamiento simbólico
"PLC_Tag_1"
Variable en la tabla de variables PLC
"Data_block_1".Tag_1
Variable en un bloque de datos
This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims
all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete
documentation can be found at:
/dokumentation/default.aspx?DocVersionId=62121591435&Language=es-ES&TopicId=52965963659
21/11/2016
SIMATIC S7 Controlador programable S7-1200
SCL
"Data_block_1".MyArray[#i]
Elemento de una matriz de bloque de datos
Direccionamiento indexado con instrucciones PEEK y POKE
SCL ofrece instrucciones PEEK y POKE que permiten leer de bloques de datos, E/S o
memoria, o escribir en ellos. Hay que proporcionar parámetros de offsets de byte, o de bit,
específicos para la operación.
Nota
Para usar las instrucciones PEEK y POKE con bloques de datos deben usarse bloques de
datos estándar (no optimizados). Nótese que las instrucciones PEEK y POKE solo transfieren
datos. Desconocen los tipos de datos que hay en las direcciones.
PEEK
(area:=_in_,
et:=_in_);
dbNumber:=_in_,
Lee el byte referenciado por byteOffset del bloque
byteOffs de datos, E/S o área de memoria referenciados.
Ejemplo de referencia al bloque de datos:
%MB100 := PEEK(area:=16#84, dbNumber:=1,
byteOffset:=#i);
Ejemplo de referencia a la entrada IB3:
%MB100 := PEEK(area:=16#81, dbNumber:=0,
byteOffset:=#i); // when #i = 3
PEEK_WORD
(area:=_in_,
et:=_in_);
dbNumber:=_in_,
Lee la palabra referenciada por byteOffset del
byteOffs bloque de datos, E/S o área de memoria
referenciados.
Ejemplo:
%MW200 := PEEK_WORD(area:=16#84,
dbNumber:=1, byteOffset:=#i);
PEEK_DWORD
(area:=_in_,
dbNumber:=_in_,
et:=_in_);
Lee la doble palabra referenciada por byteOffset
byteOffs del bloque de datos, E/S o área de memoria
referenciados.
Ejemplo:
%MD300 := PEEK_DWORD(area:=16#84,
dbNumber:=1, byteOffset:=#i);
This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims
all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete
documentation can be found at:
/dokumentation/default.aspx?DocVersionId=62121591435&Language=es-ES&TopicId=52965963659
21/11/2016
SIMATIC S7 Controlador programable S7-1200
SCL
PEEK_BOOL
(area:=_in_,
dbNumber:=_in_,
et:=_in_,
bitOffset:=_in_);
Lee un booleano referenciado por el bitOffset y el
byteOffs byteOffset del bloque de datos, E/S o área de
memoria referenciados.
Ejemplo:
%MB100.0 := PEEK_BOOL(area:=16#84,
dbNumber:=1, byteOffset:=#ii, bitOffset:=#j);
POKE
(area:=_in_,
et:=_in_,
dbNumber:=_in_,
value:=_in_);
Escribe el valor (Byte, Word o DWord) en el
byteOffs byteOffset referenciado del bloque de datos, E/S o
área de memoria referenciados.
Ejemplo de referencia al bloque de datos:
POKE(area:=16#84, dbNumber:=2, byteOffset:=3,
value:="Tag_1");
Ejemplo de referencia a la salida QB3:
POKE(area:=16#82, dbNumber:=0, byteOffset:=3,
value:="Tag_1");
POKE_BOOL
Escribe el valor booleano en el bitOffset y
(area:=_in_,
dbNumber:=_in_,
byteOffs byteOffset referenciados del bloque de datos, E/S
et:=_in_,
bitOffset:=_in_,
value:=_in_); o área de memoria referenciados.
Ejemplo:
POKE_BOOL(area:=16#84, dbNumber:=2,
byteOffset:=3, bitOffset:=5, value:=0);
POKE_BLK
(area_src:=_in_,
dbNumber_src:=_in_,
byteOffset_src:=_in_,
area_dest:=_in_,
dbNumber_dest:=_in_,
byteOffset_dest:=_in_
,
count:=_in_);
Escribe el número de "recuento" de bytes
empezando por el offset de bytes referenciado del
bloque de datos, E/S o área de memoria de origen
referenciados en el byteOffset referenciado del
bloque de datos, E/S o área de memoria de destino
referenciados.
Ejemplo:
POKE_BLK(area_src:=16#84,
dbNumber_src:=#src_db,
byteOffset_src:=#src_byte, area_dest:=16#84,
dbNumber_dest:=#src_db,
byteOffset_dest:=#src_byte, count:=10);
Para las instrucciones PEEK y POKE, se aplican los valores siguientes de los parámetros
"area", "area_src" y "area_dest". Para otras áreas distintas de los bloques de datos, el
parámetro dbNumber debe ser 0.
16#81
I
This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims
all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete
documentation can be found at:
/dokumentation/default.aspx?DocVersionId=62121591435&Language=es-ES&TopicId=52965963659
21/11/2016
SIMATIC S7 Controlador programable S7-1200
SCL
16#82
Q
16#83
M
16#84
DB
Llamar otros bloques lógicos desde el programa SCL
Para llamar otro bloque lógico en el programa de usuario, basta con introducir el nombre (o
dirección absoluta) del FB o la FC que contiene los parámetros. En el caso de un FB, también
hay que indicar un DB de instancia para llamarlo con el FB.
<Nombre de DB> (lista de parámetros)
Llamar como instancia única
<#Nombre de instancia> (lista de parámetros)
Llamar como multiinstancia
"MyDB"(MyInput:=10, MyInOut:="Tag1");
<Nombre de FC> (Lista de parámetros)
Llamada estándar
<Operando>:=<Nombre de FC> (Lista de parámetros)
Llamar en una expresión
"MyFC"(MyInput:=10, MyInOut:="Tag1");
También se pueden arrastrar bloques desde el árbol de navegación al editor del programa
SCL y completar la asignación de parámetros.
Adición de comentarios de bloque al código SCL
Puede incluir un comentario de bloque en el código SCL mediante la inclusión del texto del
comentario entre (* y *). Puede incluir tantas líneas de comentario como desee entre (* y *).
El bloque de programa SCL puede incluir varios comentarios de bloque. A efectos de
programación, el editor de SCL incluye un botón de comentarios de bloque junto con las
instrucciones de control habituales:
Ver también
→ Instrucciones básicas
→ Instrucciones avanzadas
→ Utilizar bloques para estructurar el programa
This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims
all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete
documentation can be found at:
/dokumentation/default.aspx?DocVersionId=62121591435&Language=es-ES&TopicId=52965963659
21/11/2016
Descargar