Step 7 Doppelwortweise Auswertung von Störmeldungen

AndiS

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

Ich hab wieder einmal ein Problem mit einem Programm.
Werde einfach nicht schlau draus.
Habe eine Doppelwortabfrage bzw. vergleich mit "0".
Laut Beschreibung sollte da nur ein Impuls daherkommen?!?
Ich vermute da ist ein kleiner Fehler passiert.
Bei uns wird damit nämlich eine Hupe angesteuert.
Hupe lässt sich nicht quittieren, da MD294 ja sofort wieder gesetzt wird.
Ich möchte aber keine Positive Flanke einbauen, da ich dann keine neuen Störmeldungen mehr mitbekommen.
einige Bit wurden eh schon niedergezwungen 😤
Ich habe das "XOD" im Verdacht. Kann es sein, dass das vorm Transferien reinsoll?
Sieht jemand einen Fehler bzw. hat jemand einein Lösungsvorschlag? 👨‍🏫

LG Andi
 

Anhänge

  • Hupenansteuerung.PNG
    Hupenansteuerung.PNG
    24,2 KB · Aufrufe: 54
Ja der Vergleich mit 0 funktioniert genau ab dem ersten Fehler, damit kannst du deine rote Lampe anmachen wenn irgendwo ein Fehler ist.
Ansonsten kannst du das Doppelwort wegspeichern und im nächsten Zyklus mit dem aktuellen Doppelwort vergleichen, um rauszufinden ob neue Fehler dazu kamen.
Wenn ja, dann z.B. für 5s die Hupe einschaltet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Laut Beschreibung sollte da nur ein Impuls daherkommen?!?
Ja, der Code ist schwierig zu verstehen wenn keine "sprechenden" Symbole verwendet werden... der Code funktioniert aber prinzipiell:
Code:
L vorher   //MD274
L jetzt    //DB14.DBD20
T vorher   //MD274
XOD        // Haben sich Bits geändert?
L jetzt
UD         // und sind jetzt 1? (also gerade "gekommen")
T MD294    // Bitfeld gekommener Bits, jedes Bit kann höchstens 1 Zyklus lang als 1 anstehen

Hupe lässt sich nicht quittieren, da MD294 ja sofort wieder gesetzt wird.
Hast Du MD294 beobachtet? Wenn sich DB14.DBD20 nicht ändert, dann muß MD294 = 0 sein.
Hast Du vielleicht Adressüberschneidungen zu MD294, MD274 (oder DB14.DBD20) bei Schreibzugriffen in anderen Programmteilen?

Harald
 
Zuletzt bearbeitet:
Ja der Vergleich mit 0 funktioniert genau ab dem ersten Fehler, damit kannst du deine rote Lampe anmachen wenn irgendwo ein Fehler ist.
Ansonsten kannst du das Doppelwort wegspeichern und im nächsten Zyklus mit dem aktuellen Doppelwort vergleichen, um rauszufinden ob neue Fehler dazu kamen.
Wenn ja, dann z.B. für 5s die Hupe einschaltet.
Ich will aber, dass der Anlagenbediener die Störung gezielt wegquittieren muss. Ansonsten itressiert es wieder keinen. (kann bei uns im Betrieb lebensgefährlich sein)
Also geht´s nur über eine Kunstschaltung bzw. alles ausprogrammieren? (leider geht´s da halt um 24byte)
Also viel Arbeit das alles über die Hupenauswertung zu machen. 🥵
 
Ja, der Code ist schwierig zu verstehen wenn keine "sprechenden" Symbole verwendet werden... der Code funktioniert aber prinzipiell:
Code:
L vorher   //MD274
L jetzt    //DB14.DBD20
T vorher   //MD274
XOD        // Haben sich Bits geändert?
L jetzt
UD         // und sind jetzt 1? (also gerade "gekommen")
T MD294    // Bitfeld gekommener Bits, jedes Bit kann höchstens 1 Zyklus lang als 1 anstehen


Hast Du MD294 beobachtet? Wenn sich DB14.DBD20 nicht ändert, dann muß MD294 = 0 sein.
Hast Du vielleicht Adressüberschneidungen in anderen Programmteilen?

Harald
Das heißt MD294 sollte wieder 0 werden, auch wenn im MD274 noch ein oder mehrere Bit gesetzt sind?
Dann würd eh alles funktionieren.
 
Das heißt MD294 sollte wieder 0 werden, auch wenn im MD274 noch ein oder mehrere Bit gesetzt sind?
Ja, MD294 sollte wieder 0 werden. Da sind ja nur die Bits = 1, die in DB14.DBD20 in diesem Zyklus als 1 dazugekommen sind.
MD274 hat nach dem Code den gleichen Wert wie DB14.DBD20. Kann also <> 0 sein. MD274 speichert den vorherigen Wert von DB14.DBD20 für den Vergleich, ob sich Bits geändert haben.

Harald
 
Dann musst Du jede einzelne Störung in einem HMI anzeigen und auswerten, ob genau diese Störung quittiert wurde.

Harald
Die Störungen werden via InTouch dauerhaft angezeigt solange diese nicht so behoben sind, dass sie sich rücksetzen lassen bzw. automatisch rücksetzen. Das Ganze ist nur für ein Hupensignal reinprogrammiert worden, da der Programmierer nur einen Bereich eines alten Anlagenteils Transferiert hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dein Code signalisiert speichernd im M148.7, ob in DB14.DBD20 1-Bits neu dazugekommen sind ("NEUSTÖRUNG"). Solange bis der Quittiertaster E7.1 kommt. Mehr tut der Code nicht. Ob überhaupt (noch) Störungen anliegen, signalisiert der Code nicht (es ist KEIN Sammelsignal "STÖRUNG").
Ist das nicht das was Du brauchst oder erwartest? :unsure: Was ist eigentlich Dein Problem bzw. was willst Du erreichen, wie soll etwas funktionieren?

PS: Wenn der Quittiertaster E7.1 dauerhaft betätigt ist, dann wird M148.7 nach diesem Code nie aktiv sein, und die Hupe kriegt die Neustörungen nicht mit.

Harald
 
Zuletzt bearbeitet:
Dein Code signalisiert speichernd im M148.7, ob in DB14.DBD20 1-Bits neu dazugekommen sind ("NEUSTÖRUNG"). Solange bis der Quittiertaster E7.1 kommt. Mehr tut der Code nicht. Ob überhaupt (noch) Störungen anliegen, signalisiert der Code nicht (es ist KEIN Sammelsignal "STÖRUNG").
Ist das nicht das was Du brauchst oder erwartest? :unsure: Was ist eigentlich Dein Problem bzw. was willst Du erreichen, wie soll etwas funktionieren?

PS: Wenn der Quittiertaster E7.1 dauerhaft betätigt ist, dann wird M148.7 nach diesem Code nie aktiv sein, und die Hupe kriegt die Neustörungen nicht mit.

Harald
Danke für die Mühe!
Hab jetzt das nochmal mit einem Störbit das keine Auswirkung auf die Produktion hat getestet. Funktioniert eh alles wie es soll. (shame on me 😔) Dann werde ich mich mal auf die suche nach Doppelbelegungen mach.

LG Andi
 
Zurück
Oben