4. Direccionamiento
de I/O
• Entrada:
% I 0 o 1 . i
(entrada) 0 = PLC base nro.entrada
1 = ext. I/O i = 0 a 8
• Salida
% Q 0 o 1 . i
(salida) 0 = PLC base nro.salida
1 = ext. I/O i = 0 a 6
5. Display del estado del PLC
Led Estado Significado
RUN Encendido Aplicación en ejecución
Intermitente Aplic.en STOP / falla en ejecución
Apagado PLC apagado / aplic.no ejecutable
ERR Encendido Fallas internas
Intermitente Aplicación no ejecutable
Apagado OK
COM Encendido Vínculo de extensión activo
Apagado Vínculo de extensión no activo
I/O Encendido Fallas de I/O
Intermitente - (para la extensión)
Apagado OK
RUN
COM
ERR
I/O
6. Display de I/O
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6
I
O
Encendido: I/O en ON
Apagado: I/O en OFF
Intermitente: error en la I/O
7. Salvando el programa
y los datos
• El programa y los datos del
usuario están en la memoria
RAM del PLC.
• El programa puede también
ser transferido a la EEPROM.
8. Programación
• Modo Lista
003 LD %I0.1
Nro.Línea Código Operando
Instrucción
• Modo Ladder
%I0.0 %I0.2 %I0.4 %Q0.4
%I0.1 %I0.7
11. Operandos de tipo bit
Valores inmediatos 0 o 1
Bits de I/O
%I0.i (0 ≤ i ≤ 8)
%Q0.i (0 ≤ i ≤ 6)
Bits internos %Mi (0 ≤ i ≤ 127)
Bits del sistema %Si (0 ≤ i ≤ 127)
Bits de bloques de
función
%BLK.x
Ej.: %TMi.Q
Bits extraídos de
palabras
%•:Xk
Ej.: %MWi:Xk (0 ≤ k ≤ 15)
Expresiones de
comparación
[
Ej.: [%MWi < 1000]
12. Instrucciones booleanas
• Elementos de condición
LD %I0.0 (LOAD)
Carga en el acumulador la imagen lógica del
estado eléctrico de la entrada %I0.0.
• Elementos de acción
ST %Q0.0 (STORE)
El objeto bit asociado toma el valor lógico del
acumulador (resultado de la lógica previa).
• Ecuaciones booleanas
LD %I0.0
AND %I0.1
ST %Q0.0
El resultado booleano de los elementos de
condición es aplicado al elemento de acción.
13. Detección de flancos
ascendentes y descendentes
• Flanco ascendente: detecta el
cambio de una entrada de 0 a 1.
• Flanco descendente: detecta el
cambio de una entrada de 1 a 0.
1 scan del PLC
%I0.2
Tiempo
Resultado
booleano
1 scan del PLC
%I0.2
Tiempo
Resultado
booleano
14. Instrucciones de carga
Código Operando
LD 0/1, %I, %Q, %M, %S, %BLK.x, %•:Xk, [
LDN %I, %Q, %M, %S, %BLK.x, %•:Xk, [
LDR %I
LDF %I
Estas instrucciones cargan el valor del
operando, su inversa, su subida o su bajada,
respectivamente, en el acumulador.
15. Instrucciones de asignación
Código Operando
ST %Q, %M, %S, %BLK.x, %•:Xk
STN %Q, %M, %S, %BLK.x, %•:Xk
S %Q, %M, %S, %BLK.x, %•:Xk
R %Q, %M, %S, %BLK.x, %•:Xk
Las dos primeras instrucciones asignan el
valor del acumulador o su inversa en el
operando.
Las dos últimas instrucciones setean o
resetean el valor del operando dependiendo
del resultado de la lógica previa.
16. Instrucciones lógicas AND
Código Operando
AND 0/1, %I, %Q, %M, %S, %BLK.x, %•:Xk, [
ANDN %I, %Q, %M, %S, %BLK.x, %•:Xk, [
ANDR %I
ANDF %I
Estas instrucciones ejecutan un AND lógico
entre el operando, (su inversa, su subida o su
bajada), y el resultado booleano de la
instrucción previa.
17. Instrucciones lógicas OR
Código Operando
OR 0/1, %I, %Q, %M, %S, %BLK.x, %•:Xk, [
ORN %I, %Q, %M, %S, %BLK.x, %•:Xk, [
ORR %I
ORF %I
Estas instrucciones ejecutan un OR lógico
entre el operando, (su inversa, su subida o su
bajada), y el resultado booleano de la
instrucción previa.
18. Instrucciones lógicas XOR
Código Operando
XOR %I, %Q, %M, %S, %BLK.x, %•:Xk, [
XORN %I, %Q, %M, %S, %BLK.x, %•:Xk, [
XORR %I
XORF %I
Estas instrucciones ejecutan un OR exclusivo
entre el operando, (su inversa, su subida o su
bajada), y el resultado booleano de la
instrucción previa.
20. Uso de paréntesis
Las instrucciones AND y OR pueden usar
paréntesis. La apertura va asociada con la
instrucción AND u OR.
Por cada paréntesis abierto debe aparecer
una instrucción de cierre de paréntesis.
Ejemplo:
LD %I0.0
AND( %I0.1
OR %I0.2
)
ST %Q0.0
%I0.0 %I0.1 %Q0.0
%I0.2
%I0.0 %I0.1 %Q0.0
%I0.2
LD %I0.0
AND %I0.1
OR %I0.2
ST %Q0.0
21. Uso de paréntesis
• Se pueden agregar
modificadores al paréntesis
que abre:
– N negación AND(N u OR(N
– R subida AND(R u OR(R
– F bajada AND(F u OR(F
– [ comparación
Ejemplo:
LD %I0.0
AND %I0.1
OR(N %I0.2
AND %I0.3
)
ST %Q0.0
22. Uso de paréntesis
• Se pueden anidar hasta 8
niveles de paréntesis.
• No se deben ubicar rótulos ni
subrutinas entre paréntesis.
• No se deben ubicar
instrucciones de bloques de
función entre paréntesis.
• No se deben ubicar
instrucciones ST, STN, S y R
entre paréntesis.
23. Bloques de función
• Timers
• Contadores
Manejan objetos de tipo:
– Bit: Salidas del bloque
– Palabra: Parámetros de
configuración y valores
actuales
25. Timers: Tipos
Existen tres tipos:
• TON: Para controlar
acciones on-delay
• TOF: Para controlar
acciones off-delay
• TP: Para crear pulsos de
duración exacta
26. Timers: Características
Nro. Timer %TMi 0 a 31
Tipo TON
TOF
TP
On-delay (defecto)
Off-delay
Pulso
Tiempo
base
TB 1 min (defecto), 1s, 100ms,
10ms, 1ms (%TM0 y %TM1)
Valor actual %TMi.V Se incrementa de 0 a %TMi.P
Puede ser leída pero no
escrita por el programa
Valor de
preset
%TMi.P 0 ≤ %TMi.P ≤ 9999 (defecto)
Puede ser leída y escrita por
el programa
Delay grado. = %TMi.P x TB
Entrada de
seteo
IN El timer arranca con
su subida (TP / TON)
o con su bajada (TOF)
Salida del
timer
Q Se hace 1 según el tipo de
timer
27. Timer TON:
Funcionamiento
• El timer se inicia con una subida de IN.
• El valor %TMi.V se incrementa de 0 a
%TMi.P una unidad por cada pulso de
duración TB.
• %TMi.Q se hace 1 cuando %TMi.V
alcanza a %TMi.P y %TMi.Q se hace 0
con una caída de IN.
• Con una caída de IN el timer se
detiene y %TMi.V vuelve a 0.
IN
Q
%TMi.P
%TMi.V
28. Timer TOF:
Funcionamiento
• Una subida de IN setea el valor de %TMi.V a 0.
• Una caída de IN inicia el timer.
• El valor %TMi.V se incrementa de 0 a %TMi.P
una unidad por cada pulso de duración TB.
• %TMi.Q se hace 1 con la subida de IN y
%TMi.Q se hace 0 cuando %TMi.V llega a
%TMi.P.
• Es reseteado con una subida de IN (el timer se
detiene y %TMi.V vuelve a 0).
IN
Q
%TMi.P
%TMi.V
29. Timer TP:
Funcionamiento
• Una subida de IN inicia el timer.
• El valor %TMi.V se incrementa de 0 a %TMi.P
una unidad por cada pulso de duración TB.
• %TMi.Q se hace 1 al iniciarse el timer y
%TMi.Q se hace 0 cuando %TMi.V llega a
%TMi.P.
• No puede ser reseteado.
• Cuando %TMi.V llega a %TMi.P e IN está en
0, %TMi.V cae a 0.
IN
Q
%TMi.P
%TMi.V
30. Timers: Programación
LD %I0.0
IN %TM1
LD %TM1.Q
ST %Q0.3
%I0.0 %Q0.3
%TM1
IN Q
Se deben configurar:
• el tipo
•TB
•%TMi.P
Timers: Configuración
31. Contadores
Se usan para contar eventos en
forma ascendente o descendente.
%Ci
%Ci.P: 9999
R
E
S
CU
CD
D
F
32. Contadores:
Características
Nro. Contador %Ci 0 a 15
Valor Actual %Ci.V
Palabra inc. o decr. según
CU y CD
Valor Preset %Ci.P 0 ≤ %Ci.P ≤ 9999 (defecto)
Entrada de
reseteo
R Si vale 1 ⇒ %Ci.V = 0
Entrada de
seteo
S Si vale 1 ⇒ %Ci.V = %Ci.P
Entrada
cuenta
ascendente
CU
Una subida incrementa
%Ci.V
Entrada
cuenta
descendente
CD
Una subida decrementa
%Ci.V
Salida
underflow
E
(empty)
En 1 cuando %Ci.V pasa de
0 a 9999
Salida preset
alcanzado
D
(done)
En 1 cuando %Ci.V = %Ci.P
Salida overflow F (full)
En 1 cuando %Ci.V pasa de
9999 a 0
33. Contadores:
Funcionamiento
• Cuenta ascendente:
– Una subida en CU, inicia el incremento de
%Ci.V.
– Cuando %Ci.V llega a %Ci.P, %Ci.D = 1.
– Cuando %Ci.V pasa de 9999 a 0, %Ci.F=1,
y vuelve a 0 si la cuenta sigue.
• Cuenta descendente:
– Una subida en CD, inicia el decremento de
%Ci.V.
– Cuando %Ci.V pasa de 0 a 9999, %Ci.E=1,
y vuelve a 0 si la cuenta sigue.
• Reset: Cuando esta entrada vale 1:
– %C1.V=0, %Ci.E=0, %Ci.D=0 y %Ci.F=0.
Esta entrada tiene prioridad.
• Set: Cuando vale 1, si R está en 0:
– %Ci.V=%Ci.P y %Ci.D=1.
34. Contadores: Programación
LD %I0.1
R %C8
LD %I0.2
AND %M0
CU %C8
LD %C8.D
ST %Q0.3
Se debe configurar %Ci.P.
%I0.1
%C8
R
E
S
CU
CD
D
F
%C8.D %Q0.3
%I0.2 %M0
Contadores: Configuración
35. Instrucciones de control
• Fin de Programa
– END: Fin incondicional del programa
– ENDC: Fin del programa si el
resultado de la operación previa es 1
– ENDCN: Fin del programa si el
resultado de la operación previa es 0
(Cuando se activa el fin de programa,
se actualizan las salidas y se inicia el
próximo scan).
• Instrucción NOP
Se usa para reservar líneas para
insertar luego instrucciones sin
modificar los números de línea.
36. Instrucciones de control
• Instrucciones de salto
– JMP: Salto incondicional
– JMPC: Salto si op. previa = 1
– JMPCN: Salto si op. previa = 0
(Van seguidas por un rótulo %Li (0 ≤ i ≤ 15)
Ejemplo: LD %M15
JMPC %L8
LD %I0.1
ST %M15
JMP %L12
%L8:
LD %M12
ST %M2
%L12:
LD %I0.0
– No se pueden ubicar entre paréntesis.
– El rótulo sólo puede ser seguido por LD, LDN,
LDR, LDF o BLK.
37. Instrucciones de Subrutina
• SRn
Llama a la subrutina
referenciada por el rótulo SRn:
si el resultado de la operación
previa es 1.
• RET
Se ubica al final de la
subrutina. Provoca el retorno
al programa principal.
– No pueden ser ubicadas entre paréntesis.
– Una subrutina no puede llamar a otra.
– El rótulo sólo puede ser ubicado antes de un
LD o BLK.
– La llamada no puede ser seguida por una
asignación (ST).
38. Operandos de tipo Palabra
• Los objetos de tipo palabra son
direccionados como palabras de
16 bits, que se almacenan en la
memoria de datos y que pueden
contener un valor entero entre
–32768 y 32767.
• Se almacenan en código binario
de 16 bits. El bit 15 indica el signo
(1→ - , 0 → +).
• Se pueden ingresar o recuperar
en formato:
– Decimal (ej: 1579)
– Hexadecimal (ej: 16#A536 o #A536)
39. Operandos de tipo Palabra
Valores
inmediatos
Valores enteros entre –32768 y
32767
Palabras
internas
%MWi (0 ≤ i ≤ 255)
Para uso del usuario
Palabras
constantes
%KWi (0 ≤ i ≤ 63)
Se modifican desde el menú de
configuración
Palabras
del sistema
%SWi (0 ≤ i ≤ 127)
Acceso a datos que vienen del PLC
Bits extraídos de palabras: Es posible extraer
uno de los 16 bits de algunas palabras.
Sintaxis: %palabra : Xk (0 ≤ k ≤ 15)
Ejemplo: %MW5:X6
40. Instrucciones numéricas
• Generalmente se aplican a
palabras de 16 bits.
• Se escriben entre corchetes.
• Se ejecutan si el resultado
de la operación previa fue 1.
44. Instrucciones numéricas:
Reglas
• Suma
– Overflow: %S18 = 1 y el resultado
no es correcto.
• Resta
– Resultado negativo: %S17 = 1.
• Multiplicación
– Overflow: %S18 = 1 y el resultado
no es correcto.
• División / Resto (REM)
– División por 0: %S18 = 1 y el
resultado no es correcto.
– Overflow: %S18 = 1 y el resultado
no es correcto.
• Raíz cuadrada
– Operando negativo: %S18 = 1 y el
resultado no es correcto.
Es responsabilidad del programador resetear
los bits %S17 y %S18.
45. Software
• El software PL707 puede ser
utilizado para programar el
PLC desde una PC, pero
requiere la conexión del PLC
a la PC.
• Existe un producto que
permite simular la
programación del PLC en
modo Lista en:
http://www.exa.unicen.edu.ar/~control/