Skip to main content

Visualisierung mit Alarmtabelle erstellen

In der folgenden Anleitung wird beispielhaft das Visualisierungselement Alarmtabelle konfiguriert.

Für weitere Informationen siehe: Alarmgruppe und Alarme definieren

Konfiguration

Voraussetzung: In Ihrem Projekt ist die Alarmgruppen AG_PartsShortage und die Alarmklasse AC_PartsShortage definiert.

  1. Fügen Sie unter Ihrer Applikation eine Visualisierung hinzu.

    1. Selektieren Sie die Applikation und wählen Sie im Kontextmenü den Befehl Objekt hinzufügenVisualisierung.

    2. Geben Sie als Name VIS_PartsShortage ein.

  2. Öffnen Sie den Visualisierungseditor.

  3. Ziehen Sie aus der Kategorie Alarmmanager das Element Alarmtabelle mit der Maus in den Visualisierungseditor und öffnen Sie die Eigenschaften-Ansicht des Elements.

  4. Konfigurieren Sie die Alarmtabelle wie folgt.

    1. Geben Sie in der Eigenschaft Elementname in der Spalte Wert den Namen AT_PartsShortage ein.

    2. Konfigurieren der Visualisierungselementeigenschaft Alarmgruppen:

      1. Klicken Sie in der Eigenschaft AlarmkonfigurationAlarmgruppen in die zugehörige Werte-Zelle.

        Der Dialog Auswahl Alarmgruppe öffnet sich.

      2. Deaktivieren Sie die Option Alle und selektieren Sie die Alarmgruppe AG_PartsShortage.

      3. Fügen Sie die Gruppe mit einem Klick auf die Schaltfläche _visu_img_add_selected_alarm_group.png zur Liste Ausgewählte Alarmgruppe hinzu.

      4. Bestätigen Sie die Konfiguration mit OK.

    3. Konfigurieren der Visualisierungselementeigenschaft Alarmklassen:

      1. Definieren Sie in AlarmkonfigurationAlarmklassen, welche Alarmklassen visualisiert werden sollen. Klicken Sie dazu in das Wertefeld.

        Klicken Sie in der Eigenschaft AlarmkonfigurationAlarmklassen in die zugehörige Werte-Zelle.

        Der Dialog Auswahl Alarmklasse öffnet sich.

      2. Deaktivieren Sie die Option Alle und selektieren Sie die Alarmklasse AC_PartsShortage.

      3. Fügen Sie die Alarmklasse mit einem Klick auf die Schaltfläche _visu_img_add_selected_alarm_group.png zu den ausgewählten Alarmklassen hinzu.

      4. Bestätigen Sie die Konfiguration mit OK.

    4. Konfigurieren einer Spalte:

      1. Klicken Sie in der Eigenschaft Spalten auf die Schaltfläche SpaltenNeu erstellen.

        Die Spalte [2] ist verfügbar. Im Visualisierungseditor erscheint die neue Spalte mit dem Namen Bitmap.

      2. Wählen Sie für die Spalte [2] in der Eigenschaft Datentyp den Wert Zustand aus.

        In der Tabelle erhält die Spalte die neue Standardüberschrift State.

      3. Geben Sie in der Eigenschaft Spaltenüberschrtift den Namen Parts Shortage State ein.

        Die Spalte [2] ist umbenannt.

    5. Konfigurieren der Visualisierungselementeigenschaft Selektion:

      1. Klicken Sie in der Eigenschaft Selektionsfarbe und wählen Sie unter Wert die Farbe Grün.

        Zur Laufzeit können die Tabellenzellen vom Vsualisierungsbenutzer selektiert werden. Diese werden dann grün.

    6. Konfigurieren der Visualisierungselementeigenschaft Steuervariablen:

      1. Deklarieren Sie in Ihrem Applikationscode die Steuervariable bQuitAlarm.

      2. Geben Sie in der Eigenschaft Bestätigen der Selektierten in der Wertezelle die Variable PLC_PRG.bQuitAlarm an.

    Konfigurierte Eigenschaften

    _visu_img_alarm_table_porperties.png

Alarmvisualisierung mit Steuerelementen ergänzen

Der Visualisierungsbenutzer benötigt Steuerelemente, um die Alarmvisualisierung zu bedienen. Bei der Programmierung können Sie sich vom Alarmtabellen-Assistenten unterstützten lassen. Der Befehl, der den Assistenten aufruft, ist nur verfügbar, wenn Sie in der Visualisierung eine Alarmtabelle selektiert haben.

  1. Selektieren Sie im Visualisieurngseditor das Alarmtabellenelement.

  2. Wählen Sie im Kontextmenü den Befehl Elemente zur Alarmquittierung hinzufügen aus.

    Es öffnet sich der Dialog Assistent Alarmtabelle.

  3. Übernehmen Sie alle Vorgaben des Dialogs mit OK.

    Die Schaltflächen Acknowlege selectedz, Acknowledge all visible, Historx und Freeze scrolling position werden eingefügt. Die Elemente haben eine vollständige Eingabekonfiguration.

    _visu_img_alarm_table_controls.png

