„Trigger-Variable“ in WinCC flex komplett symbolisch?

lilli

Level-2
Beiträge
153
Reaktionspunkte
45
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Allerseits,

gibt es eine Möglichkeit in WinCC flex einzelne „Trigger-Variablen“ zuzugreifen?
Bei mir wird immer nur ein Wort akzeptiert, was ich als total umständlich empfinde.

Wenn das mit dem Wort nicht anders geht, gibt es eine Möglichkeit dieses Wort Symbolisch zu deklarieren und den einzelnen Bit ebenfalls einen symbolischen Namen zu verpassen?

Aktuell bekommen ich immer nur eines von beidem hin… :-?

Liebe Grüße
Lilli

S7 V5.5 / WinCC flex 2008 SP3
 
Du redest vermutlich über die Alarmmeldungen, und die Trigger und eventuell auch die Quittierungen dazu.
WinCC Flex zwingt das man eine Array verwendet, und nicht beliebige Adressen. Ein Wort ist das kleinste Array das man definieren kann.
Der Grund das ein Array verwendet werden muss ist das die Alarmbits müssen ständig gepollt werden, und dafür am besten in einen Block gesammelt.

Das Problem ist in S7 Programm, wenn man ein DB für die Alarme verwendet, dann vergibt man ein Symbol für den DB, und nicht für die einselne DB bits. Es ist umständlich wenn man ein einselne bit ein Symbol oder Kommentar zugeben will. Eine "Lösung" wäre Merkeradressen für die Alarme zu verwenden. Dann kann man beliebig Symbole und Kommentare für alle bits, bytes, words zugeben.
Bessere Lösungen habe ich nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Jesper,

dann geht das anscheinend nicht vernünftig?

OK, dann bleibe ich bei meinen einzelnen Bits.

In WinCC flex hab ich eine Meldungen verbunden und dann den Datentyp auf Word umgestellt. Mein DB ist 16Byte lang. Daher hab ich die Array-Elemente auf 8 gestellt.
2013-01-21_Meldewort_03.jpg

Das ist nicht schön – aber wenigstens funktioniert es…

Liebe Grüße
Lilli
 
Hallo Allerseits,

kleiner Nachtrag:

Wenn man sich in WinCC flex an den Array-Elementen zu schaffen macht, ist es ratsam, unter „Extras“ die „temporären Dateien“ zu löschen und unter „Projekt/Generator“ „alles neu generieren“!
Ansonsten kann es sein, dass keine einzige Meldung abgesetzt wird! :s8:

Liebe Grüße
Lilli
 
Hi,

Es ist nicht explizit notwendig auf SPS-Seite ein word zu verwenden.

Ich deklariere in meinem DB eine Variable Meldung mit array[1..x] of bool (x ist vielfaches von 16)
Nun habe ich Meldung[1]...Meldung[x] die ich im Programm einzeln ansteuern kann.

In WinCCflex deklariere ich eine Variable Meldungen mit Datentyp word und Array-Elemente x/16,
Symbol ist undefiniert und die Adresse vom ersten word im DB (DB.DBWx).

Habe auf SPS Seite noch nen kleinen Code der mir lowbyte/highbyte tauscht, so dass
nun Meldung[1] im DB = Meldung 1 im HMI.

Gruß MK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dadurch bleibt aber trotzdem der Nachteil, dass das Triggerbit keinen aussagekräftigen Namen bekommt.

Ich habe auch DBs mit den Bitmeldungen (als BOOL mit aussagekräftigem Symbolnamen) und kopiere diese dann auf der SPS-Seite in einen anderen DB mit Wort-Struktur um. Das ist aber auch nicht wirklich schön.

Im nächsten Step werde ich wohl die auch von Jesper vorgeschlagene Lösung umsetzen und die Merkerbereiche nutzen.
 
Ich lege immer Betriebsmelde, Störmelde und Quttierbits an. Diese bekommen eine Eindeutig Nummer.
Diese Nummer bekommt dann auch die Meldungen in der HMI. Störmeldungen bekommen ein Nummernband
von 1000 - 1999; Betriebsmeldungen 2000 - 2999. Bei der Anwendung schreibe ich immer hinter den Stör.-
und Betriebsmelde Bits eben den Kommentar, dabei erspare ich mir das bei den Quittierbits, weil diese immer
im Programm unmittelbar mit den Meldebits verwendet werden.

Das verwenden des Nummernbandes macht ein schnelles übersichtliches Programmieren möglich. Wenn man
einen Kunden nach einen Angezeigten Fehler fragt, kann dieser die Nummer angeben und es kann gezielter
gesucht werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mir einmal in Excel eine Hand voll DBs generiert. 32 Meldebits mit der WinCCflex Meldungs Nummer als Symbol, dabei wurde auch gleich High und Low Byte getauscht.

