TIA WinCC Prof TIA V16 Störmeldeversand über externes Programm als Push

Tschigi

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

da wir auf unseren Anlagen eine eigene Visualisierung haben, hatten wir bisher relativ wenig mit WinCC zu tun.
Den Versand der Störmeldungen realisieren wir über einen eigenen Push-Dienst.
Nun sollen wir diesen Dienst auf einer "fremden" Visu (WinCC Prof RT) mit einbinden. Wir haben dafür eine kleine Konsolenanwendung geschrieben, über die man die Meldung versenden kann. Der Text der Meldung wird über einen Parameter beim Start der .exe übergeben.
Nun habe ich bisher folgendes gemacht:

1. Bei den Störmeldungen unter Ereignisse / Gekommen die C-Funktion "Error" vom Typ "void" mit dem Parameter "Text" als "char*" angegeben.
2. In der C-Funktion die Konsolenanwendung über ProgramExecute("...Pfad..."); aufgerufen.

Mein Problem ist jetzt, dass ich leider nicht weiß, wie ich den Meldetext über den Parameter an die Anwendung übergeben kann. Zum einen kann ich, wenn ich das richtig verstanden habe, nur Parameter vom Typ "char*" übergeben und zum anderen kenne ich leider die Syntax in C nicht so gut, als dass ich wüßte, wie ich denn den Inhalt des Parameters an die Anwendung übergeben kann.
Dr. Google konnte mir leider auch nicht helfen.
Ich hoffe, dass mir jemand von euch einen kleinen Schubser in die richtige Richtung geben kann.

Danke

gruß
Michael
 

Anhänge

  • C-Funktion.jpg
    C-Funktion.jpg
    19,7 KB · Aufrufe: 10
  • WinCC Meldung.jpg
    WinCC Meldung.jpg
    65,3 KB · Aufrufe: 10
2. In der C-Funktion die Konsolenanwendung über ProgramExecute("...Pfad..."); aufgerufen.
ProgramExecute() aus V7.x hat sich in StartProgram() geändert, auch die Syntax ist ein bisschen anders, da verrät dir aber die Hilfe mehr:
1675788977597.png
Entgegen dem was hier aber als Serviervorschlag für den Pfad steht, hab ich es nur mit der Schreibweise unten zum Laufen bekommen.


Mein Problem ist jetzt, dass ich leider nicht weiß, wie ich den Meldetext über den Parameter an die Anwendung übergeben kann. Zum einen kann ich, wenn ich das richtig verstanden habe, nur Parameter vom Typ "char*" übergeben und zum anderen kenne ich leider die Syntax in C nicht so gut, als dass ich wüßte, wie ich denn den Inhalt des Parameters an die Anwendung übergeben kann.
char* ist ein Zeiger auf ein Zeichen und der normale Weg mit Strings in C zu hantieren. Generell sind C-Strings auch mit vielen Fallstricken versehen, glücklicherweise reicht dir wahrscheinlich ein Aufruf ähnlich diesem (in meinem Fall ein kleines Batchscript das mir die Argumente als echo zurückgibt):

1675789367732.png


Um ein händisches Eintragen der Störtexte bei jedem Aufruf wirst du aber glaub ich nicht umhinkommen. Hier beachten, dass du die Hochkommas mit übergibst, sofern dein Text Leerzeichen hat, ansonsten bekommt das Programm 2 oder mehr Argumente:
1675789639948.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das geht auch anders, aber dazu benötigt man C-Kenntnisse und der WinCC Api.

Du verwendest anstelle von "Ereignis gekommen" das Ereignis "Status geändert". Dort bekommst du eine gesamte Struktur über den Meldungszustand und etlichen weiteren Informationen übermittelt. Der Meldetext ist aber noch nicht dabei. Dieser ließe sich aber anhand der Meldungsnummer mit MSRTGetMsgCSDataPlus entsprechend abfragen. Du musst in deiner Funktion also generell prüfen ob Meldung gekommen ist, und dann den entsprechenden Meldetext zur Meldungsnummer holen.
 
Moin zusammen,

ich bin heute erst dazu gekommen hier weiter zu machen. VIelen Dank für Hilfestellung.
@revve: Mit deinen Hinweisen war es kein Problem mehr das zum laufen zu bekommen.
Vielen Dank dafür
 
Zurück
Oben