Sei sulla pagina 1di 22

La serie S7-200 della Siemens

La serie S7-200 è una linea di controllori programmabili di dimensioni ridotte (Micro PLC), in grado
di controllare un’ampia varietà di compiti di automazione. La figura 1-1 rappresenta un micro PLC
S7-200. La compattezza del design, l’ampliabilità, i bassi costi ed il vasto set di operazioni fanno
dei controllori S7-200 una soluzione ottimale per la gestione di piccoli compiti di automazione.
Inoltre, l’ampia gamma di modelli di CPU con
diverse tensioni di alimentazione garantisce la
flessibilità necessaria per affrontare e risolvere i
più svariati problemi di automazione.
La figura 1-2 illustra un sistema base Micro PLC
S7-200, costituito da una CPU S7-200, da un
personal computer, dal software di
programmazione STEP 7-Micro/WIN 32,
versione 3.1 e da un cavo di comunicazione.

fig.1 S7-200

Per poter usare un personal computer (PC) si deve


disporre di uno dei seguenti set:
• cavo PC/PPI
• unità per processore di comunicazione (CP) e cavo
per interfaccia multipoint (MPI)
• scheda per interfaccia multipoint (MPI). La scheda fig.2 configurazione serieS7-200
viene fornita con l’apposito cavo MPI.
La serie dispone di differenti CPU ciascuna in grado
di soddisfare le esigenze del piccolo controllo. La
CPU 224 ad esempio può essere programmata fino a 4096 parole, ha sull’unità base 14 ingressi e
10 uscite e può essere espansa fino a 7 moduli aggiuntivi.
La Velocità di esecuzione delle operazioni booleane a 33 MHz è di 0,37ms/ operazione.
Il registro dell’immagine degli I/O contiene 128 Ingressi e 128 Q uscite, i Contatori /
temporizzatori sono 256/256 . Può eseguire operazioni matematiche con numeri interi (+ - * /) e
operazioni matematiche con numeri reali (+ - * /)
Funzioni avanzate ÁÁÁÁÁÁÁÁÁÁ
Contatore veloce integrato 6 H/W (20 KHz), 2 Potenziometri analogici, 2 Uscite impulsi (20 KHz),
gestisce gli Interrupt di comunicazione: 1 in trasmissione/2 in ricezione; due gli Interrupt a tempo
(da 1 ms a 255 ms), fino a 4 interrupt di ingresso hardware, possiede un Orologio hardware.
Sull’unità base del
224 sono presenti i
seguenti ingressi ed
uscite:
I0.0 I0.1 I0.2 I0.3
I0.4 I0.5 I0.6 I0.7
I1.0 I1.1 I1.2 I1.3
I1.4 I1.5
Q0.0 Q0.1 Q0.2
Q0.3 Q0.4 Q0.5
Q0.6 Q0.7 Q1.0
Q1.1

E’ possibile programmare un certo numero di merker (M)ossia di registri, di leggere di Merker


