TIA Bitmeldungen im TIA-Portal

spirit

Level-1
Beiträge
961
Reaktionspunkte
23
Zuviel Werbung?
-> Hier kostenlos registrieren
Hänge grad an einem Problem fest,

ich kann in V13 eine Meldung in einem DB nicht mehr als Datentyp UInt deklarieren. Ist das bei euch auch so?

UND:

Wie macht ihr das im DB, wenn mehr als 8, bzw. 16 Meldungen verwendet werden sollen - legt ihr da ein Array an (siehe Anhang!)?

Lieben Dank ...
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    29,2 KB · Aufrufe: 217
Hmm, Int ist eigentlich genauso falsch wie UInt. Versuche mal Word. Es ist doch einfach nur eine Zusammenfassung von 16 Bits, aber kein numerischer Datentyp zum Rechnen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm, Int ist eigentlich genauso falsch wie UInt. Versuche mal Word. Es ist doch einfach nur eine Zusammenfassung von 16 Bits, aber kein numerischer Datentyp zum Rechnen.

Harald

Ehrlich, ist das falsch?

Das sagt zumindest Siemens dazu:

Legen Sie unter „Variable“ eine neue Variable an bzw. wählen Sie eine vorhandene Variable
aus mit der die Bitmeldung ausgelöst werden soll.

Unterstützte Datentypen für die Triggervariable

.. Interne Variable als Triggervariable: Int, UInt
.. Steuerungsvariable als Triggervariable: Int, Word

Hinweis:
Verwenden Sie die Variable zum Auslösen der Meldung ausschließlich für das Auslösen dieser
Meldung.


Bisher habe ich (in Classic) einfach in einem DB ein Struct für Alarme und ein Struct für Meldungen angelegt. Der Datentyp war dann immer BOOL. Aber das ist ja jetzt mit TIA vorbei ...

Wie könnte ich denn den DB konfigurieren, um zw. Störungen und Meldungen zu unterscheiden? Mit Struct klappt das ja bei TIA nicht. Mittels Array? :confused::confused:
 
Das es als INT geht kann auch irgendwie nicht glauben.

Ehrlich gesagt würde ich mir die Arbeit machen und die Variablen
in einen Struct als Bool anlegen, so kann man ihnen einen Kommentar
hinzufügen, ansonsten sind Sie später Im Programm Anonym, das ist
dann wie als wenn du einen Ausgang als Symbol 'A 0.0' nennst, damit
kann niemand etwas anfangen und später du auch nicht.
 
Das es als INT geht kann auch irgendwie nicht glauben.

Ehrlich gesagt würde ich mir die Arbeit machen und die Variablen
in einen Struct als Bool anlegen, so kann man ihnen einen Kommentar
hinzufügen, ansonsten sind Sie später Im Programm Anonym, das ist
dann wie als wenn du einen Ausgang als Symbol 'A 0.0' nennst, damit
kann niemand etwas anfangen und später du auch nicht.

Danke RN,

aber das hatte ich ursprünglich versucht - bin dann allerdings gescheitert, als ich diese Bool-Variablen in WinCC verabeiten wollte. Da konnte ich sie erst gar nicht aus dem DB heraus aufrufen, da nicht sichtbar ... möchte jetzt auch nicht beschwören, dass ich hier keinen Fehler gemacht habe, aber zumindest hat es bei mir NICHT geklappt! In Classic jedoch schon.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
INT, UINT, REAL machen Sinn für Analogmeldungen (z.B. min/max überschritten).
Bitmeldungen werden (wie der Name schon sagt) von Bits getriggert. Damit man für 300 Meldungen nicht 300 Bool-Variablen anlegen muß, ist es bei Siemens "schon immer" so, daß die Triggerbits in Word oder Array of Word zusammengefasst werden.

Harald
 
INT, UINT, REAL machen Sinn für Analogmeldungen (z.B. min/max überschritten).
Bitmeldungen werden (wie der Name schon sagt) von Bits getriggert. Damit man für 300 Meldungen nicht 300 Bool-Variablen anlegen muß, ist es bei Siemens "schon immer" so, daß die Triggerbits in Word oder Array of Word zusammengefasst werden.

Harald

Ok Harald, dann muss ich etwas falsch gemacht haben - mir gelingt es nämlich nicht, eine in einem DB als BOOL angelegte Variable in WinCC (TIA) einzubinden ...

Werde morgen nochmals ein Screenshot übermitteln - vielleicht könnt ihr meinen Fehler sehen! :confused: ;)

Danke!
 
mir gelingt es nämlich nicht, eine in einem DB als BOOL angelegte Variable in WinCC (TIA) einzubinden ...
Ich kenne das TIA-WinCC nicht, doch ich meine, das geht (unerklärlicherweise) immer noch nicht, in TIA ein Bool-Array als Triggervariablen symbolisch auszuwählen. Man muß wohl auf die selbe absolute Adresse wie das Bool-Array ein Word-Array projektieren.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@spirit
So ganz verstehe ich dein Problem gerade nicht ...
Dein einziges Problem kann eigentlich sein, das du die Variable nicht symbolisch anbinden kannst, was bei Flex in dem Fall aber imho auch nicht gegangen ist, auch hier konnten nur 16-Bit Typen bzw. entsprechende Arrays angebunden werden.

