Sezione: Livello superiore
I moduli che si trovano al primo livello dell'albero dei moduli sono chiamati moduli di primo livello. A differenza di altri moduli hanno metodi che possono essere richiamati direttamente da uno o più task. I moduli di primo livello contengono la sezione Toplevel.
SEC Toplevel //optional: yes, modifier: [UPDATE]
GVL_Name := <GVL name>; //optional: yes, type: literal
Default_Application := <default application>; //optional: yes, type: QID
Default_POUPool := <TRUE/FALSE>; //optional: yes, type: BoolFlag
Pragmas := [<pragma1>, <pragma2>,...]; //optional: yes, type: Pragmalist
SEC Standard_Task : <task name> //optional: yes, modifier: [HIDE,UPDATE]
Name := <task name>; //optional: no, type: ID
Desc := <task description>; //(optional: no, type: Text)
Flags:= <flag>; //(optional: no, type: StdTaskFlags)
END_SEC
SEC Custom_Task : <task name> //optional: yes, modifier: [UPDATE]
Priority := <priority>; //optional: no, type: Subrange(0 .. 31)
Interval := <interval>; //optional: no, type: TimeLiteral)
Flags:= <flag>; //optional: no, type: CustomTaskFlags)
END_SEC
END_SECI dettagli riguardanti la sintassi dei tipi di definizione sono descritti nella sezione Dichiarazione del modulo.
GVL_Namedefinisce il nome del GVL in cui verrà dichiarata l'istanza del modulo e tutte le sue sottoistanze. Il segnaposto%Instancename%(L'ortografia maiuscola o minuscola non è rilevante), verrà sostituito dal nome dell'istanza del modulo.Il parametro
Default_Applicationdefinisce l'assegnazione dell'applicazione per tutte le istanze di questo modulo a un'applicazione specifica. Se è definito un'applicazione predefinita, l'uso diDefault_POUPoolnon è possibile.Il parametro
Default_POUPooldefinisce l'assegnazione dell'applicazione per tutte le istanze di questo modulo al pool POU. Se è definito un pool POU predefinito, l'uso diDefault_Applicationnon è possibile.Il parametro
Pragmascontiene un elenco di pragma del compilatore, che verranno inseriti prima della dichiarazione delle istanze FB del modulo.
La sezione Standard_Task definisce le attività da cui verranno eseguite le chiamate. Per questo sono disponibili tre attività standard: LOW, MEDIUM, E HIGH. Le definizioni di Standard_Task Sono:
Name: nome dell'attività predefinito che verrà definito come assegnazione dell'attività dopo la creazione dell'istanza del modulo.Desc: identificatore per la chiamata dell'attività. Dovrebbe essere breve e significativo (esempio:I/O task).Flags: I seguenti valori possono essere combinati con|carattere:CREATE_IF_MISSING: l'attività verrà creata se non esiste.READONLY: l'assegnazione dell'attività è di sola lettura e l'utente non può modificarla.UPDATE_IOS: l'attività viene utilizzata per aggiornare gli I/O. Ogni I/O può essere sovrascritto daUpdateInTaskparametro nelIOsezione.NONE: Nessun flag è impostato.
SEC Standard_Task : MEDIUM
Name := MainTask ;
Desc := TL.TaskMedium_Desc ;
Flags := READONLY | CREATE_IF_MISSING ;
END_SECUtilizzando la sezione Custom_Task un modulo può definire una o più attività personalizzate. Il target della sezione deve essere il nome di un metodo del blocco funzione del modulo. Il metodo non deve avere argomenti (né INPUT, OUTPUT, né INOUT).
Priority: Definisce la priorità dell'attività.Interval: Definisce l'intervallo dell'attività (costante del tipo di dati "TIME" o "LTIME").Flags: I seguenti valori possono essere combinati con|carattere:SHARED: Per ragioni di compatibilità, questo flag esiste ancora, ma si presuppone sempre implicitamente che sia impostato. Fondamentalmente significherebbe che se un'attività con le proprietà specificate nel fileCustom_Taskesiste già, verrà utilizzata questa attività. Ma poiché verrà creata una nuova attività se non esiste alcuna attività esistente con proprietà corrispondenti, questo flag viene reso obsoleto. Il nome dell'attività creata èTASK_<ModuleInstanceName>_<MethodName>.UPDATE_IOS: L'attività verrà utilizzata per aggiornare gli I/O collegati alle espressioni ST o direttamente agli I/O del modulo.NONE: Nessun flag è impostato.
Non esiste alcuna implementazione predefinita nella classe del modulo per il metodo specificato.
SEC Custom_Task : Method1
Priority := 7 ;
CycleTime := t#14ms ;
Flags := NONE ;
END_SECSuggerimento
Esattamente un compito standard o specifico deve avere il file UPDATE_IOS set di bandiere.
Se esistono attività standard, che non hanno il file
CREATE_IF_MISSINGflag impostato, dovrebbe esistere un'attività con il nome e le proprietà specificati delle impostazioni del generatore. Se le proprietà non corrispondono a quella specificata viene visualizzato un messaggio di avviso.Se esistono attività standard, che ha il file
CREATE_IF_MISSINGflag impostato, viene prima generata un'attività con le proprietà specificate. Ora, ogni volta che le impostazioni del generatore per questa attività vengono modificate, l'attività viene adattata, senza alcun messaggio di avviso.Non sono consentite attività standard di tipo diverso che fanno riferimento allo stesso nome di attività. In questo caso non viene emesso alcun errore.
A seconda dello standard configurato, per ogni istanza di livello superiore vengono richiamati i seguenti metodi all'inizio e alla fine dell'attività definita:
METHOD CallPrioHighStart: BOOL METHOD CallPrioHighEnd: BOOL METHOD CallPrioMediumStart: BOOL METHOD CallPrioMediumEnd: BOOL METHOD CallPrioLowStart: BOOL METHOD CallPrioLowEnd: BOOL
Ogni modulo è responsabile di chiamare le sue istanze di sottomodulo. I riferimenti ai sottomoduli non devono essere richiamati. L'implementazione predefinita nell'FB Module chiama i rispettivi metodi di tutte le istanze del sottomodulo nell'ordine della loro posizione nell'albero del modulo.
Suggerimento
Il puntatore SUPER offre l'accesso all'istanza del blocco funzione di base. Quindi ad esempio la chiamata SUPER^.CallPrioHighStart() può essere usato per chiamare il metodo Module.CallPrioHighStart() se il blocco funzione si estende Module. In questo modo, l'implementazione in Module si assicurerà che tutti i sottomoduli vengano richiamati.