WinCC2005advanced: Skript aufruf

rheumakay

Level-2
Beiträge
914
Reaktionspunkte
125
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte ein Skript alle5Sekunden aufrufen.Ich möchte über das Skript ein Word aus einer S5 über OPC an eine Wago weitergeben.
Dazu habe ich eine Schaltfläche in WinCC angelegt,die Schaltfläche wird von der Wago alle 5Sekunden 0->1->0
Bei der Schaltfläche habe ich unter Ereignisse:Aktiviere Skript angewählt.
Im Skript steht:
DIM Zaehler
SmartTags("Var_an_Wago") = SmartTags("Var_von_S5")
Zaehler = Zaehler +1

Den Wert Zaehler lasse ich mir in der Runtime anzeigen, da tut sich aber nichts-also wird das Skript gar nicht aktiviert!?
Was mache ich falsch?
 
Hallo,
die im Script lokal erzeugte Variable "Zähler" existiert auch nur dort und ist der restlichen Visu-Applikation nicht bekannt.
Es wundert mich, wie du sie anzeigen lassen kannst ...

Warum rufst du dein Script über eine Schaltfläche und nicht über die Wertänderung einer Triggervariablen auf (das kann auch SmartTags("Var_an_Wago") sein ...) ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
hast Recht-hab nicht den ganzen Code hier reingestellt.
Ich habe noch unter Variablen : Interne Var angelegt Name:testzaehler
Im Skript steht dann noch
Smarttags("testzaehler") = Zaehler
Ich habe als Skriptaufruf unter Variablen: Takt bool angelegt.

Kann ich im Skript schreiben:

DIM Zaehler


Zaehler = Zaehler +1
IF Smarttags("Takt") = TRUE THEN
SmartTags("Var_an_Wago") = SmartTags("Var_von_S5")
END IF

??
So wird das Skript doch erst gar nicht abgearbeitet?Oder?
 
Vielleicht habe ich es nicht so ganz deutlich beschrieben:

Ich möchte mit der Variable "Takt" (wird alle 5Sekunden von der PLC auf 1 gesetzt)
das Skript XY aufrufen/abarbeiten.

Wie stelle ich das an?
 
dies auslösende variable muss auf ständig lesen stehen.
diese var in der plc setzen. am ende des scripts zurücksetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ohne Skript:

Einfach bei jede Variabeln zu den Wertänderungsereigniss den System-Funktion "SetValue" einfügen. Als Quelle für den Wert den S5-Variabel spezifizieren, und als Ziel den Wago-Variabel.
 
@ volker bitte schau mal auf meine beiden screenshots, denn es funzt immer noch nicht.
im HMI :das weiße Kästchen ist die Start variabel, die wird auch grün(TRUE) aber der Wert wird nicht auf die neue Variabel überschrieben, bzw. die "Start" Variabel auch nicht wieder auf FALSE gesetzt.

Fehlt mir irgendwo noch eine Grundeinstellung wie Skripte beachten/bearbeiten??
Das HMI-Projekt habe ich zur Ergänzung vom Kunden bekommen, dort sind auch schon ein paar Skripte enthalten!?
 

Anhänge

  • hmi anzeige.pdf
    8,5 KB · Aufrufe: 11
  • skript.pdf
    53,5 KB · Aufrufe: 12
@jesper
wo soll ich diese Einstellung vornehmen?unter systemfunktionen erscheint nur "setzeBit", aber SETVALUE nicht(Ich habe WINCC2005?!)
 
Es heißt "SetzeWert" und steht unter Berechnung.

Wo wird denn dein Script nun aufgerufen ?
Häng es doch vielleicht mal an die Wertänderung der Start-Variablen ...

Gruß
Larry
 
Den Vorschlag von Jesper habe ich übernommen, ich bekomme es auch hin, wenn ich eine Schalter aussuche und unter Ereignisse->Berechnung->Setze Wert die beiden Variablen "von S5" / "an WAGO" auswähle, dass der Wert auch tatsächlich von der S5 an die Wago übernommen wird.

Allerdings nur: Wenn ich die Schaltfläche anklicke!! habe unter Allgemein Variable Takt eingegeben, da passiert dann nichts (ausser das der Schalter sich entsprechend verändert).
Hat noch jemand ne Idee?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie schon geschrieben:

Auf jeden S5-Variabel, musst du zu den Wert-Änderungsereigniss, den Systemfunktion SetzeWert hinzufügen.
Bei SetzeWert spezifizierst du die Parameter als Quelle den S5-Variabel, und als Ziel den Wago-Variabel.
Alle S5-Variabel muss zyklisch aktualisiert werden.
 
Hallo Jesper,
anbei noch mal ein paar Screenshots-zur Verdeutlichung.
Ich bekomme die Werte ERST übergeben, wenn ich diesen Schalter von Hand betätige.

