WinCC Flexible 2008 SP2 | Mehrere Variablen (DBs) zusammenfassen für Sichtbarkeit

saarlaender

Level-1
Beiträge
94
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich habe 3 CPUs mit jeweils einer Meldung, die mich gerade interessiert. Wenn eine dieser Meldungen ansteht, soll eine Linie sichtbar werden und blinken (Sichtbarkeit = Sichtbar; Gestaltung = Blinkend).

Alternativ reicht auch nur das Blinken, wenn eine der 3 Meldungen ansteht und sonst kein Blinken - falls machbar.


Mit Meldung meine ich eine BOOL-Variable in einem DB, der jeweils in jeder CPU mit jeweils unterschiedlicher Adresse vorhanden ist.

z.B. CPU#1 db1000.dbx10.0 | CPU#2 db1000.dbx15.2 | CPU#3 db1000.dbx27.1


Ich habe schon was über das Multiplexen gelesen, aber bin mir nicht sicher ob dass das Richtige ist und wie ich es nutze... also was genau ich unter "Sichtbarkeit" und "Gestaltung" dann als Variable auswähle und welche weiteren Einstellungen ich in den Screens machen muss.
 
Auf welchem Panel sollte das denn laufen?

Wieviele Verbindungen unterstützt dein Panel gleichzeitig?
Kannst du Skripte?

Evtl. jede Variable auf Zyklisch Lesen stellen und bei Wertänderung ein Skript triggern.
Im Skipt veroderst du die drei Variablen auf eine Interne Variable und die nimmst du für die Animation.

Oder du legst drei Linien übereinander, jeweils mit einer Variable zur Animation. Sollte auch klappen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo. Das mit den 3 Linien ist bisher auch so gemacht worden - ich wollte mir das aber sparen, weil ich gerade alle Variablen aktualisieren muss und dann eben VIEL weniger Arbeit hätte, wenn das mit sowas wie Multiplex-Zeug funktioniert.

Scripten kann ich nicht und der komplette Rest funktioniert ... also ich pass die funktionierende Visu gerade nur an.


Wenn es also keine eingebaute Funktion gibt bzw. das Multiplexen nicht für diesen Verwendungszweck gedacht is muss ich wohl 3 Linien machen?!
 
Mit Multiplexen würde auch bei gleichen Adressen so nicht funktionieren. Beim Mulitplexen wählst du ja über eine Multiplexvariable aus welche Variable zur Animation verwendet wird. Du möchtest ja gleichzeitig alle drei verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
mir fällt hier auch nur die Möglichkeit ein, die 3 Variablen mit einem Script (das bei Wertänderung jeder der 3 Variablen aufgerufen wird) zu verknüpfen. In dem Script kannst du die 3 Variablen einfach zu einen neuen Variablen verodern, die du dann für die Darstellung nimmst. Außerdem müßten die 3 Variablen in ihrer Aktualisierung von "zyklisch bei Verwendung" auf "zyklisch fortlaufend" umgeswitched werden.

Kann die Visu also Scripte ?

Ansonsten mußt du die Variablen in einer der 3 SPS'en sammeln und daraus eine neue zusammen fassen - das wäre aber auch nicht weniger Aufwand ...

Gruß
Larry
 
Ich würde bei einer solchen Anwendung, das wie in Larry's zweiten Ansatz auf der SPS Seite lösen.
Zum einen spart so etwas Power Tags, belastet die HMI nicht mit belanglosen, ist für dritte viel
einfacher zu durchschauen und erweiterbar.
Da dein Erfahrungsschatz mit scripten gering ist bleib auf der Steuerungsseite
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
:confused: ... ich denke aber, anlegen wirst du eins schon können ?

In dieses Script schreibst du dann :
meineZusammenfassung = meine_Variable_1 OR meine_Variable_2 OR meine_Variable_3
"meineZusammenfassung wäre hier deine neue Variable - das kann auch eine interne sein.
Das Script wird dann wie von mir beschrieben aufgerufen.
"meine_Variable_1" etc. wären durch die Namen deiner Bit's zu ersetzen - bitte die Aktulisierungs-Eigenschaften, wie von mir genannt, ändern.

Kommst du damit weiter ?
 
Ich versuchs mal. Is aber definitiv einfacher als auf SPS-Seite, da ich dort zwischen den 3 CPUs die DBs hin und her kommunizieren müsste (da wird schon genug kommuniziert ^^). Wenn dann eine der CPUs ausfällt und ich über die Visu gerade auf diese zugreife, klappt erstmal nichts mehr. Daher würde ich eben gerne über die Visu auf alle 3 CPUs zugreifen und sobald eine TRUE is soll was passieren.


Ich werd das gleich mal Testen :)
 
