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_SECI dettagli riguardanti la sintassi dei tipi di definizione sono descritti nella sezione Dichiarazione del modulo.
La sezione
Slotdefinisce uno slot che consente 0 connessioni o 1 connessione.L'obiettivo della sezione
Slotdeve identificare il parametro in modo univoco. Di conseguenza, non devono esserci due slot diversi (oSlotOSlot_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.Roledefinisce la descrizione del ruolo dello slot.Typedefinisce 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 perSUBMODULEslot di tipo.Optionaldefinisce se è consentito lasciare lo slot aperto o se deve essere collegato.Default_Inst_Namepuò 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.Pragmascontiene 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.RegularExpressionParameterIddefinisce 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_AllocationESlot_Multi.Default_Allocationpermettono di definire impostazioni predefinite per slot con numero variabile di elementi (Multi_Slot e Slot). PerSlots.Multi_Slotdevono essere identificati da obiettivi univoci mentreSlots.Slotnon ha target e può averne solo unoDefault_Allocationsezione. 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.DefaultModuleESlot.DefaultName. Se queste definizioni non sono disponibili, le impostazioni diDefault_Allocation.Module_NameEDefault_Allocation.Instance_Namesarà usato. Si consiglia di utilizzareDefault_Allocation.*per gli slot invece diDefaultModuleEDefaultNameche esiste solo per ragioni di compatibilità. Le impostazioni dell'istanza del modulo predefinita possono essere definite nelle sottosezioni diDefault_Allocation:Module_Namedefinisce 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_Namedeve 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.)NotDeletablespecifica 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 èFALSEoppure viene omesso, è possibile eliminare il modulo.VisuEmbeddings: Se laEmptyil 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 fileEmbeddingsottosezione. OgniEmbeddingsezione deve definire il nomeVisuNamedella vista incorporata desiderata per questo scopo e può specificare proprietà aggiuntive comeTargetOLinkIddi 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 parametroTopLevelTapbisogna dare i valoriTRUEEFALSE.IOMappings: Nella sottosezioneMappingè possibile definire i canali I/O. Gli obiettivi delle sezioniMappingdescrivere il canale I/O di destinazione. Il valore predefinito può essere impostato suNoMappingo ad unSTExpression.Parameters: Nella sottosezioneParamil valoreValuedi 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_SECVar_Countdefinisce 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.Cardinalitydefinisce il numero minimo e massimo di istanze.IL
Slot_Multi.Default_Allocationpuò 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.DefaultModuleOSlot.DefaultNamefare domanda a. Il numero di assegnazioni predefinite non deve superare la cifra superiore.La variabile affrontata da a
Slot_Multila sezione deve essere di tipoPOINTER TO <INTERFACE>.Ogni variabile di ingresso di tipo intero può essere indirizzata da
Var_Countsolo una volta. (Ciò include ancheInstRef_Multi.Var_CountEVarArray.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_SECTra 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.