4.1 Liste der Funktionen CP 5613 und CP 5614
4.1.15 DP_fetch_alarm
Zweck
DP-Slaves können wichtige Ereignisse in Form von Diagnosedaten schicken. Die Diagnosedaten DPC1-fähiger Slaves können außerdem zusätzlich noch Alarme oder Statusmeldungen enthalten. Die Diagnosedaten werden beim DP-Master zwi-schengespeichert und können durch diese Funktion ausgelesen werden. Die Funktion kann sowohl für alarmfähige DPC1-Slaves als auch für Standart-DP-Slaves verwendet werden. Es werden, sofern vorhanden, immer die gesamten Diagnosedaten zurückgegeben.
Hinweis 1
Alle Diagnosetelegramme mit Alarmen werden vom CP 5613/CP 5614 zwischen-gespeichert und gehen also nicht verloren. Es wird aber jeweils nur das letzte Dia-gnosetelegramm mit Statusmeldung und das letzte sonstige DiaDia-gnosetelegramm ohne Alarm- oder Statusmeldung eines jeden Slave gehalten (sofern vorhanden).
Hinweis 2
Abhängig von Slave-Typ und Projektierung kann ein DP-Slave bis zu 32 Diagno-setelegramme mit Alarmdaten an den CP 5613/CP 5614 senden.
Das Anwenderprogramm muss jeden Alarm durch einen zugehörigen
DP_alarm_ack – Aufruf quittieren (Statusmeldungen aber nicht). Der Aufbau und die Bedeutung der Alarme oder Statusmeldung kann je nach Slave-Typ variieren.
Bitte beachten Sie hierzu die Dokumentation des Slave.
Hinweis 3
Die Funktion meldet die gespeicherten Ereignisse in folgender Priorität zurück:
1. zwischengespeicherte Diagnosedaten mit Alarmen (sofern vorhanden) 2. letzte Diagnosedaten mit/ohne Statusmeldung (sofern vorhanden).
Nach dem Auslesen werden die gespeicherten Daten gelöscht.
Wenn der Slave aus der Bearbeitungsphase herausfällt, werden alle zwischenge-speicherte Alarmdaten oder Statusdaten verworfen. In diesem Fall dürfen die ent-sprechenden Alarme nicht mehr durch DP_alarm_ack–Aufrufe quittiert werden.
Programmierschnittstelle DP-Base für CP 5613/CP 5614
102 C79000-G8900-C139-04
Hinweis 4
Wird im Rückgabeparameter „msg“ der Wert „DP_MSG_TYPE_FAIL“ eingetragen, liegt ein schwerwiegender Fehler beim Alarm-Handling vor. Das Anwenderpro-gramm muss in diesem Fall einen Restart des Slaves durchführen, wenn zusätz-lich das Strukturelement error_decode der Struktur DP_ERROR_T den Wert 0xFF hat (siehe Kapitel 4.1.10).
Hinweis 5
Das Anwenderprogramm kann sich über die Funktion DP_enable_event informie-ren lassen, ob neue Diagnosedaten bzw. Alarme/Statusmeldungen vorhanden sind, die durch DP_fetch_alarm abgeholt werden können. Der Aufruf von
DP_enable_event hat den Vorteil, dass nur Diagnosemeldungen in der Betriebs-phase des Slave gemeldet werden. Standart-Diagnosemeldungen in der Initialisie-rungsphase werden – außer bei bestimmten Fehlerfällen – aus Effizienzgründen nicht explizit gemeldet (siehe auch Beschreibung DP_enable_event).
Syntax
DPR_DWORD DP_fetch_alarm (
DPR_DWORD user_handle, // in
DPR_WORD slv_add, // in
DP_ALARM_EXT_T *alarm, // inout
DP_ERROR_T *error); // out
Parameter
Name Beschreibung
user_handle User-Handle, das beim Aufruf DP_open vergeben wurde.
slv_add Adresse des Slave (0-126)
Alarm Zeiger auf die Struktur DP_ALARM_EXT_S mit den ermit-telten Diagnosedaten (inklusive Alarmdaten oder Statusda-ten).
typedef struct DP_ALARM_EXT_S {
DPR_WORD msg_filter; // in DPR_WORD msg; // out DPR_WORD next_msg; // out DPR_WORD diag_count // out DPR_WORD reserved; // inout DPR_BYTE length_s; // out
DPR_BYTE data_s[DPR_SLAVE_DATA_SIZE];
// out } DP_ALARM_EXT_T;
Der Parameter „msg_filter“ gibt die Art der Daten an, die ausgelesen werden. In der vor-liegenden Version muss die Kennung
DP_MSG_FILTER_ALL eingetragen werden.
Der Parameter „msg“ enthält den Typ der er-mittelten Daten:
• DP_MSG_NONE Kein Eintrag vorhanden
• DP_MSG_ALARM_DIAG Diagnosedaten mit Alarm
• DP_MSG_STATUS_DIAG Diagnosedaten mit Sta-tusdaten
• DP_MSG_DIAG sonstige Diagnosedaten
• DP_MSG_FAIL Fehler beim Alarm-Handling; der Parameter error->errorcode enthält die detaillierte Fehlerursache (siehe unten DP_RET_CP_ ALARM_STATE_xx) Der Parameter „next_msg“ gibt an, ob noch weitere Diagnosemeldungen gespeichert sind.
• next_msg = 0: Es sind keine weiteren Dia-gnosemeldungen gespeichert.
• next_msg = 1: Es sind weitere Diagnose-meldungen gespeichert, die mit
DP_fetch_alarm-Aufrufen ausgelesen werden müssen.
Programmierschnittstelle DP-Base für CP 5613/CP 5614
104 C79000-G8900-C139-04
Der Parameter „diag_count“ gibt den Zähler-stand des Diagnose-Counters im Dual Port RAM zum Zeitpunkt des entsprechenden Ereignis-ses an. Der Wert ist nur relevant, wenn die Funktion Diagnosedaten zurück gibt.
Der Parameter „reserved“ ist für künftige Erweiterungen vorgesehen. Er muss mit dem Wert 0 vorbelegt werden.
Der Parameter „length_s“ enthält die Anzahl der im Array „data_s“ abgelegten Diagnoseda-ten.
error Adresse einer vom Anwenderprogramm bereitge-stellten Struktur vom Typ DP_ERROR_T. Die Struktur enthält im Fehlerfall Details zur Fehlerursache (siehe Kapitel 4.4).
Return-Wert
Name Beschreibung
DP_OK Erfolgreicher Abschluss der Funktion;
der Eintrag in DP_ALARM_EXT_T ist gültig.
DP_ERROR_EVENT_NET und error->error_code ==
DP_RET_CP_ADR_NOT_IN_DB
Fehler: der angegebene Slave existiert nicht in der Datenbasis; der Eintrag in DP_ALARM_EXT_T ist ungültig.
DP_ERROR_EVENT_NET und error->error_code ==
DP_RET_CP_
ALARM_STATE_OVERFLOW
Fehler: Die maximale Anzahl der konfigurierten Alarme wurde vom Slave überschritten.
DP_ERROR_EVENT_NET und error->error_code ==
DP_RET_CP_
ALARM_STATE_INCONSISTENT
Fehler: Der Slave hat mehr als ein Alarm des gleichen Typs gesendet
DP_ERROR_EVENT_NET und error->error_code ==
DP_RET_CP_
ALARM_STATE_WRONG_TYPE
Der Slave hat einen Alarm gesendet, dessen Alarmtyp nicht konfiguriert ist.
DP_ERROR_EVENT_NET und error->error_code ==
DP_RET_CP_
ALARM_STATE_PDU_LENGTH
Der Slave hat einen Alarm oder eine Statusmeldung gesendet, deren Länge größer ist als spezifiziert worden ist.
DP_ERROR_EVENT_NET und error->error_code ==
DP_RET_CP_
ALARM_STATE_PDU_FORMAT
Der Slave hat Diagnosedaten mit Formatfehlern gesendet, so dass eine korrekte Dekodierung des Alarms oder des Status nicht möglich ist.
andere Fehlerhafter Abschluss der Funktion;
der Eintrag in DP_ALARM_EXT_T ist ungültig.
Programmierschnittstelle DP-Base für CP 5613/CP 5614
106 C79000-G8900-C139-04