• Keine Ergebnisse gefunden

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