speciali (SM), di attivare dei contatori e dei timer:
M 0.0 - 31.7
SM 0.0 - 549.7
S 0.0 - 31.7
T 0-255
C 0 - 255
L 0.0 - 59.7
AIW 0-30
AQW 0-30
AC 0-3
Aree di memoria dell’s7-200
Tipo di Tipo di CPU 221 CPU 222 CPU 224 -226 CPU 226XM
accesso memoria
Bit(byte.bit) V 0.0 -2047.7 0.0 -2047.7 0.0 -5119.7 0.0 -10239.7
I 0.0-15.7 0.0-15.7 0.0-15.7 0.0-15.7
Q 0.0-15.7 0.0-15.7 0.0-15.7 0.0-15.7
M 0.0-31.7 0.0-31.7 0.0-31.7 0.0-31.7
SM 0.0-179.7 0.0-179.7 0.0-549.7 0.0-549.7
S 0.0-31.7 0.0-31.7 0.0-31.7 0.0-31.7
T 0.0-255 0.0-255 0.0-255 0.0-255
C 0.0-255 0.0-255 0.0-255 0.0-255
L 0.0-59.7 0.0-59.7 0.0-59.7 0.0-59.7
Byte VB 0 -2047 0 -2047 0 -5119 0 -10239
IB 0-15 0-15 0-15 0-15
QB 0-15 0-15 0-15 0-15
MB 0-31 0-31 0-31 0-31
SMB 0-179 0-179 0-549 0-549
SB 0-31 0-31 0-31 0-31
LB 0-59 0-59 0-59 0-59
AC 0-3 0-3 0-3 0-3
PAROLA VW 0- 2046 0- 2046 0- 5118 0- 10238
IW 0-14 0-14 0-14 0-14
QW 0-14 0-14 0-14 0-14
MW 0-30 0-30 0-30 0-30
SMW 0-178 0-178 0-548 0-548
SW 0-30 0-30 0-30 0-30
T 0-255 0-255 0-255 0-255
C 0-255 0-255 0-255 0-255
LW 0-58 0-58 0-58 0-58
AC 0-3 0-3 0-3 0-3
AIW 0-30 0-30 0-30 0-30
AQW 0-30 0-30 0-30 0-30
Doppia parola VD 0-2044 0- 2044 0- 5116 0- 10236
ID 0-12 0-12 0-12 0-12
QD 0-12 0-12 0-12 0-12
MD 0-28 0-28 0-28 0-28
SMD 0-176 0-176 0-546 0- 546
SD 0-28 0-28 0- 28 0- 28
LD 0-56 0-56 0-56 0- 56
AC 0-3 0-3 0-3 0- 3
HC 0-5 0-5 0-5 0-5
Accesso allo stesso indirizzo in byte , parola e doppia parola
Si riportano alcuni dei merker speciali della CPU 224:
SM0.0 Questo bit è sempre ON (impostato su 1).
SM0.1 Questo bit è sempre ON per il primo ciclo di scansione. Viene utilizzato, ad esempio, per
richiamare un sottoprogramma di inizializzazione.
SM0.2 Questo bit è on per 1 ciclo di scansione in caso di perdita dei dati a ritenzione.
SM0.3 Questo bit viene attivato per un ciclo se si passa allo stato RUN da una condizione di Avvio.
Può essere utilizzato per fornire un tempo di riscaldamento del sistema prima di avviare delle
operazioni.
SM0.4 Questo bit mette a disposizione un impulso di clock di 60 secondi (on per 30 secondi, off
per altri 30). Viene così fornito un ritardo facile da programmare o un impulso di clock di un
minuto.
SM0.5 Questo bit mette a disposizione un impulso di clock di 1 secondo (on per 0,5 secondi, off
per altri 0,5 secondi). Viene così fornito un tempo di ritardo facile da programmare o un impulso di
clock di un secondo.
SM0.6 Questo bit è un clock di ciclo di scansione che è attivo per un ciclo e disattivato per il
ciclo successivo.
SM0.7 Questo bit rispecchia la posizione dell’interruttore degli stati di funzionamento (off=TERM;
on=RUN). Se viene utilizzato per attivare il modo freeport quando l’interruttore è in RUN, esso
consente di abilitare la comunicazione con il PG commutando l’interruttore su TERM.

Spotenziometro
MB28 e SMB29 SMB28 contiene il valore digitale corrispondente alla posizione del
analogico 0, SMB29 contiene il valore digitale corrispondente alla
posizione del potenziometro analogico 1. Il potenziometro analogico ha un
campo nominale compreso fra 0 a 255 e una ripetibilità di ± 2 conteggi.
Il potenziomentro analogico può essere impostato con un piccolo cacciavite:
ruotandolo in senso orario (verso destra) si incrementa il valore, ruotandolo in
senso antiorario (verso sinistra) lo si decrementa.

Gli altri merker speciali svolgono funzioni particolari e si rimanda al manuale per approfondimenti.

Concetti base della programmazione


Gli esempi riportati fanno riferimento al set d’istruzioni SIMATIC con linguaggio internazionale:
L’esempio riportato sia in simbologia a contatti che in lista istruzione, attiva l’uscita Q0.0 quando è
attivo l’ingresso cablato all’indirizzo I0.0.

LD I0.0 // se premo il pulsante di marcia


= Q0.0 // allora attiva l’uscita

Nel secondo esempio è riportata una struttura base della programmazione di un


PLC, ossia una marcia arresto, si noti inoltre l’utilizzo della OR (O) per la messa in parallelo del
contatto Q0.0 e la nand per il contatto I0.1
LD I0.0 //se premo il pulsante di marcia
O Q0.0 // autoritenuta
AN I0.1 // finchè non premo lo stop
= Q0.0 // attiva l’uscita
OPERAZIONI SULLO STACK LOGICO

