Programación en Plc Con Lenguaje de Texto Estructurado

March 30, 2018 | Author: Danilo Leon Guerrero | Category: Programming Language, Logic Gate, Programmable Logic Controller, Computer Programming, Software Development


Comments



Description

UNIVERSIDAD DE LAS FUERZAS ARMADAS “ESPE”DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA CONTROLADORES LÓGICOS PROGRAMABLES “PLC” ESTUDIANTE: DANILO LEÓN FECHA: 07 – 01 – 2015 PROGRAMACIÓN EN PLC CON LENGUAJE DE 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.- Es una constitució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. Operadores de texto Estructurado ST Operación Entre paréntesis Llamada a funciones Potenciar Negar Formación de complemento Multiplicar Dividir Módulo Sumar Restar Comparar Igualdad Desigualdad Bool AND Bool XOR Bool OR Símbolo (Expresión) Nombre de función (lista de parámetros) EXPT NOT * / MOD + <,>,<=,>= = <> AND XOR OR 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. Dentro de las ventajas del lenguaje de Texto Estructurado aplicado a PLC, tenemos: while – do) Soporta ejecución condicional (If – Then – Else. END_WHILE Erg:=Var1. Las distintas estructuras en ST tienen el siguiente significado: Operador de asignación. se asigna la variable de resultado Q a la variable A.. Soporta instrucciones anidadas.     Soporta instrucciones aritméticas complejas. Soporta ciclos de iteración (repeat – until. Var 1 tiene un valor de diez veces superior a Var2. Ejemplo: Calculo de segundas potencias Lista de Instrucciones 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 Texto Estructurado WHILE Zaehler<>0 DO Var1:=Var1*2. además de que es un código muy breve.En el lado izquierdo de una asignación se encuentra un operando (variable. y entre paréntesis. con el nombre del Bloque de Funciones seguido de un punto y del nombre de la variable: . Como se puede observar. En el siguiente ejemplo se llama a un temporizador con asignaciones para los parámetros IN y PT. Después de ejecutarse esta línea. como en el lenguaje IL. A continuación. Case) Es fácil agregar comentarios que explican la lógica. Zaehler:=Zaehler-1. La variable de resultado se activa.  Todo lo que está entre (* y *) es un comentario y no se ejecuta. al programar en texto estructurado es mucho más fácil de leer y de entender. 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. dirección) al cual se le asigna el valor de la expresión del lado derecho junto con el operador de asignación := Ejemplo: Var1:=Var2*10. los valores que desee de los parámetros. CMD_TMR(IN := %IX5. <Anweisungen> se ejecuta exactamente una vez.Q Bucle Secuencial For Sirve para programar procesos repetitivos. Sintaxis: INT_Var :INT. END_FOR. <INT_Var> aumenta en <SSSSSS>. A:=CMD_TMR. <Instrucciones> se ejecutará mientras el contador <INT_Var> no sea superior a <END_WERT>. El tamaño de paso puede tener cualquier valor entero. FOR <INT_Var> := <INIT_WERT> TO <END_WERT> {BY <SSSSSS>} DO <Instrucciones> END_FOR. el bucle secuencial se tiene que terminar. se ajusta a 1. ya que <INT_Var> sólo se hace más grande. 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. PT := 300). de modo que el bucle secuencial se ejecuta por lo menos una vez. Por lo tanto. Si falta éste. de modo que <Instrucciones> no se ejecuta nunca si <INIT_WERT> es superior a <END_WERT>. Erg:=Var1. independientemente de la condición de cancelación. Sintaxis: REPEAT <Instru cciones > UNTIL <Expre sion Boolea na> END_RE PEAT. Esto se comprueba antes de la ejecución de <Instrucciones >. Ejemplo: FOR Zaehler:=1 TO 5 BY 1 DO Var1:=Var1*2. Si <Expresión Booleana> es TRUE desde la primera evaluación. <Instrucciones> se ejecuta hasta que <Expresión Booleana> es TRUE. Si a <Expresión Booleana> . La parte entre llaves {} es opcional. Siempre que se haya ejecutado <Instrucciones>. Sintaxis: WHILE <Expresión Booleana> DO <Instrucciones> END_WHILE. <Instrucciones> no se ejecuta nunca. 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. Zaehler := Zaehler1. con lo cual se produce un error de tiempo de funcionamiento. por ejemplo. Esto significa que se indica una condición que. con la diferencia de que la condición de cancelación puede ser cualquier expresión de Bool. tendrá que modificar la condición en la parte de instrucción del bucle secuencial.no se le asigna nunca el valor TRUE. Nota: el programador ha de asegurarse de que no se produzca ningún bucle secuencial infinito y. <Instrucciones> se repite de forma infinita. aumentando o reduciendo el conteo de un contador. para ello. aumentando o reduciendo el conteo de un contador. en caso de cumplirse. <Instrucciones> se repite de forma infinita. Ejemplo: REPEAT Var1 := Var1*2. Si < Expresión Booleana > no tiene nunca el valor FALSE. por ejemplo. UNTIL Zaehler=0 END_REPEAT Bucle secuencial WHILE El bucle secuencial WHILE se puede utilizar igual que el bucle secuencial FOR. Si < Expresión Booleana > tiene el valor FALSE desde la primera evaluación. La ejecución de <Instrucciones> se repite mientras <Expresión Booleana> sea TRUE. Ejemplo: WHILE m<>0 DO Var1 := . tendrá que modificar la condición en la parte de instrucción del bucle secuencial. para ello. produce la ejecución del bucle secuencial. Sintaxis: IF <Expresion Booleana 1> THEN <IF_Instrucciones> {ELSIF < Expresion Booleana 2> THEN <ELSIF_Instrucciones1> . . sólo podrá trabajar con estos dos tipos de bucles secuenciales. ELSIF < Expresion Booleana n> THEN <ELSIF_Instrucción n-1> ELSE <ELSE_Instrucción>} END_IF. ya que no es necesario saber antes de la ejecución el número de pasos del bucle secuencial. No obstante. . Instrucción IF Con la instrucción IF se puede comprobar una condición y ejecutar instrucciones en función de esta condición.Var1*2. si el número de pasos de bucle secuencial está claro. ya que no se permiten los bucles secuenciales infinitos. END_IF. De ese modo. En ciertos casos. m := m-1. en cierto sentido. Ejemplo: IF temp<17 THEN heizung_an := TRUE. se evalúa únicamente <ELSE_Instrucción>. más potentes que el bucle secuencial FOR. <IF_Instrucción>. END_WHILE Los bucles secuenciales WHILE y REPEAT son. ELSE heizung_an := FALSE. empezando por < Expresión Booleana 2>. 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. sólo se ejecuta De lo contrario. Si ninguna de las expresiones de Bool tiene el valor TRUE. se evalúan sucesivamente hasta que una de las expresiones tenga el valor TRUE. La parte entre llaves {} es opcional. las expresiones de Bool. ninguna de las demás instrucciones. Si el valor de < Boolscher_Ausdruck1> es TRUE. se dará preferencia a un bucle secuencial FOR.  Si <Var 1> no tiene ninguno de los valores indicados. <Wert n>: < Instrucción n> ELSE <ELSEInstrucción > END_CASE. 2: BOOL2 := FALSE. ELSE BOOL1 := NOT BOOL1..  Si ha de ejecutarse la misma instrucción para varios valores de la misma variable.En este caso. estos valores se pueden escribir uno tras otro. Instrucción RETURN La instrucción RETURN se puede utilizar para terminar una función que. separados por comas. Ejemplo: CASE INT1 OF 1. el bucle secuencial interior se termina. 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. se ejecuta <ELSEInstrucción >. BOOL3 := TRUE. independientemente de la condición de cancelación. 5: BOOL1 := TRUE. se ejecuta la instrucción < Instrucción i>. de lo contrario permanece apagada. la calefacción se enciende cuando la temperatura baja de los 17 grados. condicionando así la instrucción común.. . por ejemplo. BOOL3 := FALSE. Instrucción EXIT Si la instrucción EXIT se encuentra en un bucle secuencial FOR. Sintaxis: CASE <Var1> OF <Wert 1>: <Instrucción 1> <Wert 2>: < Instrucción 2> . Una instrucción CASE se ejecuta según el siguiente esquema:  Si la variable en <Var1> tiene el valor <Wert i>. BOOL2 := BOOL1 OR BOOL2. WHILE o REPEAT. END_CASE. es dependiente de una condición. New Autimation Technology Disponible en: http://infosys./content/1034/tcplccontrol/html/tcplcctrl_languages %20st.html Revisado: [05 – 01 – 2015] .php? content=.beckhoff.edu. BECKHOFF.com/espanol..co/contenidos/2150512/ContenidoLinea/leccin_ 1633__texto_estructurado_structured_text__st.unad.Bibliografía:  “Texto Estructurado (ST)”.htm&id= Revisado: [05 – 01 – 2015]  “Texto estructurado (Structured text – ST)”. Universidad Nacional y a Distancia Disponible en: http://datateca.
Copyright © 2024 DOKUMEN.SITE Inc.