Process Control & Automation plc mcq question bankDescrição completa
makalah plc
Full description
Process Control & Automation plc mcq question bank
TwinCAT PLC Control: Introducción
Introducción Qué es TwinCAT PLC Control? TwinCAT PLC Control es un completo entorno de desarrollo para funciones de PLC. Permite al programador una entrada sencilla mediante los eficaces recursos del lenguaje basado en IEC. El uso de los editores y de las funciones de Debugging tiene como modelo los entornos de desarrollo perfeccionados de lenguajes de programación superiores.. Introducción general del funcionamiento de TwinCAT PLC Control Cómo se estructura un proyecto? Un proyecto se guarda en un archivo que lleva el nombre del proyecto. El primer módulo (POU) que se crea en un nuevo proyecto se llamará automáticamente MAIN y recibirá otro nombre mediante la Tarea estándar (Task Standard) especificada. TwinCAT PLC Control distingue varios tipos de objetos en un proyecto: módulos, tipos de datos y recursos. En el "Object Organizer" se encuentra la lista de todos los objetos de su proyecto. Cómo se crea un proyecto? Primero debería seleccionar un sistema de destino y especificar una Tarea (Task). A continuación puede crear los módulos (POUs) necesarios para su aplicación. Ya puede pasar a programar los módulos (POUs) necesarios en los lenguajes deseados. Tras finalizar la programación, puede controlar el proyecto y corregir los eventuales errores que se indiquen. Cómo se verifica un proyecto? Una vez que todos los errores estén corregidos, conéctese al PLC y cargue su proyecto en él. Ahora, TwinCAT PLC Control se encuentra en el modo On-line. Compruebe que su proyecto haga la maniobra correcta. Para este fin, introduzca manualmente las entradas y observe si las salidas se activan de la forma deseada. Asimismo puede observar en los módulos (POUs) los diferentes valores de las variables locales. En el Visor de Variables o de Fórmulas puede configurar los datos cuyos valores quiere visualizar. En caso de un error de programación puede fijar Breakpoints. Si la ejecución se detiene en uno de estos Breakpoints, puede consultar los valores de todas las variables del proyecto en este instante. Mediante la ejecución Paso a Paso puede comprobar la corrección lógica de su programa.
Función de Debugging adicional de TwinCAT PLC Control: puede prefijar variables de programa y entradas/salidas a determinados valores. Con el control de procesos puede comprobar qué líneas de programa se han ejecutado. El Sampling Trace le ofrece la posibilidad de registrar y visualizar el seguimiento cíclico de las variables durante un tiempo prolongado. Un Registro procesos / los paseos de usuario y los procesos internos durante el en línea - modo cronológicamente sobre. El proyecto se puede documentar en todo momento o exportar a un archivo de texto. Sumario TwinCAT PLC Control es una completa herramienta de desarrollo para la programación de su PLC que le aporta un considerable ahorro de tiempo en la creación de sus aplicaciones.
Componentes de un proyecto Un proyecto contiene todos los objetos de un programa PLC. El proyecto se guarda en un archivo con el mismo nombre. Un proyecto incluye los siguientes objetos: Módulos (POUs), Declaración de datos (Data Types), Recursos (Resources) y Librerías (Libraries).
Módulo (POUs)
Funciones, Bloques de Funciones y programas son Módulos, ellos pueden ser completados por la vía de paseos. Cada Módulo se compone de una parte de declaración y una parte de programa. La parte de programa está escrita en uno de los lenguajes de programación permitidos por la norma IEC (IL, ST, SFC, FBD, LD o CFC). TwinCAT PLC Control soporta todos los Módulos compatibles con la norma IEC. Si quiere incorporar estos módulos en su proyecto, tiene que cargar la librería standard.lib en su proyecto. Los Módulos (POUs) pueden llamar a otros módulos, pero no se permite recursividad. Función Una Función es un módulo que, cuando se ejecuta, suministra exactamente un dato (que puede ser de varios elementos, como por ejemplo, campos o estructuras) y cuya llamada puede realizarse en lenguajes de texto como operador en expresiones. En la declaración de una Función se le ha de asignar un tipo de dato. Es decir que, después del nombre de la Función, se tienen que introducir dos puntos, seguido por un tipo de dato.
Un ejemplo de declaración de función, sería: FUNCTION Fct: INT Además, se tiene que asignar un resultado a la Función. El nombre de la Función se utiliza como una variable de salida. Ejemplo en IL para una Función que tiene tres variables de entrada y devuelve como resultado el producto de las dos primeras, dividido por la última:
La llamada a una Función puede aparecer en lenguaje ST como operando en expresiones. Las Funciones no tienen estados internos. Es decir, las llamadas de una función con los mismos argumentos (parámetros de entrada) devuelven siempre el mismo valor (salida).
Ejemplos de la llamada de la función antes descrita en lenguaje IL: LD 7 Fct 2,4 ST Ergebnis
en lenguaje ST: Ergebnis := Fct(7, 2, 4); en lenguaje FBD:
En lenguaje FBD, una llamada a Función sólo puede tener lugar dentro de un paso o una transición. Nota: si define en su proyecto una Función con el nombre CheckBounds, puede comprobar automáticamente la superación de márgenes en su proyecto. El nombre de la Función está especificado y debe poseer únicamente esta denominación. El siguiente ejemplo de programa para la comprobación de la Función CheckBounds interviene fuera de los límites de un Array definido. La Función CheckBounds garantiza que el valor TRUE no se asigne a la posición A[10], sino al límite superior aún válido del área A[7]. La Función CheckBounds permite, por lo tanto, corregir intervenciones fuera de los límites del Array.
Nota: Si en su proyecto define funciones con los nombres CheckDivByte, CheckDivWord, CheckDivDWord y CheckDivReal, con la utilización del operador DIV puede comprobar el valor del divisor, por ejemplo para evitar una división entre 0. El nombre de la función está especificado y debe mostrar únicamente esta denominación. Si define las funciones CheckRangeSigned y CheckRangeUnsigned, en el modo online puede interceptar automáticamente la superación de márgenes en las variables declaradas con tipos de subárea. Los nombres de funciones mencionados se reservan a causa de la posibilidad de utilización descrita aquí.
Bloque de Funciones
Un Bloque de Funciones es un Módulo que, al ejecutarse, suministra uno o varios valores. A diferencia de una Función, un Bloque de Funciones no proporciona ningún valor de devolución.
Se pueden crear reproducciones, denominadas instancias (copias), de un Bloque de Funciones. Ejemplo en IL de un Bloque de Funciones con dos variables de entrada y dos variables de salida. Una salida es el producto de las dos entradas ; la otra es una comparación de igualdad.
Instancias de Bloques de Funciones
Se pueden crear reproducciones, denominadas instancias (copias), de un Bloque de Funciones. Cada instancia posee su propio identificador (nombre de instancia) y una estructura de datos que contiene sus entradas, salidas y variables internas. Al igual que las variables, las instancias se declaran como locales o globales, indicando como tipo de un identificador el nombre del Bloque de Funciones.
Ejemplo de una instancia con el nombre INSTANZ del Bloque de Funciones FUB:
INSTANZ: FUB;
Las llamadas a Bloques de Funciones se realizan siempre a través de las instancias arriba descritas. Sólo se puede acceder a los parámetros de entrada y salida desde fuera de una instancia de un bloque de funciones, pero no se puede acceder a sus variables internas. Ejemplo del acceso a una variable de entrada:
El Bloque de Funciones fb tiene una variable de entrada in1 del tipo int.
PROGRAM prog VAR inst1:fb; END_VAR LD 17 ST inst1.in1 CAL inst1 END_PROGRAM
Las partes de declaración de los Bloques de Funciones y Programas no pueden contener declaraciones de instancia. Las declaraciones de instancia no se admiten en las Funciones. El acceso a la instancia de un Bloque de Funciones está limitado al Módulo en el cual se ha creado la instancia, a no ser que haya sido declarada como global. El nombre de una instancia de un Bloque de Funciones se puede utilizar como entrada de una Función o un Bloque de Funciones. Nota: se conservan todos los valores después de cada ejecución del Bloque de Funciones. Por esta razón, las llamadas a un Bloque de Funciones con los mismos argumentos no suministran siempre los mismos valores de salida. Llamada a un Bloque de Funciones
Se puede acceder a las variables de entrada y salida de un bloque de funciones desde otro módulo, creando una instancia del bloque de funciones e indicando la variable deseada mediante la siguiente sintaxis: . Si se desean fijar los parámetros de entradas, es decir, valores de variables de entrada, en una llamada, esto se realiza en los lenguajes de texto IL y ST, asignando entre paréntesis valores a los parámetros después del nombre de instancia del bloque de funciones (la asignación se realiza con ":=", como en la inicialización de variables en el punto de declaración). Tenga en cuenta que las variables de entrada / salida (VAR_IN_OUT) de un bloque de funciones se entregan como Pointer (puntero). Por ello, no se les puede asignar ninguna constante durante la llamada y no se puede
acceder a ellas desde fuera para lectura o escritura. Ejemplo para la llamada de una VAR_IN_OUT variable inout1 del bloque de funciones en un módulo ST: VAR inst:fubo; var1:int; END_VAR var1:=2; inst(inout1:=var1); No se permite: inst(inout1:=2); o inst.inout1:=2;
Ejemplos de la llamada al Bloque de Funciones FUB arriba descrito. El resultado de la multiplicación se guarda en la variable ERG y el resultado de la comparación, en QUAD. Se declararía una instancia de FUB con el nombre INSTANZ. En IL, el Bloque de Funciones se implementa como sigue:
En el ejemplo siguiente, la llamada se reproduce en el lenguaje ST. La parte de declaración es igual que en IL:
En lenguaje FBD se presentaría como sigue (parte de declaración también como en IL):
En SFC, las llamadas a bloques sólo se pueden realizar en pasos.
Programa
Un programa es un Módulo que, al ejecutarse, suministra uno o varios valores. Los programas están incluidos en todo el proyecto de forma global. Después de cada ejecución del programa, se conservan todos los valores.
Los programas pueden recibir llamadas de otros programas y Bloques de Funciones. Una función no admite llamadas a programas. Tampoco existen instancias de programas. Si un Módulo llama a un programa y en el proceso se modifican valores del programa, estas modificaciones se conservan en la próxima llamada al programa, aunque ésta se realice desde un Módulo distinto. No ocurre igual con la llamada a un Bloque de Funciones. En ese caso, sólo se modifican los valores de la
correspondiente instancia de un Bloque de Funciones. Por lo tanto, estas modificaciones únicamente son relevantes si se llama la misma instancia. Ejemplos de llamadas del programa arriba descrito:
En lenguaje IL: CAL PRGbeispiel LD PRGbeispiel.PAR ST ERG
En lenguaje ST: PRGbeispiel; Erg := PRGbeispiel.PAR; En lenguaje FBD:
Si la variable PAR del programa RPGbeispiel se inicializa en primer lugar con 0 desde un programa principal y, a continuación, se realizan llamadas a los sucesivos programas mediante las citadas llamadas a programas, el resultado Erg de los programas incluirá los valores 1, 2 y 3. Si se cambia el orden de las llamadas, también se modificarán, en consecuencia, los valores de los correspondientes parámetros de resultado. Acción Se pueden definir acciones para bloques de funciones y programas. La acción representa otra implementación que se puede crear en otro lenguaje distinto al de la implementación 'normal'. Cada acción contiene
un
nombre.
Una acción funciona con los datos del bloque de funciones o el programa al cual pertenece. La acción utiliza las mismas variables de entrada / salida y las variables locales, como la implementación 'normal'.
En este ejemplo se aumentan o se reducen las variables de salida out durante la llamada del bloque de funciones Counter, dependiendo de las variables de entrada in. Durante la llamada de la acción Reset del bloque de funciones la variable de salida out se fija en cero. En ambos casos se describe la misma variable out.
Una acción se llama con . o . (. o .). Si la acción se llama desde dentro del módulo propio, en los editores de texto sólo se utilizan los nombres de acción y en los gráficos la llamada del bloque de funciones sin datos de instancia. Ejemplos para llamadas de la acción anterior: Declaración para todos los ejemplos: PROGRAM PLC_PRG VAR Inst : Counter; END_VAR
En LI: CAL Inst.Reset(In := FALSE) LD Inst.out ST ERG
En ST:
Inst.Reset(In := FALSE); Erg := Inst.out;
En FBD:
Nota: En los módulos en el diagrama secuencial de funciones (SFC) las acciones juegan un papel especial. Consulte el capítulo Diagrama secuencial de funciones.
Nota: La norma IEC no reconoce ninguna acción aparte del diagrama secuencial de funciones. Recursos
Los recursos se necesitan para la configuración y organización del proyecto y para el seguimiento de valores de variables:
Variables globales que se pueden utilizar en todo el proyecto
Configuraciones del PLC para configurar su hardware
Configuración de tareas para controlar su programa a través de tareas
Sampling Trace para el registro gráfico de valores de variables
Visor de Variables y de Fórmulas para la visualización e introducción por defecto de valores de variables.
Véase al respecto el capítulo 'Los recursos'. Librerías
Puede incorporar en su proyecto una serie de librerías cuyos Módulos, tipos de datos y variables globales podrá utilizar como si fuesen de creación propia. La librería 'standard.lib' está disponible a nivel estándar.
Véase al respecto el capítulo 'Administrador de librería'.
Tipos de datos
Aparte de los tipos de datos estándar, el usuario puede definir sus propios tipos de datos. Se pueden crear estructuras, tipos de enumeraciones y referencias.
Véase al respecto 'Tipos de datos estándar' y 'Tipos de datos definidos' en el Apéndice
Lenguajes de programación TwinCAT PLC Control admite todos los lenguajes descritos en IEC 61131-3. Existen dos lenguajes para texto y tres lenguajes para gráficos. Lenguajes para texto
Lista de instrucciones (IL)
Texto estructurado (ST)
Lenguajes para gráficos
Diagrama de bloques funcionales (FBD)
Plano de contactos (LD)
El editor gráfico de planos de funciones (CFC)
Diagrama secuencial de funciones (SFC)
TwinCAT PLC Control: Lenguajes
Lista de instrucciones (IL) Una lista de instrucciones (IL) se compone de una serie de instrucciones. Cada instrucción empieza en una nueva línea, contiene un operador y, según sea el tipo de operación, incluye uno o varios operandos separados
por
comas.
Delante de una instrucción se puede encontrar una marca de identificación seguida por dos puntos (:).
Un comentario ha de ser el último elemento de una línea. Se pueden insertar líneas vacías entre las instrucciones.
Ejemplo:
LD 17 ST lint (* Comentario *) GE 5 JMPC next LD idword EQ istruct.sdword STN test next: Modificadores y operadores en lenguaje IL
En
el
lenguaje
IL
se
pueden
utilizar
los
siguientes
operadores
y
modificadores.
Modificadores:
C en JMP, CAL, RET: la instrucción sólo se ejecuta si el resultado de la expresión anterior es TRUE.
N en JMPC, CALC, RETC: la instrucción sólo se ejecuta si el resultado de la expresión anterior es FALSE.
N en el resto: negación del operando (no del acumulador)
A continuación aparece una tabla de todos los operadores en lenguaje IL con sus posibles modificadores y su correspondiente significado: Métodos en el orden Vtable
Operador
Modificadores
Significado
LD
N
Establecer resultado actual igual al operando
TE
N
Guardar resultado actual en la
posición del operando
S
Ajustar el operando de Bool en TRUE cuando el resultado actual es TRUE
R
AND
N, (
AND por bits
OR
N, (
OR por bits
XOR
(
OR exclusivo por bits
ADD
(
Suma
SUB
(
Resta
MUL
(
Multiplicación
DIV
(
División
GT
(
>
EQ
(
=
NE
(
<>
LE
(
<=
LT
(
<
JMP
CN
Saltar a la marca
CAL
CN
Llamar a Bloque de Funciones
RET
CN
Volver de la llamada a un Bloque de Funciones
)
Evaluar operación de repuesta
En el Apéndice figura una lista de todos los operadores IEC. Ejemplo de un programa en lenguaje IL con uso de algunos modificadores: LD TRUE (*Cargar TRUE en el acumulador*) ANDN BOOL1 (*ejecutar AND con el valor negado de la variable BOOL1*) JMPC marke (*si el resultado ha sido TRUE, saltar a la marca "marke"*) LDN BOOL2 (*Guardar el valor negado de *) ST ERG (*BOOL2 en ERG*) marke: LD BOOL2 (*Guardar el valor de *) ST ERG (*BOOL2 en ERG*) En el lenguaje IL, también es posible incluir paréntesis después de una operación. De este modo, el valor del paréntesis se considera como operando. Ejemplo: LD 2 MUL 2 ADD 3 ST Erg
En este caso, el valor de Erg es 7. En cambio, si se introducen paréntesis:
LD 2 MUL( 2 ADD 3 ) ST Erg
Se obtiene 10 como valor para Erg, porque la operación MUL sólo se evalúa cuando se encuentra ")"; de esta forma, como operando para MUL, se calcula el valor 5.
Texto estructurado (ST) El texto estructurado se compone de una serie de instrucciones que se pueden ejecutar, como sucede con los lenguajes superiores, de forma condicionada ("IF..THEN..ELSE") o en bucles secuenciales (WHILE..DO). Ejemplo: IF value < 7 THEN WHILE value < 8 DO value := value + 1; END_WHILE; END_IF; Expresiones
Una expresión es una construcción que devuelve un valor después de su evaluación. Las expresiones se componen de operadores y operandos. Un operando puede ser una constante, una variable, una llamada a funciones u otra expresión.
Evaluación de expresiones
La evaluación de una expresión se realiza mediante la ejecución de los operadores según determinadas reglas de enlace. El operador con el enlace más fuerte se ejecuta primero, después el operador que le sigue en intensidad de enlace, etc., hasta que se hayan ejecutado todos los operadores. Los operadores con la misma fuerza de enlace comienzan a ejecutarse desde la izquierda hacia la derecha. A continuación se muestra una tabla con los operadores ST por orden de fuerza de enlace.
Operación
Símbolo
Fuerza de enlace
Entre paréntesis
(expresión)
Llamada a funciones
Nombre de función (lista de
Enlace más fuerte
parámetros)
Potenciar
EXPT
Negar
-
Formación de
NOT
complemento
Multiplicar
*
Dividir
/
Módulo
MOD
Sumar
+
Restar
-
Comparar
<,>,<=,>=
Igualdad
=
Desigualdad
<>
Bool AND
AND
Bool XOR
XOR
Bool OR
OR
Enlace más débil
A continuación se indican las siguientes instrucciones en ST ordenadas en forma de tabla y con un ejemplo:
Tipo de instrucció n
Ejemplo
Asignación
A:=B; CV := CV + 1; C:=SIN(X);
Llamada a
CMD_TMR(IN := %IX5, PT := 300);A:=CMD_TMR.Q;
un Bloque de Funciones y uso de la salida FB
RETURN
RETURN;
IF
IF D:=B*B;IF D<0.0 THEN C:=A;ELSIF D=0.0 THEN C:=B;ELSE C:=D;END_IF;
FOR J:=101;FOR I:=1 TO 100 BY 2 DO IF ARR[I] = 70 THEN J:=I; EXIT; END_IF;END_FOR;
WHILE
WHILE J<= 100 AND ARR[J] <> 70 DO J:=J+2;END_WHILE;
REPEAT
REPEAT J:=J+2;UNTIL J= 101 OR ARR[J] = 70END_REPEAT;
EXIT
EXIT;
Instrucción
;
vacía
Instrucciones en el lenguaje de texto estructurado
Tal como el nombre lo indica, el texto estructurado está concebido para la programación estructurada; es decir, que para determinadas construcciones de uso frecuente, tales como bucles secuenciales, el lenguaje ST ofrece estructuras establecidas para la programación. Esto proporciona la ventaja de reducir la probabilidad de errores y conferir mayor claridad al programa. Comparemos, por ejemplo, dos secuencias de programa con idéntico significado en los lenguajes IL y ST:
Un bucle secuencial para el cálculo de segundas potencias en lenguaje IL: bucle secuencial:
LD Zaehler EQ 0 JMPC ende LD Var1 MUL 2 ST Var1 LD Zaehler SUB 1 ST Zaehler JMP schleife ende: LD Var1 ST Erg El mismo bucle secuencial programado en lenguaje ST se presentaría como sigue: WHILE Zaehler<>0 DO Var1:=Var1*2; Zaehler:=Zaehler-1; END_WHILE Erg:=Var1;
Como se puede observar, la programación en el lenguaje ST del bucle secuencial no sólo es más breve, sino también considerablemente más fácil de leer, sobre todo si nos imaginamos bucles secuenciales entrelazados en construcciones de mayor envergadura. Las distintas estructuras en lenguaje ST tienen el siguiente significado: Operador de asignación
En el lado izquierdo de una asignación se encuentra un operando (variable, dirección) al cual se asigna el valor de la expresión del lado derecho junto con el operador de asignación := Ejemplo: Var1 := Var2 * 10; Después de la ejecución de esta línea, Var1 tiene un valor diez veces superior a Var2. Llamada a Bloques de Funciones en el lenguaje ST
Una llamada a un Bloque de Funciones en lenguaje ST se realiza escribiendo el nombre de la instancia del Bloque de Funciones y asignando a continuación, y entre paréntesis, los valores que desee de los parámetros. En el siguiente ejemplo se llama a un temporizador con asignaciones para los parámetros IN y PT. A continuación, se asigna la variable de resultado Q a la variable A. La variable de resultado se activa, como en el lenguaje IL, con el nombre del Bloque de Funciones seguido de un punto y del nombre de la variable:
CMD_TMR(IN := %IX5, PT := 300); A:=CMD_TMR.Q
Bucle secuencial FOR Con el bucle secuencial FOR se pueden programar procesos repetidos. Sintaxis:
INT_Var :INT; FOR := TO {BY } DO END_FOR;
La parte entre llaves {} es opcional. se ejecutará mientras el contador no sea superior a . Esto se comprueba antes de la ejecución de , de modo que no se ejecuta nunca si es superior a . Siempre que se haya ejecutado , aumenta en . El tamaño de paso puede tener cualquier valor entero. Si falta éste, se ajusta a 1. Por lo tanto, el bucle secuencial se tiene que terminar, ya que sólo se hace más grande.
Ejemplo: FOR Zaehler:=1 TO 5 BY 1 DO Var1:=Var1*2; END_FOR; Erg:=Var1; Supongamos que la variable Var1 se haya establecido por defecto con el valor 1; en este caso, después del bucle secuencial FOR, tendrá el valor 32.
Bucle secuencial REPEAT El bucle secuencial REPEAT se distingue de los bucles secuenciales WHILE por el hecho de que la condición de cancelación se comprueba solamente después de la ejecución del bucle secuencial, de modo que el bucle secuencial se ejecuta por lo menos una vez, independientemente de la condición de cancelación. Sintaxis: REPEAT UNTIL END_REPEAT;
se ejecuta hasta que es TRUE. Si es TRUE desde la primera evaluación, se ejecuta exactamente una vez. Si a no se le asigna nunca el valor TRUE, se repite de forma infinita, con lo cual se produce un error de tiempo de funcionamiento. Nota: el programador ha de asegurarse de que no se produzca ningún bucle secuencial infinito y, para ello, tendrá que modificar la condición en la parte de instrucción del bucle secuencial, por ejemplo, aumentando o reduciendo el conteo de un contador. Ejemplo: REPEAT Var1 := Var1*2; Zaehler := Zaehler-1; UNTIL Zaehler=0 END_REPEAT
Bucle secuencial WHILE
El bucle secuencial WHILE se puede utilizar igual que el bucle secuencial FOR, con la diferencia de que la condición de cancelación puede ser cualquier expresión de Bool. Esto significa que se indica una condición que, en caso de cumplirse, produce la ejecución del bucle secuencial. Sintaxis: WHILE DO END_WHILE;
La ejecución de se repite mientras sea TRUE. Si tiene el valor FALSE desde la primera evaluación, no se ejecuta nunca. Si no tiene nunca el valor FALSE, se repite de forma infinita, con lo cual se produce un error de tiempo de funcionamiento. Nota: el programador ha de asegurarse de que no se produzca ningún bucle secuencial infinito y, para ello, tendrá que modificar la condición en la parte de instrucción del bucle secuencial, por ejemplo, aumentando o reduciendo el conteo de un contador. Ejemplo: WHILE Zaehler<>0 DO Var1 := Var1*2; Zaehler := Zaehler-1; END_WHILE Los bucles secuenciales WHILE y REPEAT son, en cierto sentido, más potentes que el bucle secuencial FOR, ya que no es necesario saber antes de la ejecución el número de pasos del bucle secuencial. En ciertos casos, sólo podrá trabajar con estos dos tipos de bucles secuenciales. No obstante, si el número de pasos de bucle secuencial está claro, se dará preferencia a un bucle secuencial FOR, ya que no se permiten los bucles secuenciales infinitos.
Instrucción IF Con la instrucción IF se puede comprobar una condición y ejecutar instrucciones en función de esta condición. Sintaxis: IF THEN {ELSIF THEN . .
ELSIF THEN ELSE } END_IF; La parte entre llaves {} es opcional. Si el valor de < Boolscher_Ausdruck1> es TRUE, sólo se ejecuta , ninguna de las demás instrucciones. De lo contrario, las expresiones de Bool, empezando por < Boolscher_Ausdruck2>, se evalúan sucesivamente hasta que una de las expresiones tenga el valor TRUE. De ese modo, sólo se evalúan las instrucciones que se encuentran detrás de esta expresión de Bool y delante del siguiente ELSE o ELSIF. Si ninguna de las expresiones de Bool tiene el valor TRUE, se evalúa únicamente .
Ejemplo: IF temp<17 THEN heizung_an := TRUE; ELSE heizung_an := FALSE; END_IF; En este caso, la calefacción se enciende cuando la temperatura baja de los 17 grados; de lo contrario permanece apagada.
Instrucción CASE Con la instrucción CASE se pueden reunir varias instrucciones condicionadas con la misma variable de condición en una sola construcción. Sintaxis: CASE OF : : ... : ELSE END_CASE; Una instrucción CASE se ejecuta según el siguiente esquema:
Si la variable en tiene el valor , se ejecuta la instrucción .
Si no tiene ninguno de los valores indicados, se ejecuta .
Si ha de ejecutarse la misma instrucción para varios valores de la misma variable, estos valores se pueden escribir uno tras otro, separados por comas, condicionando así la instrucción común.
Ejemplo: CASE INT1 OF 1, 5: BOOL1 := TRUE; BOOL3 := FALSE; 2: BOOL2 := FALSE; BOOL3 := TRUE; ELSE BOOL1 := NOT BOOL1; BOOL2 := BOOL1 OR BOOL2; END_CASE;
Instrucción RETURN La instrucción RETURN se puede utilizar para terminar una función que, por ejemplo, es dependiente de una condición.
Instrucción EXIT Si la instrucción EXIT se encuentra en un bucle secuencial FOR, WHILE o REPEAT, el bucle secuencial interior se termina, independientemente de la condición de cancelación.
Diagrama secuencial de funciones (SFC) El diagrama secuencial de funciones es un lenguaje orientado a gráficos que permite describir el desarrollo en el tiempo de distintas acciones dentro de un programa. Ejemplo de una red en el diagrama secuencial de funciones:
Paso Un módulo escrito en el diagrama secuencial de funciones se compone de una secuencia de pasos conectados a través de conexiones direccionadas (transiciones). Existen dos clases de pasos:
La forma simplificada se compone de una acción, así como de un flag que indica si el paso está activo. Si la acción de un paso está implementada, aparece un pequeño triángulo en el ángulo superior derecho del paso.
Un paso IEC se compone de un flag y de una o varias acciones asignadas. Las acciones asociadas aparecen a la derecha del paso.
Acción Una acción puede contener una secuencia de instrucciones en lenguaje IL o ST, una cantidad de redes en lenguaje FBD o LD, o una estructura de secuencias (SFC). En los pasos simplificados, una acción está conectada siempre con su paso. Para editar una acción, haga doble clic con el ratón en el paso al cual pertenece la acción, o marque el paso y ejecute el comando de menú 'Herramientas''Zoom acción/transición'. También es posible una acción de entrada y/o salida por paso. Las acciones de pasos IEC se encuentran en
el Object Organizer, directamente debajo del módulo de SFC, y se cargan en el editor haciendo doble clic o pulsando . Es posible generar nuevas acciones con 'Proyecto''Añadir acción'. Acción de entrada / salida A un paso se le puede añadir una acción de paso, una acción de entrada y una acción de salida. Una acción de entrada sólo se ejecuta una vez inmediatamente después de que el paso se haya activado. Una acción de salida sólo se ejecuta una vez antes de que se desactive el paso. Un paso con acción de entrada se marca con una 'E' en el ángulo inferior izquierdo y la acción de salida, con una 'X' en el ángulo inferior derecho. La acción de entrada y de salida se puede implementar en cualquier lenguaje. Para editar una acción de entrada o de salida, haga doble clic con el ratón en el correspondiente ángulo del paso. Una acción de entrada y de salida sólo se puede definir para un paso simplificado, pero no para un paso IEC. Ejemplo de un paso con acción de entrada y de salida:
Transiciones Entre los pasos se encuentran las condiciones denominadas transiciones. Una condición de transición debe tener el valor TRUE o FALSE. De este modo, puede estar formada por una variable booleana, una dirección booleana o una constante booleana. También puede obtener una sucesión de instrucciones con un resultado booleano en sintaxis ST (por ejemplo, (i <= 100) AND b) o puede contener cualquier lenguaje (ver 'Extras' '>Zoom acción / transición'). Pero una transición no puede contener ningún programa, bloque de funciones o asignaciones. Nota: Aparte de transiciones también se puede utilizar el modo de impulso para avanzar al siguiente salto. Consulte SFCtip y SFCtipmode. El paso activo Después de la llamada al Módulo de SFC, se ejecuta primero la acción perteneciente al paso inicial (doblemente enmarcada). Un paso cuya acción se ejecuta se denomina paso activo. Cuando el paso está activo, la correspondiente acción se ejecuta una vez por ciclo. En el modo Online, los pasos activos se representan de color azul. Cada paso tiene asignado un flag que contiene el estado del paso. El flag de paso (estado activo o inactivo del paso) se representa a través del valor lógico de un elemento de estructura de Bool .x. Esta variable de Bool tiene el valor TRUE cuando el correspondiente paso está activo, y FALSE, cuando está inactivo. Esta variable se declara de forma implícita y se puede utilizar en cualquier acción y transición del Módulo de SFC. En un ciclo de PLC se ejecutan todas las acciones que pertenecen a
pasos activos. A continuación, los pasos posteriores a los pasos activos se activan si las condiciones de transición de los siguientes pasos son TRUE. De este modo, Los pasos que están activos se ejecutan tan sólo en el siguiente ciclo. Nota: Si el paso activo contiene una acción de salida, esta acción no se ejecuta hasta el siguiente ciclo, siempre y cuando la transición siguiente sea TRUE. Pasos IEC Aparte de los pasos simplificados, SFC ofrece los pasos IEC conformes a la norma. Para poder utilizar pasos IEC, es preciso integrar en su proyecto la librería SFC especial lecsfc.lib. A cada paso IEC se puede asignar un número ilimitado de acciones. Las acciones de pasos IEC están separadas de los pasos y se pueden utilizar varias veces dentro de su módulo. Para este fin, se tienen que asociar con los distintos pasos mediante el comando 'Herramientas''Asociar acción'. Aparte de acciones, también se pueden asignar variables de Bool a los pasos. A través de los denominados caracteres de determinación (calificadores), las acciones y las variables de Bool se activan y desactivan con retardos parciales. Dado que una acción puede permanecer activa aunque ya se esté ejecutando el siguiente paso debido, por ejemplo, al carácter de determinación S (Set), se pueden conseguir efectos colaterales. Las acciones asociadas a un paso IEC se representan a la derecha del paso en una casilla dividida en dos. El campo izquierdo contiene el calificador, en este caso, con constantes de tiempo, y el derecho, el nombre de la acción. Ejemplo de un paso IEC con dos acciones:
Para facilitar el seguimiento de los procesos, todas las acciones activas en el modo Online, al igual que los pasos activos, se representan de color azul. Después de cada ciclo se comprueba qué acciones están activas. Tenga en cuenta también la limitación en la utilización de calificadores de tiempo en acciones utilizadas varias veces en el mismo ciclo. Nota: Si se desactiva una acción, ésta se vuelve a ejecutar una vez. Esto significa que cada acción se ejecuta como mínimo dos veces (también una acción con el calificador P). Al realizar una llamada primero se ejecutan las acciones desactivadas en orden alfabético y a continuación todas las acciones activas en orden alfabético. Un nuevo paso insertado será un paso IEC si está seleccionado el comando de menú 'Herramientas''Utilizar pasos IEC'. En el Object Organizer, las acciones se encuentran directamente debajo de su correspondiente Módulo de SFC. Con 'Proyecto''Añadir acción' se pueden generar nuevas acciones.
Para asociar las acciones a pasos IEC, están disponibles los siguientes calificadores (caracteres de determinación).
N
Non-stored
la acción permanece activa mientras el paso esté activo
R
overriding Reset
la acción se desactiva
S
Set (Stored)
la acción se activa y permanece así hasta un Reset
L
time Limited
la acción se activa durante un determinado tiempo
D
time Delayed
la acción se activa al cabo de un determinado tiempo si el paso sigue estando activo
P
Pulse
la acción se ejecuta exactamente una vez cuando se activa el paso
SD
DS
SL
Stored and time
la acción se activa al cabo de un determinado tiempo y
Delayed
permanece activa hasta un Reset
Delayed and
la acción se activa al cabo de un determinado tiempo si el paso
Stored
sigue estando activo y permanece activa hasta un Reset
Stored and time
la acción se desactiva durante un determinado tiempo
Limited
Nota: Si la misma acción se utiliza en dos pasos consecutivos con calificadores que afectan el desarrollo temporal, puede ser que en la segunda utilización de la acción el calificador temporal ya no tenga efecto. Para
evitar esto se debe añadir un paso intermedio, de forma que el estado de la acción se pueda volver a inicializar en el ciclo a ejecutar adicionalmente. Variables implícitas en SFC En el SFC hay variables declaradas implícitas que se pueden utilizar. Cada paso tiene asignado un flag que contiene el estado del paso. El flag del paso (estado activo o inactivo del paso) se llama .x en los pasos IEC o sólo en los pasos simplificados. Esta variable booleana tiene el valor TRUE cuando el correspondiente paso está activo, y FALSE, cuando está inactivo. Se puede utilizar en cada acción y transición del módulo SFC. Se puede saber si una acción IEC está activa o no con la variable .x. En los pasos IEC se puede consultar la duración activa de los pasos con la variable implícita .t. También se puede acceder a las variables implícitas desde otros programas. Ejemplo: boolvar1:=sfc.step1.x; step1.x es la variable booleana implícita que representa el estado del paso IEC step1 en el módulo sfc1. Ramo alternativo Dos o más ramos en lenguaje SFC se pueden definir como divergencias de selección de secuencia alternativas. Cada ramo alternativo tiene que empezar y terminar con una transición. Las divergencias de selección de secuencia alternativas pueden contener divergencias de selección de secuencia paralelas y otras divergencias de selección de secuencia alternativas. Una divergencias de selección de secuencia alternativa empieza en una línea horizontal (inicio de alternativa) y termina en una línea horizontal (fin de alternativa) o con un salto. Si el paso previo a la línea de inicio de alternativa está activo, se evalúa la primera transición de cada divergencia de selección de secuencia alternativa desde la izquierda hacia la derecha. Se abre la primera transición desde la izquierda cuya condición de transición tenga el valor TRUE y se activan los siguientes pasos (ver Paso activo).
Ramo paralelo Dos o más divergencias de selección de secuencia en lenguaje SFC se pueden definir como divergencias de selección de secuencia paralelas. Cada ramo paralelo tiene que empezar y terminar con un paso. Las divergencias de selección de secuencia paralelas pueden contener divergencias de selección de secuencia alternativas u otras divergencias de selección de secuencia paralelas. Una divergencia de selección de secuencia paralela empieza en una línea doble (inicio de paralelo) y termina en una línea doble (fin de paralelo) o con un salto. Si el paso previo a la línea de inicio de paralelo está activo y la condición de transición que hay después de este paso tiene el valor TRUE, se activan los primeros pasos de todas las divergencias de selección de secuencia paralelas (ver Paso activo). Entonces, todos estos ramos se ejecutan paralelamente. El paso después de la línea de fin de paralelo se activa si todos los pasos previos están activos y la condición de transición anterior a este paso suministra el valor TRUE. Salto
Un salto es una conexión hacia el paso cuyo nombre se indica debajo del símbolo de salto. Los saltos son necesarios porque no está permitido crear conexiones hacia arriba o entrecruzadas.
Diagrama de bloques funcionales (FBD) El diagrama de bloques funcionales es un lenguaje de programación orientado a gráficos. Trabaja con una lista de redes, cada una de las cuales contiene una estructura que representa una expresión lógica o aritmética, la llamada a un Bloque de Funciones, un salto o una instrucción Return. A continuación, se indica un ejemplo de una red en el diagrama de bloques funcionales como se presentaría habitualmente en TwinCAT PLC Control:
El editor gráfico de planos de funciones (CFC) El editor gráfico de planos de funciones no trabaja como el plano de funciones FBD con redes, sino con elementos que se pueden colocar donde se desee. Esto permite, por ejemplo, retroacoplamientos. Un ejemplo para una red en un editor gráfico de planos de funciones podría tener el siguiente aspecto:
Plano de contactos (LD) El plano de contactos es, asimismo, un lenguaje de programación orientado a gráficos, cuyo fundamento se asemeja al principio sobre el que se basa un circuito eléctrico. Por un lado, el plano de contactos es apto para construir circuitos secuenciales lógicos; por otro lado, también permite construir redes como en lenguaje FBD. Por esta razón, el lenguaje LD resulta muy útil para controlar la llamada a otros Módulos. El plano de contactos se compone de una secuencia de redes. Una red se limita en los lados izquierdo y derecho con una línea de corriente vertical izquierda y derecha. Entre ellas se encuentra un esquema de conexiones compuesto de contactos, bobinas y líneas de conexión. El lado izquierdo de cada red está formado por una secuencia de contactos que transmiten de izquierda a derecha el estado "ON" u "OFF"; estos estados corresponden a los valores de Bool TRUE y FALSE. A cada contacto le corresponde una variable de Bool. Si
esta variable es TRUE, el estado se transmite a través de la línea de conexión de izquierda a derecha; de lo contrario, la conexión derecha recibe el valor OFF. Ejemplo de una red en el plano de contactos como se presentaría habitualmente en TwinCAT PLC Control:
Contacto El lado izquierdo de cada red en lenguaje LD está compuesto por una red de contactos (los contactos se representan con dos líneas paralelas: | |) que transmiten de izquierda a derecha el estado "ON" u "OFF". Estos estados corresponden a los valores de Bool TRUE y FALSE. A cada contacto le corresponde una variable de Bool. Si esta variable es TRUE, el estado se transmite a través de la línea de conexión de izquierda a derecha; de lo contrario, la conexión derecha recibe el valor "OFF". Los contactos pueden estar conectados en paralelo, de modo que uno de los ramos paralelos ha de proporcionar el valor "ON" para que la divergencia de selección de secuencia paralela tenga el valor "ON"; los contactos también pueden estar conectados en serie, de forma que han de tener el valor "ON" para que el último contacto proporcione el estado "ON". Por lo tanto, esto se corresponde con una conexión eléctrica paralela o en serie. Un contacto puede estar negado, lo cual se reconoce por la barra en el símbolo de contacto: |/|. En este caso, el valor de la línea se transmite si la variable es FALSE.
Bobina En el lado derecho de una red en lenguaje LD se encuentra un número cualquiera de bobinas representadas por paréntesis:( ). ßstas sólo se pueden conectar en paralelo. Una bobina transmite el valor de las conexiones de izquierda a derecha y lo copia en la variable de Bool correspondiente. En la línea de entrada puede existir el valor ON (corresponde a la variable de Bool TRUE) o el valor OFF (corresponde, en consecuencia, a FALSE). Los contactos y las bobinas también se pueden negar (en el ejemplo, el contacto SCHALT1 y la bobina %QX3.0 están negados). Si una bobina está negada (se reconoce por la barra situada en el símbolo de la bobina: (/)), copia el valor negado en la correspondiente variable de Bool. Si un contacto está negado, sólo realiza la conexión cuando la correspondiente variable de Bool es FALSE.
Bloques de Funciones en el plano de contactos Aparte de contactos y bobinas, también puede introducir Bloques de Funciones y programas; éstos deben tener en la red una entrada y una salida con valores de Bool y se pueden utilizar en las mismas posiciones que los contactos, es decir, en el lado izquierdo de la red LD.
Bobinas Set/Reset Las bobinas se pueden definir también como bobinas Set o Reset. Una bobina set (se reconoce por la 'S' del símbolo de bobina: (S)) no sobrescribe nunca el valor TRUE en la correspondiente variable de Bool; es decir, una vez que la variable se haya ajustado en TRUE, permanece invariable. Una bobina Reset (se reconoce por la 'R' del símbolo de bobina: (R)) no sobrescribe nunca el valor FALSE en la correspondiente variable de Bool: una vez que la variable se haya ajustado en FALSE, permanece sin alterar. LD como FBD Al trabajar con el lenguaje LD, es posible que desee utilizar el resultado del circuito de contactos para el control de otros Módulos. En este caso, con la ayuda de bobinas, puede guardar el resultado en una variable global que se volverá a utilizar en otro punto. Asimismo, puede incorporar la eventual llamada directamente en su red de lenguaje LD. Para este fin, introduzca un módulo con entrada EN. Estos módulos son operandos, Funciones, Programas o Bloques de Funciones totalmente normales que tienen una entrada EN adicional. La entrada EN es siempre del tipo BOOL e implica que el Módulo con entrada EN sólo se evalúa si EN tiene el valor TRUE. Para que un Módulo EN se conecte en paralelo con las bobinas, la entrada EN se conecta con la línea de conexión entre los contactos y la bobinas. Si a través de esta línea se transporta la información ON, este Módulo se evalúa de forma totalmente normal. Partiendo de este tipo de Módulo EN, se pueden crear redes como en FBD. Parte de una red de lenguaje LD con un módulo EN
Debug Sampling Trace
El Sampling Trace ofrece la posibilidad de registrar el desarrollo de valores de variables en función del denominado suceso de trigger. ßste es el flanco ascendente o descendente de una variable de Bool definida previamente (de la variable de trigger). TwinCAT PLC Control permite el registro de hasta 20 variables. Está disponible una memoria anular de 64 kB.
Debugging Las funciones de Debug de TwinCAT PLC Control le facilitan la localización de errores. Breakpoint Un breakpoint es un punto en el programa donde se detiene la ejecución. De esta forma es posible examinar los valores de variables en un determinado punto del programa. Los breakpoints se pueden establecer en todos los editores. En los editores de texto, los breakpoints se colocan en números de línea, en FBD y LD en números de red y en SFC en pasos.
Paso único Paso único significa:
en lenguaje IL: Ejecución del programa hasta el siguiente comando CAL, LD o JMP.
en lenguaje ST: Ejecución de la siguiente instrucción.
en los lenguajes FBD, LD: Ejecución de la siguiente red
en lenguaje SFC: Ejecución de la acción para el siguiente paso.
La ejecución paso a paso le permite comprobar la corrección lógica de su programa.
Ciclo individual Si está seleccionado Ciclo individual, la ejecución se detiene después de cada ciclo. Modificar valores en línea En el funcionamiento continuo, las variables se pueden establecer una vez en un determinado valor (escribir valor) o volver a escribir después de cada ciclo con un determinado valor (forzar).
Monitorización Para las declaraciones de variables visibles en pantalla se leen y se representan en permanencia los valores actuales del PLC. TwinCAT PLC Control monitoriza en el modo en línea todas las variables visibles en
pantalla. Además, se pueden combinar en el visor de variables y de fórmulas unas variables cuyos datos se desean ver en un solo vistazo.
Simulación En la simulación, el programa de PLC creado no se ejecuta en el PLC, sino en el ordenador en el cual funciona también TwinCAT PLC Control. Están disponibles todas las funciones en línea. De este modo, tiene la posibilidad de comprobar la corrección lógica de su programa sin hardware de PLC. La simulación sólo está disponible si ha seleccionado en la configuración PLC el PLC de bornes BCxx00 (generación de códigos 80C165). Con el PLC en el PC (generación de códigos i386), la simulación se realiza directamente en el sistema de tiempo de funcionamiento, sin necesidad de E/A.
IEC 61131-3 La norma IEC 61131-3 es un estándar internacional para lenguajes de programación para PLC. Los lenguajes de programación realizados en TwinCAT PLC Control cumplen los requisitos de la norma. De acuerdo con este estándar, un programa se compone de los siguientes elementos:
Estructuras
Módulos
Variables globales
Literature related to IEC 61131-3:
Flavio Bonifatti et al.: IEC 1131-3 Programming Methology, Seyssins: CJ International, 1997. ISBN 29511585-0-5
Karl-Heinz John, Michael Tiegelkamp: Iec 61131-3 Programming Industrial Automation Systems, Berlin: Springer-Verlag, 2001. ISBN 3-540677526
R. W. Lewis: Programming industrial control systems using IEC 1131-3, London: IEC Publishing, 1998. ISBN 0 85296 950 3
Ejemplo El ejemplo de programa servirá para el control de un mini-sistema de semáforos con dos semáforos de tráfico en un cruce. Los dos semáforos alternarán sus fases de rojo/verde, y para evitar accidentes, entre dichas fases se deberán prever también, unas fases de amarillo o de conmutación amarillo/rojo. ßstas últimas tendrán una duración más corta que las primeras. En este ejemplo verá cómo se pueden representar
programas dependientes del tiempo con los medios de lenguaje de IEC61131-3, cómo se editan con la ayuda de TwinCAT PLC Control los distintos lenguajes de la norma y cómo se pueden combinar sin problemas. Crear Módulos Inicie primero TwinCAT PLC Control y seleccione 'Archivo' 'Nuevo'. Como nombre de tarea se propone 'Estándar'. El primer Módulo deberá llamarse PLC_PRG. Para nuestro caso elegimos como lenguaje de este Módulo el Diagrama secuencial de funciones (SFC). Cree ahora dos objetos más con el comando 'Proyecto' 'Objeto' 'Insertar' de la barra de menú o del menú de contexto (pulsar con el botón derecho del ratón en el Object Organizer): un Bloque de Funciones en el lenguaje Diagrama de bloques funcionales (FBD) llamado AMPE y un Módulo WARTEN, igualmente del tipo Bloque de Funciones, que programaremos como lista de instrucciones
(IL).
En el Módulo AMPEL, asignaremos las distintas fases del semáforo a sus luces, de modo que la lámpara roja se encienda en la fase roja y en la fase amarilla/roja, la lámpara amarilla en la fase amarilla y amarilla/roja, etc. En WARTEN programaremos un sencillo temporizador que recibirá como entrada la duración de la fase en milisegundos
y
suministrará
como
salida
TRUE
cuando
haya
finalizado
el
tiempo.
Finalmente, PLC_PRG lo conectará todo, de modo que la luz correcta del semáforo se encienda en el momento adecuado durante el intervalo de tiempo correcto.
En el editor de declaraciones se declara como variable de entrada (entre las palabras clave VAR_INPUT y END_VAR) una variable llamada STATUS del tipo INT. STATUS dispondrá de cinco estados posibles, concretamente uno para cada fase de semáforo: verde, amarilla, amarillo-roja, roja y apagado. En consecuencia, nuestro semáforo tiene cuatro salidas: ROT, GELB, GRUEN y AUS (en las variables no se aceptan vocales con diéresis). Declare estas cuatro variables y observe que la parte de declaración de nuestro Bloque de Funciones AMPEL se presenta como sigue:
Parte de declaración del Bloque de Funciones AMPEL
Ahora se trata de determinar, a partir de la entrada STATUS del Módulo, los valores de las variables de salida. Para este fin, acceda a la parte de programa del Módulo. Haga clic en el campo de la izquierda de la primera red (el campo gris con el número 1). Acaba de seleccionar la primera red. A continuación, seleccione el comando de menú 'Insertar' 'Operador'. En la primera red se inserta una caja con el operador AND y dos entradas:
Haga clic en el texto AND con el puntero del ratón y reemplace el texto por EQ. Seleccione los tres interrogantes de la entrada superior e introduzca la variable STATUS. A continuación, seleccione los tres interrogantes inferiores y sobrescríbalos con un 1. Se obtiene la siguiente red:
Seguidamente, haga clic en un punto detrás de la caja EQ. De este modo, se selecciona la salida de la operación EQ. Seleccione 'Insertar' 'Asignación'. Cambie los tres interrogantes ??? por GRUEN. Ahora ha creado una red con el siguiente aspecto:
STATUS se compara con 1 y el resultado se asigna a GRUEN. Por lo tanto, esta red conmuta a GRUEN cuando el valor de estado especificado es 1. Para los demás colores del semáforo y para OFF necesitamos tres redes más, que se generarán con el comando 'Insertar' 'Red (posterior)'. Estas redes deberán crearse como en el ejemplo. El Módulo terminado se presenta como sigue:
Para insertar un operador delante de otro operador, tiene que seleccionar el punto donde la entrada a la que desea anexar el operador desemboca en la caja. A continuación, ejecute el comando 'Insertar' 'Operador'. Por lo demás, puede seguir creando estas redes de la misma manera que se utilizó para la primera red. Una vez terminado el primer Módulo, AMPEL controla el color de semáforo deseado para cada caso según la entrada del valor STATUS. Para el temporizador del Módulo WARTEN necesitamos un Módulo de la librería estándar. A este fin, abra el administrador de librerías con 'Ventana' 'Administrador de librerías'. Seleccione 'Insertar' 'Librería adicional' para que aparezca el diálogo de apertura de archivos. Seleccione standard.lib en la lista de librerías. Pasemos ahora al Módulo WARTEN. ßste se convertirá en un temporizador con el cual podemos indicar la duración de cada fase de semáforo. Nuestro Módulo recibe como variable de entrada una variable ZEIT del tipo TIME y suministra como salida un valor de Bool que denominaremos OK y que deberá ser TRUE cuando
haya finalizado el tiempo deseado. Este valor por defecto cambiará a FALSE si se inserta al final de la declaración (pero antes del punto y coma)" := FALSE ". Para nuestros fines necesitamos el Módulo TP: un transmisor de impulsos que tiene dos entradas (IN, PT) y dos salidas (Q, ET). TP hace lo siguiente: mientras IN sea FALSE, ET será 0 y Q, FALSE. Cuando IN suministra el valor TRUE, en la salida ET el tiempo se cuenta en milisegundos. Cuando ET alcanza el valor PT, no se sigue contando. Mientras ET sea menor que PT, Q seguirá teniendo el valor TRUE. Una vez alcanzado el valor PT, Q vuelve a ser FALSE. Si desea obtener más información, en el Apéndice encontrará una descripción resumida de todos los Módulos de la librería estándar. Para poder utilizar el Módulo TP en el Módulo WARTEN, tenemos que crear una instancia local de TP. Para este fin, declaramos una variable local ZAB (para Tiempo terminado) del tipo TP (entre las palabras clave VAR, END_VAR). De este modo, la parte de declaración de WARTEN se presenta como sigue:
Parte de declaración del Bloque de Funciones WARTEN Para realizar el temporizador que desea, la parte de programa del Módulo se tiene que programar como sigue:
Parte de instrucciones del Bloque de Funciones WARTEN Primero se pregunta si Q ya está ajustado en TRUE (es decir, si ya se está contando). En este caso no cambiamos nada en la ubicación de ZAB, sino que llamamos al Bloque de Funciones ZAB sin entrada (para comprobar si el tiempo ya ha finalizado). De lo contrario ajustamos la variable IN de ZAB en FALSE y, con ello, ET en 0 y Q, en FALSE. De este modo, todas las variables están ajustadas según el estado inicial deseado. Ahora guardamos el tiempo necesario de la variable ZEIT en la variable PT y llamamos a ZAB con IN:=TRUE. En el Bloque de Funciones ZAB se cuenta la variable ET hasta que alcance el valor ZEIT y, a continuación, Q cambia a FALSE. El valor negado de Q se guarda después de cada pasada de WARTEN con el valor OK. Por lo tanto, en cuanto Q sea FALSE, OK suministra TRUE. Con esto, el temporizador está terminado. Ahora se trata de reunir los dos Bloques de Funciones WARTEN y AMPEL en el programa principal PLC_PRG. Primero declaramos las variables que necesitamos. Se trata de dos instancias del Bloque de Funciones AMPEL (AMPEL1, AMPEL2) y una del tipo WARTEN (VERZ como "Verzögerung" = retardo). Entonces, PLC_PRG se presenta como sigue:
Primer nivel de ampliación de la parte de declaración del programa PLC_PRG
El diagrama inicial de un Módulo en SFC se compone siempre de una acción "Init", una transición "Trans0" posterior y un salto de vuelta a Init, pero será preciso ampliarlo un poco. Establecemos primero la estructura del diagrama antes de programar las distintas acciones y transiciones. Para comenzar, necesitaremos un paso para cada fase de semáforo. Insértelo marcando Trans0 y seleccionando 'Insertar' 'Paso de transición (posterior)'. Repita este proceso tres veces más. Si hace clic directamente en el nombre de una transición o un paso, éste se marca y es posible modificarlo. Nombre a la primera transición después de Init "TRUE" y a todas las demás transiciones "VERZ.OK". De este modo, la primera transición siempre realiza la conexión y
las demás lo hacen cuando VERZ ajustado en OK emite TRUE, es decir, cuando ha transcurrido el tiempo introducido. Los pasos reciben (de arriba a abajo) los nombres Schalt1, Gruen2, Schalt2, Gruen1 y, naturalmente, Init conserva su nombre. "Schalt" corresponde cada vez a una fase de amarillo; con Gruen1, AMPEL1 será verde y con Gruen2, lo será AMPEL2. Finalmente, modifique la dirección de salto de Init a Schalt01. Si ha hecho todo correctamente, deberá aparecer el siguiente diagrama:
Primer nivel de ampliación de la parte de instrucciones del programa PLC_PRG
Es preciso programar los distintos pasos. Si hace doble clic en el campo de un paso, se abre un diálogo para realizar una nueva acción. En nuestro caso, siempre utilizaremos el lenguaje IL (Lista de instrucciones).
Acciones y condiciones de transición Las variables se inicializan en la acción para el paso Init; STATUS de AMPEL1 debería ser 1 (verde). El estado de AMPEL2 debería ser 3 (rojo). La acción Init aparecería de la siguiente forma:
Acción Init
Con Schalt1, el STATUS de AMPEL1 cambia a 2 (amarillo) y el de AMPEL2, a 4 (amarillo-rojo). Además, se establece un retardo de 2000 milisegundos. Ahora, la acción se presenta como sigue:
Acción Schalt1
Con Gruen2, AMPEL1 está rojo (STATUS:=3), AMPEL2 está verde (STATUS:=1) y el retardo se encuentra en 5000.
Acción Gruen2
Con Schalt2, el STATUS de AMPEL1 cambia a 4 (amarillo-rojo) y el de AMPEL2, a 2 (amarillo). En este caso, se fija un retardo de 2000 milisegundos.
Acción Schalt2
Con Gruen1, AMPEL1 está verde (STATUS:=1), AMPEL2 está rojo (STATUS:=3) y el retardo se ajusta en 5000.
Acción Gruen1
Con esto se termina la primera fase de ampliación de nuestro programa. Seguidamente, lo puede compilar y verificar en la simulación.
Para que nuestro diagrama tenga por lo menos una divergencia de selección de secuencia alternativa y para que podamos desconectar nuestro sistema de semáforos durante la noche, incorporaremos en nuestro programa un contador que desconecte el sistema transcurrido un determinado número de ciclos de semáforo. Para ello, primero necesitamos una nueva variable ZAEHLER del tipo INT. Declárela como en la parte de declaración de PLC_PRG e inicialícela en Init con 0.
Segunda versión de la acción Init
Marque ahora la transición hacia Conmut1 e inserte un paso y una transición después. Marque la nueva transición creada e inserte una divergencia de selección de secuencia alternativa a su izquierda y, tras ésta,
un paso y una transición. Después de la nueva transición creada, inserte un salto hacia Schalt1. Asigne los siguientes nombres a las nuevas partes creadas: "Zählen" para el paso superior y "Aus" para el inferior. Las transiciones se llaman (de arriba a abajo y de izquierda a derecha) BEENDEN, TRUE y VERZ.OK. La nueva parte creada deberá aparecer como la parte incluida en el recuadro negro:
Sistema de semáforos Existen dos nuevas acciones y una nueva condición de transición para implementar. En el paso de conteo sólo se produce el aumento en uno de ZAEHLER
La transición BEENDEN comprueba si el contador es mayor que un determinado número, como por ejemplo, 7:
Con "Aus", el estado de ambos semáforos se ajusta en 5 (AUS), ZAEHLER se pone a 0 y se establece un retardo de 10 segundos:
En la ciudad donde se encuentra el semáforo se hace de noche transcurridos siete ciclos de semáforo, el semáforo se desconecta durante diez segundos, vuelve a amanecer, el sistema de semáforos se vuelve a conectar y todo empieza de nuevo desde el principio. Compruebe ahora su programa. Para ello, deberá compilarlo ('Proyecto' 'Compilar todo') y cargarlo ('En línea' 'Iniciar sesión' y, a continuación, 'En línea' 'Cargar'). Si ejecuta 'En línea' 'Inicio', puede realizar un seguimiento del desarrollo en el tiempo de los distintos pasos de su programa principal. La ventana del Módulo PLC_PRG se ha convertido en ventana de monitor. Si hace doble clic en el signo Más del editor de declaraciones, se despliega la representación de variables y se pueden observar los valores de las distintas variables.
Ventana principal
Los siguientes elementos se encuentran en la ventana principal de TwinCAT PLC Control (de arriba a abajo):
la barra de menús
la barra de funciones (opcional) con botones para ejecutar con mayor rapidez los comandos de menú
el Object Organizer con fichas para módulos, tipos de datos y recursos
una división de pantalla vertical entre el Object Organizer y el área de trabajo de TwinCAT PLC Control
el área de trabajo donde se encuentran las ventanas del editor
la ventana de mensajes (opcional)
la barra de estado (opcional) con información sobre el estado actual del proyecto
Barra de menús
La barra de menús se encuentra en el borde superior de la ventana principal y contiene todos los comandos de menú.
Barra de funciones Haciendo clic con el ratón en un símbolo, la barra de funciones permite seleccionar con mayor rapidez un comando de menú. La selección de los símbolos disponibles se adapta automáticamente a la ventana activa. El comando sólo se ejecuta si el botón del ratón se pulsa y se vuelve a soltar encima del símbolo. Si mantiene el puntero del ratón durante un breve intervalo de tiempo sobre un símbolo de la barra de funciones, el nombre del símbolo se muestra en el recuadro de ayuda emergente (Tooltip). La visualización de la barra de funciones es opcional (ver 'Proyecto' 'Opciones' Categoría Área de trabajo).
Object Organizer El Object Organizer se encuentra siempre en el lado izquierdo de TwinCAT PLC Control y debajo hallará tres fichas con símbolos para los tres tipos de objetos: Módulos, declaraciones de datos y recursos. Para pasar de un tipo de objeto a otro, haga clic con el ratón en la correspondiente ficha o utilice la flecha de dirección izquierda o derecha. La forma de trabajar con los objetos en el Object Organizer se explica en el capítulo objetos.
Object Organizer
División de pantalla La división de pantalla es el límite entre dos ventanas no solapadas. En TwinCAT PLC Control existe una división de pantalla entre el Object Organizer y el área de trabajo de la ventana principal, entre la interfaz
(parte de declaración) y la implementación (parte de instrucción) de módulos y entre el área de trabajo y la ventana de mensajes. Si coloca el puntero del ratón en la división de pantalla, podrá desplazarla moviendo el ratón con el botón izquierdo pulsado. Tenga en cuenta que la división de pantalla permanece siempre en su posición absoluta aunque se modifique el tamaño de la ventana. Si la división de pantalla parece haber desaparecido, basta con ampliar la ventana para recuperarla. Área de trabajo El área de trabajo se encuentra en el lado derecho en la ventana principal de TwinCAT PLC Control. Todos los editores para objetos y la administración de librerías se abren en este área. La descripción de los editores se encuentra en el capítulo 'Los editores' en TwinCAT PLC Control. Bajo 'Ventana' se encuentran todos los comandos para la administración de ventanas.
Ventana de mensajes La ventana de mensajes, separada por una división de pantalla, se encuentra debajo del área de trabajo de la ventana principal. Contiene todos los mensajes del último proceso de compilación, comprobación o comparación. Si hace doble clic con el ratón en un mensaje de la ventana de mensajes o pulsa , el editor se abre con el objeto y la línea afectada del objeto aparece marcada. Con los comandos 'Edición' 'Siguiente error' y 'Edición' 'Error anterior' se puede conmutar rápidamente entre los mensajes de error. La visualización de la ventana de mensajes es opcional (ver 'Ventana' 'Mensajes').
Barra de estado La barra de estado, situada debajo del marco de la ventana principal de TwinCAT PLC Control, muestra información sobre el proyecto actual y sobre los comandos de menú. Si una indicación es cierta, el concepto aparece en negro a la derecha de la barra de estado; de lo contrario, se muestra en gris. Si trabaja en el modo Online, el concepto también aparece Online en negro; si, en cambio, trabaja en el modo Offline, éste se muestra en gris. Cuando está activado el modo Online, en la barra de estado puede ver si se encuentra en la simulación (SIM), si se está ejecutando el programa (LÄUFT), si se ha establecido un breakpoint (BP) y si se fuerzan variables (FORCE). En los editores de texto se indica el número de línea y de columna de la posición actual del cursor (por ejemplo, Lín.:5, Col.:11). Si ha seleccionado un comando de menú, pero todavía no lo ha confirmado, aparece una breve descripción en la barra de estado. La visualización de la barra de estado es opcional (ver 'Proyecto' 'Opciones' categoría Área de trabajo).
Menú de contexto. Acceso directo: + En lugar de utilizar la barra de menús para ejecutar un comando, puede utilizar el botón derecho del ratón. El menú que se muestra contiene los comandos más frecuentes para un objeto marcado o para el editor activo. La selección de los comandos disponibles se adapta automáticamente a la ventana activa.
Proyectos Los comandos que se refieren a un proyecto entero se encuentran bajo los menús 'Archivo' y 'Proyecto'. Algunos de los comandos bajo 'Proyecto' funcionan con objetos, y se describen en el capítulo de Objetos. Entradas bajo el punto de menú Archivo: 'Archivo''Nuevo' Mediante este comando se crea un proyecto vacío con el nombre 'Desconocido'. Este nombre se tiene que modificar a fin de guardar el proyecto.
'Archivo' 'Abrir' Con este comando se abre un proyecto existente. Si ya existe un proyecto abierto que se ha modificado, TwinCAT PLC Control solicita confirmación para guardarlo. A continuación, se muestra el diálogo de apertura de archivos donde deberá seleccionar un archivo de proyecto con la extensión "*.pro" o un archivo de biblioteca con la extensión "*.lib". Para abrir un archivo, es preciso que dicho archivo ya esté creado, ya que el comando 'Abrir' no permite la creación de proyectos. Para cargar un archivo de proyecto de un mando, pulse el botón PLC en Abrir proyecto de mando. Si no existe ninguna conexión con el mando, se abrirá el diálogo Configuración de PLC para seleccionar el tiempo de ejecución. Si se ha creado una conexión online, se comprueba si existen archivos de proyecto del mismo nombre en el directorio de su ordenador. Si esto es así, se abrirá el diálogo Cargar proyecto del mando, en el cual puede decidir si los archivos locales se deben sustituir por los utilizados en el mando. (Esta operación corresponde inversamente a la operación 'Online' 'Cargar código fuente', con la cual el archivo fuente del proyecto se guarda en el mando. No confundir con 'Crear proyecto de arranque' !) Nota: Tenga en cuenta que tras cargar un proyecto éste todavía no tiene nombre. Deberá guardarlo con un nuevo nombre. Si todavía no hay ningún proyecto cargado en el mando, aparecerá el correspondiente mensaje de error.
Diálogo estándar para abrir un archivo en TwinCAT PLC Control Debajo del comando 'Archivo' 'Salir' está listados los últimos proyectos abiertos. Si selecciona uno de ellos, el proyecto en cuestión se abre. Si se han definido contraseñas o grupos de trabajo para el proyecto, aparece un diálogo para la introducción de la contraseña.
'Archivo' 'Cerrar' Con este comando se cierra el proyecto actualmente abierto. Si el proyecto se ha modificado, TwinCAT PLC Control solicita confirmación para guardar los cambios. Si el nombre del proyecto es "Desconocido", habrá que definir otro nombre (ver 'Archivo''Guardar como'). 'Archivo''Guardar' Forma abreviada: + Con este comando se guarda el proyecto modificado. Si el nombre del proyecto es "Desconocido", habrá que definir otro nombre (ver 'Archivo''Guardar como').
'Archivo''Guardar como' Con este comando, el proyecto actual se puede guardar en otro archivo, o como biblioteca. El archivo de proyecto original permanece inalterado. Después de seleccionar el comando, se muestra el diálogo de almacenamiento. Seleccione un nombre de archivo existente o introduzca uno nuevo y seleccione el tipo de archivo deseado.
Diálogo para 'Guardar como' Asimismo, es posible guardar el proyecto actual como biblioteca para utilizarlo en otros proyectos. Seleccione el tipo de archivo Biblioteca interna (*.lib) si ha programado los módulos en TwinCAT PLC Control. Seleccione el tipo de archivo Biblioteca Externa (*.lib) si ha implementado módulos en otros lenguajes de programación (p.ej. C) y los desea incluir. De este modo, se guarda un segundo archivo con el nombre de archivo de la biblioteca, pero con la extensión "*.h". Este archivo se ha estructurado como archivo C-Header y contiene las declaraciones de todos los módulos, tipos de datos y variables globales. A continuación, haga clic en Aceptar. El proyecto actual se guarda en el archivo indicado. Si el nuevo nombre de archivo especificado ya existe, recibirá confirmación para sobrescribir el archivo. Al 'Guardar como biblioteca' se compila todo el proyecto. Si aparece un error de compilación el proyecto no se guarda como biblioteca y aparece la nota correspondiente.
'Archivo' 'Guardar/enviar archivo...' Con este comando se puede crear un archivo zip comprimido que contiene todos los archivos relevantes para un proyecto. El archivo zip puede guardarse en el sistema de archivos o enviarse directamente en un correo electrónico. Tras ejecutar el comando se abre el diálogo 'Guardar archivo':
Aquí se define qué categorías de archivos se deben añadir al archivo de proyecto. Una categoría se considera seleccionada si la correspondiente casilla de control tiene un símbolo de corrección. Esto se consigue haciendo clic con el ratón una sola vez sobre la casilla o haciendo doble clic sobre la descripción de la categoría. Para cada categoría seleccionada se copian todos los archivos relevantes en el archivo zip (ver más abajo, tabla). Sin embargo, para algunas categorías se puede especificar una selección parcial. Para ello está disponible el diálogo 'Detalles', que se abre mediante el correspondiente botón de Detalles:
El diálogo Detalles muestra una lista de todos los archivos disponibles en esta categoría. Active o desactive los archivos deseados: con los botones Seleccionar todo o No seleccionar nada puede coger todos los
archivos de la lista, con un clic sobre la casilla de control se activa o desactiva un archivo individual, al igual que haciendo doble clic sobre la entrada. Además, pulsando la tecla se puede (des)activar una entrada marcada. Si el diálogo de Detalles se cierra con Aceptar, se transfiere la selección realizada. La configuración se guarda hasta la creación definitiva del archivo zip. En el diálogo principal Guardar archivo se reconocen las categorías para las cuales se ha realizado una selección parcial, en el fondo gris de la casilla de control. La siguiente tabla muestra qué categorías de archivo se han predefinido y a qué archivos se refieren automáticamente:
Categoría
Archivos correspondientes
Archivo de proyecto
.pro (el archivo de proyecto TwinCAT PLC Control)
Bibliotecas referenciadas
*.lib, *.obj, *.hex (bibliotecas y, en su caso, los archivos correspondientes obj y hex)
Información de compilación
*.ci (información del último proceso de compilación), *.ri (información del último download)
Archivo INI
TwinCAT PLC Ctrl.ini
Entradas de registro
Archivos de símbolos
*.sdb, *.sym (Información de símbolos creada en el proyecto)
Registro
*.log (Registro de proyecto)
Archivos de mapa de bits
*.bmp (mapas de bits que se utilizan en los módulos del proyecto)
Para añadir todos los archivos que se desee a un archivo zip, abra el diálogo del mismo nombre con el botón Otros archivos....
Aquí se puede crear la lista de archivos definida por el usuario. Mediante el botón Agregar se abre el diálogo estándar para abrir un archivo. Seleccione un archivo y confirme con Abrir. El archivo se añade en la lista en el diálogo 'Otros archivos...'. Con el botón Quitar se puede borrar una entrada de la lista. Si la lista ya está creada, el diálogo se cierra con Aceptar para guardar las entradas hasta la creación del archivo zip. Para agregar un archivo Readme al archivo zip, pulse el botón Comentario....Se abre un diálogo con el mismo nombre que contiene un campo de edición. Aquí se pueden introducir todos los tests que desee. Si el diálogo se cierra con Aceptar, durante la creación del archivo zip se crea un archivo Readme.txt. Este archivo contiene el texto introducido por el usuario, al cual se añade automáticamente la fecha (build) de creación. Generación del archivo zip: Si se han realizado todas las parametrizaciones deseadas, se puede crear el archivo zip en el diálogo principal. Están disponibles los siguientes botones:
Guardar... crea y guarda el archivo zip. El diálogo estándar para guardar un archivo se abre y se puede indicar dónde se debe guardar el archivo. El nombre del archivo zip por defecto es .zip. Si se confirma con Guardar, se inicia la generación del archivo. El proceso va acompañado de un diálogo de progresos y se protocoliza en la ventana del mensaje.
Enviar… crea un archivo zip temporal y genera automáticamente un correo electrónico vacío que contiene el zip como documento adjunto. Esta función presupone una instalación correcta del MAPI (Messaging Application Programming Interface). Mientras se crea el correo electrónico aparece un diálogo de progresos y el proceso se protocoliza en la ventana del mensaje. El archivo zip temporal se borra en cuanto se añade al correo electrónico como documento adjunto.
Cancelar: El diálogo se cierra sin crear un archivo zip, y la configuración realizada no se guarda.
'Archivo''Imprimir' Forma abreviada: +
Con este comando se imprime el contenido de la ventana activa. Después de seleccionar el comando, aparece el diálogo para imprimir. Seleccione la opción que desee o configure la impresora y haga clic en Aceptar. La ventana activa se imprime. Es posible imprimir en color en todos los editores.
Diálogo para imprimir Es posible indicar el número de ejemplares, así como imprimir a un archivo. Con el botón Propiedades se abre el diálogo para la configuración de impresión. El diseño (Layout) de la impresión se puede establecer con el comando 'Archivo''Configuración documentación'. Durante la impresión, se muestra un cuadro de diálogo con el número de páginas impresas. Si cierra este cuadro de diálogo, el proceso de impresión se detiene después de la siguiente página. Para documentar todo el proyecto, utilice el comando 'Proyecto''Documentar'. Si desea crear una plantilla para el proyecto, abra una lista de variables global y utilice el comando 'Herramientas' 'Crear plantilla'. Si el enfoque está en la ventana del mensaje, se imprime todo su contenido línea a línea tal y como está representado en la ventana. Contenido posible:
Edición de la compilación,
Lista de referencias cruzadas,
Resultado de la búsqueda,
Resultado de la comparación,
Protocolización en proceso por lotes.
'Archivo''Ajustes documentación' Con este comando se puede establecer el diseño de las páginas impresas. Se abre el siguiente diálogo:
Diálogo para el ajuste del layout de página de la documentación
En el campo Archivo puede introducir el nombre del archivo con la extensión ".dfr" en el cual se guardará el layout de página. Por defecto, la plantilla se guarda en el archivo DEFAULT.DFR. Para modificar un diseño existente, busque el archivo que desee en el árbol de directorios con el botón 'Examinar'. También puede elegir si se empieza una nueva página para cada uno de los objetos y subobjetos. Con el botón 'Configuración' se abre la configuración de impresión. Haciendo clic en el botón Edición, aparece la plantilla para el ajuste del layout de página. Allí puede colocar números de página, fecha, nombre del archivo y del módulo, así como gráficos en la página y especificar el área de texto en el cual se imprimirá la documentación.
Ventana para insertar los marcadores de lugar en el diseño de página
Si selecciona 'Insertar''Marcador de posición' y, a continuación, uno de los cinco marcadores de posición (página, nombre de módulo, nombre de archivo, fecha, contenido) puede insertar un marcador de posición abriendo un rectángulo en el diseño. Al imprimirse, se mostrarán de la siguiente forma:
Marcador de Comando
posición
Descripción
Página
{Page}
Se muestra el número de página actual en la impresión.
Nombre del
{POUName}
Se muestra el nombre del módulo actual.
{FileName}
Se muestra el nombre del proyecto.
{Date}
Se muestra la fecha actual.
módulo
Nombre de archivo
Fecha
Contenido
{Content}
Se muestra el contenido del módulo.
Asimismo, con 'Insertar''Mapa de bits' puede insertar un gráfico de mapa de bits (por ejemplo, un logotipo de empresa) en la página. Para ello, también tendrá que abrir un rectángulo en el diseño utilizando el ratón después de seleccionar el gráfico. Si la plantilla ha sido modificada, TwinCAT PLC Control pregunta al cerrar la ventana si las modificaciones se tendrán que guardar o no. 'Archivo''Salir' Forma abreviada: + Este comando permite salir de TwinCAT PLC Control. Si hay un proyecto abierto, éste se cierra según se describe en 'Archivo''Guardar'. A continuación, se indica las distintas acciones incluidas en el menú Proyecto: 'Proyecto''Traducir' Forma abreviada: + Con 'Proyecto' 'Compilar' se compila el proyecto. La operación de compilación es de principio incremental, es decir, sólo se vuelven a compilar los módulos modificados. Con este comando también se puede ejecutar una operación de compilación no incremental si anteriormente se ha ejecutado el comando 'Proyecto' 'Limpiar todo'. Para el sistema de destino 'PC' que soporta el Online Change, todos los módulos en el Object Manager se identifican con una flecha azul tras el proceso de compilación. Dichos módulos se cargan en el mando en el siguiente download. El proceso de compilación que se efectua con 'Proyecto' 'Compilar' se realiza automáticamente si se inicia la sesión en el mando mediante 'Online' 'Login'. Al compilar se abre la ventana de mensaje en la que se indica el avance del proceso de compilación y los errores y advertencias aparecidos durante la compilación. Los errores y las advertencias se identifican con números. Con F1 obtendrá más información sobre el error marcado. Una lista de todos los mensajes de error figura en el apéndice.
Si se ha seleccionado la opción Guardar antes de compilar en el diálogo de opción de la categoría Cargar y Guardar, el proyecto se guarda antes de compilar. Nota: Las referencias cruzadas se producen durante la compilación y se guardan en la información de la compilación. Para poder utilizar los comandos Emitir árbol de llamada, Emitir lista de referencias cruzadas y los comandos Variables no utilizadas, Acceso concurrente y Escribir varias veces en salida del menú 'Proyecto' 'Comprobar', el proyecto se debe volver a compilar tras una modificación. 'Proyecto''Compilar todo' Con 'Proyecto' 'Compilar todo' se vuelve a compilar todo el proyecto, contrariamente a la compilación por incrementos ('Proyecto' 'Compilar' ). En este caso no se descarta la información de download, contrariamente a lo que ocurre en el comando 'Limpiar todo'. 'Proyecto' 'Limpiar todo' Con este comando se borra la información del último download y de la última operación de compilación. Tras seleccionar este comando aparece un cuadro de diálogo que indica que ya no es posible realizar un Login sin volver a hacer un download. Aquí se puede cancelar o confirmar el comando. Nota: Sólo es posible realizar un login después de 'Limpiar todo' si anteriormente se ha guardado el archivo *.ri con la información de proyecto del último download de forma explícita fuera del directorio del proyecto (ver 'Cargar información de download'), y se podrá cargar de nuevo antes del login. 'Proyecto' 'Cargar información de download' Con este comando se puede volver a cargar de forma selectiva la información de download correspondiente al proyecto si se ha guardado en un directorio distinto al del proyecto. Tras pulsar el comando se abre el diálogo estándar 'Abrir archivo'. La información de download se guarda automáticamente en cada download en un archivo que recibe el nombre .ri y se guarda en el directorio del proyecto. Se vuelve a
cargar automáticamente cada vez que se abre el proyecto y al volver a hacer un login en el mando sirve para especificar si el proyecto corresponde al que ya está abierto en el mando (ID-Check). También se comprueba en qué módulos se ha modificado el código generado. Sólo estos módulos se vuelven a cargar en el download en sistemas, que soportan Online Change. Si el archivo *.ri, sin embargo, se borra mediante el comando 'Proyecto' 'Limpiar todo' del directorio del proyecto, la información de download se puede cargar explícitamente de otro directorio con 'Proyecto' 'Cargar información de download', si el archivo *.ri se ha almacenado allí. 'Proyecto' 'Traducir en otros idiomas' Este punto del menú sirve para traducir el archivo de proyecto actual en otro idioma. Esto se realiza leyendo un archivo de traducción que se ha creado a partir del proyecto y se ha rellenado externamente con la ayuda de un editor de texto con textos de traducción en el idioma deseado. Para ello hay dos puntos del submenú:
Crear archivo de traducción
Traducir proyecto
Crear archivo de traducción Este comando del menú 'Proyecto' 'Traducir en otros lenguajes' le lleva al diálogo 'Crear archivo de traducción':
Introduzca una ruta en el campo Archivo de traducción que indique dónde se debe guardar el archivo. La extensión por defecto del archivo es *.tlt, se trata de un archivo de texto. Si ya existe un archivo de traducción que desee tratar, indique la ruta de este archivo o utilice el diálogo estándar de Windows mediante el botón Examinar para seleccionar un archivo. La siguiente información del proyecto se puede comunicar de forma opcional a los archivos de traducción a crear o a modificar, de forma que estén disponibles en ellos para la traducción: Names (nombres, por ejemplo, el título 'Módulos' del Object Organizer), Identifiers (identificadores), Cadenas, Comentarios. También se pueden transferir la información de posición de estos elementos de proyecto. Si las opciones correspondientes tienen un símbolo de corrección, la información se incluye como símbolo de idioma del proyecto actual en un nuevo archivo de traducción a crear o bien se rellena en uno ya existente. Si la opción correspondiente no se seleciona, se elimina la información general de las categorías en cuestión, sea cual sea el proyecto del cual provienen, del archivo de traducción. Información de posición: Describe la posición del símbolo de idioma listo para la traduccióncon las indicaciones de ruta del archivo, módulo y línea. Tiene tres opciones de selección:
'Ninguna': No se genera ninguna información de posición.
'Primera aparición': Se toma la posición del archivo de traducción en la cual aparece el elemento a traducir por primera vez.
'Todas': Se indican todas las posiciones en las cuales aparece el elemento en cuestión en el proyecto.
Si se edita un archivo de traducción creado anteriormente que contiene más información de posición que el seleccionado aquí, esta información se abrevia o se borra, sea cual sea el proyecto en el que se generó. Nota: Por cada elemento (símbolo de idioma) se genera un máximo de 64 posiciones de información, aunque el usuario haya seleccionado la opción “Todas” en el diálogo Crear archivo de traducción. Sobrescribir existentes: Se sobrescribe toda la información de posición existente en el archivo de traducción que se está tratando, sea cual sea el proyecto en el que se generó. Idiomas de destino: Esta lista contiene identificadores para todos los idiomas contenidos en el archivo de traducción o que se deben tomar tras el final del diálogo El botón Excluir abre el diálogo 'Excluir bibliotecas':
'Crear archivo de traducción'.
Aquí se pueden seleccionar las bibliotecas del proyecto cuya información de identificador no se deba transferir al archivo de traducción. Para ello se selecciona la correspondiente entrada de la tabla izquierda de Bibliotecas incluidas con el ratón y se traen a la tabla derecha de Bibliotecas excluídas con el botón Agregar. Con el botón Quitar también se puede borrar una entrada seleccionada. Con Aceptar se confirma la configuración y se cierra el diálogo. El botón Agregar abre el diálogo 'Agregar idioma de destino':
En el campo de edición se debe introducir un identificador de idioma que tanto al final como al inicio puede contener un espacio en blanco o una diéresis (ä, ö, ü). Con Aceptar se cierra el diálogo 'Agregar idioma de destino' y el nuevo idioma de destino aparece en la lista de idiomas de destino. El botón Quitar borra una entrada seleccinada en la lista. Con Aceptar también se puede confirmar el diálogo 'Crear archivo de traducción' para generar un archivo de traducción. Si ya existe un archivo de traducción con el mismo nombre, aparecerá la siguiente pregunta a responder con Sí o No:
"El archivo de traducción indicado ya existe. Se está modificando, por lo que se creará una copia de seguridad del archivo existente. ¿Desea continuar?" No cancela la acción y vuelve al diálogo 'Crear archivo de traducción'. Si se selecciona Sí, se crea una copia del archivo de traducción existente con el nombre "Backup_of_.xlt" en el mismo directorio, y el archivo de traducción en cuestión se modifica según las opciones parametrizadas. Al crear un archivo de traducción ocurre lo siguiente:
Para cada nuevo idioma de destino se genera un marcador de posición ("##TODO") para cada símbolo de idioma a emitir.
Si se trata un archivo de traducción existente, se eliminan las entradas de archivo de los idiomas que se encuentran en el archivo de traducción pero no en la lista de idiomas de destino, sea cual sea el proyecto en el que se hayan generado.
Tratar el archivo de traducción El archivo de traducción se debe abrir y guardar como un archivo de texto. Los símbolos ## identifican palabras clave. Los marcadores de posición ##TODO del archivo se pueden sustituir por los textos de traducción válidos. Por cada símbolo de idioma se crear una sección limitada por ##NAME_ITEM y ##END_NAME_ITEM (para comentarios según ##COMMENT_ITEM etc.). A continuación se presenta una sección de ejemplo en el archivo de traducción para el nombre de un módulo utilizado en el proyecto: ST_Visu. Se han previsto los idiomas de destino inglés (EEUU) y francés. En este ejemplo también se ha dado la información de posición par el elemento del proyecto a traducir: antes de la traducción: ##NAME_ITEM [D:\projects\Bspdt_22.pro::ST_Visualisierung::0] ST_Visualisierung ##English :: ##TODO ##French :: ##TODO ##END_NAME_ITEM después de la traducción: En lugar de ##TODO se ha introducido la expresión en inglés o francés para 'Visualisierung' (Visualización): ##NAME_ITEM [D:\projects\Bspdt_22.pro::ST_Visualisierung::0] ST_Visualisierung ##English :: ST_Visualization
##French :: ST_Visu ##END_NAME_ITEM Se debe tener en cuenta que los identificadores y nombres traducidos siguen siendo válidos según la norma y que los cadenas y comentarios se cierran con los correspondientes paréntesis. Nota: Las siguientes partes del archivo de traducción no se deben modificar sin los conocimientos adecuados: bloque de idioma, bloque de indicador, información de posición, texto original. Traducir proyecto (en otros idiomas) Este comando del menú 'Proyecto' 'Traducir en otros idiomas' abre el diálogo 'Traducir proyecto en otros idiomas'.
El proyecto actual se puede traducir en otro idioma utilizando un archivo de traducción válido. Nota: Si desea recibir la versión del idioma del proyecto en la que se ha creado guarde una copia del proyecto antes de la traducción con otro nombre. Un proceso de traducción no se puede invertir. En el campo Archivo de traducción se introduce la ruta del archivo de traducción a utilizar. Con Examinar se abre el diálogo estándar de Windows para seleccionar un archivo. En el campo Idioma de destino se abre una lista de los identificadores de idioma contenidos en el archivo de traducción para seleccionar el idioma de destino deseado. Aceptar inicia la traducción del proyecto actual con la ayuda del archivo de traducción indicado en el idioma de destino seleccionado. Durante la traducción se visualiza un diálogo de progresos y, en su caso, los mensajes de error. Tras la traducción se cierra el cuadro de diálogo y todas las ventanas de edición abiertas del proyecto. Cancelar cierra el cuadro de diálogo sin modificar el proyecto actual.
Si el archivo de traducción contiene entradas erróneas, se edita un mensaje de erro tras pulsar Aceptar, que indica la ruta del archivo y las líneas erróneas, por ejemplo: "[C:\Programme\projects\visu.tlt (78)]; Se espera texto de traducción ". 'Proyecto' 'Documentar' Este comando le permite imprimir la documentación de todo el proyecto. La documentación completa se compone de:
los módulos,
el contenido de la documentación,
los tipos de datos,
los recursos, las variables globales, el registro trace, la configuración del mando, la configuración de tareas, el administrador de watch y de fórmulas,
los árboles de llamada de módulos y tipos de datos, así como
la lista de referencias cruzadas. En lo que a los dos últimos puntos se refiere, es necesario que el proyecto se haya compilado sin errores.
Diálogo para la documentación del proyecto
Se imprimen las áreas seleccionadas en el diálogo que aparecen sobre fondo azul. Si quiere seleccionar todo el proyecto, seleccione el nombre del proyecto en la primera línea. Si, en cambio, quiere seleccionar únicamente un objeto individual, haga clic en el objeto en cuestión y coloque el rectángulo punteado sobre el objeto deseado con las teclas de dirección. Los objetos que contienen un signo Más delante de su símbolo son objetos de organización que incluyen otros objetos. Al hacer clic en el signo Más, se abre el objeto de organización y, al hacer clic en el signo Menos, se vuelve a cerrar. Si selecciona un objeto de organización, también se seleccionan todos los objetos pertenecientes a dicho objeto. Si pulsa la tecla , podrá seleccionar un área de objetos y, si pulsa , varios objetos individuales. Una vez realizada la selección, haga clic en Aceptar. Aparece el diálogo para imprimir. El diseño de las páginas que se van a imprimir se puede especificar con 'Archivo''Configuración documentación'. 'Proyecto''Exportar' TwinCAT PLC Control ofrece la posibilidad de exportar o importar proyectos. Con ello tiene la posibilidad de intercambiar programas entre diferentes sistemas de programación IEC. Hasta ahora existe un formato de intercambio estandarizado para módulos creados en los lenguajes IL, ST y SFC (el formato Common Elements de IEC 61131-3). Para los módulos en lenguaje LD y FBD y los demás objetos, TwinCAT PLC Control dispone de su propio formato de archivo, ya que no existe ningún formato de texto en IEC 61131-3. Los objetos seleccionados se escriben en un archivo ASCII. Se pueden exportar módulos, tipos de datos y recursos. Además se pueden exportar las entradas en el administrador de bibliotecas, es decir, la información de vínculos a las bibliotecas se puede exportar (¡no las bibliotecas!) Advertencia: ¡La nueva importación de un módulo FBD o LD fallará si en el editor gráfico un comentario contiene una comilla simple ('), dado que esto se interpreta como inicio de una cadena! Si ha realizado su selección en la ventana de diálogo (la selección se realiza según lo descrito en 'Proyecto' 'Documentar'), puede decidir si desea exportar la selección a un archivo o generar un archivo de exportación propio para cada objeto. Desactive o active la opción Un archivo por objeto y haga clic sobre Aceptar. Aparece el diálogo para guardar archivos. Indique un nombre de archivo con la extensión ".exp" o un directorio para los archivos de exportación de objetos individuales, que a continuación se crean allí con el nombre "Nombre de objeto.exp".
'Proyecto''Importar' Seleccione el archivo de exportación en el diálogo de apertura de archivos que se muestra. Los datos se importan al proyecto actual. Si el proyecto ya contiene un objeto con el mismo nombre, aparece un cuadro de diálogo con la pregunta "¿Reemplazar?": Si contesta con Sí, el objeto del proyecto se reemplaza por el objeto del archivo de importación; si responde con No, el nombre del nuevo objeto incluirá un guión bajo y un número correlativo ("_0", "_1", ..). Con Sí, todos, o No, todos, el proceso se realiza para todos los objetos. Si la información sobre los vínculos se importa con una biblioteca, se carga la biblioteca y se añade al final de la lista en el administrador de bibliotecas. Si la biblioteca ya se había cargado en el proyecto, no se vuelve a cargar. Sin embargo, si en el archivo de exportación que se importa se ha indicado otro momento de almacenamiento para la biblioteca, el nombre de la biblioteca se identifica con un "*" en el administrador de bibliotecas (p.ej. standard.lib*30.3.99 11:30:14), de forma análoga a la carga de un proyecto. Si la biblioteca no existe, aparecerá el siguiente diálgogo de información: "La biblioteca {\}