Hättest du eventuell ein paar Codeschnipsel, das würde mir die Sache sicherlich erleichtern. Nicht falsch verstehn, ich will kein fertiges Programm, nur eine Starthilfe, denn ich will ja die ganze Sache auch lernen.
Hallo bastler,
ich habe mal aus meinen Projekten ein Beispiel zusammenkopiert und auf 64 Meldungen gekürzt. Wenn Du Glück hast, dann habe
ich nichts vergessen und das Programm ist fast fertig. Du mußt aber noch Deine Meldungen zufügen.
Zu lernen gibt es trotzdem noch genug. Vor allem, wenn Du die AWL-Netzwerke verstehen willst. Dazu sind aber überreichlich
Kommentare von mir vorhanden. Am besten kann man lernen, wenn man dem Programmablauf zuschaut, z.B. mit PLCSIM.
Das Programmbeispiel tut im wesentlichen das, was ich im Beitrag #15 beschrieben habe inklusive Lampentest und Hupetest.
Aber auch noch etwas mehr.
Zum Beispiel gibt es einen Meldefilter, mit dem man Meldungen deaktivieren kann. Nützlich, wenn man Meldungen temporär
unterdrücken will oder z.B. Reserve-Abzweige hat, wo die Sicherung ausgeschaltet ist und man diesen absichtlichen
Sicherungsfall nicht als Störung gemeldet haben will.
Das Programm ist außerdem so geschrieben, daß man auch mehrere Panele anschließen kann und trotzdem nicht auf jedem Panel
die Meldungen quittieren muß. Wird auf irgendeinem Panel eine Meldung quittiert, dann wird das den anderen Panels mitgeteilt
und die Meldungen verschwinden auf allen Panels. (WinCCflex-Stichwort: "Quittiervariable Lesen" und "Quittiervariable Schreiben")
Man kann Meldungen auch im SPS-Programm quittieren (die entsprechende "Quittiervariable Lesen" auf 1 setzen).
Die Störungshupe kommt nur bei neuen Störungen und wird mit einem extra Quittiertaster abgestellt. Der Quittiertaster ist
auch als Schaltfläche auf dem Panel vorgesehen, die das Bit DB32.DBX0.0 setzt. Das Bit wird im Programm zurückgesetzt.
Die maximale Hupzeit kann von 0 (nicht hupen), 1s bis 998s hupen und 999=unbegrenzt hupen eingestellt werden.
Wenn das Quittieren einer Meldung am Panel implizit die Hupe abstellen soll (ohne den extra-Taster), dann müßte man noch
eine pos. Flankenerkennung auf alle Bits der "Quittiervariablen Lesen" einbauen (Array OPQuit DB30.DBX16.0 bis DBX23.7)
und in den Merker M1.0 "M_Quittiert" verknüpfen.
Die Störungslampe blinkt sobald eine neue Störung kommt, solange, bis mit dem Hupe-Quittiertaster quittiert wird. Auch wenn
alle Störungen wieder gegangen sind. So sieht man von weitem, daß es eine Störung gab, auch wenn das schon lange her ist.
Sind nach dem Hupe-Quittieren noch Störungen vorhanden, dann leuchtet die Störungslampe mit Dauerlicht.
Die Störungsmerker sind die Merker M100.0 bis M107.7. An diese Merker müssen die eigenen Störungen angebunden werden.
Dazu habe ich zwei Beispiele dabei:
- einfaches Zuweisen von garantiert langen Störungen (z.B. Motorschutzschalter, Sicherungsfall)
- gespeicherte Störmeldung für möglicherweise nur ganz kurze Störungen
Solange eine gespeicherte Störmeldung nicht am Panel quittiert ist, löst Gehen und wiederKommen der Störung die Hupe
nicht erneut aus. Welche Störung wie angebunden wird, muß man für jede Störung sinnvoll entscheiden.
Das Programm nutzt zum Blinken die Taktmerker der CPU. Es geht davon aus, daß in der HW-Konfig der CPU die Taktmerker
auf MB3 eingestellt sind.
Wie die Meldungen in WinCC flexible anzulegen sind und wie das Meldefenster und 2 Meldeanzeigen einzustellen sind ist in
den Programmkommentaren beschrieben.
Ich würde noch eine Funktion "Alle Meldungen löschen" einbauen, z.B. über eine Schaltfläche am Panel, besser auf eine
Hardware-Taste oder Tastenkombination legen. Für den Fall, daß durch Tippfehler im Programm
oder Defekt des Panels
bzw. Kommunikationsstörungen ein Störmerker ewig gesetzt bleibt. Dazu alle Störungsmerker M100.0 bis M107.7 rücksetzen
(auf 0 schreiben).
Harald