TIA Meldungen aus DB generieren

Kehrer

Level-2
Beiträge
439
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wenn ich in einer HMI Bitmeldungen anzeigen lassen möchte nehme ich in der Standdar_Variablentabelle als Name "Mendung_1" und dann als Datentyp "WORD".
Somit kann ich z.B. bei %MW6 die Merker 5.0 bis 6.7 auslesen.

Wie gehe ich aber dann mit einer DB um?

Muß ich dann mit z.B. %DB10.DBW8 auslesen.
und woher weiß ich dann was DBW8 ist in meiner DB?

pid7.JPG
 
dazu brauch ich aber trotzdem sie triggervariable, oder?
Da kann ich aber nicht auf DB zugreifen.

Oder wie soll ich symbolisch darauf zugreifen?:confused:
 
Du kannst dir die Variablen auch per Drag&Drop in die Variablen Tabelle ziehen... (Am blauen "DI")

Da du sie ja bitweise angelegt hast, wohl nur jede einzeln.
Oder einfach mit Copy und paste!

Am besten gleich eine neue Variablentabelle "Meldungen" anlegen.


Wenn du da Wortweise darauf zugreifen möchtest, muss du die Bausteinoptimierung wohl ausschalten. (rechtsklick auf DB- Eigenschaften)
Weil sie eben in einem optimierten Baustein keine absolute Adresse haben.
Bisschen verkorkst das ganze mit den optimierten Bausteinen.


Bitte nicht steinigen wenn was nicht stimmt, arbeite auch erst seit kurzem mit TIA.
Habe alle globalen DB´s einfach "deoptimiert", weil ich damit nicht so recht klar kam. :p

Meine Meldungen kommen alle aus einem normalem DB.
 
Zuletzt bearbeitet:
Vieleicht habe ich auch nicht Verstanden was du meinst....
 

Anhänge

  • DB40.PNG
    DB40.PNG
    30,6 KB · Aufrufe: 38
  • FC11.PNG
    FC11.PNG
    4,7 KB · Aufrufe: 37
  • HMI.jpg
    HMI.jpg
    28,8 KB · Aufrufe: 32
Wenn du da Wortweise darauf zugreifen möchtest, muss du die Bausteinoptimierung wohl ausschalten. (rechtsklick auf DB- Eigenschaften)
Weil sie eben in einem optimierten Baustein keine absolute Adresse haben.

ok das hat schon mal funktioniert
db3.JPG

Da musste aber auch erst mal draufkommen, mit dem optimierten Baustein.
Bin mal gespannt was der Seminarleiter in 2 Wochen dazu sagen kann.
Bisschen verkorkst das ganze mit den optimierten Bausteinen.
Bisschen ist gut:confused:. steht aber auch nirgends oder?
 
Da musste aber auch erst mal draufkommen, mit dem optimierten Baustein.
Bin mal gespannt was der Seminarleiter in 2 Wochen dazu sagen kann.

Bisschen ist gut:confused:. steht aber auch nirgends oder?

Das steht sicher irgendwo. ;)
Zumindest im SPS Forum. :ROFLMAO:

Optimierte DB´s verringern allerdings z.b. die Zykluszeit. Können also schon Sinn ergeben.
Um da an die Grenzen zu stoßen muss man aber schon ein recht umfangreiches Programm haben.
 
Das ganze geht auch nochmal anders wie das hier gerade beschrieben wird. Ohne die DBs auf Absolute Adressierung umzuschreiben usw.

Dazu kannst du folgendermaßen vorgehen:
Erstelle einen DB, z.B. DB10. Dort legst du ein Array[0..9] of Word an, welches du z.B. Stoerungen nennst. Das sind dann 10 Worte, also insgesamt 160 Fehlermeldungen. Wenn du so viele nicht brauchst, kannst du auch weniger nehmen.
Im HMI legst du dann auch ein Array[0..9] of Word an, das du ebenfalls Stoerungen nennen könntest. Das verknüpfst du über die Verbindung mit der Variable im DB. Somit fragt die Visu dann die DB Variable ab.

Wenn du nun eine Meldung anlegst, gibst du dort die Triggeradresse an. Dazu wählst du die Variable Stoerungen die du in der Visu angelegt hast. Nun gibt es dort die Auswahlmöglichkeit für das Triggerbit. Dort stellst du 0,1,2,3 usw. ein. Damit wird die Meldung mit einem einzelnen Bit des Triggerwords verknüpft. Wechselt das Bit von False nach True, poppt die Meldung auf.
In der Spalte Triggeradresse kannst du sehen, dass dort die DB Variable mit Triggerbit drinsteht. Das Triggerbit ist in der Form.x1,.x2,.x3 usw. angegeben.

Wie du nun die Fehlerbits in das DB Word bekommst, wenn du nicht absolut darauf zugreifen kannst?

Du könntest dir einen Baustein bauen, bei dem du mit dem Slice Befehl auf die Bits aus dem Word zugreifst. Ein FC mit 16 Eingängen und einem Ausgang, den du mehrmals aufrufst. An den Eingängen kannst du die Triggerbits in der Steuerung dranschreiben, an den Ausgang schreibst du dann die einzelnen Wörter dran. z.B. Stoerungen[0] für das erste Word.

Das kann man aber auch einfacher machen. Du nimmst das MW8 z.B. und transferierst es mit einem Move Befehl in die DB Variable Stoerungen[0]. Ist nicht so elegant, aber geht auch.
Hierbei musst du aber bedenken, dass die Bytes im Word vertauscht sind. D.h. M9.0, also das achte Bit im MW8 würde bei diesem Weg die mit Triggerbit 0 angelegte Meldung triggern.
 
Zurück
Oben