- Beiträge
- 5.435
- Reaktionspunkte
- 1.409
-> Hier kostenlos registrieren
Hallo zusammen
Ich habe hier eine Anlage mit wirkich vielen Eingängen welche zur Anlagenüberwachung eingesetzt werden. Aufgeschaltet auf ET200s. Viele der Eingänge sind NC angeschlossen will heissen der Alarm kommt wenn der Eingang auf FALSE geht. Auf FALSE geht er aber natürlich auch wenn man das ET200 von der Spannung trennt.
Dies habe ich überwacht und es bringt mir auch den Fehler. Die IO Fehlermeldung will ich zur Unterdrückung nutzen, leider gehen die offenbar mindestens ein Zyklus früher auf FALSE als die Ueberwachung auf 1.
96_3 ist der Störmelder für den IO Ausfall.
Den Ausfall habe ich wie im Forum schon gepostet gelöst.
So werden bei mir die Eingänge abgearbeitet.
Wie könnte ich das ansprechen der Eingänge so verzögern das die IO Ausfallmeldung vorher kommt?
Früher habe ich das immer mit einem TON für jede Meldung gemacht. Allerdings finde ich das bei der Menge an Eingängen nicht so prickelnd, da so n Haufen TIMER doch an der CPU ziehen.
Wie könnte man das besser angehen.
Byteweise ein Timer wäre auch noch eine Möglichkeit, der Übersicht halber möchte ich aber das IO Mapping nicht mit Bitmasken machen.
Ich habe hier eine Anlage mit wirkich vielen Eingängen welche zur Anlagenüberwachung eingesetzt werden. Aufgeschaltet auf ET200s. Viele der Eingänge sind NC angeschlossen will heissen der Alarm kommt wenn der Eingang auf FALSE geht. Auf FALSE geht er aber natürlich auch wenn man das ET200 von der Spannung trennt.
Dies habe ich überwacht und es bringt mir auch den Fehler. Die IO Fehlermeldung will ich zur Unterdrückung nutzen, leider gehen die offenbar mindestens ein Zyklus früher auf FALSE als die Ueberwachung auf 1.
96_3 ist der Störmelder für den IO Ausfall.
Den Ausfall habe ich wie im Forum schon gepostet gelöst.
Code:
CALL "RDSYSST"
REQ :=TRUE
SZL_ID :=W#16#694 //ID Status PN-IO
INDEX :=W#16#64 //Nr. PROFINET-IO System
RET_VAL :=MW350
BUSY :=M352.0
SZL_HEADER:="DB_DIAG_PN".SZL_HEADER
DR :="DB_DIAG_PN".DATA
end: NOP 0
U "DB_DIAG_PN".DATA.DEVICE_STATUS[3]
= "DB310"._DBX_97_2
U "DB_DIAG_PN".DATA.DEVICE_STATUS[4]
= "DB310"._DBX_96_3
U "DB_DIAG_PN".DATA.DEVICE_STATUS[5]
= "DB310"._DBX_95_1
Code:
U "DB310"._DBX_96_3
SPB nxt2
L PEB 130
T DB300.DBB 130
UN "IO_DB300"._DBX_130_0
= "IO_DB300"._DBX_130_0
UN "IO_DB300"._DBX_130_1
= "IO_DB300"._DBX_130_1
UN "IO_DB300"._DBX_130_2
= "IO_DB300"._DBX_130_2
UN "IO_DB300"._DBX_130_3
= "IO_DB300"._DBX_130_3
UN "IO_DB300"._DBX_130_4
= "IO_DB300"._DBX_130_4
U "IO_DB300"._DBX_130_5
= "IO_DB300"._DBX_130_5
U "IO_DB300"._DBX_130_6
= "IO_DB300"._DBX_130_6
UN "IO_DB300"._DBX_130_7
= "IO_DB300"._DBX_130_7
Früher habe ich das immer mit einem TON für jede Meldung gemacht. Allerdings finde ich das bei der Menge an Eingängen nicht so prickelnd, da so n Haufen TIMER doch an der CPU ziehen.
Wie könnte man das besser angehen.
Byteweise ein Timer wäre auch noch eine Möglichkeit, der Übersicht halber möchte ich aber das IO Mapping nicht mit Bitmasken machen.