Sunteți pe pagina 1din 7

UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE

DEPARTAMENTO DE ELCTRICA Y ELECTRNICA


CONTROLADORES LGICOS PROGRAMABLES PLC
ESTUDIANTE: DANILO LEN
FECHA: 07
01 2015
PROGRAMACIN 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 constitucin que devuelve un valor despus de su


evaluacin. Las expresiones se componen de operadores y operandos. Un
operando puede ser una constante, una variable, una llamada a funciones u
otra expresin.
Operadores de texto Estructurado ST
Operacin
Entre parntesis
Llamada a funciones
Potenciar
Negar
Formacin de
complemento
Multiplicar
Dividir
Mdulo
Sumar
Restar
Comparar
Igualdad
Desigualdad
Bool AND
Bool XOR
Bool OR

Smbolo
(Expresin)
Nombre de funcin
(lista de parmetros)
EXPT
NOT
*
/
MOD
+
<,>,<=,>=
=
<>
AND
XOR
OR

Tal como el nombre lo indica, el texto estructurado est concebido para la


programacin estructurada; es decir, que para determinadas construcciones de
uso frecuente, tales como bucles secuenciales, el lenguaje ST ofrece
estructuras establecidas para la programacin. 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:

Soporta instrucciones aritmticas complejas.


Soporta instrucciones anidadas.
Soporta ciclos de iteracin (repeat until, while do)
Soporta ejecucin condicional (If Then Else, Case)
Es fcil agregar comentarios que explican la lgica.

Todo lo que est entre (* y *) es un comentario y no se ejecuta.


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;
Zaehler:=Zaehler-1;
END_WHILE
Erg:=Var1;

Como se puede observar, al programar en texto estructurado es mucho ms


fcil de leer y de entender, adems de que es un cdigo muy breve.
Las distintas estructuras en ST tienen el siguiente significado:
Operador de asignacin.- En el lado izquierdo de una asignacin se
encuentra un operando (variable, direccin) al cual se le asigna el valor de la
expresin del lado derecho junto con el operador de asignacin :=
Ejemplo:
Var1:=Var2*10;
Despus de ejecutarse esta lnea, Var 1 tiene un valor de 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 continuacin, y
entre parntesis, los valores que desee de los parmetros. En el siguiente
ejemplo se llama a un temporizador con asignaciones para los parmetros IN y
PT. A continuacin, 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
Sirve para programar procesos repetitivos.
Sintaxis:
INT_Var :INT;
FOR <INT_Var> := <INIT_WERT> TO <END_WERT> {BY
<SSSSSS>} DO
<Instrucciones>
END_FOR;

La parte entre llaves {} es opcional.


<Instrucciones> se ejecutar mientras el contador <INT_Var> no sea superior
a <END_WERT>. Esto se comprueba antes de la ejecucin de <Instrucciones >,
de modo que <Instrucciones> no se ejecuta nunca si <INIT_WERT> es superior
a <END_WERT>.
Siempre que se haya ejecutado <Instrucciones>, <INT_Var> aumenta en
<SSSSSS>. El tamao 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
<INT_Var>
slo
se
hace
ms
grande.
Ejemplo:
FOR Zaehler:=1 TO 5 BY
1 DO
Var1:=Var1*2;
END_FOR;
Erg:=Var1;

Bucle secuencial REPEAT


El bucle secuencial REPEAT se distingue de los bucles secuenciales WHILE por
el hecho de que la condicin de cancelacin se comprueba solamente despus
de la ejecucin del bucle secuencial, de modo que el bucle secuencial se
ejecuta por lo menos una vez, independientemente de la condicin de
cancelacin.
Sintaxis:
REPEAT
<Instru
cciones
>
UNTIL
<Expre
sion
Boolea
na>
END_RE
PEAT;

<Instrucciones> se ejecuta hasta que <Expresin Booleana> es TRUE.


Si <Expresin Booleana> es TRUE desde la primera evaluacin,
<Anweisungen> se ejecuta exactamente una vez. Si a <Expresin Booleana>

no se le asigna nunca el valor TRUE, <Instrucciones> 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 ningn bucle
secuencial infinito y, para ello, tendr que modificar la condicin en la parte de
instruccin del bucle secuencial, por ejemplo, aumentando o reduciendo el
conteo de un contador.
Ejemplo:
REPEAT
Var1 := Var1*2;
Zaehler := Zaehler1;
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 condicin de cancelacin puede ser cualquier
expresin de Bool. Esto significa que se indica una condicin que, en caso de
cumplirse,
produce
la
ejecucin
del
bucle
secuencial.
Sintaxis:
WHILE <Expresin Booleana> DO
<Instrucciones>
END_WHILE;