Una parte della memoria può essere organizzata a stack ( pila ) ossia
Reg7 in una forma che consente di gestire la memoria in modo LIFO
Reg6 (Last In First Out). L’ultimo dato immesso è il primo ad uscire dallo
Reg5 stack. I dati entrano ed escono sempre dal registro 0. Ad ogni
Reg4 operazione di scrittura i bit scorrono verso l’alto, verso il basso ad
Reg3 ogni operazione di lettura.
Reg2
Reg1 ALD e OLD prelevano i bit presenti nel reg0 e nel reg1 e ne fanno
Reg0 la and e la or rispettivamente, il risultato logico è salvato sullo stack
stack nel reg0.

LPS duplica il valore presente nel reg0 nel reg1, tutti


1 Reg7 0 Reg7
gli altri dati scorrono verso l’alto, quello presente sulla
0 Reg6 0 Reg6
sommità va perso.
0 Reg5 0 Reg5
0 Reg4 0 Reg4
0 Reg3 1 Reg3
1 Reg2 0 Reg2
0 Reg1 1 Reg1
1 Reg0 1 Reg0
Effetto di LPS

LPP preleva il valore dal reg0 il valore presente in …. …. …. …..


reg1 ne prende il posto e cosi via scorrendo verso il 1 Reg2 0 Reg2
basso 0 Reg1 1 Reg1
1 Reg0 0 Reg0
Effetto di LPP
Il valore 1 esce in lettura dallo stack

LRD copia il contenuto del reg1 in reg0


sovrascrivendolo al valore precedentemente …. …. …. …..
contenuto. Non c’è alcuna lettura del dato. 1 Reg2 1 Reg2
0 Reg1 0 Reg1
1 Reg0 0 Reg0

Esempio
NETWORK 1 //TITOLO DEL SEGMENTO

LD M0.0
LPS // si duplica il valore di M0.0
A I0.0
= Q0.1
LPP // il valore salvato è assegnato a Q0.2
= Q0.2

//COMMENTI DEL SEGMENTO


LD M0.0
LPS // si duplica il valore di M0.0
A I0.0
= Q0.1
LRD //copia il contenuto del reg1 in reg0
= Q0.2
LPP
A I0.3
= Q0.5

Uso dello stack in linguaggio a contatti per la descrizione di strutture complesse


LD I0.0
LD M0.1
A M0.0
OLD // mette in OR I risultati
//intermedi salvati sullo stack
AN I0.1
A Q0.1
= M0.0
LD I0.0
LD Q0.1
ON M0.0
ALD //mette in and i risultati messi sullo stack
= M0.0 //il risultato è posto in memoria ne
//merker 0.0

NETWORK 1
LD I0.0
O M0.0
LD T0
ON M0.1
ALD
= Q0.1

L’istruzione L o LD carica nello stack del PLC il risultato dell’istruzione logica; le successive
istruzioni OLD e ALD eseguono la OR e la AND degli ultimi due valori immessi nello stack.
Si simuli con simulplc il seguente programma
LD I0.0
LPS
LPS
LPP
= Q0.0

Uso di set e reset


NETWORK 1
LD I0.0
S Q0.0, 1 // l’istruzione pone a uno il numero di bit indicati a
partire dall’indirizzo Q0.0 in questo caso un solo bit.

NETWORK 2
LD I0.1
R Q0.0, 1

I contatori
L'operazione Conta in avanti CTU conta in avanti fino al valore massimo sui
fronti di salita dell'ingresso di conteggio in avanti (CU). Quando il valore
corrente (Cxxx) è >= al valore preimpostato (PV), il bit di conteggio (Cxxx)
viene attivato e tutti i contatti associati al contatore cambiano stato. Il
contatore viene resettato quando si attiva l'ingresso di reset (R). Il
contatore smette di contare quando raggiunge il PV.
Gli indirizzi sono Cxxx=da C0 a C255.
esempio

NETWORK 1
LD I0.0
LD I0.1
CTU C0, +10

NETWORK 2
LD C0
= Q0.0

Il contatore Conta indietro CTD conta all'indietro da un valore predefinito


