Los lenguajes de programación disponibles son los siguientes:
Lista de
instrucciones (IL o AWL)
(*comentario*): siempre va al
final de la línea.
Modificadores
C en JMP, CAL, RET: instrucción sólo se ejecuta si el
resultado en la expresión anterior es TRUE.
N en JMPC, CALC, RETC: ídem pero cuando el resultado es
FALSE.
N en el resto: negación del
operando (no del acumulador).
Operadores
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 es TRUE (set)
|
|
R
|
Reset
|
|
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
|
(
|
> (Mayor que)
|
EQ
|
(
|
= (Igual que)
|
NE
|
(
|
<> (Diferente)
|
LE
|
(
|
<= (Menor igual)
|
LT
|
(
|
< (Menor que)
|
JMP
|
C, N
|
Saltar a la marca
|
CAL
|
C, N
|
Llamar a FB
|
RET
|
C, N
|
Volver de la llamada a un FB
|
)
|
Evaluar operación de respuesta
|
v Texto
estructurado (ST)
Instrucciones que se pueden
ejecutar de forma condicionada (“IF…THEN…ELSE”) o en bucles secuenciales
(WHILE…DO).
Expresiones: construcción que devuelve un valor después de su
evaluación.
Evaluación de expresiones: ejecución de los operadores según determinadas
reglas de enlace. Los operadores que tengan la misma fuerza se leen de
izquierda a derecha.
Operación
|
Símbolo
|
|
Entre paréntesis
|
(expresión)
|
Más fuerte
|
Llamada a funciones
|
Nombre de la función (lista de
parámetros)
|
|
Potenciar
|
**
|
|
Negar
|
-
|
|
Formación de complemento
|
NOT
|
|
Multiplicar
|
*
|
|
Dividir
|
/
|
|
Módulo
|
MOD
|
|
Sumar
|
+
|
|
Restar
|
-
|
|
Comparar
|
<,>,<=,>=
|
|
Igualdad
|
=
|
|
Desigualdad
|
<>
|
|
Bool AND
|
AND
|
|
Bool XOR
|
XOR
|
|
Bool OR
|
OR
|
Más débil
|
Instrucción (tipo) en ST y ejemplo:
-
Asignación: A:=B; CV:=CV+1; C:=SIN(X);
-
Llamada a un FB y uso de la salida FB:
CMD_TMR (IN:=%(X5,PT:=300);
A:=CMD_TMR.Q;
-
RETURN:
RETURN
-
IF:
IF
D:=B*B;
IF D<0.0 THEN C:=A;
ELSEIF D=0.0 THEN C:=B;
ELSE C:=D;
END_IF
-
CASE: CASE INT1OF1:
BOOL:=TRUE; 2:BOOL2:= TRUE;
ELSE BOOL1:=FALSE; BOOL2:=FALSE;
END_CASE
-
FOR: FOR J:=10;
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]=70
END_REPEAT
-
EXIT: EXIT;
-
Instrucción
vacía: ;
Distintas estructuras en lenguaje ST:
-
Operador de asignación: :=
-
Llamada a FB: escribir el nombre de la instancia
del FB y asignando a continuación, y entre paréntesis, los valores que desee de
los parámetros.
-
Instrucción RETURN: para terminar una función
que, por ejemplo, es dependiente de una condición.
-
Instrucción IF: Comprobar condición y ejecutar
instrucciones.
-
Instrucción CASE: Reunir varias instrucciones
condicionadas con la misma variable de condición en una sola construcción.
-
Bucle FOR: Programar procesos repetidos.
-
Bucle WHILE: Se puede utilizar igual que FOR,
con la diferencia de que la condición de cancelación puede ser cualquier
expresión BOOL.
-
Bucle REPEAT: Comprueba la condición al final,
por lo que se ejecuta al menos una vez.
-
Instrucción EXIT: en el interior de un bucle
secuencial lo finaliza, independientemente de la condición de cancelación.
¡EVITAR BUCLE
INFINITO! Para ello hay que modificar una condición en la parte de instrucción
del bucle secuencial (por ejemplo aumentando o reduciendo el conteo)
Si el número de pasos está claro se recomienda
utilizar el bucle FOR.
v Diagrama
secuencial de funciones (SFC o FUP)
Lenguaje orientado a gráficos
que permite describir el desarrollo en el tiempo de distintas acciones dentro
de un programa. Se compone de una serie de pasos representados por cajas
rectangulares conectadas entre sí por líneas verticales, que representan una
transición.
v Diagrama de
bloques funcionales (FBD o FBS)
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 FB, un salto o una instrucción Return.
v Planos de
funciones (CFC)
Trabaja con elementos que se
pueden colocar donde se desee. Esto permite, por ejemplo, retroacoplamientos.
v Planos de
contactos (LD o KOP)
Lenguaje
de programación orientado a gráficos. 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 de “ON” u “OFF”; que 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.
Contacto
El
lado izquierdo de cada red en lenguaje LD está compuesto por una red de
contactos que transmiten de izquierda a derecha el estado “ON” u “OFF”, que
corresponden a los valores de Bool TRUE y FALSE.
Los
contactos pueden estar conectados en paralelo o en serie, correspondiéndose con
una conexión eléctrica en paralelo o en serie.
Contacto
se representa por ||, y un contacto cerrado (normalmente cerrado) se representa
por |/|.
Con
un contacto NC el valor de la línea se transmite si la variable es FALSE.
Bobina
Se
encuentran en el lado derecho de una red en lenguaje LD. Sólo se pueden
conectar en paralelo. 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 (TRUE) o el valor OFF (FALSE).
Bobina se representa por ( ),
y una bobina negada (normalmente cerrada) por (/). Una bobina NC sólo realiza
la conexión cuando la correspondiente variable de Bool es FALSE.
Bloque de funciones en el plano de contactos
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
Bobina
Set (S) no sobreescribe nunca el valor TRUE en la correspondiente variable de
Bool, una vez que la variable se haya ajustado en TRUE, permanece invariable.
Bobina
Reset (R) no sobreescribe nunca el valor FALSE en la correspondiente variable
de Bool, una vez que la variable se haya ajustado en FALSE, permanece sin
alterar.
No hay comentarios:
Publicar un comentario