Twincat 2 - Alarm Event Programmatisch aufrufen

StefanL

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich arbeite mich gerade in Twincat 2 ein und verzweifle an folgendem Problem:
Ich habe eine lange Liste an Messwerten, die jeweils einen oberen und unteren Warnwert, sowie oberen und unteren Alarmwert haben.

Das Programm läuft auf einem CX9020
Die Visualisierung läuft mit "Twin Cat Ctrl Hmi" auf einem Rechner, der per Ethernet angeschlossen ist.

Ich habe jetzt folgende Versuche unternommen:
  1. Die Werte in die Alarmkonfiguration eintragen und diese verwenden.
    Ist so weit super, allerdings muss ich dann für jeden Messwert 4 Alarme erstellen (Funktioniert, ich kann auch die Warn- und Alarmwerte als Variablen einfügen).
    Der Haken ist: Ich muss es für jeden Messwert erstellen, was vollkommen unübersichtlich wird (aktuell bin ich bei 65 zu überwachenden Variablen)
  2. Ich verwalte die Fehlerprüfung selbst und schreibe den Fehlerwert in eigens erstellte Variablen (Messwert, Warn- und Alarmwerte sowie Meldungsname).
    Klappt auch, hier ist allerdings der Haken, dass ich für "Message" keine Variable angeben kann, somit lösen Fehler dann einfach "generischen Fehler Gruppe xy" aus (oder habe ich mich ungeschickt angestellt).
  3. Ich versuche es über den Eventlogger mit "ADSLOGEVENT"
    Da ich es bisher nicht geschafft habe, mit dem Eventlogger auf die Alarmtabelle zuzugreifen: Geht das überhaupt, oder bin ich hier einfach auf dem Holzweg?
  4. Ich erstelle mir einen komplett eigenen Fehlerlogger
    Würde gehen, macht aber Arbeit und... der Mensch ist von Natur aus Faul: Ich bin ein sehr naturverbundener Mensch.

Viele Grüße und danke für die Antworten

Stefan
 
Zuletzt bearbeitet:
Wo willst du denn das Ganze nutzen? Die TragetVisu von TwinCAT (ist eigentlich der einzige Ort wo die Alarmconfig nutzbar ist)?


Zu 3) Es gibt keine Verbindung von Eventlogger zur Alarmtabelle

Allgemein: Alarmmeldungen und TC2 (beziehungsweise auch in TC3 bis jetzt) hat, wie soll ich es sagen noch "Potential nach oben".

Guga
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen zusammen,

da ich ja offensichtlich nicht der einzige mit dem Problem bin, hier mein Lösungsweg (der gut funktioniert).

Dies ist das Struct für meine Messwerte

Code:
TYPE stFMeas :
STRUCT
    Name : STRING;
    ValMeas : REAL;
     ValLL , ValLW , ValHW , ValHL , Errortype :INT;
    AlarmHigh : BOOL;
    IsAck , IsError :BOOL;
    LogToFile : BOOL;


END_STRUCT
END_TYPE

Dies ist das Struct für meine Fehler
Code:
TYPE stError :
STRUCT
    Tim : DT;
    Channel : INT;
    Typ , ChannelName : STRING;
    IsActive , IsAck : BOOL;
    Val , Lim : REAL;
END_STRUCT
END_TYPE


Wenn ein Fehler:
Grenzwert nicht verletzt? -> AlarmHigh auf False
Grenzwertverletzung prüfen:
-> Ist der Fehler schon auf "AlarmHigh"? Ja -> Keine Aktion, Fehler steht schon an
-> Nein -> Neuer Fehler:
Errortype auf 1 - 4 gesetzt (Low Alarm, Low Warning , High Warning, High Alarm). Hier kann man noch den Typ 5 als Info etc einfügen.
Außerdem wird AlarmHigh und IsError auf High gesetzt.

Für den Fehlertyp wird Tim ermittelt, der Kanalname zugewiesen (Messwerte sind in einem Array -> Kanalname ist Array Nummer), der Fehlertyp (Errortype 1 - 4), der Kanalname (Aliasname), IsActive auf High, IsAck (acknoledged) auf False, Val auf den Messwert, und Lim auf den Grenzwert gesetzt (damit man sieht, was gerade passiert ist). Außerdem werden die Daten in eine Datei geloggt.

Fehlerbehandlung:
-> Alle Fehler sind in einer Tabelle mit drei Knöpfen
1. bestätigen
2. alle bestätigen
3. Verlauf in externem Editor (ist denke ich klar)

bei bestätigen und alle bestätigen
- Messwert bekommt "iserror" auf False -> Hier wird resettet, damit sieht man beim Kanal in der Tabelle, ob der Fehler quittiert wurde, falls es nur ein kurzer Sprung über den Grenzwert war.
- Die Zeile im Fehlerarray wird gelöscht, alle Werte auf False / 0 egsetzt.

Das war eine ganz grobe Beschreibung, wie ich es gemacht habe. Ich hoffe, das hilft, wenn mal jemand die gleiche Frage hat.

Bisher funktioniert es gut, auch schnelle Fehlerfolgen kommen problemlos im LogFile an, ebenso im Logger an sich.

Viele Grüße

Stefan
 
Zurück
Oben