sui fronti di salita dell'ingresso di conteggio all'indietro (CD). Quando il
valore corrente diventa uguale a zero, il bit di conteggio (Cxxx) viene
attivato. Il contatore resetta il bit di conteggio (Cxxx) e carica il valore
corrente con il valore preimpostato (PV) quando l'ingresso di caricamento
(LD) diventa attivo. Il contatore si arresta al raggiungimento del valore
massimo (32.767).
Aree dei contatori: Cxxx=da C0 a C255

L'operazione Conta in avanti/indietro CTUD, conta in avanti sui fronti di


salita dell'ingresso di conteggio in avanti (CU) e conta all'indietro sui
fronti di salita dell'ingresso di conteggio all'indietro (CD). Quando il valore
corrente (Cxxx) è >= al valore preimpostato (PV), il bit di conteggio
(Cxxx) viene attivato. Il contatore viene resettato quando si attiva
l'ingresso di reset (R). Aree dei contatori: Cxxx=da C0 a C255
Al raggiungimento del valore massimo (32.767), il fronte di salita
successivo dell'ingresso di conteggio in avanti farà sì che il valore
corrente si raccolga intorno al valore minimo (-32.768).

Il contatore Conta indietro CTD conta all'indietro da un valore predefinito sui fronti di salita
dell'ingresso di conteggio all'indietro (CD).

LE ISTRUZIONI DI CONFRONTO
La serie 200 dispone di una ampia
disponibilità di istruzioni di
confronto:
contatto di byte B uguale, diverso,
maggiore o uguale, minore o
uguale, maggiore, minore
Contatto per il confronto di numeri
interi I uguale, diverso, maggiore o
uguale, minore o uguale, maggiore,
minore
Contatto per il confronto di numeri interi D(a 32 bit)
Contatto per il confronto di numeri reali R.

LDB<= 45, 4
AW<> T5, +4
AD<= +3, +3
AR<= 4.0, 44.0
= Q0.0

L'operazione Confronto di L'operazione Confronto di L'operazione Confronto di L'operazione Confronto di


