Änderungen im Script userPara.ctl

In diesem Script findet die eigentliche Programmierung für das Parametrierpanel statt. Sie müssen an eigenen Skriptstellen Ihren Treiber aufrufen, die Parameter für die Adresse etc. übergeben und die gewünschten Skripts schreiben.

Das Script <wincc_oa_path>/api/SampleDriver/userPara.ctl oder <wincc_oa_path>/api/TcpDrv/userPara.ctl wird ins Verzeichnis <proj_path>/scripts kopiert, und muss dort modifiziert werden. Auch spätere Änderungen für die neuen Treiber sind im Projektverzeichnis durchzuführen.

Im Script userPara.ctl des Verzeichnisses <proj_path>/scripts fügen Sie an den folgenden Stellen eine neue "case"-Auswahl hinzu:

  • upDpGetAddress (zum Lesen der Werte der Datenpunkte)

  • upDpSetAddress (zum Setzen der Werte der Datenpunkte)

  • upWritePanelAllAddressAttributes (schreibt die Attribute aus Datenpunktkonfigs in das Panels)

  • upReadPanelAllAddressAttributes (liest die Attribute aus dem Panel und schreibt Sie auf Datenpunktkonfigs)

Anschließend müssen Sie Ihre Befehle zusammenstellen und in diese Skriptstellen schreiben. Auch Ihr Panel address_newdrv1.pnl muss entsprechend Ihren Bedürfnissen angepasst werden, also mit Textfeldern für die Attribute des _address Konfigs versehen werden. Diese Felder der _address Attribute werden durch das Skript ausgelesen und auf die Datenpunkte geschrieben, bzw. werden umgekehrt die Attribute gelesen und auf das Panel geschrieben.

In vorliegender Anleitung wird jeweils der "case"-Fall des beigefügten Beispiels verwendet werden.

Anmerkung: Dieses Beispiel entspricht dem Treiber Simulator und kann anschließend als "Neuer Treiber 1" parametriert werden.

So fügen Sie ihr Script bei den Funktionen ein

  1. Kopieren Sie das Script < wincc_oa_path >/scripts/userPara.ctl ins Verzeichnis <proj_path>/scripts/userPara.ctl

  2. Öffnen Sie das Script userPara.ctl in Verzeichnis <proj_path>/scripts

  3. Gehen Sie zur folgenden Stelle im Script bei der Funktion upDpGetAddress

    /* Example
      case "tstdrv1":
      dpGet(dpe+":"+config+".._active",active,
      dpe+":"+config+".._reference",reference,
      dpe+":"+config+".._subindex",subindex,
      dpe+":"+config+".._mode",mode,
      dpe+":"+config+".._reply",reply,
      dpe+":"+config+".._datatype",datatype, 
      dpe+":"+config+".._drv_ident",drv_ident, 
      dpe+":_distrib.._driver",driver); 
      dpc[1]=reference;
      dpc[2]=subindex; 
      dpc[3]=mode;
      dpc[6]=reply;
      dpc[7]=datatype; 
      dpc[8]=drv_ident; 
      if (driver<1) driver=1;
      dpc[9]=driver;
      dpc[12]=active;
      break; 
      ....
  4. Markieren Sie den Block und fügen Sie diesen Teil des Script oberhalb von /* Example ein.

  5. Entfernen Sie bei dem neuen Block das Kommentarzeichen /*

  6. Ändern Sie den Namen bei "case" zu

     case "newdrv1"
  7. Gehen Sie zur nächsten Funktion "upDpSetAddress" zum Beispiel case "tstdrv1"

  8. Kopieren Sie wieder den Skriptabschnitt wie oben beschrieben.

  9. Gehen zu den Funktionen "upWritePanelAllAddressAttributes" und "upReadPanelAllAddressAttributes" und kopieren Sie die Bespielskripts.

  10. Speichern Sie das Skript.

Jetzt existieren also jene neuen Abschnitte, die für neue Treiber von Ihnen programmiert werden müssen.

Im Beispielpanel sind dadurch Felder für Adressstring (reference), die Treibernummer (driver), den Subindex (subindex), die Checkbox, ob die Adresse aktiv (active) ist, der Datentyp (Transformationsart), das Timeout (reply) und die Richtung (mode) lesbar und schreibbar gemacht.

Welche Felder und Abschnitte benötigt werden hängt im Detail von den Treibern, ab. Gerade die Übertragungsrichtung ist mitunter mit weiteren Felder und den zugehörigen Skripts verknüpft.

Anmerkung: Beachten Sie, dass Sie nur die jeweils notwendigen globalen Variablen verwenden, und dass Sie immer die gleiche Anzahl an Treiberelementen (z.B. dyn_strings, cases, etc.) definiert haben.

Es stehen folgende globale Variable zur Verfügung:

  • anytype dpc;

  • dpc[1]=reference (Adressstring des Treibers)

  • dpc[2]=subindex (für den Subindex des Treiber)

  • dpc[3]=mode (Modus, Richtung - Eingang/Ausgang)

  • dpc[4]=start (für die Startzeit)

  • dpc[5]=interval (für das Intervall)

  • dpc[6]=reply (für die Antwortzeit, Timeout)

  • dpc[7]=datatype (für die Übertragungsart)

  • dpc[8]=drv_ident (Treiberbezeichnung)

  • dpc[9]=driver (Treibernummer)

  • dpc[10]=reserved for special usage

  • dpc[11]=poll_group (Pollgruppe)

Um die "fertigen" Panels zu sehen, gehen Sie zu "Arbeiten mit dem neuen Treiber" . Jetzt können Peripherieadressen bequem parametriert werden. Für spezielle Strukturen ist die Parametrierung weiterhin unkomfortabel, dazu müssen weitere Anpassungen des Panels erfolgen (z.B. für einen OPC Client).