In WinCCflex ist das dann als dWord verknüpft.

Im SPS prog werden die Meldebits alle in einem FB zugewiesen, und die Netzwerküberschrift wird dann später als Meldetext verwendet.
 
Nummernbänder nutze ich auch.

Ich lege immer Betriebsmelde, Störmelde und Quttierbits an. Diese bekommen eine Eindeutig Nummer.
Diese Nummer bekommt dann auch die Meldungen in der HMI. Störmeldungen bekommen ein Nummernband
von 1000 - 1999; Betriebsmeldungen 2000 - 2999. Bei der Anwendung schreibe ich immer hinter den Stör.-
und Betriebsmelde Bits eben den Kommentar, dabei erspare ich mir das bei den Quittierbits, weil diese immer
im Programm unmittelbar mit den Meldebits verwendet werden.

Das verwenden des Nummernbandes macht ein schnelles übersichtliches Programmieren möglich. Wenn man
einen Kunden nach einen Angezeigten Fehler fragt, kann dieser die Nummer angeben und es kann gezielter
gesucht werden.

Hallo Helmut, kann in deinem beitrag nicht erkennen wie du nun eigentlich die Bits und Bytes handelst, das
worüber wir hier eigentlich diskutieren und dem Themenstarter hilft.:wink:

Dadurch bleibt aber trotzdem der Nachteil, dass das Triggerbit keinen aussagekräftigen Namen bekommt.

Ich habe auch DBs mit den Bitmeldungen (als BOOL mit aussagekräftigem Symbolnamen) und kopiere diese dann auf der SPS-Seite in einen anderen DB mit Wort-Struktur um. Das ist aber auch nicht wirklich schön.
Im nächsten Step werde ich wohl die auch von Jesper vorgeschlagene Lösung umsetzen und die Merkerbereiche nutzen.

Dem Triggerbit wird man wohl keinen symbolischen Namen verpassen können. Aber bei Nutzung der oben genannten Vorgehensweise ist zumindest
der symbolische Name (Meldung[1]) gleich der Meldenummer im HMI und kann so schnell bei Diagnose gefunden werden.

Einen DB mit Wort-Struktur (oder array) ist zur Diagnose nicht schön, musst gesetztes Bit im Word zuordnen.

Merkerbereiche finde ich nicht so gut. Kleiner CPUs haben zB nicht so viel Kapazität, jeden einzelnen Merker symbolisch beschreiben auch nicht erquickend,...

Gruß MK
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich fände es ideal, wenn ich in dem DB alles schön symbolisch anlegen könnte und das flexible die BOOL-Struktur bei der Angabe des Triggerbits ignoriert. Quasi ein absoluter Zugriff auf die Adresse.
 
Ich fände es ideal, wenn ich in dem DB alles schön symbolisch anlegen könnte und das flexible die BOOL-Struktur bei der Angabe des Triggerbits ignoriert. Quasi ein absoluter Zugriff auf die Adresse.
Hallo Tiegerente,

genau diesen Sch....ß bemängle ich doch!

Das ist doch überhaupt nicht ideal – im Simatic- Manager kann man zu allem Übel noch umstellen ob Symbolisch oder Absolut Vorrang hat. Dieser Mischmasch ist doch unerträglich!

Wieso kann nicht alles symbolisch sein?
Wie funktioniert das in TIA?

Liebe Grüße
Lilli
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dieser Mischmasch ist doch unerträglich!

Das sind die Freiheiten die dir BigS gibt, warum soll das schlecht sein?
Wenn es fest auf symbolisch sein sollte, dann schimpft ein anderer.
Es ist doch dir es richtig zu nutzen.
Alle Verantwortung zu BigS schieben ist schwach.

Also ich komme so sehr gut damit zurecht.
Ich baue meine Triggerbits in irgend einem DB oder einem Merker aarry oder so und das Hochschicken, Anzeige und Quittieren machen fertige Funktionen, die zum Grundgerüst des HMI Projekt passen.


bike
 
Hallo bike,

das mit der Freiheit verstehe ich nicht ganz.

Es ist doch so, dass ich 4 Varianten zum einstellen vom Operandenvorrang habe.
Einstellung_fuer_Symboltabelle_01_d.gif

Angenommen ich stelle auf „Symbol hat immer Vorrang“, dann bringt das doch für mein Problem nicht viel. S7 bekommt es zusammen mit WinCC flex nicht auf die Reihe wirklich komplett symbolisch zu sein. Es ist immer eine Mischung aus Symbol und Word oder Bit...

