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

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

Thema: VB-Script Kopieren und Archivieren gleichzeitig (Skripte parallel / Batch Datei)

  1. #1
    Registriert seit
    01.09.2007
    Beiträge
    83
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    ich habe folgende "Herausforderung" zu meistern:

    Ausführen von einem "Archivierungs-Script" welches noch lauffähig bleibt
    wenn größere Datenmengen von einer SD-Karte auf einen USB-Stick kopiert werden.



    Hardware:
    CPU 1214C DC/DC/DC (6ES7 214-1AG31-0XB0) V3.0
    TP900 Comfort (6AV2 124-0JC01-0AX0) Version: 13.0.0.0

    Verwendete Software:
    TIA Portal V13
    STEP7 Basic V13
    WinCC Advanced V13

    Test mit realer Hardware. (Thema: Unterschied Windows/WinCE)

    Beschreibung:
    Ein VB-Script wird zyklisch ausgeführt.
    Der Aufruf des Scripts erfolgt durch das Ereignis "Werteänderung" einer PLC-Variablen.
    In der PLC wird z.B. aller 2Sek bzw. 30Sek. diese INT-Variable um 1 erhöht.
    In dem VB-Script werden diverse BOOL, DINT, REAL Variablen in eine zuvor erstellte Textdatei(CSV) gespeichert(angehängt). Täglich wird eine Datei erstellt. (Nach einem Zeitraum X werden Dateien wieder gelöscht)
    Über einen Kopier-Button am Panel soll dem Bediener/Servicemitarbeiter(etc.) die Möglichkeit
    gegeben werden Dateien von der SD-Karte auf einen USB-Stick zu übertragen.


    Aktueller Erkenntnisstand:
    Versuch 1:
    Aktuell gibt es einen Datenverlust beim Archivieren (VB-Script)wenn das Kopier-Script arbeitet.
    Laut einem Beitrag aus diesem Forum kann nur EIN VB-Script gleichzeitig ablaufen.
    -> Probleme beim Kopieren größerer Dateien
    -> Probleme beim Kopieren vieler Dateien in einem Schleifen-Konstrukt
    -> Datenverlust von mehreren Minuten


    Versuch 2:
    Ausführen einer Batchdatei die während der HmiRTm erstellt wird.
    Ausführen der Batchdatei über CMD Konsole.
    Vorteil: Kopieren mit Wildcard (z.B. *.*) sind möglich
    -> Kopieren und Archivieren gleichzeitig okay (scheinbar kein Datenverlust)
    -> ABER!! CMD Konsole läuft immer im Vordergrund und lässt sich auch nicht minimieren
    StartProgram "CMD", "/C " & "\Temp\copy1.bat", hmiShowMinimizedAndInactive, hmiNo
    hmiShowMinimizedAndInactive OHNE WIRKUNG
    (Ich habe keine Möglichkeit gefunden, dass zu unterbinden.)


    Versuch 3: (noch offen)
    Schreiben einer EXE-Datei für WinCE6.0 welches ohne sichtbaren Fenster (wenn möglich)
    das Kopieren durchführt. (Aufwand und Risiken noch nicht einschätzbar. Evtl. würde doch wieder
    die CMD genutzt werden.)


    Versuch 4: (noch offen)
    Schreiben eines eigenen "Task-Managers" in der HmiRTm welches den Aufruf zwischen Script 1 und 2
    regelt.
    Nachteil:
    Das Kopieren könnte noch viel länger dauern und würde wahrscheinlich nur gut arbeiten,
    wenn das Archivierungs-Script im "30Sekunden-Modus" ist.
    Der Verlust von Werten könnte auch nicht komplett ausgeschlossen werden.
    (Einzelne fehlende Werte wären wohl noch okay. Aber nicht z.B. 15min keine Werte.)

    ----------
    Die Dateigröße wird voraussichtlich zwischen 0,8 bis 2MB am Tag liegen.
    ----------

    Hat jemand für diese Thematik einen Lösungsansatz?

    Hat jemand SD-Karten mit einer Kapazität von mehr als 2GB erfolgreich verwendet die nicht von Siemens waren?
    Bisher habe ich bei meiner 16GB SDHC Card noch keine schlechten Erfahrungen gemacht.



    Nice to Have:
    - Eine Statusanzeige (Anzahl der Dateien und Fortschritt)

    Bekannte SPS-Forum Links ;o)
    http://www.sps-forum.de/faq/15348-pr...vb-script.html



    Danke schon mal für eure Hilfe.
    Zitieren Zitieren VB-Script Kopieren und Archivieren gleichzeitig (Skripte parallel / Batch Datei)  

  2. #2
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Geht das kopieren von SD nach USB nicht ohne VB Skript ?
    Mit der Systemfunktion Startprogram COPY aufrufen. // edit: Also ohne zuerst CMD starten.
    Ud du kannst "Display mode" als "minimized" spezifizieren. Dann passiert es in der Hintergrund.
    In diese weise Startest du kein weitere Skript und das Archivierungs-Skript wird nicht gesperrt.
    Siehe auch hier:
    https://msdn.microsoft.com/en-us/library/ms908150.aspx
    Geändert von JesperMP (13.04.2015 um 12:19 Uhr)
    Jesper M. Pedersen

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.399 Danke für 1.999 Beiträge

    Standard

    Hallo,

    zu Versuch 2:
    versuch das mal mit HMIShowMinimized an Stelle von deiner Option.

    zu Versuch 1:
    somit hast du ja die Defizite des Systems voll erkannt und analysiert.
    Aus der Nummer kommst du so ohne Weiteres nicht heraus - die Alternative wäre wirklich sowohl die Datenspeicherung wie auch das Umkopieren der Daten komplett aus der Visu heraus zu nehmen und hier in einer EXE mit mehreren Thread's oder sogar Task's zu arbeiten.
    Den Punkt, den du noch nicht genannt hast, ist die Sache mit der Daten-Konsistenz - das hast du in den Forums-Beiträgen der Vergangenheit bestimmt auch schon gefunden.

    Gruß
    Larry

  4. #4
    Registriert seit
    01.09.2007
    Beiträge
    83
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Meiner Meinung nach kann WinCE nur Dateien ausführen, die auch direkt im System abgelegt sind.
    Auf dem Panel gibt es unter „\Program Files“ eine Datei „Command Promt“(Verknüpfung)
    Diese Start z.B. das Programm „Pocket CMD v 6.00“
    Als Zieldatei ist „\Windows\cmd.exe“ angegeben.
    Eine Datei „copy.exe“ gibt es nicht. (Es gab ja auch mal eine xcopy.exe)
    TP900 sagt: „Fehler beim Starten des Programms: COPY Fehlercode 2.1“

    Mit dem Befehl Copy (aus der CMD.exe) kann ich z.B. dass machen.
    copy "\Storage Card SD\*.*" "\Storage Card USB\"
    copy "\Storage Card SD\2012-12*.*" "\Storage Card USB\"
    Mit “filecopy” nicht.



    Falls das Kopieren über eine Batch-Datei nicht geht, kann man das über „filecopy“ im VB-Script realisieren. Allerdings ohne Wildcards und das Script blockiert weitere Skripte, da es lange braucht.
    Im VB-Script setze ich z.B. durch ein Schleifen-Konstrukt die zu kopierenden Dateien zusammen, wenn ich mit dem Befehl „filecopy“ arbeite.
    ...
    Dateiname = i_year & "-" & b & i_month & "-" & a & i_day & ".csv"
    ...
    fs.filecopy ("\Storage Card SD\"& Dateiname), ("\Storage Card USB\" & Dateiname)

    -----

    @Larry Laffer
    VB-Script-Auszug:
    StartProgram "CMD", "/C " & "\Temp\copy1.bat", hmiShowMinimized, hmiNo
    > Wird trotzdem im Vordergrund ausgeführt.
    > Fenster schließt wieder wenn‘s fertig mit kopieren ist

    Wenn ich das nicht im Skript ausführe, sondern die Funktion unter Ereignis-Klick
    StarteProgramm nutze bleibt das CMD-Fenster auch im Vordergrund.


    Über Datenkonsistenz habe ich mir weniger Gedanken gemacht. In der PLC ist es ein
    „optimierter Bausteinzugriff“(Also nur noch über Namen.)
    Der Inhalt der CSV-Datei ist fürs kopieren nicht wichtig. Der Name der CSV-Datei schon.

  5. #5
    Registriert seit
    01.09.2007
    Beiträge
    83
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Demnächst untersuche ich eine Interrupt-Variante.
    Dabei wird das Kopier-Skript verlassen, wenn das Archivier-Skript sich meldet.
    Zurzeit nur über einen Schalter im HMI (interne Variable).

    If SmartTags ("TEST_Copy_Interrupt") = True Then Exit Sub
    [True verwenden nicht 1 !]

    Das Kopieren am Panel scheint zu stoppen. LED am USB-Stick hört mit Blinken auf.
    Schleifenzähler bleibt stehen (Anzeige am HMI)

    Kleiner Erfolg

    Werden Smartags während der Skriptlaufzeit aktualisiert bzw. handelt es sich um eine Art Zeiger?

  6. #6
    Registriert seit
    17.12.2010
    Beiträge
    222
    Danke
    21
    Erhielt 75 Danke für 53 Beiträge

    Standard

    Hi
    mal eine Grundsätzliche Frage von mir: Warum musst du das Archivieren über skript fahren`? Wenn du die Archivierungsfunktion nutzt kannst du beides parallel nutzen.
    Genau so etwas habe ich hier gerade gebaut, und das funktioniert gerade sehr gut.


    daschris

  7. #7
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Zitat Zitat von daschris Beitrag anzeigen
    mal eine Grundsätzliche Frage von mir: Warum musst du das Archivieren über skript fahren`? Wenn du die Archivierungsfunktion nutzt kannst du beides parallel nutzen.
    Genau so etwas habe ich hier gerade gebaut, und das funktioniert gerade sehr gut.
    Es ist ein selbsterstellte Archiv-Funktion mittels VBS. Wenn er den Systemfunktion CopyLog verwenden wurde musste er den Standardarchivierung verwenden.
    Jesper M. Pedersen

  8. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.289 Danke für 2.658 Beiträge

    Standard

    Wofür braucht Dein Kopier-Skript "mehrere" Minuten?
    Ist das TP900 so schlecht oder der USB-Stick so langsam?

    Alle 2 Sekunden Variablen in eine csv-Datei speichern wollen ist schon sportlich, hast Du denn in dieser kurzen Zeit sicher aktuelle Werte der Variablen im Panel? Wie realisierst Du das?

    Kannst Du nicht besser in der SPS Archiv-Datensätze zwischenpuffern und ab und zu en bloc ins Panel einlesen und abspeichern?
    Vielleicht brauchst Du ein mehrstufiges puffern-und-burst-Konzept?


    Das unsichtbare Ausführen von externen Programmen auf WinCE-Panels war imho auch in WinCCflex nicht möglich. Die Hilfe zu "StartProgram" formuliert etwas schwammig: "Die Runtime-Software läuft im Hintergrund weiter."
    Das Ausführen externer Programme hat noch einen weiteren Haken: man bekommt keine Info, ob das Programm gestartet wurde und ob/wann es beendet ist.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #9
    Registriert seit
    17.10.2007
    Beiträge
    263
    Danke
    5
    Erhielt 52 Danke für 48 Beiträge

    Standard

    Hallo,

    auf die Schnelle, da eigentlich keine Zeit:

    1. WinCC-Archive verwenden.
    2. Vor dem Kopieren per Systemfunktion eine Kopie der Archivdatei erstellen.
    3. Archivdateikopie einlesen und die Daten temporär in das gewünschte Format bringen
    4. Mit den temporären Daten die "Datenkopie"-Datei erstellen.

    Vorteile:
    + Die Archivierung läuft unabhängig vom Kopiervorgang.
    + Der Kopiervorgang kann mit Scripten projektiert werden.
    + Keine externen Programme/Funktionen notwendig.


    Gruß, Fred

  10. #10
    Registriert seit
    17.12.2010
    Beiträge
    222
    Danke
    21
    Erhielt 75 Danke für 53 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von faust Beitrag anzeigen
    Hallo,

    auf die Schnelle, da eigentlich keine Zeit:

    1. WinCC-Archive verwenden.
    2. Vor dem Kopieren per Systemfunktion eine Kopie der Archivdatei erstellen.
    3. Archivdateikopie einlesen und die Daten temporär in das gewünschte Format bringen
    4. Mit den temporären Daten die "Datenkopie"-Datei erstellen.

    Vorteile:
    + Die Archivierung läuft unabhängig vom Kopiervorgang.
    + Der Kopiervorgang kann mit Scripten projektiert werden.
    + Keine externen Programme/Funktionen notwendig.


    Gruß, Fred
    ja genau so mache ich das auch und würde ich dir auch empfehlen

Ähnliche Themen

  1. WinCC per Batch Datei beenden?
    Von Jennsy im Forum HMI
    Antworten: 30
    Letzter Beitrag: 27.06.2014, 11:39
  2. Batch Datei aus S7 Programm anstoßen
    Von olitheis im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 18.06.2012, 16:58
  3. Aus Excel heraus eine Batch Datei ausführen
    Von olitheis im Forum Hochsprachen - OPC
    Antworten: 13
    Letzter Beitrag: 04.07.2011, 12:58
  4. Antworten: 12
    Letzter Beitrag: 28.09.2010, 10:31
  5. Antworten: 3
    Letzter Beitrag: 01.07.2009, 08:25

Lesezeichen

Berechtigungen

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