26 ottobre 2016
• IL - Instruction List;
• ST - Structured Text;
• LD - Ladder Diagram;
I tipi di dati che sono compatibili con lo standard sono i dati booleani
(BOOL), interi (INTEGER), reali (REAL), i BYTE, le parole (WORD), le
stringhe (STRING) e due tipi particolari, il DATE ed il TIME. Oltre a que-
sti, è prevista anche la definizione di tipi personalizzati da parte dell’utente,
a seconda delle esigenze, detti dati derivati.
2 ST - Structured Text
Questo è linguaggio di programmazione testuale ad alto livello, molto vicino
al Pascal.
:= assegnazione di variabili
; termine istruzione
1
Operatori aritmetici:
+ somma / divisione
− differenza MOD divisione intera
∗ prodotto ∗∗ elevamento a potenza
Operatori di relazione:
< minore >= maggiore o uguale
<= minore o uguale = uguale
> maggiore <> diverso
Operatori su bit:
&, AND prodotto logico
OR somma logica
XOR somma logica esclusiva
NOT negazione
Tale linguaggio prevede anche dei costrutti per implementare delle istru-
zioni condizionate, in particolare:
IF ... THEN ... END IF
IF ... THEN ... ELSE ... END IF
IF ... THEN ... ELSEIF ... THEN ... ELSE ... END IF
CASE ... OF ... ELSE ... END CASE
2.1 Esempi
2
IF abilitazione & (conteggio < 100) THEN
conteggio := 100;
stato tornio := fermo;
END IF
CASE conteggio OF
1 : stato tornio := fermo;
2,3,4,5 : stato tornio := funzionante;
6 . . . 50 : stato tornio := guasto;
END CASE
3 IL - Instruction List
Questo è un linguaggio di basso livello, simile all’assembly, costituito da una
sequenza di istruzioni. Le componenti sono:
• modificatore;
• operando;
3
ADD, SUB, MUL, DIV - operatori aritmetici per la somma, sottra-
zione, moltiplicazione e divisione, il cui risultato viene salveto nell’accumu-
latore;
GT (greater than), GE (greater or equal), EQ (equal), NE (not equal),
LE (less or equal), LT (less than) - operatori di comparazione;
JMP (jump) - salto all’etichetta indicata dall’operando;
CAL (call) - chiamata a blocco funzionale indicato dall’operando;
RET (return) - ritorno da funzione o blocco funzionale.
3.1 Esempi:
XOR:
LD a
ANDN b
OR (b
ANDN a)
ST c
Flip-Flop T:
LD i
ANDN i prec
JMPCN ava
LD u
STN u
ava: LD i
ST i prec
4
Nel blocco in figura, XXX rappresenta la funzione che si vuole imple-
mentare, X1, X2, ... sono le variabili d’ingresso per tale funzione, e Y1, Y2,
... sono le variabili di uscita.
4.1 Esempio:
5 LD - Ladder Diagram
I linguaggio Ladder, o schema a contatti, è il linguaggio più diffuso per la
programmazione dei PLC, di tipo grafico, nato per non rendere difficoltoso il
passaggio dal controllo a logica cablata di tipo elettromeccanica che veniva
utilizzato nell’ambito industriale prima dell’avvento dei PLC, al controllo a
logica programmata. Si era reso necessario infatti, per i tecnici ed operatori
non esperti di programmazione, creare un linguaggio di programmazione
che fosse vicino al loro modo di operare, con l’utilizzo di relè, contatti e
bobine, temporizzatori, etc. Ed è proprio su questa base che fu sviluppato
il ladder, i cui componenti sono proprio contatti e bobine, i quali vengono
combinati, insieme ad altri blocchi funzionali, lungo i pioli o rung (linee
orizzontali) tra i montanti o linee calde di alimentazione (linee verticali)
per creare la logica di controllo desiderata, per cui è un linguaggio che ha
delle implicazioni elettriche. Lungo questi deve essere garantita la continuità
logica (elettrica), e vengono eseguiti da sinistra verso destra, e dall’alto verso
il basso.
5
In questo modo è possibile creare dei circuiti di controllo logico (su base
booleana) o sequenziale, a seconda delle esigenze. Di per se, questo linguag-
gio descrive il ciclo operativo del PLC, cioè rappresenta la sequenza delle
cose che il PLC deve fare ad ogni ciclo.
6
a fronte di discesa - associa un 1 alla variabile so-
lo quando tra due esecuzioni successive passa da
alimentata a disalimentata.
5.1 Esempi:
Funzione IF ... THEN: quando il contatto sulla sinistra viene portato ad 1
(chiuso), allora vi è continuità logica tra la linea calda di sinistra e quella
di destra, per cui la bobina sulla destra viene alimentata, ed il bit di me-
moria associato viene portato ad 1. Quando il contatto viene riaperto tale
continuità si perde, ed il bit associato alla bobina va a 0.
Funzione logica OR: quando uno dei due contatti (o entrambi) viene
chiuso, esso permette il passaggio di “corrente” verso la bobina, che viene di
conseguenza alimentata. Tale funzione viene implementata con dei contatti
in parallelo.
7
Funzione logica NOT: la bobina viene alimentata solo se il bit associato
al contatto normalmente chiuso è 0. Tale funzione logica permette di avere
nel bit di memoria associato alla bobina un valore pari alla negazione del
contenuto di memoria associato al contatto.
Funzione logica XOR (OR esclusivo): soltanto se uno dei bit associati ai
contatti A o B vale 1, porta la bobina ad essere alimentata.
8
Flip-Flop T (Toggle): per ogni fronte di salita dell’ingresso si verifica la
commutazione dello stato dell’uscita.
9
Analogamente ai temporizzatori, in Cx.acc viene registrato il numero di
conteggio raggiunto.
Sono disponibili contatori sia ad incremento (CU) che a decremento
(CD), ed alimentano una bobina RES associata al contatore Cx è possibile
resettare il contatore.
10
5.3 Esempi:
11
Oscillatore ad onda quadra:
Conteggio di eventi:
12
Operazioni aritmetiche e logiche: quando il blocco viene “alimenta-
to”, esegue l’operazione e salva il risultato nel blocco di memoria indicato
dall’indirizzo presente in RES.
EQU - uguale;
NEQ - diverso;
GEQ - maggiore o uguale;
LEQ - minore o uguale;
GRT - maggiore;
LES - minore.
13
Gli elementi che costituiscono questi diagrammi sono:
14
DSx - delay-set. L’inizio dell’azione viene ritardato di x secondi, dopo
di che viene mantenuta la sua esecuzione, anche dopo che la fase diviene
disattiva.
Lx - limited. L’azione viene eseguita in maniera ripetuta per un certo
intervallo di tempo x.
SLx - set-limited. L’azione viene eseguita in maniera ripetuta per x se-
condi, anche se la fase nel frattempo diviene disattivata.
1. Tra due fasi collegate da un arco orientato c’è sempre una transizione.
Per cui due fasi non possono essere connesse direttamente.
2. Tra due transizioni c’è sempre almeno una fase. Per cui due transizio-
ni non possono essere connesse direttamente, ma è possibile collegare
piú fase in seguito ad una transizione.
15
Le variabili temporali vengono indicate come t/Xn/d, dove t indica che
si tratta di tale tipo di variabile, Xn è il marker associato alla fase, e d è la
durata della temporizzazione. La variabile temporale assume inizialmente il
valore 0, e diventa 1 dopo che la variabile Xn rimane attiva per un tempo
pari a d, rimanendo in tale stato fino alla disattivazione di Xn.
16