Zyklisch aktualisiert habe ich eingestellt (100ms).Geht aber nicht.
Aber wie bekomme ich das hin, das alle 5Sekunden über die Variabel "TAKT" die Werte übernommen werden??
 

Anhänge

  • screenshot.pdf
    23 KB · Aufrufe: 7
  • screenshot2.pdf
    12,2 KB · Aufrufe: 6
Zuviel Werbung?
-> Hier kostenlos registrieren
Zyklisch aktualisiert habe ich eingestellt (100ms).Geht aber nicht.
100 ms Aktualisierzeit für ein S5-Variabel geht nicht. Wenn du ein Ethenet oder Profibus-Verbindung hast, dann vielleicht 1s. Wenn nur AS511 (TTY) dann 2s oder 5s.

Ich muss sagen das ganze hört sich verdächtig an. Welche Aufgabe ist es eigentlich das du lösen musst ?
 
Hallo,
nach deinem Screenshot habe ich gesehen , dass man unter Eigenschaften der Variabel diese Parameter einstellen muß.
Ich habe die ganze Zeit beim EA-Feld bzw. Schaltfläche gesucht.
So läuft es !!!Aktualisierungszeit steht auf 10Sekunden-reicht völlig.
 
Nabend,muß das Thema leider noch mal aufgreifen.Wollte letztes WE die Wago-Steuerung mit WinCC2005advanced-PC umbauen, hat aber leider nicht geklappt, weil das "umswitchen" der Daten von S5 nach Wago(über OPC) nicht einwandfrei geklappt hat.

Nochmalige kurze Beschreibung:

Ich bekomme über die serielle die Daten einer S5 rein , diese möchte ich über WINCC2005advanced an die Wago(OPC) weitergeben.
Dies habe ich umgesetzt,indem ich unter der Wago Variable unter Ereignisse->Setze Wert die Variable der S5 eingetragen habe (siehe auch die angehängten Screenshots).
Fehler:
Das Ganze funktioniert MEISTENS, aber nicht immer !!!D.h.etwa 5Werte werden richtig übergeben, danach dann gar keine mehr.
Ich habe auch so ein bißchen den PC in Verdacht(zwar SD-Festplatte aber nur 1,6Ghz Prozessor),wobei während des Betriebes Systemleistung/Speicher nur minimal belastet werden.

Hat vielleicht jemand noch einen Tip woran es liegen könnte (Einstellung Zyklusintervall vielleicht auch??)
 

Anhänge

  • Variable an Wago.pdf
    44,8 KB · Aufrufe: 10
  • s5variable.pdf
    31,3 KB · Aufrufe: 5
  • PC_Hardware.pdf
    66,9 KB · Aufrufe: 6
  • WagoVariable_Ereignisse_Wertänderung_Setzewert.pdf
    56,6 KB · Aufrufe: 12
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
es fällt mir aber noch eine weitere Möglichkeit ein :
- Flex2005 war auch nicht unbedingt für seine fehlerfreie Betriebssicherheit berühmt geworden.
und noch eine :
- Erfassungszyklus 10 Sek. der Variablen ? Ist hier nicht vielleicht 1 Sek. oder 500 ms besser ?
und noch eine :
- meinst du, dass die Visu die Variablen über eine serielle Verbindung zur S5 auch alle immer sinnvoll aktualisieren kann ?

Gruß
Larry
 
Hallo Larry,danke für die Tips.
Es handelt sich um knapp 9000 Variablen, die über OPC eingelesen werden.
Deshalb dachte ich , ich stelle den Erfassungszyklus für diese Variablen hoch(und alle anderen liegen bei ca.2Sekunden), so daß der PC "nicht so stark beansprucht" wird.

Ich habe leider diesen PC und die Flex2005 Version vorgegeben bekommen, wenn ich es GENAU wüßte,daß es am PC /Flex 2005 liegt, würde ich ja einen neuen PC kaufen lassen, bzw. Flex upgraden.

Die Variablen aus der S5 kommen übrigens "sauber" an, bzw.werden regelmäßig aktualisiert.Nur die Weitergabe über WinCC an WAGO scheint zu haken.

Gibt es vielleicht noch ne andere Möglichkeit die Werte zu übergeben?Wie ich am Anfang des Thema schon geschrieben habe ->mit Hilfe eines Skriptes??
 
übrigens...
habe mir eine "Interne Variable" angelegt, und diese anstelle der S5-Daten eingefügt, dort klappt es :confused:

->Änderung:Klappt doch nicht->auch mit einer nur intern angelegten Variable wird der Wert nicht an die Wago weitergegeben.
Erst als ich über Codesys die Wago-Variable geforct habe und danach das Forcen wieder aufgehoben hatte ,konnte ich über die intern angelegte Variable den Wago-Wert beschreiben !! Allerdings scheint es so das sich WinCC aufgehangen hat?!Da sich alle anderen Werte nicht mehr verändert haben.

Vielleicht hat noch jemand einen Tip?!
 
Zuletzt bearbeitet:
Zurück
Oben