WinCC 7.0, Sammelanzeige per Skript beschreiben

Beiträge
9.189
Reaktionspunkte
2.934
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
hat es schonmal hinbekommen, eine WinCC Sammelanzeige per Skript so zu beschreiben sodass diese auch als sammelrelevant erkannt wird? Damit meine ich, dass sich der Status der Sammelanzeige in einem Bild über das Basic Process Control auch an die Navigationsleiste weiterleitet.

Prinzipiell kann ich eine Sammelanzeige über ein Skript, das ich an das Attribut "Sammelwert" hänge, so beschreiben, dass diese Anzeige an sich auch funktioniert. Nur spricht sich der Zustand dieser Anzeige nicht als sammelrelevant durch. Die Triggerbedingungen sind auf die passende Variable gesetzt.

Ich weiß nicht genau wie das intern funktioniert, aber eigentlich müssten ja alle Variablen die an allen als "sammelrelevant" gekennzeichneten Anzeigen auch abgefragt werden, auch wenn das Bild nicht aufgerufen ist. Wenns nur daran liegen würde, müsste das aber funktionieren wenn das Bild aufgerufen ist, tut es aber trotzdem nicht.

Ich würde gerne bei einer SPS die das Bitmeldeverfahren verwendet, trotzdem die Sammelanzeigen (zumindest die Hierarchie) verwenden können. Das muss man doch irgendwie hinbekommen können.
 
Oha, kompliziert...

kennst Du das hier: http://support.automation.siemens.com/WW/view/de/17778440

Den WinCC PictureTree hast Du nach jeder Änderung durchlaufen lassen?

Irgendwie gabs auch noch 2 Varianten, einmal musste man für alle unterlagerten Bilder noch jeweils eine Sammelanzeige im überlagerten Bild anlegen und bei den neueren Version von WinCC nicht mehr, bzw. macht das WinCC selber. Vielleicht ist da was nicht in Ordnung.

Evtl. muss die Variable auch .EventState heißen? in dem Artikel von Siemens muss das ja scheinbar nicht sein, aber vielleicht ist das für die Hierarchie nötig?

Bin ja mal gespannt ob das was wird :) Wenn Du's hingekriegt hast, wäre ja ne Kurzanleitung hier schön :)

Gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
hat es schonmal hinbekommen, eine WinCC Sammelanzeige per Skript so zu beschreiben sodass diese auch als sammelrelevant erkannt wird? Damit meine ich, dass sich der Status der Sammelanzeige in einem Bild über das Basic Process Control auch an die Navigationsleiste weiterleitet.

Prinzipiell kann ich eine Sammelanzeige über ein Skript, das ich an das Attribut "Sammelwert" hänge, so beschreiben, dass diese Anzeige an sich auch funktioniert. Nur spricht sich der Zustand dieser Anzeige nicht als sammelrelevant durch. Die Triggerbedingungen sind auf die passende Variable gesetzt.

Ich denke, an der Sammelanzeige muss ne Variable hängen! Den Sammelwert nur von nem Script zu beschreiben führt dazu, dass die Sammelanzeige zwar etwas anzeigt, aber beim Übersetzen des PictureTree findet WinCC nicht die VAriablen des Bildes um sie zu verODERn... ich vermute, dass ist Dein Problem.
 
Irgendwie gabs auch noch 2 Varianten, einmal musste man für alle unterlagerten Bilder noch jeweils eine Sammelanzeige im überlagerten Bild anlegen und bei den neueren Version von WinCC nicht mehr, bzw. macht das WinCC selber. Vielleicht ist da was nicht in Ordnung.

Das muss man nur wenn man die Anzeige in einem Bildfenster eingebaut hat. Ist dann ja auch klar, denn dann kann die Anzeige in jedem x-beliebigen Fenster liegen, das kann die Sammelanzeigenhierarchie somit nicht wissen wo diese zugehört.

Evtl. muss die Variable auch .EventState heißen? in dem Artikel von Siemens muss das ja scheinbar nicht sein, aber vielleicht ist das für die Hierarchie nötig?

Nein, es muss nur direkt eine Variable angeschaltet werden. Es kann auch eine interne Variable sein, dann funktioniert es auch.
So hab ich es jetzt testweise für ein Objekt gemacht: Für einen 8-Meldungsblock eine zusätzliche interne Variable quasi als "#EventState" angelegt. Dann wird im Global-Script zyklisch das Meldewort aus der SPS mit den 8 Meldebits und dem zugehörigen SPS-Quittierzuständen überprüft, und anhand dieser der Sammelwert für die Sammelanzeige passend erstellt. Die interne Variable kommt dann an die Sammelanzeige ins Bild. Die Funktion ist damit gegeben, inklusive Hierarchie.