Also musst du die Variable absolut in TIA anlegen, und da wiederum ist der Datentyp des DBs (nicht aber der WinCC-Variable) im Grunde genommen vollkommen egal, theoretisch wäre auch Real hier kein Problem (wenn auch nicht wirklich sinnvoll).
Natürlich muss der DB so 1200/1500 dabei Nicht-Optimiert sein.

Persönlich bin ich mittlerweile dazu übergegangen, einen (oder auch mehrere) Melde-DB auf 16-Bit Struct Basis zu haben, mit W0 - Wn,
und diesen dann in einen Array Of Word DB umkopiere (mit einem Hilfs-FC 16-Bit Struct IN -> Word Out), auf welchen dann TIA symbolisch zugreift.
Diese Variante funktioniert auch problemlos mit optimierten DBs.

Mfg
Manuel
 
Zuletzt bearbeitet:
Sorry, dass ich mich mal wieder so dämlich anstelle - aber mir gelingt es einfach nicht! *machehiermalgradwiederkeinewerbungfürdasweiblichegeschlecht* ;)

Ich kann in WinCC (TIA) keine Triggervariable einfügen.


Lieben Dank für Helferlein!


In WinCCflex klappt das so übrigens vorzüglich - da ist "DB_Meldungen.Meldungen" die Trigger-Variable und "DB30 DBX0.0" die Trigger-Adresse der ersten Meldung.
 

Anhänge

  • DB.jpg
    DB.jpg
    42,6 KB · Aufrufe: 206
  • WinCC_TIA.jpg
    WinCC_TIA.jpg
    77,2 KB · Aufrufe: 178
Zuletzt bearbeitet:
Hi,

Also dein konkretes Problem, dass du die einzelnen Meldungen in deinem Struct nicht angezeit bekommst konnte ich leider nicht nachvollziehen da dies bei mir klappt :confused:.

Allerdings kann ein Bool aus deinem Struct soweit ich weiß eh nicht als Triggervariable verwendet werden, da diese vom Typ Word sein muss. Ich würde dir also mal empfehlen MSB's Weg auszuprobieren und dein "Bool-Struct" in ein word umzukopieren und dieses dann als Trigger zu verwenden.

Gruß Phil
 
Ganz lieben Dank RN!

Glaube jetzt habe ich es hinbekommen - (leider!) nur mit Anleitung ... :razz:


Noch zwei Fragen dazu:

1) Gehe ich recht in der Annahme, dass im Bild 2 von 3 (HMI-Variablen) es sich beim Datentyp um ein "Array[..] of Word" handelt?

2) Gibt es eine Möglichkeit die Nummern in den eckigen Klammern der neu angelegten Variablentabellen zu ändern?
 
@spirit
1) Im Flex als absolut adressierte Variable ja, im DB ansich wiederum nein, siehst du aber in Bild 1 bzw. in den Eigenschaften im Bild 2
2) Aber natürlich, indem du mehr oder weniger Variablen in die Variablentabelle legst

Nachteil von Helmuts Variante ist natürlich, wenn er jetzt in diesem IDB bzw. dem zugehörigen FB Änderungen der Schnittstelle durchführen würde, dann muss er auch im WinCC-Teil händisch Änderungen durchführen, da sich dann relativ sicher die Adresse im DB verschieben würde.
Bei 1200/1500 mit optimierten DBs würde diese Variante prinzipbedingt gar nicht funktionieren.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Also dein konkretes Problem, dass du die einzelnen Meldungen in deinem Struct nicht angezeit bekommst konnte ich leider nicht nachvollziehen da dies bei mir klappt :confused:.
Hallo Phil,

mich würde mal interessieren, was genau bei Dir "klappt" und ob das was mit dem Problem von spirit zu tun hat... :cool:;)

Harald
 
@ Harald
Da war ich noch ein bisschen langsam im Kopf, da heute unsere Kaffemaschine ausgefallen ist :D Hat sich auf das hier bezogen :
bin dann allerdings gescheitert, als ich diese Bool-Variablen in WinCC verabeiten wollte. Da konnte ich sie erst gar nicht aus dem DB heraus aufrufen, da nicht sichtbar ... möchte jetzt auch nicht beschwören, dass ich hier keinen Fehler gemacht habe, aber zumindest hat es bei mir NICHT geklappt

Hat also nichts mit dem Kernproblem der Meldungen zu tun da es ja über diese Einbindung eh nicht funktioniert ob man die Variablen nun sieht oder nicht :D

Schön Tach noch
Phil
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nachteil von Helmuts Variante ist natürlich, wenn er jetzt in diesem IDB bzw. dem zugehörigen FB Änderungen der Schnittstelle durchführen würde, dann muss er auch im WinCC-Teil händisch Änderungen durchführen, da sich dann relativ sicher die Adresse im DB verschieben würde.
Bei 1200/1500 mit optimierten DBs würde diese Variante prinzipbedingt gar nicht funktionieren.

Genauso sehe ich das auch, die Variable ist händisch angelegt, damit kann ich aber leben.

In der TIA Welt (120071500) würde ich das Bitmeldeverfahren nicht mehr verwenden, da kommt
das Bausteinmeldeverfahren zum Einsatz.
 
also ich verwende für die Bitmeldungen bei der 300/400 & 1200/1500 das gleiche verfahren mit INT
DB mit INT´s anlegen übersetzen, danach in die Bitmeldungstabelle oder Variablentabelle WinCC ziehen und fertig!
 
Zurück
Oben