Code:
Dim TLZ-Error-1 = SmartTags("Interne\BIT_MELDUNGEN.COM_TLZ_ERROR")
Dim TLZ-Error-2 = SmartTags("Interne\Bit_Meldungen.COMM_TLZ_ERROR")
Dim TLZ-Error-3 = SmartTags("Interne\Bit_Meldungen.KOM_FEHLER_SE_TLZ")
Dim TLZ-Error-Alle = SmartTags("Interne\TLZ_COM_Error")
TLZ-Error-Alle = TLZ-Error-1 Or TLZ-Error-2 Or TLZ-Error-3

Passt das so?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
SmartTags("Interne\TLZ_COM_Error")
 = SmartTags("Interne\BIT_MELDUNGEN.COM_TLZ_ERROR") OR SmartTags("Interne\Bit_Meldungen.COMM_TLZ_ERROR") OR SmartTags("Interne\Bit_Meldungen.KOM_FEHLER_SE_TLZ")

sollte eigentlich auch reichen.
 
Das Script hat da keine Möglichkeiten zum einstellen, diese sind rein Ereignis gesteuert zb
Tastendruck oder Weränderung einer deiner Variablen. An den Variablen selber kannst du die
Aktualisierungszeti verändern von 100ms in festen Abständen aufwärts. Aber du musst daran
denken die Aktualisierung auf ständig lesen einzustellen, dami das Script auch ausgeführt wird
wenn andere Bilder aktiv sind.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das hat also alles geklappt soweit denke ich. Die Variablen aus den DBs hab ich auf 1s Zyklisch statt nur bei Verwendung eingestellt.

Mir fehlt jetzt eigentlich nur noch das gleiche mit Bitmeldungen bzw. DBs, aber möglichst ohne die alle einzeln als Variablen zu adden.


DH ich möchte entweder mehrere Bitmeldungen zu einer Variablen zusammenfassen oder mehrere Adressen von DBs. Es sind aber zuviele, um die einzeln reinzuhacken.

Gibts ne Möglichkeit, mehrere SmartTags gleichzeitig auszuwählen in einem DB oder eben DIREKT zu Adressieren?


DH:

Variable1 = db300.dbx10.0 OR db300.dbx10.1 OR ... bis z.B. 12.7
 
Rein theoretisch ginge es, wenn ich alles mit Smart-Tags mache. Da kann ich ja über Rechtsklick -> Objekte Anzeigen zu den jeweiligen DBs browsen. Aber das geht ja nur sehr langsam, wenn ich so viele Auswählen muss.

Also kein Workaround? :-(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
:confused: ... ich denke aber, anlegen wirst du eins schon können ?

In dieses Script schreibst du dann :
"meineZusammenfassung wäre hier deine neue Variable - das kann auch eine interne sein.
Das Script wird dann wie von mir beschrieben aufgerufen.
"meine_Variable_1" etc. wären durch die Namen deiner Bit's zu ersetzen - bitte die Aktulisierungs-Eigenschaften, wie von mir genannt, ändern.

Kommst du damit weiter ?


Hallo nochmal. Das hat ja wunderbar geklappt - LEIDER brauche ich aber auch einige Bitmeldungen, die ich so zusammen fasse. Diese funktionieren aber nur z.B. als INT (dh die Variable darf nicht BOOL sein).

Ich weiß nun aber nicht, wie ich das im Script realisiere um die einzelnen Bits anzusprechen (dh. z.B. Variable 1 als INT soll auf 0.0 das ODER-Verknüpfungsergebnis bekommen)
 
Stichwort "Ausmaskieren"

Code:
myBit0 = (myInt and 256) <> 0
myBit1 = (myInt and 512) <> 0
...
myBit8 = (myInt and 1) <> 0
myBit9 = (myInt and 2) <> 0
...
 
Stichwort "Ausmaskieren"

Code:
myBit0 = (myInt and 256) <> 0
myBit1 = (myInt and 512) <> 0
...
myBit8 = (myInt and 1) <> 0
myBit9 = (myInt and 2) <> 0
...


sry das versteh ich nich ganz... wie würde das bei folgendem Variablenzeugs aussehen:

Code:
SmartTags("Interne\TLZ_COM_Error") = SmartTags("Interne\BIT_MELDUNGEN.COM_TLZ_ERROR") OR SmartTags("Interne\Bit_Meldungen.COMM_TLZ_ERROR") OR SmartTags("Interne\Bit_Meldungen.KOM_FEHLER_SE_TLZ")

Wobei Interne\TLZ_COM_Error die INT-Variable für die Bitmeldung später ist (ich möchte nur ein Bit hier beschreiben, da ich für jede Meldung erstmal eine separate INT-Variable habe.
 
Zurück
Oben