Skip to main content

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.

. Specifica:
  • 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 (o Slot O Slot_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 per SUBMODULE 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 E Slot_Multi.Default_Allocation permettono di definire impostazioni predefinite per slot con numero variabile di elementi (Multi_Slot e Slot). Per Slots.Multi_Slot devono essere identificati da obiettivi univoci mentre Slots.Slot non ha target e può averne solo uno Default_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 di Slot.DefaultModule E Slot.DefaultName. Se queste definizioni non sono disponibili, le impostazioni di Default_Allocation.Module_Name E Default_Allocation.Instance_Name sarà usato. Si consiglia di utilizzare Default_Allocation.* per gli slot invece di DefaultModule E DefaultName che esiste solo per ragioni di compatibilità. Le impostazioni dell'istanza del modulo predefinita possono essere definite nelle sottosezioni di Default_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 tipo SUBMODULE.

      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 volta DefaultModule è 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. Se TRUE, 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 la Empty il parametro è impostato su TRUE, 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 file Embedding sottosezione. Ogni Embedding sezione deve definire il nome VisuName della vista incorporata desiderata per questo scopo e può specificare proprietà aggiuntive come Target O LinkId 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 a TopLevelTap. Il parametro TopLevelTap bisogna dare i valori TRUE E FALSE.

    • IOMappings: Nella sottosezione Mapping è possibile definire i canali I/O. Gli obiettivi delle sezioni Mapping descrivere il canale I/O di destinazione. Il valore predefinito può essere impostato su NoMapping o ad un STExpression.

    • Parameters: Nella sottosezione Param il valore Value 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
. Specifiche aggiuntive:
  • 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 per Slot.DefaultModule O Slot.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 tipo POINTER TO <INTERFACE>.

  • Ogni variabile di ingresso di tipo intero può essere indirizzata da Var_Count solo una volta. (Ciò include anche InstRef_Multi.Var_Count E VarArray.Var_Count).

Esempio 21. Esempio
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.