• Non ci sono risultati.

Un’altra funzionalità importantissima è la possibilità di mettere a disposizione delle API, ovvero interfacce pubbliche o librerie di istruzioni che possono essere messe a disposizione di altri software che possono utilizzare per interagire con il PLCSIM Advanced. Queste possono essere utilizzate anche con codice C++ o C# (Utili per leggere le uscite o scrivere gli ingressi). Per cui si potrebbe creare un codice C# (C Sharp) che va a leggere l’uscita, come un’attivazione di una valvola o un pistone, e successivamente sfruttare l’altra funzione di scrittura degli ingressi, scrivere il comando di ingresso al PLC il comando, ad esempio di valvola aperta.

Figura 3.38: Inserimento di nuovi blocchi di programma sul TIA Portal

Una volta selezionato il blocco di programma che si intende utilizzare, è possibile program-mare mediante i Preferiti (contatto NC, contatto NA, bobina, box, ecc) presenti nell’editor in alto, come mostrato nella figura 3.39.

Figura 3.39: Esempio di programmazione mediante i "preferiti" sul TIA Portal

3.5.1 Blocchi Organizzativi

I blocchi organizzativi (OB) definiscono l’interfaccia tra il sistema operativo e il programma utente. Tali blocchi vengono ripresi dal sistema operativo e comandano diverse operazioni, come ad esempio:

• l’elaborazione ciclica del programma;

• la verifica iniziale del comportamento del sistema di automazione;

• il trattamento degli errori;

• l’elaborazione del programma comandata da un allarme.

Tuttavia, esistono diversi tipi di OB e tra i più importanti si possono citare:

• gli OB di avviamento, che vengono elaborati una sola volta al passaggio dello stato di funzionamento della CPU da STOP a RUN. Al termine dell’elaborazione di tale OB, inizia quella dell’OB di ciclo;

• gli OB di ciclo, i quali vengono elaborati ciclicamente. Sono blocchi di codice di livel-lo superiore nel programma nei quali avviene la programmazione di istruzioni da parte dell’utente o la creazione di ulteriori blocchi;

• gli OB di schedulazione orologio, che permettono di avviare programmi in maniera in-dipendente dall’elaborazione ciclica del programma in intervalli definiti (l’intervallo di schedulazione può essere modificato dalle proprietà dell’OB);

• gli OB dell’allarme di ritardo, i quali interrompono l’elaborazione ciclica del programma trascorso un tempo definito (il tempo di ritardo viene impostato nel parametro STR_DINT);

• gli OB di interrupt di processo, che interrompono l’elaborazione ciclica del programma per via di un evento hardware definito nelle proprietà dell’OB;

• gli OB di allarme di diagnostica, i quali interrompono l’elaborazione ciclica del programma se l’unità con funzioni di diagnostica per la quale è stato abilitato l’allarme individua un errore.

3.5.2 Blocchi Funzionali

I blocchi funzionali sono blocchi di codice che memorizzano i parametri di ingresso, uscita e transito in maniera permanente nei blocchi dati di istanza così da poterne disporre anche dopo l’elaborazione del blocco. Per questo sono definiti blocchi con "memoria". Tuttavia, essi lavorano anche con le variabili temporanee, le quali non vengono salvate nel DB di istanza ma restano a disposizione solo per un ciclo. I FB contengono sottoprogrammi che vengono eseguiti quando vengono richiamati da un altro blocco di codice. Inoltre, può essere richiamato anche più volte in diversi punti all’interno di un programma permettendo in questa maniera di semplificare la programmazione di funzioni complesse a ricorrenza frequente. Il richiamo di un blocco funzionale viene definito istanza. Ogni istanza di un blocco funzionale necessita di un blocco dati di istanza nel quale vengono salvati valori specifici dell’istanza per i parametri formali dichiarati nell’FB.

Esisto due diverse possibilità di accesso ai blocchi dati di istanza assegnati ad un FB al momento del richiamo:

• Blocchi dati con accesso ottimizzato, i quali non presentano una struttura definita della memoria. Gli elementi all’interno del blocco dati contengono solo un nome simbolico, ma non un indirizzo interno al blocco;

• Blocchi dati con accesso standard, i quali hanno una struttura definita dalla memoria. In questo caso gli elementi oltre ad avere un nome simbolico, presentano anche un indirizzo fisso.

3.5.3 Blocchi Funzione

I blocchi funzioni sono blocchi di codice senza memoria e dunque i dati sviluppati al suo interno non vengono salvati. Per questo quando la funzione viene richiamata i parametri formali devono essere sostituiti con parametri attuali. Per il salvataggio permanente dei dati, le funzioni dispongono di blocchi dati globali (esistono blocchi dati globali, ai quali è possibile accedere da tutti i blocchi di codice, e blocchi dati di istanza, assegnati a un determinato richiamo di FB).

Una funzione contiene un programma che viene eseguito quando la funzione viene richiamata da un altro blocco di codice. Le funzioni possono essere impiegate per:

• la restituzione dei valori della funzione per il blocco richiamante, come per funzioni mate-matiche

• l’esecuzione di funzioni tecnologiche, come controlli singoli con collegamenti binari

Anche una funzione può essere richiamata anche più volte in diversi punti all’interno di un programma permettendo di semplificare la programmazione di funzioni complesse a ricorrenza frequente.

3.5.4 Blocchi Dati

I blocchi dati sono destinati alla memorizzazione dei dati del programma. Essi contengono quindi dati variabili che vengono utilizzati dal programma utente. I blocchi dati globali acqui-siscono dati che possono essere utilizzati da tutti gli altri blocchi. La loro dimensione massima varia in funzione della CPU e la struttura dei blocchi dati globali può essere definita a piacere.

Come è stato già affrontato nei paragrafi precedenti, ogni blocco funzionale, ogni funzione o ogni blocco organizzativo può leggere o scrivere i dati da/in un blocco dati globale. I dati vengono mantenuti nel blocco dati anche quando si esce dal blocco. Un blocco dati globale e un blocco dati di istanza possono essere aperti contemporaneamente. Di seguito viene riportata la figura 3.40 estrapolata dalla guida del TIA Portal [24], la quale mostra i vari accessi possibili ai blocchi dati.

Figura 3.40: Rappresentazione dei vari accessi ai blocchi dati sul TIA Portal

Capitolo 4

Banco didattico Pneumax: componenti

e struttura