AWL: Bedingt Laden? (Alle Meldetexte im OP Quittieren)

Marcel0815

Level-1
Beiträge
27
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
[ERLEDIGT] AWL: Bedingt Laden? (Alle Meldetexte im OP Quittieren)

Hi, ich hab da mal eine Frage. Das Problem kennt bestimmt jeder. Bei uns in der Firma gibt es viele Anlagen welche mit einem oder mehreren OP77A gesteuert werden.
Wenn da jetzt eine Störung kommt, wird diese im OP angezeigt. Wenn man jetzt den Quittiertaster (nennen wir in mal 1S0) drückt und die Anlage einschaltet, läuft die Anlage, aber der Text steht noch im OP und kann erst durch betätigen der "ACK" Taste gelöscht werden.

Ich habe mir jetzt überlegt, das irgendwie so zu machen:
Bei Bitmeldungen im WinCC (Flex2008SP1HF3) kann man ja für jede Meldung eine "Quittiervariable lesen". Nur leider kann man nicht immer die selbe nehmen.
Also hab ich mir gedacht dass ich mit meinem Quittiertaster und einigen Bedingungen ein DBD auf "1" setze und damit die Störungsanzeigen Quittiere.
Code:
U      E      6.2  //Quittiertaster
UN    M     29.1 //Störung 1
UN    M     29.3 //Störung 2
UN    M     29.5 //Störung 3
UN    M     29.7 //Störung 4 usw...
L     1
T     DB112.DBD    0
Somit müsste doch im 0. Doppelwort in jedem DBX eine 1 Stehen und damit die Störung Quittiert werden oder?
Aber leider wird der Lade befehl ja nicht durch die Bedingungen davor ausgeführt sondern immer.

Wie würdet ihr denn das lösen? Evtl ganz anders?
Mfg Marcel
 
Zuletzt bearbeitet:
Wenn du bedingt Laden willst brauchst du einen Sprungbefehl (zb SPBN ). damit kannst du den Ladebefehl überspringen wenn er nicht ausgeführt werden soll.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich denke mal du meinst irgendwie so oder?
Code:
U   E 6.2
UN M29.1
UN M29.3
 
SPBNB _001
L 1
T DB112.DBD 0
001: NOP 0

Muss ich morgen mal Testen.
In Awl bin ich noch nicht so fit.

Aber dann schreibt er mir schon den wert 1 in jedes einzelne Bit des DBD0 oder?
 
Hallo Marcel
auch in Wincc wie auch in ProTool kannst du die Fehlermeldung löschen. Ist das darüber oder drunter liegende Wort deiner Fehlermeldung. Steht aber in der Hilfe beschrieben

Gruß Wilhelm
 
Ich denke, so wirst du nicht jedes Bit setzen können. Du müsstest doch den höchstmöglichen Wert in das Doppelwort schreiben-oder?! Also ungefähr so:

Code:
U(
U   E 6.2
// Immer die Flanke abfragen
FP M 6.2
)
UN M29.1
UN M29.3
// Lade den Wert 0 in Akku1
L DW#16#0
// Springe bedingt, wenn VKE = 0 nach _001
SPBN _001
// Lade den Wert DW#16#FFFF FFFF in Akku1 wenn VKE = 1
L DW#16#FFFF FFFF
001: NOP 0
// Transferiere Wert von Akku1 ins Doppelwort 0 des DB 112
T DB112.DBD 0
So sind alle Bits im Doppelwort auf "0" wenn das VKE vor dem bedingten Sprung auf "0" bzw. alle Bits auf "1" wenn das VKE auf "1" steht...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Marcel,

Du willst nur den Text im OP wieder löschen nach der Quittierung über den Taster? Dachte es gab da mal ne Funktion bei der man Anwählen konnte, ob die Meldung quittiert werden muss oder nicht. Wenn Du die Quittierung ausschaltest,löscht sich der Text automtisch wenn die Störung quittiert wird.

Gruß Jan!
 
Störmeldungen von der SPS quittieren

