CoDeSys
Enviado por Albert • 24 de Diciembre de 2018 • 4.374 Palabras (18 Páginas) • 392 Visitas
...
Programa principal PLC_PRG
El POU PLC_PRG se activa automáticamente cada 10ms una vez se energiza el controlador. Éste programa debe estar presente en cada proyecto.
Todos los demás programas, funciones y bloques de función son llamados desde
PLC_PRG.
Operadores y modificadores en IL
[pic 2]
Texto estructurado (ST)
Un programa en Texto Estructurado es una lista de instrucciones ST. Cada instrucción es terminada por punto y coma (;). Nombres de variables, constantes y palabras reservadas son separadas por un separador pasivo. Los separadores pasivos permitidos son espacios, tabulaciones o fin de línea. Los comentarios pueden ser agregados donde sea. Éstos deben comenzar con (* y terminar con *).
Cuando se escribe un programa en ST, se deben seguir las siguientes reglas básicas:
- Escribir no más de una instrucción en una línea.
- Simplificar instrucciones complejas mediante el uso de tabulaciones.
- Usar comentarios para clarificar el programa.
Ejemplo:
¡Incorrecto!
numero := max_veces; cond := X1;
IF NOT (cond) THEN RETURN; END_IF;FOR i := 1 TO max_veces DO
IF i 3 THEN reset; END_IF; END_FOR;
(* sin efecto cuando hay alarma *)
Correcto
(* numero := número de veces que se repite *)
(* i := index para la instrucción FOR *)
(* cond := input X1 del proceso *)
(* reset es otro programa *)
(* settings *)
numero := max_veces;
cond := X1;
(* si no hay señal *)
IF NOT (cond) THEN
RETURN;
END_IF
(* proceso de reset *)
FOR i := 1 TO max_veces DO
IF i 3 THEN
reset;
END_IF
END_FOR
El Segundo ejemplo es mucho más legible y por lo tanto más fácil de entender que el primer ejemplo. El tiempo invertido en esto se paga con crecer cuando se tiene que modificar el programa o cuando se trata de localizar un error.
Cuando se hace uso de instrucciones en Texto Estructurado, las variables deben de ser del mismo tipo.
Ejemplo:
boo_var1 AND boo_var2 ambas son de tipo Booleano
NOT (boo_var3) es de tipo Booleano
(SIN(30) + 0.72) ambas son de tipo REAL
(t#2s30 + 3.3) son de tipo diferente. Time y real, esto es incorrecto.
El orden de las operaciones puede ser influenciado por el uso de paréntesis. Cuando no existan paréntesis/llaves en una expresión, la operación es ejecutada basándose en la prioridad de operaciones (BNAO).
Ejemplo:
3 + 5 * 4 = 3 + 20 =23 porque la multiplicación precede a la suma
(3 + 5) * 4 = 8 * 4 = 32 porque la operación entre paréntesis tiene precedencia
Los paréntesis pueden ser anidados hasta un máximo de 8
(1 + (2 * (3 + (2 * (100 – (3 * (5 * (2 * 2)))))))) = 167
La siguiente tabla muestra las operaciones de acuerdo a su orden de precedencia:
[pic 3]
Asignación, :=
Permite asignar un valor de una variable a otra, o asignar el resultado de una operación a una variable. La asignación también define el tipo de variable, por ejemplo:
A := B; Asigna a la variable A el valor de B
B := C * D; Multiplica la variable C x D y asigna el resultado a B.
F := COS(H); Determina el coseno del ángulo H y asigna el resultado a F
A := BOOL; Variable A es de tipo Boolean
C := REAL; Variable C es de tipo Real
Uso de subprogramas
Para llamar a un subprograma, se usa el nombre de dicho subprograma, seguido por los parámetros que se le van a transferir dentro de paréntesis.
Ejemplo:
Llamado del subprograma Calc.
(* Programa principal ST *)
(* Calcula un valor análogo de tres señales binarias *)
Valor := Calc (bi0,bi1,bi2);
Subprograma Calc.
En el subprograma Calc, las variables in0, in1 e in2 están definidas como parámetros de entrada, y Temporal es una variable usada para almacenar un valor intermedio.
(* Programa Calc *)
LDin2 (* Input 2 *)
BOOL_TO_INT (* resultado := 1 o 0 de in2 *)
MUL 4 (* resultado := 4 x INT de in2 *)
STTemporal (*almacena el valor intermedio *)
LDin1 (* Input 1 *)
BOOL_TO_INT (* resultado := 1 o 0 de in1 *)
MUL 2 (* resultado :=
...