Skip to main content

Diagnose in der Applikation

Der PROFINET-Controller verfügt über einen internen Puffer für Diagnosedaten. Diese „Shadowing Database“ wird, für den Anwender transparent, im Hintergrund ständig durch von den Devices gesendete Alarme und beim Verbindungsaufbau durch azyklische Dienste aktualisiert. So wird mit minimaler Verzögerung der tatsächliche Diagnosestatus aller Geräte in die Host-Anwendung gespiegelt und kann dort jederzeit ausgewertet werden. Alternativ oder zusätzlich kann die Anwendung die einzelnen Alarme empfangen (CommFB.RALARM) oder die Diagnose Daten neu auslesen (CommFB.RDREC).

Die hier beschriebene API der Bibliotheken ProfinetCommon und CommFB ist für den CODESYS PROFINET-Stack sowie die CIFX-Lösung identisch. Einzelne Dienste werden aber von der CIFX-Lösung nicht in vollem Umfang implementiert (Siehe Datenblatt). Sie finden Codebeispiele in der Bibliotheksdokumentation nachfolgend genannter Funktionsbausteine.

Geräte-Funktionsbaustein

Für jedes PROFINET-Device im Gerätebaum wird ein Funktionsbaustein erzeugt, der grundlegende Informationen zum Verbindungs- oder Konfigurationsstatus des Gerätes zu Verfügung stellt. So zum Beispiel zum Anliegen von Diagnoseeinträgen oder zu einer abweichende Modulkonfiguration.

_pnio_img_device_fb.png

Analog dazu wird auch für den Controller eine Funktionsbaustein-Instanz erzeugt, die Informationen zum Betriebszustand des PROFINET-Controllers bereitstellt.

Für weitere Informationen siehe: IoDrvProfinet.ProfinetController und IoDrvProfinet.PNSlave

Provider- und Consumer-Status

Diese Statusinformation wird immer mit den E/A-Daten übertragen. Sie kann zum CODESYS E/A-Abbild des jeweiligen Moduls hinzugefügt werden.

Alarme

Von PROFINET-Devices gesendete Alarme können mit dem Funktionsbaustein CommFB.RALARM empfangen werden. Ein Codebeispiel zu Auswertung der Informationen finden Sie in der Bibliotheksdokumentation zu ProfinetCommon.DiagnosisDataReader.

Device- und Submodul-Status

Neben dem direktem Zugriff auf die Ausgänge des Geräte-Funktionsbausteins gibt es die Möglichkeit, mit dem Baustein ProfinetCommon.DeviceIterator über alle für einen Controller projektierten Geräte zu iterieren.

Analog dient der Baustein ProfinetCommon.SubmoduleIterator dem Iterieren der für ein PROFINET-Device konfigurierten Submodule und dem Auswerten des individuellen ProfinetCommon.SubmoduleState.

Diagnose-Puffer (Diagnosis Shadowing)

Mit dem Baustein ProfinetCommon.DiagnosisDataBuffer können die in der “Shadowing Database“ des Controllers lokal gepufferten Daten abgerufen werden.

Alternativ können mit der Funktion ProfinetCommon.GetSubmoduelDiagnosis() alle gepufferten Diagnoseeinträge für ein einzelnes Submodul abgefragt werden.

Fehlercodes und Diagnosetexte

Über die oben genannten Funktionen und Funktionsbausteine können die numerischen PROFINET-Fehlercodes (ErrorCode und ExtErrorCode) abgerufen werden. Wenn in einer Applikation die zugehörigen textuellen Beschreibungen erforderlich sind, beispielsweise zur Anzeige in einer Visualisierung, müssen diese textuellen Beschreibungen gesondert heruntergeladen werden. Für weitere Informationen siehe Befehl: PROFINET Diagnose-Ressourcen hinzufügen.