TIA S71500 Systemmeldungen extern projektieren

I.Weix

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

derzeit sind wir an der Entwicklung einer Applikation für iPhone am werken, womit wir Anlagensteuerungen ermöglichen.
Innerhalb dieser App möchten wir gerne auftretende Systemmeldungen auf dem Gerät anzeigen lassen, ähnlich wie auf einem HMI.

Da ich nach langer Internetrecherche nichts gefunden habe, möchte ich mich an euch wenden und hoffe Ihr könnt mir diesbezüglich weiterhelfen.

Daher die Frage:

Wie kann ich auftretende Systemmeldungen, -alarme oder ähnliches in beispielsweise einen DB speichern, damit diese dann über einen externen Treiber ausgelesen werden können?


Mit der von uns entwickelten Software ist es möglich, DBs aus der SPS in sämtlichen Datentypen auszulesen und zu schreiben.

Hier einige Hintergrundinformationen zum Testaufbau:
- S71500 PLC (CPU 1511-1 PN)
- Programm geschrieben in C-Sharp (C#)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank MFreiberger!

Bin jetzt soweit, dass ich eigen kreierte Alarme und Meldungen anzeigen lassen kann, aber jedoch fehlt mir das Wissen die von der CPU erstellten Meldungen zu verknüpfen..
Wäre super wenn man mir kurz sagt wie die abgerufen werden können.

gibt es diesbezüglich ggf. einen Array? Denn es sind ja schon eine ganze Menge o_O Jeden Alarm einzeln mittels Get_Alarm auszulesen wäre ja ein rießen Aufwand -.-"
 
Moin I.Weix,

Get_Alarm wird nur einmal programmiert und dann zyklisch aufgerufen. Es werden alle kommen- und gehen- ereignisse ausgewertet (haben wir auch mal mit einem Schwall Meldungen getestet. Wurden alle aufgezeichnet). Man muss natürlich jedes Ereignis speichern (Ringpuffer o.ä.) z.B. mit der Auwertung des Bits 'DataReady'. Sonst gehen die Meldungen verloren. Das klappt bei uns bisher einwandfrei. Wir haben einen Ringpuffer mit 500 Texteinträgen. In diesem legen wir die Meldungen ab und ein Rechner greift über OPCUA auf diesen Ringpuffer zu, um die Meldungen zu archivieren, anzuzeigen etc.

VG

MFreiberger


so habe ich das programmiert:

Code:
// Get_Alarm initialisierung und auf "Lesemodus" stellen
// 


CASE BYTE_TO_INT("MSG_AUX_FLAG".GetAlarm.OperateMode) OF
    1:
        "MSG_AUX_FLAG".GetAlarm.OperateMode := 2;
    2:
        IF
            "MSG_AUX_FLAG".GetAlarm.Init OR
            "MSG_AUX_FLAG".GetAlarm.Error
        THEN
            "MSG_AUX_FLAG".GetAlarm.OperateMode := 3;
        END_IF;
    ELSE:
        "MSG_AUX_FLAG".GetAlarm.OperateMode := 1;
        FOR #i := 0 TO 31 DO
            "MSG_AUX_FLAG".GetAlarm.DispClassNr[#i] := INT_TO_UINT(0);
        END_FOR;
END_CASE;
    
// Get_Alarm aufrufen
// 
"Get_Alarm_DB"(OperateMode := "MSG_AUX_FLAG".GetAlarm.OperateMode,
               DataMode := 2,
               DispClassNr := "MSG_AUX_FLAG".GetAlarm.DispClassNr,
               Lcid := 0,
               DataReady => "MSG_AUX_FLAG".GetAlarm.DataReady,
               Busy => "MSG_AUX_FLAG".GetAlarm.Busy,
               Error => "MSG_AUX_FLAG".GetAlarm.Error,
               Init => "MSG_AUX_FLAG".GetAlarm.Init,
               Status => "MSG_AUX_FLAG".GetAlarm.Status,
               Data := "MSG_AlarmData".MSG_BOX);




// Meldung im Ringpuffer eintragen
// 
"MSG_AUX_FLAG".GetAlarm.DataReady_EP := "MSG_AUX_FLAG".GetAlarm.DataReady AND NOT "MSG_AUX_FLAG".GetAlarm.DataReady_EP_AUX;
"MSG_AUX_FLAG".GetAlarm.DataReady_EP_AUX := "MSG_AUX_FLAG".GetAlarm.DataReady;




IF "MSG_AUX_FLAG".GetAlarm.DataReady_EP THEN


    
    
    Strg_TO_Chars(Strg:=WSTRING_TO_STRING("MSG_AlarmData".MSG_BOX.AlarmText[0]),
                  pChars:=0,
                  Cnt=>#Tui_cnt_char,
                  Chars:=#Tac_AlarmText);


    IF #Tac_AlarmText[2] = ':'  // Zeichen prüfen, um nur eigene Anwendermeldungen in den Ringpuffer zu schreiben
        AND #Tac_AlarmText[5] = ':'  // Zeichen prüfen, um nur eigene Anwendermeldungen in den Ringpuffer zu schreiben
        AND #Tac_AlarmText[8] = '.' THEN  // Zeichen prüfen, um nur eigene Anwendermeldungen in den Ringpuffer zu schreiben
        "MSG_AlarmData".LFD_NR := "MSG_AlarmData".LFD_NR + 1;
        "MSG_AlarmData".LFD_NR := "MSG_AlarmData".LFD_NR MOD (2147483647);
        
        "MSG_AlarmData".POS_PUFFER := "MSG_AlarmData".POS_PUFFER + 1;
        "MSG_AlarmData".POS_PUFFER := "MSG_AlarmData".POS_PUFFER MOD ("MSG_BUFFER_CNT" + 1);
        
        "MSG_AlarmData".MELDUNG["MSG_AlarmData".POS_PUFFER].STATUS := "MSG_AlarmData".MSG_BOX.State;
        "MSG_AlarmData".MELDUNG["MSG_AlarmData".POS_PUFFER].LFD_NR := "MSG_AlarmData".LFD_NR;
        "MSG_AlarmData".MELDUNG["MSG_AlarmData".POS_PUFFER].TEXT := "MSG_AlarmData".MSG_BOX.AlarmText[0];
        
    END_IF;
    
END_IF;
 
Zuletzt bearbeitet:
Bei mir ist der Get_Alarm ausgegraut, nur der Get_AlarmState ist verfügbar.. woran liegt das?

Unbenannt.jpg

Edit:

Habe den Fehler gefunden. Firmware der SPS muss upgedated werden.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin I.Weix,

das ist ja blöd. Welche TIA-Version hast Du? Wobei, wenn es grundsätzlich angezeigt wird...
Vielleicht liegt es an der CPU 1511? Ich habe eine 1515er. Wobei das laut Hilfe ja auch bei einer 1200er gehen soll. Dann würde ich davon ausgehen, das keine 1500er ein Problem darstellt.
Ich konnte jedenfalls auf die schnelle keine Einschränkungen für die Verwendung finden.
'Ack_Alarm' ist bei Dir ja auch ausgegraut. Das hat bestimmt die gleiche Ursache. Vielleicht liegt das auch an irgend welchen Hardwareeinstellungen der CPU? Leider ist die SIEMENS-Hilfe hier nicht sehr hilfreich oder ich habe den Hinweis einfach überlesen. Ich gucke mal weiter.

VG

MFreiberger


Aus einem weiteren Dokument von SIEMENS:

Für die Verwendung der Anweisung "Get_Alarm" gelten folgendeVoraussetzungen: TIA Portal V14 S7-1500 PLC ab Firmware V2.0

https://cache.industry.siemens.com/..._929902/v3/109748168_Get_Alarm_DOC_V10_de.pdf
 
Zuletzt bearbeitet:
Also nun habe ich folgendes Problem:

Meine SPS läuft auf V1.8 und kann laut Siemens auch nicht weiter aufgerüstet werden.
Der Baustein Get_Alarm benötigt aber Firmwareversion V2.0 oder höher.. daher ist dieser Ausgegraut

Verwendet wird TIA V15.0
 
Moin I.Weix,

das ist doof. Eine andere Möglichkeit, Meldungen in einen DB einzutragen kenne ich nicht.
Ich befürchte, dass da nur eine aktuelle CPU hilft...

VG

MFreiberger
 
So ein Mist.. dann muss ich das Problem irgendwie anderweitig lösen.

Trotzdem vielen Dank!

naja, ne 1511 kostet ja nicht die Welt. Wenn Du da 2 Tage nach ner "anderweitigen Lösung" suchst, bist Du aber schnell drüber...

Wobei ich generell "selbstgeschriebene Visus" kritisch sehe, sowie "Anlagensteuerung über iPhone" auch. Aber das ist nen anderes Thema...
Und ob man Systemmeldungen bzw. Programmalarm unbedingt braucht ist auch nen eigenes Thema...

Gruß.
 
Zurück
Oben