WinCC per Batch Datei beenden?

Jennsy

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

ich habe eine USV an meinem WinCC Server hängen, und möchte nun, bevor sich bei Stromausfall alles abschaltet, eine Batch-Datei ausführen, welche mir die RT und ggf. den WinCC Explorer geregelt schließen. (also nicht reset_wincc.vbs, bzw. kill pdlrt.exe).
Gibt es evtl. eine schönere Lösung wie man so etwas machen könnte?

Vielen Dank im Voraus,

mfG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
also die Suche ergab in 10 sek mit den Suchbegriffen: WinCC beenden
dieses Ergebnis:

http://www.automation.siemens.com/WW/forum/guests/PostShow.aspx?PostID=05801&language=de

Danke, aber das ist nicht wirklich was ich suche... (bin auf dieses Thema auch selbst schon gestoßen)
Jedoch möchte ich weder das kostenpflichtige Tool "shutdown WinCC" verwenden, noch bekomme ich von der Steuerung die Meldung, dass mein Server nur noch über die USV läuft...
Ich würde nur gerne wissen, ob es eine Befehl für "RT beenden" gibt, den ich in meine .bat-Datei schreiben kann?

mfG
 
Es gäbe da noch die Möglichkeit, die "Reset_WinCC.vbs" auszuführen.
Damit killst Du alles, was mit WinCC zu tun hat.
Zu finden ist die Datei unter dem Installationsverzeichnis ..SIEMENS\WinCC\bin\
Gruß Approx

Upps, gerade gelesen das kein Reset_WinCC.vbs gewünscht ist...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Approx,
danke für deinen Beitrag, und ja, wenn ich nichts anderes finde, werde ich wsl. eh dazu greifen müssen, denn damit ist dann WinCC-seitig wenigstens alles geschlossen.

Hallo holgermaik,
ich habe die Möglichkeit, bevor die USV den Server abdreht, eine batch-datei auszuführen, und mit dieser würde ich dann WinCC gerne schließen.

mfG
Jenny
 
Mit einer *.bat geht es nur auf die brutale Tour.
Wenn dein Server runter fahren will, wird an alle Anwendungen die Nachricht "WM_ENDSESSION" gesendet. Theoretisch müsste es möglich sein diese Nachricht abzufragen. (Habe ich allerdings in WinCC noch nie gemacht). Dann kannst du DB schliessen oder sonstiges. Da es eine Call Back Message ist wartet das System auf eine Antwort von allen Anwendungen bis es endgültig runter fährt.
Grüsse Holger
 
Ok, danke. Naja, in dem Fall, kann ich dann reset_wincc.vbs auch nutzen. ;) ...da es normalerweise nicht zu häufigen Stromausfällen in der Anlage kommt, dürfte das wohl kein Problem sein.

mfG
 
Hallo marlob,

danke für deinen Beitrag, habe ich auch schon gesehen, aber diese zyklischen Abfragen (ob dieses file/diese datei nun geöffnet ist, oder nicht), möchte ich weitestgehend vermeiden (vor allem, da ein shutdown, hier generell eine Ausnahme sein sollte)

mfG
 
Zuletzt bearbeitet:
Mit der Lösung kannst du WinCC aber sauber runter fahren. Du brauchst das Script ja nicht alle 500 ms aufrufen, abhängig davon wie lange deine USV durchhält, reicht es doch wenn du das Script alle x Minuten aufrufst.
 
"Reset_WinCC.vbs" geht recht brutal vor beim Beenden. Wenn du mit SQL Datenbanken arbeitest solltest du davon absehen.
Der Beitrag von marlob ist dann die bessere Alternative.
Grüsse Holger
 
"Reset_WinCC.vbs" geht recht brutal vor beim Beenden. Wenn du mit SQL Datenbanken arbeitest solltest du davon absehen.
Der Beitrag von marlob ist dann die bessere Alternative.
Grüsse Holger

sehe ich auch so, m.M. schiesst reset_wincc einfach alles ab, das ist auch nichts anderes, als den Rechner einfach runterzufahren.

Für "ShutDown WinCC" (2XV9450-1WC05) verlang Siemens aktuell 500€ Liste... die nehmen's auch wo immer sie's kriegen können...

Irgendwo gab's noch nen Beitrag, wo grob beschrieben war, was das macht, aber find ich im Moment nicht.

o.g. Siemensforumsbeitrag ist aber schon ne akzeptable Lösung mit der internen WinCC-Variable.

Gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
danke für die Antwort, ja das wäre schon in etwa was ich mir vorgestellt habe, nur leider habe ich keinen blassen Schimmer, wie ich über VB auf meine WinCC Variablen zugreifen kann? (habe jetzt eine VB Konsolenanwendung erstellt und dann mal angefangen herumzubasteln...doch wie genau das funktionieren sollte weiß ich nicht so recht...hat das vielleicht schon mal jemand ausprobiert?
Weil wenn ich mein Programm mal versuchsweise starte, stürzt einzig und allein das Konsolenfenster ab:|

Code:
 Module Module1

    Dim lblCheckWinCC As Object

    Private Property szMcp As Object

    Sub Main()
        szMcp = CreateObject("WinCC-Runtime-Project") 'hier gebe ich mein Projekt an (inkl. Pfad) 
        If (szMcp.RuntimeProject <> "") Then
            Call szMcp.SetValue("ShutDown", 1) 'Hier den WinCC VariabelnName angeben
            lblCheckWinCC.Caption = "WinCC ShutDown: gesendet"
        End If
    End Sub


End Module

mfG
 
Schau Dir mal das Freeware-Tool AutoIt an!

Damit kannst Du Deine Maus- und Keyboardaktionen beim manuellen Beenden von WinCC aufzeichnen und daraus eine selbständige .exe-Datei erstellen. Die kannst Du in der Batch mit start /wait aufrufen. Dann führt die .exe die zuvor aufgezeichneten Aktionen aus und die Batch wartet auf die Beendigung der .exe.

AutoIt sind einfache Script-Dateien, so dass Änderungen am Ablauf leicht vorzunehmen sind.
 
Zuletzt bearbeitet:
So, hier nun "meine Lösung" des Problems (ein bisschen was von all den Vorschlägen, die ich bekommen habe;)), falls sich jemand auch mal etwas Ähnliches zusammenbasteln möchte:
Im WinCC:

  • Binäre interne Variable 'ShutDown' erstellen (Startwert = 0)
  • Globales C-Script, welches bei Änderung der Variable 'ShutDown' getriggert wird
    Code:
    int gscAction( void )
    {
    // WINCC:TAGNAME_SECTION_START
    // syntax: #define TagNameInAction "DMTagName"
    // next TagID : 1
    // WINCC:TAGNAME_SECTION_END
    
    // WINCC:PICNAME_SECTION_START
    // syntax: #define PicNameInAction "PictureName"
    // next PicID : 1
    // WINCC:PICNAME_SECTION_END
    int i;
    if (GetTagBit("ShutDown"))
    {
    for (i=0; i<=25000;i++) //Schleife, während ein Bildfenster mit einem Warntext ausgegeben wird
    {
    SetVisible("Home.pdl","BF_Stromausfall",1);    //Return-Type: BOOL 
    }
    DeactivateRTProject ();    //Return-Type: BOOL 
    ExitWinCC ();    //Return-Type: BOOL 
    }
    return 0; 
    }


  • VB Konsolenanwendung im Visual Studio erstellen (WinCC_Close.exe) und Verweis (siehe Anhang) einfügen (geht nur am Rechner, auf dem WinCC installiert ist) und CCMCPAUTSERVERLib importieren
Code:
Imports CCMCPAUTSERVERLib

Module Module1

    Sub Main()

        Dim WinCC As CCMcpAut
        Dim Project As String
        Dim Value As Long
        WinCC = New CCMcpAut
        Project = WinCC.RuntimeProject
        Value = WinCC.SetValue("ShutDown", 1)
    End Sub

End Module



  • diese *.exe Datei dann aus einem *.bat-File heraus starten: (das *.bat-File habe ich in meiner USV-Konfig hinterlegt, und wird ausgeführt, bevor der Server heruntergefahren wird.)
Code:
@echo off
     start "" "C:\Dokumente\WinCC_Close.exe"


mfG Jenny
 

Anhänge

  • Verweis.png
    Verweis.png
    13,8 KB · Aufrufe: 24
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
kannst Du die exe hier noch irgendwie hochladen, nicht jeder hat ja Visual Studio.

Code:
for (i=0; i<=25000;i++) //Schleife, während ein Bildfenster mit einem Warntext ausgegeben wird
{
SetVisible("Home.pdl","BF_Stromausfall",1);    //Return-Type: BOOL 
}
finde ich nicht so glücklich, da in dieser Zeit keine anderen Scripte ausgeführt werden können und sich WinCC sozusagen aufhängt.

Gruß.
 
ja, natürlich, ist im Anhang.
naja, das sollte ja eigentlich auch Sinn und Zweck des Ganzen sein, dass keine Bedienung mehr möglich ist und der Bediener aber noch eine kurze Vorwarnung erhält, dass sich WinCC nun herunterfahren wird. (Skripts, werden ansonsten nur durch User Interaktionen ausgeführt, stellt deshalb auch kein Problem dar)

Aber wie könnte man es deiner Meinung nach besser lösen, dass dieses Fenster noch ~5 sek. bevor sich WinCC beendet angezeigt wird?

mfG
 

Anhänge

  • WinCC_Close.rar
    6,3 KB · Aufrufe: 13
Zurück
Oben