Ausgenommen von der Merker- Variante und dem Umkopieren, war unter der bisherigen Beiträgen keine unkomplizierte Lösung mit dabei.

Wenn du hier eine brauchbare Lösung vorstellen kannst, bist du mein “Held des Tages“! :s6:

Liebe Grüße
Lilli
 
Ich möchte da noch einmal meinen Vorschlag aufgreifen, den das Klavier nicht verstanden hat.
Ich lege zb 128 Störmeldungen an, die einzeln als Bit in einen DB angelegt sind und erhalten
den Nr Bereich als Symbol.

Code:
Stoermeldung als Struct
_2001 Bool Meldung 1
_2002 Bool Meldung 2
...
...
_2128 Bool Meldung 128

In der HMI wird dan der Störmeldebereich als Array mit 8 Wörtern angelegt und ist somit Symbolisch
und nur 1 PT beansprucht. Wenn jetzt im Flexibel Bitmeldungen der Variablen zugeordnet werden,
bekommen Sie eine Nr, dazu ist es dann Sinnvoll das Nr Band aus der Steuerung zu nutzen. Für Trigger
Variabel vergibt Flex eine eigene Nr, bei 1 beginnend, wenn man jetzt die 2001 die 1, die 2002 die 2 usw
zuordnet, bekommt man ein übersichtliches Störmeldesystem, was für das Störmeldesystem Array der
Steuerung auch Symbolisch ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Helmut,

Das mache ich im Prinzip genauso, aber diese eine Start-Variable in WinCC flex bezieht sich dann trotz „symbolischen Operandenvorrang“ immer noch ausschließlich auf eine Hardware-Adresse!
Die Alternative ist, Worte Symbolisch an WinCC flex binden und in der SPS mit nackten nicht symbolischen Bits arbeiten, wenn man nicht im Merkerbereich rühren will.

Bei den Meldungen und Störmeldungen empfinde ich es als unschön. :|
Bei der umständlichen Anbindung an Strukturvariablen in Verbindung mit Bildbausteinen ist das schlicht Murks. (für den ich keine schöne Lösung kenne) :sm14:

Gruß
Chräshe
 
Ich möchte da noch einmal meinen Vorschlag aufgreifen, den das Klavier nicht verstanden hat.

Du musst nicht etwas Falsches behaupten, nur weil ich dich kritisiert habe.
In deinem ersten Beitrag ist die Verbindung zwischen SPS und HMI keineswegs ersichtlich.

Ich zitiere nochmal:
Diese bekommen eine Eindeutig Nummer.
Diese Nummer bekommt dann auch die Meldungen in der HMI.

Und? Genau das ist bei Anderen und meinem Vorschlag ja auch der Fall.

Code:
Stoermeldung als Struct
_2001 Bool Meldung 1
_2002 Bool Meldung 2
...
...
_2128 Bool Meldung 128

Da hast du aber beim ersten Erstellen jede Menge Tipparbeit beim Erstellen der Struct!

In der HMI wird dan der Störmeldebereich als Array mit 8 Wörtern angelegt und ist somit Symbolisch
und nur 1 PT beansprucht. Wenn jetzt im Flexibel Bitmeldungen der Variablen zugeordnet werden,
bekommen Sie eine Nr, dazu ist es dann Sinnvoll das Nr Band aus der Steuerung zu nutzen. Für Trigger
Variabel vergibt Flex eine eigene Nr, bei 1 beginnend, wenn man jetzt die 2001 die 1, die 2002 die 2 usw
zuordnet, bekommt man ein übersichtliches Störmeldesystem, was für das Störmeldesystem Array der
Steuerung auch Symbolisch ist.

Der Vorteil der Übersicht, wenn jeder Struct eine eigene Trigger_Var zugewiesen wird, sehe ich kaum, da
mit meinem einfachen Array auch eine Nummernbandzuordnung erfolgt:

0-199 Meldungen Gesamtmaschine
200-299 Meldungen Teilmaschine 1
300-399 Meldungen Teilmaschine 2
...
max. Systemgrenze

und das mit sehr viel weniger Aufwand.

Erwähnen müsstest du das dein Struct unbedingt die Länge eines 8 Word haben sollten und kein Bit mehr, sonst
werden Meldungen > x128 nicht angezeigt.

Entscheidender Vorteil bei dir ist wohl die Quittierung. Da bei unseren Maschinen keine explizite Einzelquittierung gefordert ist,
verzichte ich gern darauf und nutze eine globale Quittierung.

Gruß MK
 
Zurück
Oben