MSB
Level-3
- Beiträge
- 7.185
- Reaktionspunkte
- 1.647
-> Hier kostenlos registrieren
Frage zu FB125:
Ist es mit dem FB125 möglich die Diagnosedaten des Slaves auch bei einem gehenden Ereignis (sicher) auszuwerten.
Hier mal ein Codeschnippsel:
Mein Slave liefert also 68 Byte Diagnosedaten, diese verschiebe ich mit dem SFC20 in
einem DB, in welchem die Strucktur des Diagnosebereichs abgebildet ist.
Wenn im Slave nun ein Fehler auftritt, werden die Diagnosedaten auch zuverlässig geschrieben.
Wenn der Fehler im Slave wieder behoben ist, werden die neuen "ungestörten" Diag-Daten
nur manchmal übernommen.
Was gibt es sonst noch für Möglichkeiten, oder denke ich einfach zu kompliziert?
Mfg
Manuel
Ist es mit dem FB125 möglich die Diagnosedaten des Slaves auch bei einem gehenden Ereignis (sicher) auszuwerten.
Hier mal ein Codeschnippsel:
Code:
CALL "DETAIL_DP_DIAG" , DB125
DP_MASTERSYSTEM :=1
EXTERNAL_DP_INTERFACE:=FALSE
MANUAL_MODE :=FALSE
SINGLE_STEP_SLAVE :=FALSE
SINGLE_STEP_ERROR :=FALSE
RESET :=FALSE
SINGLE_DIAG :=FALSE
SINGLE_DIAG_ADR :=B#16#0
ALL_DP_SLAVES_OK :=
SUM_SLAVES_DIAG :=
SLAVE_ADR :=#Gestoerter_Slave
SLAVE_STATE :=
SLAVE_IDENT_NO :=
ERROR_NO :=
ERROR_TYPE :=
MODULE_NO :=
MODULE_STATE :=
CHANNEL_NO :=
CHANNEL_TYPE :=
CHANNEL_ERROR_CODE :=
CHANNEL_ERROR_INFO_1 :=
CHANNEL_ERROR_INFO_2 :=
DIAG_COUNTER :=
DIAG_OVERFLOW :=
BUSY :=M100.0
L #Gestoerter_Slave
L 11
==I
SPBN DIAG
CALL "BLKMOV"
SRCBLK :=P#DB125.DBX932.0 BYTE 68
RET_VAL:=#RETVAL
DSTBLK :=P#DB126.DBX0.0 BYTE 68
DIAG: NOP 0
Mein Slave liefert also 68 Byte Diagnosedaten, diese verschiebe ich mit dem SFC20 in
einem DB, in welchem die Strucktur des Diagnosebereichs abgebildet ist.
Wenn im Slave nun ein Fehler auftritt, werden die Diagnosedaten auch zuverlässig geschrieben.
Wenn der Fehler im Slave wieder behoben ist, werden die neuen "ungestörten" Diag-Daten
nur manchmal übernommen.
Was gibt es sonst noch für Möglichkeiten, oder denke ich einfach zu kompliziert?
Mfg
Manuel