Neues PowerConfig für DPT anlegen

Durch Klick auf die Schaltfläche "Neue Konfiguration erstellen" öffnet sich folgendes Panel für die Eingabe der PowerConfig-Parameter. Selektieren Sie die Radiobox DPT, um die Definition eines Datenpunkttyp übergreifenden PowerConfigs vorzunehmen.

Abbildung 1. Panel für die Definition eines neuen DPT-PowerConfigs

Wählen Sie aus der Combobox (nach dem grau hinterlegten Textfeld mit Inhalt "_da_DPT_") einen Datenpunkttyp, für den ein PowerConfigs erstellt werden soll. Im darunterliegenden grau hinterlegten Textfeld wird der Name des PowerConfigs angezeigt.

Anmerkung:

Der Name des PowerConfigs setzt sich aus folgendem Wortlaut zusammensetzen: _da_DPT_ + Datenpunkttypname. Beispiel: _da_DPT_PUMP1 stellt ein PowerConfig für den Datenpunkttyp PUMP1 dar.

Ein Datenpunkttyp übergreifendes PowerConfig wird am Root-Knoten des Master-Datenpunktes eingefügt und erlaubt die Parametrierung mehrerer DPEs in der Struktur unterhalb (siehe auch DPT-PowerConfig einfügen). Es kann immer nur ein Datenpunkttyp übergreifendes PowerConfig für einen Datenpunkttyp angelegt werden. Bei Auswahl eines Datenpunkttyp übergreifenden PowerConfigs wählen Sie aus der Combobox den gewünschten Datenpunkttyp aus. Die Auswahl des Datentyps entfällt hierbei, da das Einfügen am Root-Knoten immer mit dem Datentyp STRING verbunden ist. DPT-übergreifende PCs werden immer als "String" erstellt, weil sie ja nur an einem Root-Knoten angefügt werden können (und alle Knoten in WinCC OA als String behandelt werden - z.B. kann auf einem Knoten nur das PowerConfig "Summenmeldebehandlung" eingefügt werden, genauso wie bei einem String).

Bei der Parametrierung des Klartextes können Sie einen weiteren Namen für das PowerConfig vergeben, der in der Combobox Konfiguration des PowerConfig-Editors angezeigt wird. Mit OK bestätigen Sie Ihre Eingaben und das Panel wird automatisch geschlossen, Abbrechen schließt das Panel ohne jegliche Einstellungen zu übernehmen.

Beispiel

