Ladder
Ladder
Coil
Negated Coil
Utilizzo dei Contatti
Ad ogni contatto viene associata una variabile binaria. Tale variabile viene
solamente letta (può coincidere con un ingresso).
Contatto Normalmente Aperto: la corrente fluisce da sinistra a destra se
la variabile IN è 1. La corrente fluisce a destra per qualunque scansione
del Programma Ladder fino a quando la variabile IN diviene 0
IN
IN
Utilizzo dei Coil
Ad ogni coil viene associata una variabile binaria. La variabile viene
scritta (può coincidere con una uscita fisica)
Coil: la variabile OUT associata al Coil è posta a 1 se vi è una corrente
che fluisce da sinistra. La variabile rimane a 1 per qualunque scansione
del Programma Ladder fino a quando la corrente cessa di fluire da
sinistra.
OUT
1 OFF OFF
2 ON ON
3 ON OFF
4 ON OFF
5 OFF OFF
Altri Contatti del Linguaggio Ladder
Contatto sensibile alla transizione 1-0 (Negative Transition-Sensing
Contact)
IN
N
1 ON OFF
2 OFF ON
3 OFF OFF
4 OFF OFF
5 ON OFF
Altri Coil del Linguaggio Ladder
Set Coil OUT
S
La variabile OUT associata al coil e' posta a 1 se vi e' una corrente che
fluisce da sinistra. La variabile rimane a 1 per qualunque scansione del
Diagramma Ladder fino a quando viene utilizzato un coil RESET.
Reset Coil
OUT
R
La variabile OUT associata al coil e' posta a 0 se vi e' una corrente che
fluisce da sinistra. La variabile rimane a 0 per qualunque scansione del
Diagramma Ladder fino a quando viene utilizzato un coil SET.
Altri Coil del Linguaggio Ladder
Positive Transition-Sensing Coil
OUT
P
Scansione Valore della corrente alla sinistra del coil quando Valore di
viene valutato il rung OUT
1 OFF OFF
2 ON ON
3 ON OFF
4 OFF OFF
Altri Coil del Linguaggio Ladder
Negative Transition-Sensing Coil
OUT
N
Scansione Valore della corrente alla sinistra del coil quando viene Valore di
valutato il rung OUT
1 ON OFF
2 OFF ON
3 OFF OFF
4 ON OFF
Altri Coil del Linguaggio Ladder
Logica OR
START STOP M FAN
S IN
Regole di Esecuzione dei Rung
........ ........
........
0 0 0
L'effetto di IN1, IN2, e IN3 sull'uscita reale collegata alla
variabile FAN è nullo. L'uscita reale può essere modificata solo
da IN4 e IN5, a causa della posizione del rung che li contiene
Effetti Collaterali delle Regole di Esecuzione
dei Rung
Riunificando i rung, l'uscita reale collegata alla variabile FAN
verrà aggiornata solo dopo aver valutato il rung composto
dagli ingressi IN1, IN2, IN3, IN4 e IN5
1 1 1 1
IN1 IN2 IN3 FAN IN1 IN2 IN3 FAN
........ ........
........
IN4 IN5
IN4 IN5 FAN
0 0
Uso di Istanze di Function Block e di Funzioni
E' possibile connettere contatti con gli ingressi dell'istanza del FB o della funzione,
purché essi siano binari
E' possibile connettere coil con le uscite dell'istanza del FB o della funzione,
purché esse siano binarie
Nel caso in cui una Istanza di FB o una funzione richieda un ingresso binario
sempre TRUE, è possibile collegare tale ingresso direttamente al power rail di
sinistra
Eventuali variabili analogiche o valori analogici (interi, reali, temporali, etc.)
possono essere connessi direttamente ai corrispondenti ingressi dell'istanza del FB
o della funzione Nome Istanza
FB1
In1 Out1
In2
Out2 y
In3
In4
x
In5
T#1s
Function Block di Uso Comune
Timer T_ON
T_ON IN: BOOL. If a rising edge is detected, the
on-delay timing is started
IN Q PT: TIME. Preset time interval for the delay
IN
ET
PT PT
Function Block di Uso Comune
Timer T_OFF
T_OFF IN: BOOL. If a falling edge is detected, the
off-delay timing is started.
IN Q PT: TIME. Preset time interval for the delay
IN
ET
PT PT
Function Block di Uso Comune
Bistabili
SR, RS
Bitwise Boolean
AND, OR, NOT, XOR
Comparison
EQ, LE, LT, GE, GT, NE
Counters
CTD (down), CTU (up)
Altri (disponibili su alcuni PLC)
PID
Feedback Paths
E' possibile che un rung presenti dei contatti e dei coil ai quali vengono
associate le stesse variabili
IN1 IN2 IN3 FAN
IN4 FAN
FAN OUT
Motore
Feedback path
Tecnica basata su Relazioni I/O
Circuito di Clock
Si supponga di voler realizzare un programma che permetta di
fornire in uscita al PLC un segnale periodico ad onda quadra.
Sia T il periodo del segnale.
Sia out la variabile binaria alla quale viene associata l'uscita
fisica del PLC per la quale si vuole produrre il segnale
periodico.
Si consideri nella soluzione del problema una variabile binaria
interna (start), inizializzata a OFF (0).
Si considerino, infine, due function block timer TON,
denominati T1 e T2, ciascuno caratterizzati dal valore del PT
pari a T/2 (semiperiodo).
out
start T1 T2 start
Scansione contatto out coil
Q ET Q ET
1..n 0 0 <T/2 0 0 0 0
n+1 0 1 T/2 0 0 1 0
n+2…m 0 1 T/2 0 <T/2 1 0
m+1 0 1 T/2 1 T/2 1 1
m+2 1 0 0 0 0 0 0
m+3 0 uguale alla scansione 1
stessa sequenza precedente
0
Tecnica basata sulla Macchina a Stati
Esistono problemi in cui l'attivazione delle uscite (ad esempio
i comandi agli attuatori) non dipende esclusivamente dagli
ingressi (o da variabili interne, quali bits, contatori, timers) ma
è legata al concetto di "stato".
Tali problemi sono caratterizzati da soluzioni che prevedono
l'evoluzione del sistema da uno stato ad una altro, a partire da
uno stato iniziale per far ritorno, spesso, a tale stato.
Per tali problemi, il comando di uno o più attuatori avviene in
corrispondenza di uno stato, e può verificarsi che lo stesso
attuatore venga attivato in due o più stati differenti anche in
corrispondenza di ingressi diversi.
L'evoluzione del sistema da uno stato ad un altro avviene in
corrispondenza di valori assunti da particolari ingressi, oppure
in base a valori di timers o di contatori, ovvero da valori di
opportune espressioni logiche.
Tecnica basata sulla Macchina a Stati
Rappresentare la soluzione del problema con una macchina a
stati
Ogni stato viene rappresentato da una variabile binaria
Per ogni stato vengono identificate le azioni da eseguire
Vengono identificati gli eventi che producono il passaggio di
stato.
Ciascun evento dovrà essere rappresentato da una variabile
binaria
Il programma in Ladder si compone di tre porzioni:
Rappresentazione dell’attivazione di un nuovo stato a partire dallo
stato corrente a seguito di un determinato evento
Rappresentazione della disattivazione dello stato precedente a causa
dell’attivazione di un nuovo stato
Rappresentazione delle azioni eseguite in ciascuno degli stati
Esempio di Tecnica di Programmazione
basata sulla Macchina a Stati
home P1 rotate
S
out1=1 rotate P2 move
S
home move P3 home
P1 S
P3 rotate home
R
out3=1 move rotate
R
move
rotate home move
R
home out1
out2=1 P2
rotate out2
move out3
Esempio: Carroponte
Esempio: Carroponte
y
Right Left
UP
Tempo Attesa 15s
SUp
Down S3
SDown
x
S1 S2
Home=(S1=1,SDown=1)
Esempio: Carroponte
SDown==1 && S1==1
HOME
START==1
UP
SUp
Tempo
Down Attesa
S3
15s
SDown
x
S1 S2
Esempio di Cattiva Programmazione
La tecnica di programmazione vista prima non funziona
quando:
La macchina a stati ha solo due stati
Gli eventi che determinano il passaggio da uno stato all'altro
sono mutuamente esclusivi
Esempio: due stati (home e move) e gli eventi P1 e !P1
Se P1=0, home=1 e move=0
home
Se P1=1, home=0 e move=1
P1
!P1
move
Esempio di Cattiva Programmazione
home
Start: P1=0 e home=1 P1
Ciclicamente home=1, move=0
Si supponga: P1=1
move=1
Ciclicamente home=0, move=1 !P1
Si supponga: P1=0 move
home=1
home=0 home P1 move
Ciclicamente home=0, move=1 S
move P1 home
S
move home
R
home move
R
Esempio di Buona Programmazione
Stato fittizio
home
P1
tmp
!P1
!P1
!P1
move
move
home
P1
Esempio di Buona Programmazione
tmp P1 home
S
Start: P1=0 e tmp=1 home P1 move
Ciclicamente tmp=0, home=1, move=0 S
move P1 tmp
Si supponga: P1=1 S
move=1 home tmp
R Stato
home=0 move home
R
iniziale
Ciclicamente tmp=0, home=0, move=1
tmp move
Si supponga: P1=0
R
tmp=1 tmp
move=0 !P1
home=1 !P1
tmp=0
Ciclicamente tmp=0, home=1, move=0
move
home
P1
Esercizio: Trapano Automatico
START
!Y
HOME
ROTATE=0 Wait START && Y
A==1
SCEND DOWN=1
UP=1 SALI I ROTATE=1
X==1 && !M
ROTATE=1
B==1
!X &&M==1 DOWN=1
Pezzo_Alto
ROTATE=1
FORO M==1
DOWN=1
ROTATE=1 TEMPO
Pezzo_Alto
UP=1
_Risalita
TRASCORSO
ROTATE=1
LUBRIFICA A==1
OIL=1
ROTATE=1
START
Esercizio: Distributore di Bibite
Esercizio: Distributore di Bibite
SB=0 MONETA = = 1
Bibita_Presa = = 1
SA=0 home SB=SA=0 SB=1
SBLOCCA=1 SBLOCCA=0 SA=0
Inizio_Conse
BLOCCA=0 BLOCCA=1 gna_Bibite SBLOCCA=1
Attesa_Prelie
vo Bibita_Presa=0 BLOCCA=0
APERTO = =1
homeS Fine_Consegna_Bibite = = 1
Fine_Delay_SA = = 1
S1 SB=0
Inizio_Delay SA=0
home Bibita_Presa=1 _SB SBLOCCA=1
SB=0 BLOCCA=0
SA=0
SBLOCCA=1 SB=0
Inizio_Delay
_SA BLOCCA=0 SA=1
SBLOCCA=1
Inizio_Nuova
BLOCCA=0 _Bibita Fine_Delay_SB = = 1
Fine_Nuova_Bibita = = 1
Due Soluzioni:
Realizzazione delle due macchine a stato in
un unico Programma con task ciclico
Limite: Frequenza di campionamento segnale
"Aperto" non compatibile con il program scan
M1 M2
s1 s2
OK1 OK2
Go2
Go1
OK0 Go0
Home_Robot
OK3
Go3
s3
M3
s4
Nastro 3
Esercizio: 3 Nastri
home_robo
!s1
t s1 home1
muovi3 M3=1
!s4
attesa
s4