Sezione: Slot
Questa sezione definisce la disponibilità e il tipo di slot dei moduli nell'albero dei moduli. È possibile definire due diversi tipi di slot.
Fessura
SEC Slots //optional: yes, modifier: [UPDATE]] SEC Slot : <slot identifier> //optional: yes, modifier [HIDE,UPDATE] Variable := <variable name>; //optional: no, type: InstancePath Role := <role name>; //optional: no, type: text Type := <slot type>; //optional: no, type: SlotType Inst_Prefix := <instance prefix>; //optional: yes, type: ID Optional := TRUE/FALSE; //optional: yes, type: BoolFlag Default_Inst_Name := <instance name>; //optional: yes, type: text Pragmas := [<pragma1>, <pragma2>,...]; //optional: yes, type: Pragmalist RegularExpressionParameterId := <RegEx param ID> //optional: yes, type: text SEC Default_Allocation : //optional: yes, modifier [UPDATE] Module_Name := <default module ID>; //optional: yes, type: ID Instance_Name := <default name>; //optional: yes, type: ID NotDeletable := TRUE/FALSE //optional: yes, type: BoolFlag SEC VisuEmbeddings //optional: yes, modifier [UPDATE] Empty := TRUE/FALSE; //optional: yes, type: BoolFlag SEC Embedding : <visu identigier> //optional: yes, modifier [UPDATE] VisuName := <visu name>; //optional: no, type: ID Target := <target name>; //optional: yes, type: ID LinkId := <link ID>; //optional: yes, type: ID END_SEC END_SEC SEC PageVisu //optional: yes, modifier [UPDATE] VisuName := <visu name>; //optional: yes, type: ID TopLevelTap := TRUE/FALSE; //optional: yes, type: BoolFlag END_SEC SEC IOMappings //optional: yes, modifier [UPDATE] SEC Mapping : <mapping identifier> //optional: yes, modifier [UPDATE] NoMapping := TRUE/FALSE; //optional: yes, type: BoolFlag STExpression := <ST expression>; //optional: yes, tye: ID/ST expression END_SEC END_SEC SEC Parameters //optional: yes, modifier [UPDATE] SEC Param : <param identifier> //optional: yes, modifier [UPDATE] Value := <value>; //optional: no, type: ID) END_SEC END_SEC END_SEC END_SEC END_SEC
I dettagli riguardanti la sintassi dei tipi di definizione sono descritti nella sezione Dichiarazione del modulo.
La sezione
Slot
definisce uno slot che consente 0 connessioni o 1 connessione.L'obiettivo della sezione
Slot
deve identificare il parametro in modo univoco. Di conseguenza, non devono esserci due slot diversi (oSlot
OSlot_Multi
) che hanno lo stesso obiettivo. (Le lettere maiuscole/minuscole non hanno alcuna importanza.)La definizione
Variable
è un percorso dell'istanza di ingresso relativo al blocco funzione del modulo. Il percorso dell'istanza può riferirsi in tutte le sue componenti solo a variabili di input (per le istanze di struttura anche a variabili locali). Il tipo della variabile indirizzata deve essere un'interfaccia o un tipo FB. Due slot diversi non devono utilizzare la stessa variabile.Role
definisce la descrizione del ruolo dello slot.Type
definisce il tipo di slot. Il tipo di connessione può assumere i seguenti valori:SUBMODULE
: Slot per istanze di sottomodulo.REFERENCE
: Slot per le istanze del sottomodulo di riferimento.DECOUPLED
: Slot per istanze di moduli "disaccoppiati".Guarda anche: Sezione: Disaccoppiato
Inst_Prefix
è un prefisso utilizzato per il nome della variabile FB generata. Prefisso vuoto (Inst_Prefix := ;
) è anche possibile, ma potrebbe creare conflitti con altri nomi di variabili del blocco funzione. Può essere specificato solo perSUBMODULE
slot di tipo.Optional
definisce se è consentito lasciare lo slot aperto o se deve essere collegato.Default_Inst_Name
può essere utilizzato per definire un nome predefinito per le istanze del modulo che sono figli di questo slot. Ogni modulo aggiunto riceverà questo nome per impostazione predefinita utilizzando la voce dell'elenco di testi definita da "Default_Inst_Name". Il nome predefinito dello slot è preferito a quello dei metadati dei moduli.Pragmas
contiene un elenco di pragma del compilatore che vengono inseriti prima delle istanze FB dei sottomoduli. I pragma possono essere utilizzati solo per gli slot gestiti.RegularExpressionParameterId
definisce un parametro di tipo STRING/WSTRING per questo slot. Il valore di questo parametro viene interpretato come espressione regolare e deve corrispondere al nome del sottomodulo inserito.Le sezioni
Slot.Default_Allocation
ESlot_Multi.Default_Allocation
permettono di definire impostazioni predefinite per slot con numero variabile di elementi (Multi_Slot e Slot). PerSlots.Multi_Slot
devono essere identificati da obiettivi univoci mentreSlots.Slot
non ha target e può averne solo unoDefault_Allocation
sezione. L'istanza verrà aggiunta in base alla sua posizione all'interno della sezione. Il nome del modulo e il nome dell'istanza seguono la definizione diSlot.DefaultModule
ESlot.DefaultName
. Se queste definizioni non sono disponibili, le impostazioni diDefault_Allocation.Module_Name
EDefault_Allocation.Instance_Name
sarà usato. Si consiglia di utilizzareDefault_Allocation.*
per gli slot invece diDefaultModule
EDefaultName
che esiste solo per ragioni di compatibilità. Le impostazioni dell'istanza del modulo predefinita possono essere definite nelle sottosezioni diDefault_Allocation
:Module_Name
definisce il nome del modulo di cui verrà creata automaticamente un'istanza. Se il modulo proviene da una libreria, il nome del modulo deve essere qualificato con namespace. Il parametro è consentito solo per gli slot di tipoSUBMODULE
.Le chiamate infinite non sono consentite e creeranno un messaggio di errore (esempio: la dichiarazione del modulo "A" contiene il modulo predefinito "B"; la dichiarazione del modulo "B" contiene il modulo predefinito "A").
Instance_Name
deve essere specificato ogni voltaDefaultModule
è specificato, e mai diversamente. Deve essere un identificatore IEC valido utilizzato come nome dell'istanza del modulo predefinita. Il nome non deve iniziare o finire con una sottolineatura (_
). I nomi predefiniti di tutti gli slot di una dichiarazione devono essere univoci. (La distinzione tra maiuscole e minuscole non fa differenza.)NotDeletable
specifica se il modulo può essere eliminato o meno dall'utente. SeTRUE
, il modulo non potrà essere eliminato. Viene visualizzato un messaggio di errore. Se il parametro èFALSE
oppure viene omesso, è possibile eliminare il modulo.VisuEmbeddings
: Se laEmpty
il parametro è impostato suTRUE
, viene creato un elenco vuoto di visus incorporati per questa istanza del modulo. Se il valore èFALSE
, è possibile generare l'elenco desiderato di visualizzazioni incorporate per l'istanza del modulo tramite l'elenco delle visualizzazioni incorporate desiderate nel fileEmbedding
sottosezione. OgniEmbedding
sezione deve definire il nomeVisuName
della vista incorporata desiderata per questo scopo e può specificare proprietà aggiuntive comeTarget
OLinkId
di questa vista incorporata.PageVisu
: In questa sezione si può scegliere il PageVisu dell'istanza del modulo (VisuName
). Inoltre si può definire se tale visu crea aTopLevelTap
. Il parametroTopLevelTap
bisogna dare i valoriTRUE
EFALSE
.IOMappings
: Nella sottosezioneMapping
è possibile definire i canali I/O. Gli obiettivi delle sezioniMapping
descrivere il canale I/O di destinazione. Il valore predefinito può essere impostato suNoMapping
o ad unSTExpression
.Parameters
: Nella sottosezioneParam
il valoreValue
di ciascun parametro definito nella destinazione della sezione può essere definito.
Slot_Multi
Utilizzando la sezione Slot_Multi
è possibile creare un elenco di sottoistanze e riferimenti.
SEC Slots //optional: yes, modifier: [UPDATE]] SEC Slot_Multi : <slot name> //optional: yes, modifier [HIDE,UPDATE] Variable := <variable name>; //optional: no, type: InstancePath Var_Count := <variable for count>; //optional: no, type: InstancePath Role := <name role>; //optional: no, type: text Cardinality := [<minimum> .. <maximum>]; //optional: no, type: Cardinality Type := <slot type>; //optional: no, type: SlotType Inst_Prefix := <instance prefix>; //optional: yes, type: ID Pragmas := <pragma list>; //optional: yes, type: Pragmalist Default_Inst_Name := <instance name>; //optional: yes, type: text RegularExpressionParameterId := <RegEx param ID> //optional: yes, type: text SEC Default_Allocation : //optional: yes, modifier [UPDATE] Module_Name := <default module ID>; //optional: yes, type: ID Instance_Name := <default name>; //optional: yes, type: ID NotDeletable := TRUE/FALSE //optional: yes, type: BoolFlag SEC VisuEmbeddings //optional: yes, modifier [UPDATE] Empty := TRUE/FALSE; //optional: yes, type: BoolFlag SEC Embedding : <visu identifier> //optional: yes, modifier [UPDATE] VisuName := <visu name>; //optional: no, type: ID Target := <target name>; //optional: yes, type: ID LinkId := <link ID>; //optional: yes, type: ID END_SEC END_SEC SEC PageVisu //optional: yes, modifier [UPDATE] VisuName := <visu name>; //optional: yes, type: ID TopLevelTap := TRUE/FALSE; //optional: yes, type: BoolFlag END_SEC SEC IOMappings //optional: yes, modifier [UPDATE] SEC Mapping : <mapping identifier>; //optional: yes, modifier [UPDATE] NoMapping := TRUE/FALSE; //optional: yes, type: BoolFlag STExpression := <ST expression>; //optional: yes, tye: ID/ST expression END_SEC END_SEC SEC Parameters //optional: yes, modifier [UPDATE] SEC Param : <param identifier> //optional: yes, modifier [UPDATE] Value := <value>; //optional: no, type: ID) END_SEC END_SEC END_SEC END_SEC END_SEC
Var_Count
definisce il percorso dell'istanza di ingresso del blocco funzione del modulo. Questa variabile (di tipo Integer) salverà le informazioni sul numero di istanze connesse allo slot.Cardinality
definisce il numero minimo e massimo di istanze.IL
Slot_Multi.Default_Allocation
può essere utilizzata per definire allocazioni predefinite per slot con numero variabile di elementi. Devono essere identificati tramite target univoci. Le istanze vengono inserite nell'ordine delle sezioni. Per il nome del modulo e il nome dell'istanza, le specifiche perSlot.DefaultModule
OSlot.DefaultName
fare domanda a. Il numero di assegnazioni predefinite non deve superare la cifra superiore.La variabile affrontata da a
Slot_Multi
la sezione deve essere di tipoPOINTER TO <INTERFACE>
.Ogni variabile di ingresso di tipo intero può essere indirizzata da
Var_Count
solo una volta. (Ciò include ancheInstRef_Multi.Var_Count
EVarArray.Var_Count
).
SEC Slot SEC Slot_Multi : subs Variable := pSubs; Var_Count := uiArraySize; Role := TL.Role; Cardinality := [2 .. 17]; Type := SUBMODULE; RegularExpressionParameterId := Param_RegEx_Ref; SEC Default_Allocation : def1 Module_Name := Sub1; Instance_Name := Submodule; END_SEC Name := TL.Input1_Name; Desc := TL.Input1_Desc; END_SEC END_SEC
Tra le altre dichiarazioni, la parte dichiarazione del blocco funzione deve contenere: uiArraySize: UINT; pSubs: POINTER TO ITestModule
.
Nell'esempio viene definito uno slot che contiene almeno 2 ma al massimo 17 sottoistanze. Verrà creato un array per le sottoistanze e pSubs
lo indica. Quando si aggiunge l'istanza, il sottomodulo con nome Submodule
di tipo Sub1
verrà aggiunto automaticamente allo slot.