Hallu Zusammen!
Noch mal zum Thema Fehlermeldungen (mehrere gleichzeitig) von der SPS quittieren.
HMI -OP73
WinCC Flex 2005
1) wo ist denn die Einstellung quittieren / nicht quittieren?
2) hab versucht die einzelnen Fehlermeldungen in Meldegruppen zusammemzufassen und quittien. Geht nicht!
3) das einzige was funktioniert: jedes Meldebit in ein separates Word schreiben. Danach in WinCC ein anderes Bit in DIESEM Word als "Quittierwariable schreiben" deklarieren. D.h. für jede Bitmeldung wird ein WORD benutz. Bei 1000 meldungen - 1000 Bits rücksetzen?
So ne Verschwendung!!!!
Oder Anders:
Beispiel:
Meldung 1 - DB0.DBX1.0 im Datenbausteinwort 0
Quittierbit Meldung 1 - DB0.DBX1.1 ("Quittierwariable schreiben" für Meldung 1 in WinCC)

Meldung 2 - DB0.DBX3.0 im Datenbausteinwort 2
Quittierbit Meldung 1 - DB0.DBX3.1 ("Quittierwariable schreiben" für Meldung 1 in WinCC)

u.s.w.
Um alle Meldungen von der SPS zu quittieren in jedes Meldewort den Wert 2 (INT) schreiben. Das geht mit der Funktion "FILL".

Gruß
manas
 
meldungen quittieren mit quittiervariable in sps

hallo...

ich schreibe einfach eine (-1) in das doppelwort der quittierbits wenn die quittierung erfolgen soll.

funktioniert wunderbar... oder hat das irgendwelche nachteile?

sonnige grüsse aus der schönen schweiz...

Milo
 
Also hab es jetzt hinbekommen. Bin ein Wenig mit diesen Doppelwörtern durcheinander gekommen.
Habe gedacht dass DW2 nach DW0 kommt. Aber nach DW0 kommt ja gleich DW4. DB2 liegt zwischen DW0 und DW4. DW1 gibt es gar nicht, dachte das verhält sich wie bei normalen Wörtern. Da gibt es ja Wort1.
Darum hat es nicht geklappt.
Ich hab das jetzt so gelößt:
Code:
      O(    
      U     E      6.2 //TASTER QUITTIEREN
      UN    M     29.1 //KEINE STÖRUNG1
      UN    M     29.3 //KEINE STÖRUNG2
      UN    M     29.5
      UN    M     29.7
      SPBNB _001
      L     DB112.DBD    8 // WERT FFFFFFFF
      T     DB112.DBD    0
      SET   
      SAVE  
      CLR   
_001: U     BIE
      )     
      O(    
      UN    E      6.2
      SPBNB _002
      L     0
      T     DB112.DBD    0
      SET   
      SAVE  
      CLR   
_002: U     BIE
      )     
      =     M    500.0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Pfui,pfui und nochmals pfui.
...
na, wenns funktioniert, dann kann man das ja ausnahmsweise mal durchgehen lassen ...

Aber die Hardwaremenschen unter uns wissen: Ein "L MW1" kostet unter Umständen zwei Speicherzugriffe im Gegensatz zu "L MW2". Und daher programmiere ich auch nur ungern ein "L MD2". Könnte ja in Hardware ein 32-Bit-Rechner sein.
 
Hab ja auch keine ungeraden verwendet, das hab ich ja nur zum Verständnis so geschrieben.
Dachte erst dass es ein Doppelwort 1 gibt. Gibt es in dem Fall aber nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und das sagt der Perfektionist? ;)
*seufz*

ich übe da eine Nachsicht, die ich mit mir selbst nicht hätte (habe!). Weil diejenigen, die sowas programmieren, eben nicht wissen, was sie damit ihrem Mikroprozessor antun. Aber da der µP halt meist doch willig ist, solch umständliche Befehle auszuführen :? belasse ich es bei diesem leisen Hinweis ...

Tja, das waren noch Zeiten, als man bei Turbopascal den Schalter "aligned" wählen konnte: also entweder Codeoptimiert (wenig Speicherplatz) oder Ablaufoptimiert (wenig Ausführungszeit). Und dem 8088 wars egal ...
 
Zurück
Oben