Anlegen eines Datenpunkttyp übergreifenden PowerConfigs für den Datenpunkttyp "Ampel" (die Struktur dieses Datenpunkttyps finden Sie auch beim Beispiel für die Massenparametrierung). Durch das Hinzufügen des DPT-PowerConfigs am Root-Knoten des Master-Datenpunktes werden die 4 Elemente des Datenpunkttyps (rot, gelb, gruen, stoerung) mit einer Peripherieadresse (OPC Eingang) parametriert. Veränderliche Attribute bei der Parametrierung am Datenpunkt sollen Server, Gruppe, Item und die Adressaktivierung sein.

  1. Klicken Sie auf die Schaltfläche Neues PowerConfig erstellen im PowerConfig-Editor.
  2. Geben Sie folgende Parameter im Panel für die Definition eines neuen PowerConfigs an:
    Abbildung 2. Neues PowerConfig definieren
  3. Wählen Sie das neu angelegte PowerConfig "S - Ampel - DPT-PC" aus der Combobox mit den definierten Konfigurationen, um in den nächsten Schritten die Variablen und Skripts auf den Registerkarten einzustellen.
  4. Auf der Registerkarte Variablen deklarieren Sie alle Variablen, die in den nachfolgenden Skripts für das Setzen/Lesen der Attribute des PowerConfigs notwendig sind (weitere Informationen finden Sie auch auf der Seite Registerkarte Variablen). Folgende Variablen sind für dieses Beispiel zu definieren:
    Name Typ Defaultwert Beschreibung
    leaf_red string ".rot" Datenpunktelement
    leaf_yellow string ".gelb" Datenpunktelement
    leaf_green string ".gruen" Datenpunktelement
    leaf_malfunction string ".stoerung" Datenpunktelement
    dp string dpSubStr($DPE,DPSUB_DP) Datenpunktbezeichner
    ref1 string Weitere Kennung für Item
    ref2 string Weitere Kennung für Item
    ref3 string Weitere Kennung für Item
    ref4 string Weitere Kennung für Item
    Server string "EXAMPLESERVER" Teil der Peripherieadresse
    Group string "STATE" Teil der Peripherieadresse
    Item string dpSubStr($DPE,DPSUB_DP)+"_OPCITEM" Teil der Peripherieadresse
    _reference string Referenzstring (bestimmt die Adresse)
    _active bool Adressaktivierung
    _direction int Gibt die Richtung an (Eingang bzw. Ausgang).
    _drv_ident string "OPCCLIENT" Treibertyp
  5. Auf der Registerkarte Eingang erfolgt in diesem Schritt die Eingabe eines Skripts, welches die aktuellen Werte der Attribute ausliest und auf definierte Variablen schreibt (z.B. beim Aufschalten des PowerConfig-Parametrierpanels am Datenpunkt). Geben Sie das folgende Skript auf dieser Registerkarte ein:
    dpGet(dp+leaf_red+":_address.._reference",_reference,
    dp+leaf_red+":_address.._active",_active,
    dp+leaf_red+":_address.._drv_ident",_drv_ident,
    dp+leaf_red+":_address.._direction",_direction);
  6. Die Registerkarte Eingangsberechnung wird mit einem Skript versehen, welches den Referenzstring aufteilt und die Werte auf die Variablen Server, Group und Item schreibt (bei einer OPC-Peripherieadresse werden für Server, Gruppe und Item keine "echten" WinCC OA Attribute verwendet). Diese Variablen sollen schließlich als dynamische Attribute dienen und auf jedem Datenpunkt verändert werden können. Definieren Sie folgendes Skript, welches die Aufteilung vornimmt:
    Server = substr(_reference, 0, strpos(_reference, "$"));
    reference = substr(_reference, strpos(_reference, "$")+1, strlen(_reference));
    Group = substr(_reference, 0, strpos(_reference, "$"));
    Item = substr(_reference, strpos(_reference, "$")+1, strlen(_reference));
  7. Auf der Registerkarte Eingabe wählen Sie Variablen (dynamische Attribute) aus, deren Parameter auf jedem Datenpunkt eingestellt werden können und somit auf jedem Element des Datenpunktes geändert werden (mehr Informationen zu dieser Registerkarte finden Sie auf der Seite Registerkarte Eingabe). Für dieses Beispiel wurden die Variablen Server, Group, Item und _active herangezogen. Da die Variablennamen bereits in anderen PowerConfig-Skripts verwendet werden, wird auch der Name in Klartext der dynamischen Attribute aus der Katalogdatei da.cat verwendet.
  8. Nachdem der Referenzstring zuvor aufgeteilt wurde, um mittels PowerConfig-Parametrierung die einzelnen Parameter auf jedem DP setzen zu können (Klick auf OK im Parametrierpanel), muss auf der Registerkarte Ausgangsberechnung die Adresse (Referenzstring) wieder zusammengesetzt werden. Damit wird ein ordnungsgemäßes Setzen des Attributes _address.._reference für die OPC-Peripherieadresse gewährleistet. Das Zusammensetzen des Strings erfolgt durch folgendes Skript:
    _reference = Server+"$"+Group+"$"+Item;
    ref1 = _reference;
    ref2 = _reference+"_1";
    ref3 = _reference+"_2";
    ref4 = _reference+"_3";
  9. Das definierte Skript auf der Registerkarte Ausgang führt zu einem Setzen der Werte, die die Variablen angenommen haben, auf die spezifischen Attribute der Konfigs. Für dieses Beispiel erstellen Sie folgendes Skript auf dieser Registerkarte:
    dpSetWait(dp+leaf_red+":_address.._reference",ref1,
    dp+leaf_red+":_address.._active",_active,
    dp+leaf_red+":_address.._direction",_direction,
    dp+leaf_red+":_address.._drv_ident",_drv_ident);
            
    dpSetWait(dp+leaf_yellow+":_address.._reference",ref2,
    dp+leaf_yellow+":_address.._active",_active,
    dp+leaf_yellow+":_address.._direction",_direction,
    dp+leaf_yellow+":_address.._drv_ident",_drv_ident);
            
    dpSetWait(dp+leaf_green+":_address.._reference",ref3,
    dp+leaf_green+":_address.._active",_active,
    dp+leaf_green+":_address.._direction",_direction,
    dp+leaf_green+":_address.._drv_ident",_drv_ident);
            
    dpSetWait(dp+leaf_malfunction+":_address.._reference",ref4,
    dp+leaf_malfunction+":_address.._active",_active,
    dp+leaf_malfunction+":_address.._direction",_direction,
    dp+leaf_malfunction+":_address.._drv_ident",_drv_ident);
            
    err = getLastError();
    if (dynlen(err) > 0)
    {     
      throwError(err);
    }     
  10. Als letzten Schritt für das Anlegen des neuen PowerConfigs sind auf der Registerkarte Default mit einem Skript Werte auf Attribute zu setzen, die beim Einfügen des PowerConfigs am Root-Knoten des Master-Datenpunktes, auf den einzelnen Elementen des Datenpunktes parametriert werden. Beim Erstellen dieses Skripts ist darauf zu achten, dass der Typ des Konfigs, das auf den Elementen gesetzt werden soll, definiert ist (in diesem Beispiel _distrib.._type und _address.._type). Falls diese Attribute nicht gesetzt werden, kann das DPT-PowerConfig beim Einfügen am Master-Datenpunkt nicht ausgewählt werden (siehe auch DPT-PowerConfig einfügen).

    In diesem Beispiel wurden folgende Attribute mit Werten versehen:

    _reference = Server+"$"+Group+"$"+Item;
    ref1 = _reference;
    ref2 = _reference+"_1";
    ref3 = _reference+"_2";
    ref4 = _reference+"_3";
            
    dpSet(dp+leaf_red+":_distrib.._type",DPCONFIG_DISTRIBUTION_INFO,
    dp+leaf_red+":_address.._type",DPCONFIG_PERIPH_ADDR_MAIN,
    dp+leaf_red+":_address.._reference",ref1,
    dp+leaf_red+":_address.._active",FALSE,
    dp+leaf_red+":_address.._direction","\2",
    dp+leaf_red+":_address.._drv_ident",_drv_ident);
            
    dpSet(dp+leaf_yellow+":_distrib.._type",DPCONFIG_DISTRIBUTION_INFO,
    dp+leaf_yellow+":_address.._type",DPCONFIG_PERIPH_ADDR_MAIN,
    dp+leaf_yellow+":_address.._reference",ref2,
    dp+leaf_yellow+":_address.._active",FALSE,
    dp+leaf_yellow+":_address.._direction","\2",
    dp+leaf_yellow+":_address.._drv_ident",_drv_ident);
           
    dpSet(dp+leaf_green+":_distrib.._type",DPCONFIG_DISTRIBUTION_INFO,
    dp+leaf_green+":_address.._type",DPCONFIG_PERIPH_ADDR_MAIN,
    dp+leaf_green+":_address.._reference",ref3,
    dp+leaf_green+":_address.._active",FALSE,
    dp+leaf_green+":_address.._direction","\2",
    dp+leaf_green+":_address.._drv_ident",_drv_ident);
         
    dpSet(dp+leaf_malfunction+":_distrib.._type",DPCONFIG_DISTRIBUTION_INFO,
    dp+leaf_malfunction+":_address.._type",DPCONFIG_PERIPH_ADDR_MAIN,
    dp+leaf_malfunction+":_address.._reference",ref4,
    dp+leaf_malfunction+":_address.._active",FALSE,
    dp+leaf_malfunction+":_address.._direction","\2",
    dp+leaf_malfunction+":_address.._drv_ident",_drv_ident);  
  11. Auf der letzten Registerkarte Quellcode kann das Skript für das erstellte PowerConfig angesehen und einer Syntaxprüfung unterzogen werden. In der Datei powerconfig wird ein neuer Abschnitt mit den Einstellungen für das neue PowerConfig hinzugefügt (mehr Informationen zum Aufbau dieser Datei finden Sie auf der Seite Aufbau der Datei powerconfig). Das Skript für dieses Beispiel sollte so aussehen:
    definition34()
    {
    // definition start
    //_da_DPT_Ampel:STRING
    // variables definition
    string leaf_red=".rot";
    string leaf_yellow=".gelb";
    string leaf_green=".gruen";
    string leaf_malfunction=".stoerung";
    string dp=dpSubStr($DPE,DPSUB_DP);
    string _drv_ident="OPCCLIENT";
    bool _active;
    int _direction;
    string _reference;
    string Server="EXAMPLESERVER";
    string Group="STATE";
    string Item=dpSubStr($DPE,DPSUB_DP)+"_OPCITEM";
    string ref1;
    string ref2;
    string ref3;
    string ref4;
    // dpGet
    dpGet(dp+leaf_red+":_address.._reference",_reference,
    dp+leaf_red+":_address.._active",_active,
    dp+leaf_red+":_address.._drv_ident",_drv_ident,
    dp+leaf_red+":_address.._direction",_direction);
    // calculate input
    Server = substr(_reference, 0, strpos(_reference, "$"));
    _reference = substr(_reference, strpos(_reference, "$")+1, strlen(_reference));
    Group = substr(_reference, 0, strpos(_reference, "$"));
    Item = substr(_reference, strpos(_reference, "$")+1, strlen(_reference));
    // variables input
    //_active
    //Server
    //Group
    //Item
    // calculate output
    _reference = Server+"$"+Group+"$"+Item;
    ref1 = _reference;
    ref2 = _reference+"_1";
    ref3 = _reference+"_2";
    ref4 = _reference+"_3";
    // dpSet
    dpSetWait(dp+leaf_red+":_address.._reference",ref1,
    dp+leaf_red+":_address.._active",_active,
    dp+leaf_red+":_address.._direction",_direction,
    dp+leaf_red+":_address.._drv_ident",_drv_ident);
         
    dpSetWait(dp+leaf_yellow+":_address.._reference",ref2,
    dp+leaf_yellow+":_address.._active",_active,
    dp+leaf_yellow+":_address.._direction",_direction,
    dp+leaf_yellow+":_address.._drv_ident",_drv_ident);
          
    dpSetWait(dp+leaf_green+":_address.._reference",ref3,
    dp+leaf_green+":_address.._active",_active,
    dp+leaf_green+":_address.._direction",_direction,
    dp+leaf_green+":_address.._drv_ident",_drv_ident);
        
    dpSetWait(dp+leaf_malfunction+":_address.._reference",ref4,
    dp+leaf_malfunction+":_address.._active",_active,
    dp+leaf_malfunction+":_address.._direction",_direction,
    dp+leaf_malfunction+":_address.._drv_ident",_drv_ident);
         
    err = getLastError();
    
    if (dynlen(err) > 0)
    {
      throwError(err);
    }
    // default
    _reference = Server+"$"+Group+"$"+Item;
    ref1 = _reference;
    ref2 = _reference+"_1";
    ref3 = _reference+"_2";
    ref4 = _reference+"_3";
        
    dpSet(dp+leaf_red+":_distrib.._type",DPCONFIG_DISTRIBUTION_INFO,
    dp+leaf_red+":_address.._type",DPCONFIG_PERIPH_ADDR_MAIN,
    dp+leaf_red+":_address.._reference",ref1,
    dp+leaf_red+":_address.._active",FALSE,
    dp+leaf_red+":_address.._direction","\2",
    dp+leaf_red+":_address.._drv_ident",_drv_ident);
        
    dpSet(dp+leaf_yellow+":_distrib.._type",DPCONFIG_DISTRIBUTION_INFO,
    dp+leaf_yellow+":_address.._type",DPCONFIG_PERIPH_ADDR_MAIN,
    dp+leaf_yellow+":_address.._reference",ref2,
    dp+leaf_yellow+":_address.._active",FALSE,
    dp+leaf_yellow+":_address.._direction","\2",
    dp+leaf_yellow+":_address.._drv_ident",_drv_ident);
    
    dpSet(dp+leaf_green+":_distrib.._type",DPCONFIG_DISTRIBUTION_INFO,
    dp+leaf_green+":_address.._type",DPCONFIG_PERIPH_ADDR_MAIN,
    dp+leaf_green+":_address.._reference",ref3,
    dp+leaf_green+":_address.._active",FALSE,
    dp+leaf_green+":_address.._direction","\2",
    dp+leaf_green+":_address.._drv_ident",_drv_ident);
        
    dpSet(dp+leaf_malfunction+":_distrib.._type",DPCONFIG_DISTRIBUTION_INFO,
    dp+leaf_malfunction+":_address.._type",DPCONFIG_PERIPH_ADDR_MAIN,
    dp+leaf_malfunction+":_address.._reference",ref4,
    dp+leaf_malfunction+":_address.._active",FALSE,
    dp+leaf_malfunction+":_address.._direction","\2",
    dp+leaf_malfunction+":_address.._drv_ident",_drv_ident);
    // definition end
    }
  12. Nachdem das PowerConfig angelegt wurde, muss der GEDI neu gestartet werden, damit die das neue PowerConfig verfügbar/sichtbar ist.

Anmerkung:

Das mit diesem Beispiel angelegte PowerConfig kann nun im Modul PARA am Root-Knoten des Master-Datenpunktes eingefügt werden. Das Aktivieren der Checkbox DPT-PC bewirkt ein Setzen der Werte, die in der Default-Sektion des PowerConfig-Skripts definiert wurden (siehe auch DPT-PowerConfig einfügen).