Nur hat das mehrere Nachteile. Es muss pro Objekte eine weitere interne Variable angelegt werden, und zusätzlich noch alles ins globale Skript gepackt werden. Es werden später mehrere Hundert von solchen Objekten sein, da kommt im Globalen Skript einiges zusammen.
Wenn ich das Projekt zu erst erstelle ist mir das wohl noch klar wie das funktioniert. Aber mal angenommen da muss jemand der das System nicht kennt später ein Objekt nachrüsten, dann ist das mit diesem Global-Skript und der internen Variable nicht sofort ersichtlich wie das funktioniert.

Wenn das mit dem Skript direkt an der Sammelanzeige gehen würde wäre das viel praktischer. Dann würde ich mir ein Faceplate erstellen das man ins Bild legen kann und nur noch parametriert werden muss.
 
ok, also funktionierts schonmal, nur etwas suboptimal :)

Was Du probieren kannst:

Pack die Sammelanzeige in ein Anwenderobjekt. Im Anwenderobjekt verschaltest Du den Sammelwert der Sammelanzeige mit einem "Eingang" des Anwenderobjektes. Diesen "Eingang" des Anwenderobjektes versorgst Du nun mit dem Script.

Sowas in der Art könnte funktionieren.

Ich hab hier auch einige Anwenderobjekte, wo draussen nen Script dranhängt. Und es funktioniert eigentlich. Nur genau warum weiss ich eigentlich auch nicht :)

Gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Auch mit einem Anwenderobjekt funktioniert das nicht, schade. D.h. die Sammelanzeige an sich funktioniert wie auch in einem Faceplate schon, nur eben nicht die Weiterleitung an die Hierarchie.

Man weiß ja nicht wie das funktioniert. So wie es aussieht sammelt der Picture Tree Manager beim Generieren nur die Sammelanzeigen ein, an denen der Sammelwert direkt mit einer Variable verbunden ist.
Vielleicht stelle ich nochmal eine Anfrage beim Siemens Support, wobei ich mir da nicht viel von verspreche...
 
Auch mit einem Anwenderobjekt funktioniert das nicht, schade. D.h. die Sammelanzeige an sich funktioniert wie auch in einem Faceplate schon, nur eben nicht die Weiterleitung an die Hierarchie.

Jo, der Picture Tree sammelt das ein... nur die Frage was und warum. Ich hab vorgestern auch schon verzweifelt das Script gesucht, welches die Variablen einsammelt und auf die interne Variable @Bildname verschaltet...

Bei mir funktioniert das aber mit den Anwenderobjekten..., nur die Frage warum. (da haben 3 Kollegen dran rumgefummelt, und jetzt weiss niemand, welche Aktion jetzt zum Erfolg geführt hat :) )

hab grad noch das gefunden: http://support.automation.siemens.com/WW/view/de/32247844

Hinweis:
•Sie können die Sammelanzeigen auch selbst zusammenstellen. Hierbei müssen Sie jedoch darauf achten, dass Sie an den Sammelwert eine Variable projektieren, denn es ist nicht möglich an den Sammelwert eine C-Aktion zu projektieren.
•Speichern Sie nach Änderungen an den Sammelanzeigen den "Picture Tree Manager" um die Änderungen zu übernehmen. Die Option "Sammelanzeigenhierarchie beim Speichern komplett neu berechnen" muss aktiviert sein.

bei mir geht's trotzdem...
 
probier mal folgende Bezeichnungen der Eigenschaften am Anwenderobjekt:

Eigenschaft: Sammelwert mit dem Attributnamen CollectValue
Eigenschaft: Sammelrelevant mit dem Attributnamen Relevant

wir haben leider einige Leichen in unserem Anwenderobjekt, von daher kann ich nicht definitiv sagen, was zwingend für die Funktion notwendig ist...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das heißt bei euch funktioniert es irgendwie? Das wäre wirklich mal interessant zu wissen wie das denn geht.
Ich habe es jetzt mit den englischen und deutschen Bezeichnungen an den Eigenschaften und Attributnamen durchprobiert, jeweils bei einem Anwenderobjekt und in einem Faceplate. Das funktioniert so einfach zumindest nicht.

Aber ich habe mir mal etwas genauer angesehen wie das mit der Sammelanzeige intern funktioniert.
Die Funktionen dafür sind in der CSigapi.dll vorhanden, bei WinCC wird auch ein entsprechendes Header-File mitgeliefert in dem der ein oder andere Kommentar steht.
Zumindest steht bei einer Funktion, dass diese die Bilder durchgeht und die gefundenen Sammelanzeigen in die Projektdatenbank einträgt.

Da hab ich mit dem SQL Manager mal einen Blick reingeworfen ;-) Dort gibt es eine passende Tabelle Namens "dbo.TM_UDOList". Wenn man sich deren Inhalt auflisten lässt, findet man dort alle Sammelanzeigen mit zugehörigem Variablennamen die erkannt wurden. Und das sind bei mir auch genau nur die, die an die Sammelhierarchie einwandfrei weitergeleitet werden.
Theoretisch durfte es ohne externe Variable wirklich nicht gehen, denn dann wäre der Eintrag in der Tabelle leer.
 
Zurück
Oben