byte consente di numeri interi consente di doppi numeri interi numeri reali consente di
confrontare i valori IN1 e confrontare due valori: IN1 consente di confrontare confrontare due valori: IN1
IN2. Si possono effettuare i e IN2. Si possono due valori: IN1 e IN2. Si e IN2. Si possono
seguenti tipi di confronto: effettuare i seguenti tipi di possono effettuare i effettuare i seguenti tipi di
IN1 = IN2, confronto: seguenti tipi di confronto: confronto:
IN1 >= IN2, IN1 = IN2, IN1 = IN2, IN1 = IN2,
IN1 <= IN2, IN1 >= IN2, IN1 >= IN2, IN1 >= IN2,
IN1 > IN2, IN1 <= IN2, IN1 <= IN2, IN1 <= IN2,
IN1 < IN2 o IN1 > IN2, IN1 > IN2, IN1 > IN2,
IN1 <> IN2. IN1 < IN2 o IN1 < IN2 o IN1 < IN2 o
IN1 <> IN2. IN1 <> IN2. IN1 <> IN2.
I confronti di numeri interi I confronti di doppi numeri
non hanno segno interi non hanno segno Il confronto di numeri reali
(16#7FFF > 16#8000). (16#7FFFFFFF > è senza segno.
16#80000000).
Esempi Esempi Esempi Esempi
LDB<= IN1,IN2 LDW<= IN1,IN2 LDD<= IN1,IN2 LDR<= IN1,IN2
AB = IN1,IN2 AW = IN1,IN2 AD = IN1,IN2 AR = IN1,IN2
OB <> IN1,IN2 OW <> IN1,IN2 OD <> IN1,IN2 OR <> IN1,IN2

Riportiamo con un esempio per la realizzazione di un sequenziatore.

Storicamente realizzati con motorini che mettevano in rotazione


eccentrici che attivando i contatti con un certo ordine,
consentivano l’inserzione e la disinserzione di carichi in un certo
ordine.
La realizzazione con plc, prevede la programmazione di un
contatore up. Gli stati interni del contatore sono accessibili con
le istruzioni di confronto. L’uscita Q0.0 si ecciterà al quinto
impulso ossia quando il contatore C0 avrà il valore 5 come
corrente. La diseccitazione dell’uscita avverrà al 20 impulso
quando la condizione di disuguaglianza non sarà più verificata.
I sequenziatori sono alla base di strutture come i semafori.
I timer
Esistono tre timer TON, TONR e TOF.
La prima è detta temporizzazione come ritardo all’inserzione, la seconda temporizzazione come
ritardo all’inserzione con memoria. Entrambe contano il tempo quando l’ingresso di abilitazione è
attivo (ON). I contatti del temporizzatore vengono attivati quando il valore corrente (Txxx) diventa
maggiore o uguale al tempo preimpostato (PT). Quando l’ingresso di abilitazione è disattivato
(OFF), il valore corrente del temporizzatore di ritardo all’inserzione viene resettato, mentre quello
del temporizzatore di ritardo all’inserzione con memoria viene mantenuto. Quest’ultimo consente di
accumulare il tempo per più periodi di attivazione dell’ingresso. Il valore corrente del
temporizzatore può essere resettato con l’operazione Resetta R
Sia il temporizzatore di ritardo all’inserzione, che il temporizzatore di ritardo all’inserzione con
memoria continuano a contare una volta raggiunto il valore preimpostato e si arrestano al
raggiungimento del valore massimo 32767.
Il temporizzatore ritardo alla disinserzione consente di ritardare la disattivazione di un’uscita per un
dato periodo di tempo dopo che l’ingresso è stato disattivato. Quando l’ingresso di abilitazione si
attiva, il bit di temporizzazione viene immediatamente attivato e il valore corrente viene impostato
a 0. Alla disattivazione dell’ingresso, il temporizzatore conta finché il tempo trascorso diventa pari a
quello preimpostato. Una volta raggiunto il tempo preimpostato, il bit di temporizzazione si
disattiva e il valore corrente non viene più incrementato. Se l’ingresso resta disattivato per un
tempo inferiore a quello preimpostato, il bit di temporizzazione resta attivo. Per iniziare il
conteggio, l’operazione TOF deve rilevare una transizione da attivo a disattivato (ON - OFF).

I temporizzatori TON, TONR e TOF sono disponibili in tre risoluzioni indicate dal numero del
temporizzatore, come indicato nella tabella 9-1. Ogni conteggio del valore corrente è un multiplo
della base di tempo. Ad esempio, un conteggio di 50 in un temporizzatore da 10 ms corrisponde a
500 ms.

Tipo Risoluzione Valore massimo in Numero del


in secondi (s) temporizzatore
millisecondi
(ms)
TONR 1 ms 32,767 s T0, T64
( a ritenzione) 10 ms 327,67 s da T1 a T4, da T65 a T68
100 ms 3276,7 s da T5 a T31, da T69 a T95
TON, TOF 1 ms 32,767 s T32, T96
(non a ritenzione) 10 ms 327,67 s da T33 a T36, da T97 a
T100
100 ms 3276,7 s da T37 a T63, da T101 a
T255

Non è possibile utilizzare gli stessi numeri per i TOF e i TON. Ad esempio, non si possono
impostare contemporaneamente i temporizzatori TON T32 e TOF T32.
Esempio Tof
Esempio
Il seguente esempio è riferito ad un arresto temporizzato
dell’uscita Q0.0.

// definizione del
timer

LD Q0.0
TON T38, +100
// marcia arresto
temporizzata
LD I0.0
O Q0.0
AN T38
= Q0.0

Una funzione simile può essere svolta da un


timer ritardato alla diseccitazione TOF.
Ricorda che se l’ingresso va basso prima che il
valore di preset venga raggiunto, l’uscita rimane
alta come mostra il diagramma temporale in
figura.
LD I0.0
TOF T38, +100
LD T38
= Q0.0

I relè di controllo sequenziale forniscono


alle applicazioni una tecnica per
organizzare delle operazioni macchina o
dei passi in segmenti di programma
equivalenti.

NETWORK 1
LD I0.0
AN I0.1
= S0.0
NETWORK 2
LSCR S0.0 // inizio segmento
di controllo sequenziale
NETWORK 3
LD I0.2
= Q0.0
NETWORK 4
LD I0.3
= Q0.1
NETWORK 5
SCRE // fine segmento di
controllo sequenziale
Contatti di transizione
Il contatto Transizione positiva attiva il flusso di corrente per un ciclo di scansione ad ogni
transizione da off a on. Il contatto Transizione negativa attiva il flusso di corrente per un ciclo di
scansione ad ogni transizione da on a off.
In KOP le operazioni Transizione positiva e Transizione negativa vengono rappresentate mediante
contatti.

NETWORK 1
LD C0
EU
S Q0.0, 1

NETWORK 2
LD I0.1
ED
R Q0.0, 1

Le istruzioni matematiche
I microprocessori della serie S7-22X possono svolgere alcune delle operazioni di una calcolatrice
scientifica in particolare: la funzione sen, cos, tan, ln, exp. Inoltre implementano il calcolo di un
regolatore PID.

Sono disponibili alcune istruzioni aritmetiche quali somma, sottrazione, moltiplicazione e divisione
tra interi. Le istruzioni sono gestibili in modo sia immediato che diretto con le variabili della CPU.
La serie S7-22X presenta un numero elevato di istruzioni per il controllo del programma, gestione
dell’interrupt, la comunicazione.
Esempio sull’uso delle istruzioni di somma e
conversione.

Si voglia attivare un’uscita Q0.0 se il potenziometro 0 piu


un offset di 2 è uguale o maggiore di 200.
L’operazione di somma ha come operando le Word, è
necessario convertire il valore del potenziometro
contenuto in SMB28 da byte in word ed il risultato è
salvato nella variabile VW4.
Successivamente a questa si somma la costante 2 e la si
salva in VW0.
L’ultimo segmento attribuisce all’uscita Q0.0 il risultato del
confronto >=200.

Le istruzioni di trasferimento
Le istruzioni MOV consentono di trasferire il dato presente in IN all’indirizzo OUT.
Nell’esempio si trasferisce il valore dell’ingresso analogico AIW0 all’uscita analogica
AQW0.
APPLICAZIONE

SOTTOPROGRAMMI

L'operazione Sottoprogramma o l'operazione CALL di AWL trasferiscono il controllo al


sottoprogramma(n). L'operazione Sottoprogramma può essere utilizzata con o senza parametri.
Note:* Il limite massimo di parametri di I/O per ciascun richiamo di sottoprogramma è 16.
Per la definizione dei parametri è necessario entrare nel codice del
sottoprogramma ( SBR0) e inserire nella tabella delle variabili locali
il nome e il tipo dei parametri.

Solo dopo aver definito i parametri inserire nel main il blocco sottoprogramma

avendo cura di mantenere la corrispondenza di tipo tra parametri passati e definiti.


Non è possibile utilizzare l'operazione END in un sottoprogramma.
Le operazioni non condizionali di conclusione dell'unità di programma ( RET per SBR e RETI per
INT) vengono inserite automaticamente dagli editor.
Interrupt

Gli interrupt consentono di reagire rapidamente a particolari eventi interni e


esterni. È consigliabile ottimizzare le routine di interrupt per l'esecuzione di
task specifici e quindi restituire il controllo al programma principale. Limitando
il più possibile le dimensioni e l'azione delle routine di interrupt, è possibile
ridurne i tempi di esecuzione a vantaggio di altri processi che in tal modo non
resteranno bloccati troppo a lungo.

L'operazione Assegna interrupt associa un evento di


interrupt (EVNT) al numero di una routine di interrupt
(INT) e abilita l'evento.

L'operazione Separa evento separa un evento di interrupt


(EVNT) dalle routine di interrupt e disabilita l'evento.

L'operazione Fine condizionata della routine di interrupt


può essere utilizzata per tornare da un interrupt, in base
ad una condizione della combinazione logica precedente

ENI L'operazione Abilita tutti gli interrupt abilita l'elaborazione di tutti


gli eventi di interrupt assegnati.

DISI L'operazione Inibisci tutti gli interrupt inibisce l'elaborazione di


tutti gli eventi di interrupt. Nella transizione allo stato RUN l'utente
disattiva gli interrupt. Una volta nello stato RUN si possono abilitare tutti
gli interrupt con l'operazione ENI. L'operazione Inibisci tutti gli interrupt
permette di mettere in coda gli interrupt, ma non di richiamare le
routine di interrupt.
Tabella eventi associabili
0 I0.0 fronte di salita
1 I0.0 Fronte di discesa
2 I0.1 Fronte di salita
3 I0.1 Fronte di discesa
4 I0.2 Fronte di salita
5 I0.2 Fronte di discesa
6 I0.3 Fronte di salita
7 I0.3 Fronte di discesa
8 Porta 0 Ricezione carattere
9 Porta 0 Trasmissione conclusa
10 Interrupt a tempo 0 SMB34
11 Interrupt a tempo 1 SMB35
12 HSC0 CV=PV (valore attuale = valore di preimpostazione)
13 HSC1 CV=PV (valore attuale = valore di preimpostazione)
14 HSC1 Cambiamento di direzione
15 HSC1 Reset esterno
16 HSC2 CV=PV (valore attuale = valore di preimpostazione)
17 HSC2 Cambiamento di direzione
18 HSC2 Reset esterno
19 PLS0 Interrupt di conteggio impulsi PTO completo
20 PLS1 Interrupt di conteggio impulsi PTOcompleto
21 Temporizzatore T32 Interrupt CT = PT
22 Temporizzatore T96 Interrupt CT = PT
23 Porta 0 Ricezione messaggio conclusa
24 Porta 1 Ricezione messaggio conclusa
25 Porta 1 Ricezione carattere
26 Porta 1 Trasmissione conclusa
27 HSC0 Cambiamento di direzione
28 HSC0 Reset esterno
29 HSC4 CV=PV(valore attuale = valore di preimpostazione)
30 HSC4 Cambiamento di direzione
31 HSC4 Reset esterno
32 HSC3 CV=PV(valore attuale = valore dipreimpostazione)
33 HSC5 CV=PV

Gli interrupt vengono elaborati uno dopo l'altro in base al rispettivo livello di
priorità, per cui in qualsiasi momento può essere attiva una sola routine di
interrupt.
Se è attivo un interrupt a tempo, esso avrà la priorità sull'eventuale successivo
interrupt di bit o di comunicazione.
Tali interrupt vengono messi in attesa per essere elaborati in seguito.
PROGRAMMA GESTIONE INTERRUPT EVENTO 0

MAIN

LD SM0.1
ATCH INT_0, 0
ENI

È consigliabile non
usare le bobine di
uscita negli
interrupt ma
passare attraverso
marker !!!

LD I0.1
R M0.0, 1

LD M0.0
= Q0.0
INTERRUPT INT0 RICHIAMATO FRONTE DI SALITA I0.0

LD SM0.0
S M0.0, 1

LD SM0.0
CRETI
PROGRAMMA GESTIONE INTERRUPT EVENTO 4
MAIN

AWL
MAIN

LD I0.0
ATCH INT_0, 4
ENI

LD I0.1
EU
DTCH 4

LD SM0.1
MOVW +0, VW0

INT_0

LD SM0.0
INCW VW0
PROGRAMMA GESTIONE EVENTO 10 INTERRUPT TEMPORIZZATO
MAIN

AWL

attach int_0 all'evento 10


ossia
TEMPORIZZAZIONE
SMB34
LD I0.0
ATCH INT_0, 10
ENI

STACCO L'EVENTO 10 DA
INT_0

LD I0.1
EU
DTCH 10

INIZIALIZZO LA VARIABILE VW0


IMPOSTO L'INTERVALLO
TEMPORALE A 250 ms IL VALORE
MAX 255.
INTERRUPT A TEMPO 0 ------->
SMB34

LD SM0.1
MOVW +0, VW0
MOVB 250,
SMB34

LD SM0.0
INCW VW0
PROGRAMMA GESTIONE EVENTO 21 INTERRUPT TEMPORIZZATO T32

LD I0.0
ATCH INT_0, 21
S M0.0, 1
ENI

LD I0.1
EU
DTCH 21
R M0.0, 1

LD SM0.1
MOVW +20, VW0

LD SM0.0
A M0.0
TON T32, +1000

LD SM0.0
DECW VW0
R T32, 1

IL T32 DEVE ESSERE RESETTATO per


evitare che continui a contare da
1000 in su!
Il cablaggio delle uscite e degli ingressi

Le uscite in AC sono cablabili in gruppi di tre con tre differenti comuni per ciascun gruppo.
Gli ingressi sono invece alimentate a 24 V in c.c. con due distinti comuni come mostrato in figura.

Le uscite possono alimentare fino a 2 A.