TIA HMI-Bitmeldungen richtig konfigurieren

Smee

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich bin gerade dabei eine 1500er CPU mit KTP 1000 Basic zu programmieren.
Installiert ist TIA V13 SP1 Update 9.

Ich versuche jetzt allerdings die HMI-Bitmeldungen zu programmieren und glaube nicht, dass meine Lösung die "richtige" ist. Ich habe als Triggervariable ein WORD im DB92 "HMI-Meldungen".
Das Triggerbit "schaut" natürlich jetzt auf ein Bit in diesem WORD. (Siehe Bild)

hmi.JPG

Setze ich dieses Bit allerdings vom Programm aus, dann wird mir das Setzen der Variable angemeckert und orange hinterlegt. Siehe Bild ->
variablebelegt.JPG

Gibt es eine elegantere Lösung? Das ganze funktioniert zwar, ist aber unschön. Ich kann dieser Adresse ja auch kein Symbol oder Namen zuweisen. :sad:
Kann mir jemand helfen?
 
Anstatt ein 16-bit Word, dann ein BOOL Array, gerne so gross das alle deine Alarme in diesen Array reinpasst.
Dann addressierst du jeden Alarm in Code etwa in diesen Stil: "Störung".meldung[11].
Aber pas auf !
Wegen den unsinnige Little-Endian/Big-Endian debackle sind die Bytes vertauscht !
Also sind das "Triggerbit" Nummer in WinCC und das Störung-Array bit Nummer in STEP7 nicht gleich.
Das hat Siemens sehr unschön gelöst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, schonmal danke für die schnelle Antwort.

Ich hab in meinen DB92 einfach mal ein BOOl Array mit 16 Bits geschrieben:

DB092.JPG

Wenn ich allerdings aus dem Bitmeldungenkonfigurationsmenü auf dieses Array verweisen möchte, dann wird das nicht akzeptiert:

bitmeldungarrayt.JPG

In der Siemenshilfe finde ich nur, dass ich wirklich Datentyp Int oder Word nehmen soll, wobei ich dann wieder am Anfang stehe.

Wählen Sie im Inspektorfenster unter "Eigenschaften > Eigenschaften >
Trigger" die Variable und das Bit, durch das die Meldung getriggert wird.
Beachten Sie dabei Folgendes:


  • Wenn Sie eine HMI Variable wählen, verwenden Sie die Datentypen "Int" oder
    "UInt".

  • Wenn Sie eine PLC Variable wählen, verwenden Sie die Datentypen "Int" oder
    "Word". Der Ein- und Ausgangsbereich einer PLC-Variablen ist als Trigger
    ungeeignet.

  • Verwenden Sie ein Bit einer Triggervariablen nur für eine Meldung.

  • Verwenden Sie eine Triggervariable ausschließlich als Triggervariable.

  • Wenn Sie die Meldung über die Steuerung quittieren lassen, verwenden Sie
    diese Variable auch als PLC Quittiervariable.
 
Meines Wissens funktioniert das unter TIA bei Symbolik-Zwang nur, wenn man das Bool-Array (PLC-Meldebits) auf ein Word-Array (für die HMI) kopiert.
Bei S7-1200/1500 könnte man noch umständlich in der PLC die Meldebits per Slice-Zugriff in dem Word-Array ansprechen.

Harald
 
Zuletzt bearbeitet:
Ich weiß nicht ob ich deinen ersten Betrag oben richtig verstanden habe.
Ich verwende als triggervariable ein Uint aus einem DB und das funktioniert.

So wie ich das sehen hast du dein HMI-Meldungen_Störmeldung als Array [0..15] as word angelegt .

Greifst aber dann im Hmi auf das ganze array [0..15] in einer Zeile zu

Richtig wäre hier
array [0]
Nächste Zeile dann
array [1] usw.

HMI_array.PNG
 
Meines Wissens funktioniert das unter TIA bei Symbolik-Zwang nur, wenn man das Bool-Array (PLC-Meldebits) auf ein Word-Array (für die HMI) kopiert.
Bei S7-1200/1500 könnte man noch umständlich in der PLC die Meldebits per Slice-Zugriff in dem Word-Array ansprechen.​
So umständlich wollte ich es mir eigentlich nicht machen. Bin am Überlegen ob ich nicht einfach ein Merkerstörungsword nehme.

@Hesse
Ein Bool Array kann ich weder "gesamt" noch Bitweise hinterlegen.

Wie schiebe ich denn die 16Bits aus dem Array in ein Word?

Kann mir jemand mal ein Programm zur Verfügung stellen, damit ich mir mal ansehen kann wie ihr es gelöst habt?
 
Bin am Überlegen ob ich nicht einfach ein Merkerstörungsword nehme.
Und was hast du an einem DatenbausteinStörungsword auszusetzen?

Ein Bool Array kann ich weder "gesamt" noch Bitweise hinterlegen.
Nein ein „Bool“ nicht hier muss eine 16 Bit Variable stehen
Es muss eine 16 Bit Variable sein, mit Triggerbit bestimmst du dann das Bit dieses „Word“ das den Meldetext dieser Zeile auslöst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es ist vermutlich am einfachsten, die BOOLs der Bitmeldungen in Speicher mit "Standardzugriff" (nicht optimiert) zu legen (DB oder Merker), dann kann im SPS-Programm auf die Meldebits symbolisch zugegriffen werden und im HMI auf die selbe Adresse ein ARRAY OF WORD deklariert werden. (unsymbolisch)

Ansonsten gibt es noch die Möglichkeit, im SPS-Programm die Meldebits in Structs mit je 16 Bools zu deklarieren und dann für das HMI auf Words umzukopieren. Da dieses "Meldebits in Words"-Problem schon öfters nachgefragt wurde, findet man hier im Forum auch schon einigen Beispielcode.

UDT nach Word wandeln / S7-1500
Bits zu Word Convertieren in Step7 v13
16x BOOL zu WORD
Bool Variablen im DB als Word ansprechen
Bitmeldungen im TIA-Portal

Harald
 
Zurück
Oben