Skip to main content

Sektion: Decoupled

Diese Sektion definiert sogenannte „Decoupled-Module“. Dies sind Module, die die Eigenschaften von Toplevel-Modulen haben, jedoch auch als Submodul an speziellen Slots (Type:= DECOUPLED) anderer Module eingefügt werden können. Module können nicht gleichzeitig „Toplevel“ und „Decoupled“ sein.

„Decoupled-Module“ werden mit Hilfe der Sektion Decoupled in der Moduldeklaration erzeugt. Die Sektion Decoupled ist fast identisch zur Sektion Toplevel, wobei nur eine dieser beiden Sektionen in einer Moduldeklaration erlaubt ist.

SEC Decoupled                                       //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
    Toplevel_Insertable := <TRUE/FALSE>;            //optional: yes, type: BoolFlag
    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_SEC

Details über die Syntax der Definitionstypen sind im Kapitel Moduldeklaration beschrieben.

Spezifikation: Die Spezifikation der Sektion Decoupled entspricht der Beschreibung der Sektion Toplevel. Zusätzlich kann folgender Parameter definiert werden:

  • Toplevel_Insertable definiert, ob ein „Decoupled-Submodul“ auch toplevel, also wie ein Toplevel-Modul, eingefügt werden kann.

Hinweis: Ein "Decoupled“-Modul sollte einen ihm entsprechenden Proxy-Vertreter definieren und implementieren. Der Proxy sollte das selbe Interface wie das „Decoupled“-Modul selbst implementieren. Wenn die Vater-Modulinstanz unterhalb einer anderen Steuerung liegt wie die „Decoupled“-Modulinstanz, kann die „Decoupled“-Modulinstanz dennoch über ihren Proxy-Vertreter in diesen Slot eingefügt werden kann.