Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Erkennen wann Projekt geschlossen ist

  1. #1
    Registriert seit
    18.12.2014
    Beiträge
    21
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebe Community,

    Mein WinnCC-Projekt wird mit dem ODK Befehl "DMExitWinCCEx()" geschlossen. Danach würde ich das Projekt gerne .zip verpacken. Projekt schließen und packen geht auch beides einzeln sehr gut. Nur liefert mir der Befehl "DMExitWinCCEx()" direkt nach Ausführung ein „true“ zurück. Das Projekt benötigt aber Zeit bis es geschlossen ist. Wenn ich hier das packen starte sind noch einige Dateien in Gebrauch und es schlägt darum fehl.

    Meine Frage: Wie kann ich herausfinden ob das Projekt wirklich geschlossen ist?

    Vielen Dank für eure Hilfe!
    Zitieren Zitieren Erkennen wann Projekt geschlossen ist  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Von wo aus möchtest du das denn feststellen? Eigene Anwendung?

  3. #3
    Tuc_Tuc ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.12.2014
    Beiträge
    21
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ja in einer eigenen Anwendung. C oder C++

  4. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Ich habe mal über die CCMcpAutServer-Schnittstelle aus einer C-Anwendung heraus WinCC-Variablenwerte gelesen. Wenn das Projekt geschlossen ist kommt natürlich nichts zurück. Das ließe sich bestimmt dazu "missbrauchen".
    Evtl. gibt es aber auch eine bessere Schnittstelle um den Projektzustand abzufragen. Ich würde mal in die diversen CCM... Module von WinCC reinschauen.

  5. #5
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Oder über die Funktionen in der DMClient.dll, dort scheint sich direkt der Projektzustand auslesen zu lassen.

    Wie sich damit ein Projekt beenden lässt steht in diesem Siemens-FAQ:
    https://support.industry.siemens.com.../view/89257244

  6. #6
    Tuc_Tuc ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.12.2014
    Beiträge
    21
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Naja, ich schließe das Projekt ja schon mit "DMExitWinCCEx(DM_SDMODE_WINCC)". Wie gesagt es schließt sich auch. Nur benötigen WinCC Projekte ja etwas länger um alle Dateien freizugeben und mir wird sofort "true" zurückgegeben. Die Dateien sind aber noch besetzt und ich weiß nicht wie lange.

    Habe jetzt einen ODK Befehl gefunden der mir in einer Methode die Anzahl der geöffneten Projekte anzeigt. Leider schaffe ich es nicht mehr, das heute zu testen. Ich gebe am Montag nochmal Rückmeldung.

    Vielen Dank für die Hilfe!

  7. #7
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Mit der Funktion DMGetRuntimeProject lässt sich feststellen ob noch ein Projekt geöffnet ist.
    Ist kein Projekt geöffnet, so gibt die Funktion false zurück. Bei true lässt sich damit das aktuell geöffnete WinCC-Projekt herausfinden.

    Wenn du das Beispiel zum Herunterfahren von WinCC aus diesem FAQ:
    https://support.industry.siemens.com.../view/89257244

    verwendest, lässt es sich mit folgenden Zeilen eingefügt vor DMDisConnectA so erweitern, dass es so lange wartet bis das Projekt geschlossen ist.
    Ich habe noch eine Maximalzeit eingebaut die gewartet wird, da es ja gelegentlich vorkommt dass ein Projekt beim Schließen hängen bleibt.

    Code:
    DMGETRUNTIMEPROJECTFCTA DMGETRUNTIMEPROJECTFCT = NULL;
    DM_PROJECT_INFO dmInfo;
    
    DMGETRUNTIMEPROJECTFCT = (DMGETRUNTIMEPROJECTFCTA) GetProcAddress(hDMClient, "DMGetRuntimeProjectA");
    if(DMGETRUNTIMEPROJECTFCT) { 
        for(int maxWait = 0; maxWait < 180; maxWait++) {
            bRetVal = DMGETRUNTIMEPROJECTFCT(dmInfo.szProjectFile, _MAX_PATH, &Error);
            if (bRetVal) {
                if (maxWait == 0) {
                    t = time(NULL);
                    tl = localtime(&t);
                    printf("Waiting until WinCC-Project '%s' is closed.\n", dmInfo.szProjectFile);
                    fprintf(fp,"%s; Waiting until WinCC-Project '%s' is closed.\n",asctime(tl), dmInfo.szProjectFile);
                }
                printf(".");
                Sleep(1000); 
            } else {
                break;
            }
        }
        t = time(NULL);
        tl = localtime(&t);
        printf("WinCC-Project closed!\n");
        fprintf(fp,"%s; WinCC-Project closed!\n", asctime(tl));
    }

  8. #8
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Übrigens, von Siemens gibt es ein leider kostenpflichtiges Tool um ein WinCC-Projekt in Runtime zu sichern. Hat sich das schonmal jemand angesehen?
    Ich finde es etwas störend zur Sicherung ein Projekt beenden zu müssen, vor allem wenn es allem Anschein nach auch ohne Beendigung funktioniert.
    Ich benutze zur reinen Projektsicherung eigentlich immer den Projekt-Duplikator, damit ich die Runtime-Datenbank nicht mitsichere. Aber der sichert eben leider nicht wenn das Projekt in Runtime ist.

  9. #9
    Registriert seit
    22.11.2012
    Beiträge
    111
    Danke
    15
    Erhielt 19 Danke für 18 Beiträge

    Standard

    Wir haben einmal so etwas ähnliches gemacht, da haben wir extern von einer C++ Appl. einen Prozess im TaskManager abgefragt und gewartet bis der nicht mehr da war -> RT war beendet -> externe Appl. ausgeführt und RT wieder gestartet. Den genauen Namen des Prozesses weiß ich jetzt nicht mehr, kann dir aber gegebenenfalls nachsehen.


    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Übrigens, von Siemens gibt es ein leider kostenpflichtiges Tool um ein WinCC-Projekt in Runtime zu sichern. Hat sich das schonmal jemand angesehen?
    An diesem Tool wäre ich auch sehr interessiert. Hat jemand Erfahrung damit wie das gemacht wird?

    Grüße

  10. #10
    Tuc_Tuc ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.12.2014
    Beiträge
    21
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @mystone: Wäre bestimmt interessant. Würde empfehlen hierfür ein neues Thema aufzumachen.

    @Thomas weiterhin vielen Dank für deine Hilfe. Leider überprüfe ich mit dem Befehl "getRuntimeProjekt" nur ob ein Projekt in der Runtime geöffnet ist. Ich möchte ja aber wissen ob das Projekt beendet ist und WinCC bzw. der SQL Server keine Daten vom Projekt mehr benutzt.

    Ich werde jetzt versuchen über C Hausmittel den Zustand der Dateien zu überprüfen. Vielleicht komme ich ja so zum Erfolg.

    Für weitere Ideen bin ich sehr Dankbar!

    nur ob die Runtime geschlossen oder geöffnet ist

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 09.02.2014, 20:31
  2. Ab wann ist ein Not Aus Vorschrift?
    Von DerMarkus im Forum Maschinensicherheit - Normen und Richtlinien
    Antworten: 4
    Letzter Beitrag: 28.03.2012, 17:52
  3. Erkennen ob eine Variable verlinkt ist.
    Von Haubentaucher im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 01.02.2009, 18:17
  4. Erkennen ob S7-PDiag notwendig ist
    Von jabba im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 10.10.2007, 18:31
  5. Antworten: 4
    Letzter Beitrag: 25.04.2006, 20:28

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •