Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PLC2
PLC2
Configuration
Resource Resource
Task Task Task Task
Access Path
Corrispondenza tra il Modello Software
e i Sistemi Reali
Configuration
Resource
PLC program program
Processore Resource
program program
Processore
Resource
program program
Corrispondenza tra il Modello Software
e i Sistemi Reali
FieldBus
Configuration
Resource Resource Resource
program program program program program program
Riusabilità del software:
Program Organisation Units (POUs)
POUs: program, function blocks, function
La definizione di un POU permette il suo utilizzo un numero
di volte illimitato: chiamate di funzioni e istanze di
Programma e Function Block
Ciascuna istanza di un Programma o di un Function Block
condivide lo stesso codice, ma ha la sua area privata di
memoria
Nell'ambito della stessa Configurazione è possibile utilizzare
più istanze dello stesso programma in differenti Risorse
Nell'ambito dello stesso Programma è possibile utilizzare più
istanze dello stesso Function Block
Non è ammessa alcuna ricorsione nelle POUs
Comunicazioni tra POUs
Configuration
Program X Resource Program Y
VAR_EXTERNAL VAR_EXTERNAL
x:REAL x:REAL
VAR_GLOBAL
x:REAL
Elementi in Comune tra i 5 linguaggi IEC 1131-3
Identificatori
Un identificatore può essere costituito da una sequenza di lettere e numeri
purché siano soddisfatte le seguenti condizioni:
il primo carattere non sia un numero
non ci siano più di due caratteri "_" consecutivi
non vi siano spazi
Lo standard impone che almeno i primi 6 caratteri debbano differenziare due
identificatori
Keywords
Lo standard definisce un set di keywords (ad esempio VAR,
VAR_EXTERNAL, VAR_ACCESS). Si deve evitare l'uso di identificatori
uguali alle keywords.
Commenti
Vengono messi tra (* *)
Tipi di dati predefiniti:
Interi, Reali, Time, Date, String, Boolean
Tipi Interi
Variabili:
IEC Data Type Description Bits Range
SINT short integer 8 -128,+127
INT integer 16 -32768, 32767
DINT double integer 32 -231, +231-1
LINT long integer 64 -263, 263-1
USINT unsigned short int 8 0, 255
UINT unsigned int 16 0, 216-1
UDINT unsigned double int 32 0, 232-1
ULINT unsigned long int 64 0, 264-1
Tipo Boolean
Variabili:
IEC data type Description
BOOL Boolean
Range
TYPE TYPE
nome: tipo(range); volts:int(-6..+12)
END_TYPE; END_TYPE;
Vettore
TYPE
nome: ARRAY[inf..sup, inf..sup] OF tipo;
END_TYPE;
Definizione di Variabili
Variabili Locali:
dichiarate in un POU (programma, function block, funzione)
Variabili Globali :
dichiarate in un Program, Resource e in una Configuration
Variabili Esterne:
devono corrispondere a variabili globali
Variabili di Ingresso, Uscita, Ingresso/Uscita di un POU:
programma, function block, funzione
Variabili con Riferimento Diretto
Definizione di Variabili
Variabili Locali
Possono essere definite solo in POU (program, function
block e funzioni) e hanno validità solo all'interno di tali
POU
VAR
nome: tipo;
nome:tipo;
END_VAR;
Definizione di Variabili
Variabili globali
Possono essere definite solo nei Program, Resource e
Configuration.
Esse hanno validità (dunque possono essere lette e scritte)
all'interno di tutti i POU esistenti dentro il Programma,
Resource e Configuration, in cui la variabile globale è
dichiarata come esterna (VAR_EXTERNAL).
VAR_GLOBAL
nome: tipo;
nome:tipo;
END_VAR;
Definizione di Variabili
Variabili esterne
Possono essere definite solo nei POU
Permettono l'accesso a variabili globali definite nel
Program, Resource e Configuration, contenente il POU.
VAR_EXTERNAL
nome: tipo;
nome:tipo;
END_VAR;
Definizione di Variabili
Variabili Input
Permettono ad un POU (Program, Function block,
Function) di ricevere dati dall'esterno.
VAR_INPUT
nome: tipo;
nome:tipo;
END_VAR;
Definizione di Variabili
Variabili Output
Permettono ad un POU di fornire dati all'esterno.
VAR_OUTPUT
nome: tipo;
nome:tipo;
END_VAR;
Variabili Input/Output
Permettono ad un POU di ricevere dati dall'esterno, e
consentono al POU di modificare tali dati.
VAR_IN_OUT
nome: tipo;
nome: tipo;
END_VAR;
Definizione di Variabili
Variabili con riferimento diretto
E' possibile non utilizzare simboli di variabile, ma fare
riferimento diretto a locazioni di memoria, ingressi e
uscite.
Nota: Possono essere definite solo in un Program e
NON in Function Blocks e Function (per la riusabilità
del software)
Definizione di Variabili
VAR RETAIN
Speed: REAL;
END_VAR;
Attributi di Variabili
CONSTANT. L'attributo specifica che il valore
attribuito alla variabile non può essere modificato.
Questo attributo non può essere usato per
variabili esterne.
VAR CONSTANT
Speed: REAL:=12.3;
END_VAR;
AT. Permette di attribuire ad una variabile simbolica,
un indirizzo di memoria (I,Q,M) determinato.
VAR
Status AT %IX0.0: BOOL;
END_VAR;
Partenze (Start) di un PLC
COLD (Freddo)
Durante una partenza COLD tutte le variabili sono
inizializzate a valori di default o a quelli ridefiniti
dall’utente
WARM (Caldo)
Durante una partenza WARM solo le variabili (compresi
timers e contatori) NON-RETENTIVE (attributo RETAIN
non presente) sono inizializzate ai valori di default o a
quelli ridefiniti dall’utente.
Le variabili (compresi timers e contatori) con attributo
RETAIN non vengono inizializzate ma continuano ad
assumere l’ultimo valore precedente alla WARM start
HOT
Durante una partenza HOT nessuna variabile viene
inizializzata
Task
Concetti fondamentali della schedulazione di processi:
Un processo può trovarsi nello stato di pronto, di attesa o
di esecuzione
Un processo nello stato di pronto viene posto in
esecuzione in base alla politica di scheduling del S.O.
E’ possibile assegnare una priorità ai processi in modo da
aiutare il S.O. nella scelta del processo da porre in
esecuzione tra i processi pronti
Task nello standard IEC 1131-3:
Ha il compito di “risvegliare un processo” ponendolo
nello stato di pronto
Permette di assegnare differenti controlli sulla esecuzione
di Programmi o di Function Blocks appartenenti alla
stessa Resource
Task
Ad ogni Program e Function Block viene associato
un task.
Esistono tre tipi di tasks:
Cyclic tasks: sono attivati ad intervalli temporali e il
programma è eseguito periodicamente (o ciclicamente)
System (or Error) tasks: sono attivati se un evento di
sistema (errore di sistema) avviene durante l’esecuzione
di un programma, ad esempio stack overflow
Event (or Interrupt) tasks: sono attivati all’occorrenza di
certi eventi, ad esempio se una variabile ha raggiunto un
certo valore o al sopraggiungere di un interrupt
Un programma senza task associato ha la più bassa
priorità e viene posto in stato di pronto appena
termina.
Task
La dichiarazione dei task è caratterizzata dai seguenti
parametri:
Task Sistema/Interrupt
Definizione dell'evento (strettamente legato al PLC)
Task Cyclic
Definizione dell'intervallo. Si noti che il task può essere eseguito
anche dopo intervalli superiori all'intervallo specificato, in
dipendenza del S.O.
WatchDog Time. Specifica l’intervallo temporale dopo il quale
viene controllato se l’intervallo Periodico è stato superato o no.
Si sceglie generalmente inferiore o uguale alla durata
dell'intervallo.
Priorità.
Viene assegnata una priorità al task, generalmente in ordine
decrescente (0 la più alta). Si usa nella scelta tra processi pronti.
Task
I Task sono degli strumenti per controllare l'esecuzione dei processi, ma
l'esecuzione dipende dal Sistema Operativo (preemptive, non-preemptive)
Esempio: tre tasks:
Task A, Cyclic, Interval 100ms, priorità 0, durata 10
Task B, Cyclic, Interval 200ms, priorità 1, durata 90
Task C, Cyclic, Interval 300ms, priorità 2, durata 120
Non-preemptive schedule
A
C
B