La ejecucin de <Instrucciones> se repite mientras <Expresin Booleana> sea


TRUE. Si < Expresin Booleana > tiene el valor FALSE desde la primera
evaluacin, <Instrucciones> no se ejecuta nunca. Si < Expresin Booleana >
no tiene nunca el valor FALSE, <Instrucciones> 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 ningn bucle
secuencial infinito y, para ello, tendr que modificar la condicin en la parte de
instruccin del bucle secuencial, por ejemplo, aumentando o reduciendo el
conteo de un contador.
Ejemplo:
WHILE m<>0
DO
Var1 :=

Var1*2;
m := m-1;
END_WHILE

Los bucles secuenciales WHILE y REPEAT son, en cierto sentido, ms potentes


que el bucle secuencial FOR, ya que no es necesario saber antes de la
ejecucin el nmero de pasos del bucle secuencial. En ciertos casos, slo podr
trabajar con estos dos tipos de bucles secuenciales. No obstante, si el nmero
de pasos de bucle secuencial est claro, se dar preferencia a un bucle
secuencial FOR, ya que no se permiten los bucles secuenciales infinitos.
Instruccin IF
Con la instruccin IF se puede comprobar una condicin y ejecutar
instrucciones en funcin de esta condicin.
Sintaxis:
IF <Expresion Booleana 1> THEN
<IF_Instrucciones>
{ELSIF < Expresion Booleana 2> THEN
<ELSIF_Instrucciones1>
.
.
ELSIF < Expresion Booleana n> THEN
<ELSIF_Instruccin n-1>
ELSE
<ELSE_Instruccin>}
END_IF;

La parte entre llaves {} es opcional.


Si el valor de < Boolscher_Ausdruck1> es TRUE,
<IF_Instruccin>, ninguna de las dems instrucciones.

slo

se

ejecuta

De lo contrario, las expresiones de Bool, empezando por < Expresin Booleana


2>, se evalan sucesivamente hasta que una de las expresiones tenga el valor
TRUE. De ese modo, slo se evalan las instrucciones que se encuentran
detrs de esta expresin de Bool y delante del siguiente ELSE o ELSIF. Si
ninguna de las expresiones de Bool tiene el valor TRUE, se evala nicamente
<ELSE_Instruccin>.
Ejemplo:
IF temp<17
THEN heizung_an :=
TRUE;
ELSE heizung_an :=
FALSE;
END_IF;

En este caso, la calefaccin se enciende cuando la temperatura baja de los 17


grados; de lo contrario permanece apagada.
Instruccin CASE
Con la instruccin CASE se pueden reunir varias instrucciones condicionadas
con la misma variable de condicin en una sola construccin.
Sintaxis:
CASE <Var1> OF
<Wert 1>:
<Instruccin 1>
<Wert 2>: <
Instruccin 2>
...
<Wert n>: <
Instruccin n>
ELSE <ELSEInstruccin >
END_CASE;

Una instruccin CASE se ejecuta segn el siguiente esquema:


Si la variable en <Var1> tiene el valor <Wert i>, se ejecuta la
instruccin < Instruccin i>.
Si <Var 1> no tiene ninguno de los valores indicados, se ejecuta <ELSEInstruccin >.
Si ha de ejecutarse la misma instruccin para varios valores de la misma
variable, estos valores se pueden escribir uno tras otro, separados por
comas, condicionando as la instruccin comn.
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;

Instruccin RETURN
La instruccin RETURN se puede utilizar para terminar una funcin que, por
ejemplo, es dependiente de una condicin.
Instruccin EXIT
Si la instruccin EXIT se encuentra en un bucle secuencial FOR, WHILE o
REPEAT, el bucle secuencial interior se termina, independientemente de la
condicin de cancelacin.

Bibliografa:

Texto Estructurado (ST), BECKHOFF, New Autimation


Technology
Disponible en: http://infosys.beckhoff.com/espanol.php?
content=../content/1034/tcplccontrol/html/tcplcctrl_languages
%20st.htm&id=
Revisado: [05 01 2015]

Texto estructurado (Structured text ST), Universidad Nacional y a


Distancia
Disponible en:
http://datateca.unad.edu.co/contenidos/2150512/ContenidoLinea/leccin_
1633__texto_estructurado_structured_text__st.html
Revisado: [05 01 2015]

S-ar putea să vă placă și