function block diagram - politecnico di milanodocenti.etec.polimi.it/ind32/didattica... ·...
Post on 30-Mar-2020
26 Views
Preview:
TRANSCRIPT
Function Block Diagram
22-23 Maggio 2001 1
Function Block Diagram
Marco MauriPolitecnico di Milano
P.zza Leonardo da Vinci, 32
Function Block Diagram
22-23 Maggio 2001 2
Sommario
• Struttura del linguaggio e notazioni grafiche
• Come esprimere espressioni semplici e complesse
• Come mostrare il flusso di segnale tra funzioni e
function block
• Come assegnare valori alle variabili
• Come gestire il feedback di un segnale
• Regole per la valutazione di un diagramma FBD
• Restrizioni sulla portabilità di codice tra ST e FBD
Function Block Diagram
22-23 Maggio 2001 3
Introduzione
• Il linguaggio FBD è un linguaggio grafico
bidimensionale che si configura con una struttura
simila a quella di un circuito hardware
• E’ prevista anche una notazione basata solo su
caratteri ASCII
• FBD era stato introdotto come sistema di specifica
nella norma IEC 167
• La norma IEC 1131-3 ha formalizzato la sua
definizione come linguaggio di programmazione
Function Block Diagram
22-23 Maggio 2001 4
Elementi grafici
Link orizzontale ----------
Connessione |
------+------
|
Incrocio tra segnali
orizzontali e verticali
| |
| |
---------+
| |
Angoli---------+
|
Connettori --------> LOAD_JOB >
> LOAD_JOB>--------
>LOAD_JOB>
>LOAD_JOB>
Function Block Diagram
22-23 Maggio 2001 5
Elementi grafici
Blocco con connessioni +---------+
----| |
| |---
| |
----| |---
+---------+
La rappresentazione completamente grafica non è
specificata completamente nella norma. Vengono
definiti solo alcuni elementi fondamentali. La
rappresentazione può quindi dipendere
dall’implementazione
Function Block Diagram
22-23 Maggio 2001 6
Metodologia
• FBD può essere utilizzato per descrivere programmi, funzioni o Function Blocks
• Può anche essere utilizzato per descrivere azioni e transizioni per il linguaggio SFC
• La sua caratteristica principale è la rappresentazione di flussi di dati e ciò fa sì che sia applicato soprattutto per la definizione del loop di controllo e per le sezioni di logica
• Come molti linguaggi grafici, FBD si basa sulla connessione di blocchi che presentano gli ingressi sulla sinistra e uscite sulla destra
Function Block Diagram
22-23 Maggio 2001 7
Convenzioni grafiche
• Alcune convenzioni grafiche devono essere usate :
– Un function block è rappresentato come un blocco
rettangolare con gli ingressi a sinistra e le uscite a destra
– Il nome del function block deve essere sempre indicato con il
blocco, mentre il nome dell’istanza deve essere indicato
sopra il blocco.
– Devono essere indicati anche i nomi degli input e degli
output. Questi possono essere omessi nella
rappresentazione grafica ma devono essere comunque
possibile accedervi (ad es. si possono usare delle label con
dei numeri, ma deve essere comunque possibile visualizzare
il nome completo)
Function Block Diagram
22-23 Maggio 2001 8
Convenzioni grafiche
And
Esempio di function
Label identificativa
della funzione
Esempio di function block
in1
in2
out1
out2
PlantControl
PlantControl1
Label uscita
Label ingresso
Label tipo FB
Label istanza
Function Block Diagram
22-23 Maggio 2001 9
Gli archi
• Gli archi connettono i blocchi rappresentano i flussi di dati
• Attraverso gli archi possono transitare date appartenente a
qualunque tipo di variabile riconosciuto dalla norma
• Il propagarsi dell’informazione avviene da sinistra verso destra
in maniera tale che l’esecuzione di un blocco determina il
contemporaneo aggiornamento delle sue uscite
• La negazione di un segnale può avvenire mettendo un piccolo
cerchietto in corrispondenza di un ingresso. Se questa funzione
non è supportata la negazione di un segnale avviene
semplicemente utilizzando la funzione NOT
Function Block Diagram
22-23 Maggio 2001 10
Gli archi
+
and
var1
var2
or
nor
in1
in2
out1
out2
PlantControl
PlantControl1
var3
var4
var5
var1
var6
NOT
Function Block Diagram
22-23 Maggio 2001 11
Feedback loop
• La norma ammette che un diagramma FBD presenti loop chiusi interni
• Questi loop possono essere espliciti o impliciti: – Espliciti se esiste un arco che connette un output con un
input
– Impliciti se il loop è creato utilizzando un connettore
• Non è però specificato dallo standard la modalità di apertura dell’anello, la soluzione dipende quindi dall’implementazione
• Alcuni tool permettono la definizione dell’ordine di esecuzione
Function Block Diagram
22-23 Maggio 2001 12
Feedback loop
Fb1 Fb2
Fb3
Fb1 Fb2
Fb3
>label> >label>
Loop esplicito
Loop implicito
Function Block Diagram
22-23 Maggio 2001 13
Controllo dell’esecuzione
• Per controllare il flusso di esecuzione un function block o una function hanno a disposizione degli input e output addizionali : EN e ENO
• EN è un ingresso booleano che permette di controllare l’esecuzione di una funzione. Se EN è TRUE la funzione è calcolata, altrimenti le sue uscite non vengono calcolate
• ENO è una variabile booleana di uscita che commuta da FALSE a TRUE quando la funzione ha completato la sua esecuzione
• Si possono così creare condizioni di trigger legate a precisi valori di variabili
Function Block Diagram
22-23 Maggio 2001 14
Controllo dell’esecuzione
Fb1
Fb2
Fb3 EN ENO
EN
Function Block Diagram
22-23 Maggio 2001 15
Salti e label
• E’ possibile modificare l’ordine di esecuzione
della rete FBD utilizzando l’opzione grafica di
Salto (Jump)
• La sezione della rete a cui si salta viene
specificata attraverso una label
• I segnali che determinano la condizione di
jump sono normalmente identificati con una
doppia freccia ( --->>)
Function Block Diagram
22-23 Maggio 2001 16
Salti e label
Fb1Fb2
Fb3
Fb4
>>
Section_name:
Section_name
Fb5
Function Block Diagram
22-23 Maggio 2001 17
Salti e label
• La norma non specifica cosa succede al resto della
rete quando viene incontrato un salto. Una
interpretazione è che tutti i blocchi della rete siano
valutati dopo che il salto è stato fatto. Una
interpretazione alternativa è che l’esecuzione della
rete sia bloccata e la rete identificata dalla label
cominci ad essere eseguita
• E’ consigliabile non utilizzare i salti in una rete FBD
non essendo chiare le regole di evoluzione
Function Block Diagram
22-23 Maggio 2001 18
Regole di esecuzione
• La norma non presenta regole precise per
determinare l’ordine di esecuzione dei blocchi
all’interno di una rete FBD
• Questo aspetto fa sì che in questo caso si
trovino soluzioni diverse passando da uno
strumento commerciale ad un altro
• La norma fissa comunque alcuni principi
generali che devono essere rispettati
Function Block Diagram
22-23 Maggio 2001 19
Regole di esecuzione
• Nessun elemento può essere valutato se non sono
stati aggiornati tutti gli ingressi
• L’esecuzione di un elemento di una rete non può
considerarsi completata fino a quando tutte le sue
uscite non sono state aggiornate
• L’esecuzione di un’intera rete non è completa fino a
quando tutte le sue uscite non sono state aggiornate
• Quando i dati sono trasferiti da un blocco ad un altro
si devono riferire alla medesima esecuzione
Function Block Diagram
22-23 Maggio 2001 20
Portabilità tra ST e FBD
• La maggior parte dei costrutti FBD può
essere tradotta in ST. Ci sono problemi nel
rappresentare in ST il flusso di esecuzione.
Non esiste in ST una esplicita notazione per
accedere a EN e ENO.
• Nella traduzione da ST a FBD è difficoltosa la
rappresentazione dei cicli e non esistono
funzioni esplicite per accedere agli elementi
di un dato strutturato.
Function Block Diagram
22-23 Maggio 2001 21
Regole di buona programmazione
• L’uso di jump dovrebbe essere evitato
• Il programma dovrebbe essere decomposto in
Function Blocks che limitano il numero di archi di
connessione al fine di non rendere troppo complessa
la lettura del grafico
• La precedente affermazione va poi bilanciata con
l’esigenza di limitare i livelli di annidamento dei
Function Blocks
• Tutte le variabili interne della rete dovrebbe essere
inizializzate durante la fase di start del sistema
Function Block Diagram
22-23 Maggio 2001 22
Regole di buona programmazione
• Fanno eccezione le variabili direttamente legate ad
un input dal campo
• Un valore di default deve anche essere assegnato
alle variabili direttamente legate ad uscite sul campo
• Minimizzare il numero di conversioni di tipo ed
eliminare le conversioni implicite
• Evitare l’uso di operazioni in cui gli operandi
appartengono a tipi diversi
• L’affermazione precedente è particolarmente
importante nel caso di confronti
Function Block Diagram
22-23 Maggio 2001 23
Regole di buona programmazione
• Evitare in particolare l’uso misto di variabili
signed e unsigned
• Nel caso di gestione di variabili a virgola
mobile preferire il tipo LREAL (64 bit) rispetto
al REAL (32 bit)
• Evitare l’uso di variabili in virgola mobile nel
caso di operazioni di confronto
Function Block Diagram
22-23 Maggio 2001 24
Consigli grafici
Ingressi nascosti
Function Block Diagram
22-23 Maggio 2001 25
Consigli grafici
Percorso confusoIntersezione di
archi
Function Block Diagram
22-23 Maggio 2001 26
Continuous function chart
ResourceTask
Interval
Priority
T#50ms
1
PROGRAM
END_PROGRAM
Fb3
Fb3_1
Function Block Diagram
22-23 Maggio 2001 27
Conclusioni
• FBD è un linguaggio che può essere usato per un ampio spettro
di applicazioni compresi i problemi di logica booleana e controlli
in anello chiuso
• Nonostante è disponibile il costrutto di salto, FBD è adatto
principalmente a descrivere sistemi il cui comportamento è
continuo. Per problemi diversi è preferibile strutturare il
programma FBD utilizzando SFC.
• Non c’è una corrispondenza univoca tra FBD e gli altri linguaggi
• E’ possibile specificare la struttura ad alto livello di un sistema
grazie ad una estensione del programma FBD chiamata
Continous function charts
top related