Slave-Diagnose
DP-State
Je DP-Slave gibt es eine Status-Variable, die den aktuellen Zustand des DP-Slaves anzeigt. Dieser Status ist ein Echtzeit-Status, d.h. er passt immer zu den aktuellen Daten des DP-Slaves und kann mit einer PLC-Variable verknüpft werden (-> DpState des Slaves):
Diagnosedaten
Jeder DP-Slave kann während des Data_Exchange-Betriebs azyklisch DP-Diagnosedaten melden. Dabei setzt der Slave in der Antwort des zyklischen Data_Exchange-Telegramms das Diag_Flag, woraufhin der DP-Master automatisch die DP-Diagnosedaten beim Slave ausliest. Der Data-Exchange-Zyklus wird beim Beckhoff-DP-Master dabei nicht beeinflusst, da das DP-Diagnosetelegramm am Ende des zyklischen Data-Exchange-Zyklusses (vor dem Anfang des nächsten Zyklusses) gesendet wird. Wenn sich die beim Slave ausgelesenen DP-Diagnosedaten gegenüber dem letzten Zustand geändert haben, setzt der DP-Master die Variable ExtDiagFlag, die mit einer Variable des Steuerungsprogramms verknüpft werden kann.
Die aktuellen Diagnosedaten des DP-Slaves werden im System-Manager Karteireiter Diag des Slaves angezeigt. Außerdem können sie per ADS vom Steuerungsprogramm ausgelesen werden, woraufhin die Variable "ExtDiagFlag" wieder zurückgesetzt wird:
ADS-Read-Parameter |
Bedeutung |
---|---|
Net-ID |
Net-ID des Masters (s. Karteireiter ADS des Devices) |
Port |
200 |
IndexGroup |
0x00yyF181 (yy = Stationsadresse des Slaves) |
IndexOffset |
Offset innerhalb der Diagnosedaten |
Length |
Länge der auszulesenden Diagnosedaten |
Data |
Diagnosedaten |
Die Diagnosedaten beihalten die Slave-Statistiken (32 Bytes) und die vom Slave gesendeten DP-Diagnosedaten (bis zu 244 Bytes) und sind wie folgt aufgebaut:
Offset |
Bedeutung |
---|---|
Slave-Statistiken | |
0 |
Receive-Error-Counter (WORD): Anzahl der fehlerhaften Telegramme bei der Kommunikation mit diesem Slave |
2 |
Repeat-Counter[8] (WORD): Die Repeat-Counter zeigen an, wie oft wie viele Repeats gemacht werden mussten. Repeat-Counter[0] zeigt an, wie oft ein Telegramm zu diesem Slave einmal wiederholt werden mußte, Repeat-Counter[1], wie oft ein Telegramm zu diesem Slave zweimal wiederholt werden musste, etc. Die maximale Anzahl der Wiederholungen wird mit dem Parameter Max Retry-Limit (s. Dialog Bus-Parameter) eingestellt, der Wertebereich geht von 0 bis 8, daher gibt es hier 8 Repeat-Counter (für 1 bis 8 Wiederholungen) |
18 |
reserviert für Erweiterungen |
20 |
NoAnswer-Counter (DWORD): Anzahl der Telegramme bei der Kommunikation mit diesem Slave, auf die nicht geantwortet wurde. Wenn ein Slave das erste Mal nicht antwortet, wird entsprechend des MaxRetryLimit das Telegramm wiederholt, wenn er auch dann nicht geantwortet hat, wird beim nächsten Mal keine Wiederholung mehr durchgeführt. |
24-27 |
Last-DPV1-Error[4] (BYTE): Hier wird die letzte fehlerhafte DPV1-Antwort eingetragen (Byte 0: DPV1-Dienst (Bit 7 ist gesetzt und zeigt damit einen Fehler an), Byte 1: Error_Decode, Byte 2: Error_Code_1 (Error_Class/Error_Code), Byte 3: Error_Code_2), s. Beschreibung DPV1-Fehlercodes |
27-31 |
reserviert für Erweiterungen |
ab 32 |
DP-Diagnosedaten |
Es folgt eine Beschreibung der DP-Diagnosedaten
Offset |
Bedeutung |
---|---|
0x00.0 |
StationNonExistent: Slave beim letzten Telegramm nicht geantwortet |
0x00.1 |
StationNotReady: Slave verarbeitet noch das Set_Prm bzw. Chk_Cfg-Telegramm |
0x00.2 |
CfgFault: Slave meldet einen Konfigurationsfehler |
0x00.3 |
ExtDiag: Extended DiagData sind vorhanden und gültig |
0x00.4 |
NotSupported: Slave unterstützt ein Feature nicht, das mit Set_Prm oder Global_Control gefordert wurde |
0x00.5 |
InvalidSlaveResponse: Slave antwortet nicht DP-konform |
0x00.6 |
PrmFault: Slave meldet einen Parametrierfehler |
0x00.7 |
MasterLock: Slave ist im Datenaustausch mit einem anderen Master |
0x01.0 |
PrmReq: Slave muß neu parametriert und konfiguriert werden |
0x01.1 |
StatDiag: Slave meldet statische Diagnose bzw. Applikation des DPV1-Slave noch nicht bereit für den Datenaustausch |
0x01.2 |
PROFIBUS-DP-Slave |
0x01.3 |
WdOn: DP-Watchdog ist eingeschaltet |
0x01.4 |
FreezeMode: DP-Slave ist im Freeze-Mode |
0x01.5 |
SyncMode: DP-Slave ist im Sync-Mode |
0x01.6 |
reserviert |
0x01.7 |
Deactivated: DP-Slave wurde deaktiviert |
0x02.0 |
reserviert |
0x02.1 |
reserviert |
0x02.2 |
reserviert |
0x02.3 |
reserviert |
0x02.4 |
reserviert |
0x02.5 |
reserviert |
0x02.6 |
reserviert |
0x02.7 |
ExtDiagOverflow: zu viele Extended DiagData vorhanden |
0x03 |
MasterAdd: Stationsadresse des Masters, der mit dem Slave Datenaustausch macht |
0x04,0x05 |
IdentNumber |
ab 0x06 |
Extended DiagData |
Extended DiagData
Bei den Extended DiagData wird zwischen Kennungsdiagnose, Kanaldiagnose und Herstellerspezifischer Diagnose unterschieden, wobei das erste Byte jeweils den Typ der Diagnose und die Länge der dazugehörenden Daten anzeigt. In den Extended DiagData können auch auch mehrere Diagnosetypen nacheinander folgen.
Header-Byte
Bit |
Bedeutung |
---|---|
0-5 |
Länge der zugehörigen Diagnosedaten inklusive Header-Byte |
6-7 |
0 = Herstellerspezifische Diagnose (DPV1 wird nicht unterstützt) bzw. DPV1-Diagnose (DPV1 wird unterstützt (DPV1_Enable = 1) in zugehöriger GSD-Datei) |
Moduldiagnose | |
Kanaldiagnose | |
Revision-Number |
Herstellerspezifische Diagnose
Der Aufbau der Herstellerspezifischen Diagnose ist der Dokumentation des DP-Slaves zu entnehmen.