Alarminformationen im Programmcode auswerten

Das Visualisierungselement Alarmtabelle kann zur Laufzeit Informationen aus der Visualisierung in eine Applikationsvariable schreiben. Diese Variable kann programmatisch ausgewertet werden.

Die Informationen zu einem Alarm (beispielsweise Alarmgruppe, Alarm-ID, Zeitstempel von Statusübergängen, Latch-Variablen, Meldungstexte) erhalten Sie aus der Struktur AlarmSelectionInfo (Bibliothek VisuElemsAlarm).

Geben Sie dazu in der Eigenschaft Selektion - Variable für Information zum selektierten Alarm der Alarmtabelle eine Variable vom Typ AlarmSelectionInfo ein. Dann verwenden Sie die Variable in der Applikation wie folgt:

  1. Fügen Sie eine neue POU PRG_VISU hinzu.

  2. Fügen Sie die POU PRG_VISU zur VISU_TASK hinzu.

  3. Öffnen Sie die POU PRG_VISU im Editor und fügen Sie die nachfolgenden Programmzeilen ein.

    Deklaration

    PROGRAM PRG_VISU
    VAR
        alarmSelectionInfoDefault : AlarmSelectionInfoDefault;
        sLastTimestampDate : STRING;
        sLastTimestampTime : STRING;
        sLatch1 : STRING;
        sLatch2 : STRING;
        wsMessage1 : WSTRING := "No selection";
        wsMessage2 : WSTRING := "No selection";
        pInt : POINTER TO INT;
        xInit: BOOL := TRUE;
        pString : POINTER TO STRING;
        cbsFormattedValueLatch1 : CharBufferString(uiBufferSize := 0, stringType := TYPE_CLASS.TYPE_STRING);
        cbsFormattedValueLatch2 : CharBufferString(uiBufferSize := 0, stringType := TYPE_CLASS.TYPE_STRING);
        abyLocalBufferLatch1 : ARRAY[0..LENGTH] OF BYTE;
        abyLocalBufferLatch2 : ARRAY[0..LENGTH] OF BYTE;
        iPrevSelectionChangedCounter: INT;
        END_VAR
    VAR CONSTANT
        // The length of the string of the local CharBufferString instance
        LENGTH : INT := 80 * 2;
    END_VAR                        

    Implementierung

    IF xInit THEN
        cbsFormattedValueLatch1.Init(pBuffer:=ADR(abyLocalBufferLatch1), uiBufferSize:=INT_TO_UINT(LENGTH + 1), stringType:=TYPE_CLASS.TYPE_STRING);
        cbsFormattedValueLatch2.Init(pBuffer:=ADR(abyLocalBufferLatch2), uiBufferSize:=INT_TO_UINT(LENGTH + 1), stringType:=TYPE_CLASS.TYPE_STRING);
        xInit := FALSE;
    END_IF
    IF alarmSelectionInfoDefault.AlarmSelectionInfo.iSelectionChangedCounter <> iPrevSelectionChangedCounter THEN
        // Format Date/Time as string
        sLastTimestampDate := AlarmManager.FormatDate(alarmSelectionInfoDefault.AlarmSelectionInfo.timeStampLast, AlarmManager.AlarmGlobals.g_sDateFormat);
        sLastTimestampTime := AlarmManager.FormatTime(alarmSelectionInfoDefault.AlarmSelectionInfo.timeStampLast, AlarmManager.AlarmGlobals.g_sTimeFormat);
        // Retrieve latch variables as string
        cbsFormattedValueLatch1.FromString('');
        pString := FormatTypedValue(alarmSelectionInfoDefault.AlarmSelectionInfo.paLatchVariables^[0], cbsFormattedValueLatch1);
        STU.StrCpyA(ADR(sLatch1), SIZEOF(sLatch1), pString);
        cbsFormattedValueLatch2.FromString('');
        pString := FormatTypedValue(alarmSelectionInfoDefault.AlarmSelectionInfo.paLatchVariables^[1], cbsFormattedValueLatch2);
        STU.StrCpyA(ADR(sLatch2), SIZEOF(sLatch2), pString);
        // Retrieve messages
        STU.StrCpyW(ADR(wsMessage1), SIZEOF(wsMessage1), alarmSelectionInfoDefault.AlarmSelectionInfo.papwsAlarmMessages^[0]);
        STU.StrCpyW(ADR(wsMessage2), SIZEOF(wsMessage2), alarmSelectionInfoDefault.AlarmSelectionInfo.papwsAlarmMessages^[1]);
        iPrevSelectionChangedCounter := alarmSelectionInfoDefault.AlarmSelectionInfo.iSelectionChangedCounter;
    END_IF