TIA WinCC Comfort. Screenshot afnehmen und auf Flash karte speichern, geht das ?

Beiträge
9.549
Reaktionspunkte
2.423
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin am umändern von ein WinCC Advanced PC RT auf WinCC Comfort.
Jetzt vermisse ich ein Funktion womit der Anwender das Bildschirmeinhalt als .gif, .jpg oder .png auf das Flashkarte speichern kann.
Auf der PC RT kann ich ein externe Program aufrufen um das Bild zu nehmen.
Auf das Comfort Panel kann ich keine externe Programme aufrufen ausser die von Siemens schon installierte.
Geht es irgendwie ?
 
Es gibt die Funktion "Drucke Bildschirm" ("PrintScreen"), die man auf einen Button legen kann.

Als Drucker wählt man einmalig zuvor in den Panel-Einstellungen den pdf-Drucker (ggf. per ProSave übertragen) aus und stellt den Pfad auf USB (+ sonstige Einstellungen, wie z.B. Farbe,).

Dann besteht noch das Problem, dass man keinerlei Rückmeldungen vom System über den Ablauf des Screenshots bekommt.
Der (wahrscheinliche) Ablauf ist aber folgender:
  • leere Datei im Speicherpfad erstellen
  • Screenshot aufnehmen
  • Screenshot in pdf umwandeln
  • pdf in die leere Datei speichern

Wenn man also den USB-Stick zu früh entfernt, hat man nur eine leere Datei darauf.
Drückt man während des Vorgangs ein 2. Mal den Button, erhält man eine Systemmeldung "Überlast..." weil das Panel noch mit dem 1. Screenshot beschäftigt ist.
Aber man erhält vor allem auch eine Meldung, wenn diese Überlast beendet und damit der Screenshot komplett gespeichert ist.
Allerdings darf man auch nicht zu schnell hintereinander den Button drücken, sonst hat man die 1. Meldung mit im Screenshot.

Deswegen habe ich mir ein Script erstellt, welches das 2-malige Drücken mit etwas Abstand (ca. 1s) automatisch vornimmt.
 
Zuletzt bearbeitet:
Kannst du das Skript hier posten ?
Nix aufregendes.

Das Screenshot-Script:
Code:
Sub vbScreenshot(ByVal Enable)'
'
'Script:             vbScreenshot
'Version:            1.00
'Author:             hucki
'issue Date:         01.01.2020
'last modified:      23.03.2020
'State:              draft
'
'Function:           Makes a twice screenshot with delay to generate a system message
'                    Führt einen doppelten Screenshot mit Verzögerung aus, um eine Systemmeldung zu erzeugen
'                    
'changes:            .
'

    If Enable = 0 Then Exit Sub                    ' For bool var event "value change", just execute at raising edge
    
    
    PrintScreen                                    ' Start screenshot
    vbDelay 1000                                   ' Delay
    PrintScreen                                    ' Start a second screenshot to get an error message and a second one if the first screenshot is finished


End Sub


und das Verzögerungs-Script (nutze ich auch für andere Sachen):
Code:
Sub vbDelay(ByVal DelayMilliSeconds)
'
'Script:             vbDelay
'Version:            1.00
'Author:             hucki
'issue Date:         01.01.2020
'last modified:      23.03.2020
'State:              draft
'
'Function:           Generates a time delay
'                    Attention! No other scripts can be run in the meantime!
'                    Erzeugt eine Zeitverzögerung 
'                    Achtung! Zwischenzeitlich können keine weiteren Scripts ausgeführt werden!
'                    
'changes:            .
'

    On Error Resume Next                                             ' Activate error handling
    
    Const F_DAY = 24, F_HOUR = 60, F_MINUTE = 60, F_SECOND = 1000    ' Factors of next larger units
    Const F_EXE = 20                                                 ' Factor execution time
    
    Dim StartTime, StopTime, Delaytime, F_Delay                      ' Needed vars
    
    
    F_Delay   = F_DAY * F_HOUR * F_MINUTE * F_SECOND *F_EXE          ' Calculate delay factor
    Delaytime = DelayMilliSeconds / F_Delay                          ' Calculate delay
    StartTime = Now                                                  ' Start time
    StopTime  = StartTime + Delaytime                                ' Stop  time
     
    Do 
    Loop Until Now >= StopTime                                       ' Queue
    
    
    On Error GoTo 0                                                  ' Deactivate error handling

End Sub
Die Konstante F_EXE musst Du schauen.
Theoretisch sollte sie 1 sein, aber praktisch braucht das Script zumindest auf meinen Panels deutlich länger (vermutlich durch die NOW-Abfrage in jedem Schleifendurchlauf), was ich damit per "Pi x Daumen" korrigiere.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Falls von Interesse ->

Mich "störte" (bzw. hab' ich in meiner Freizeit schon mal Spass an solch' Spielereien) noch, das ich keine Popups oder Slider mit auf die Screenshots bekommen habe.
Daher habe ich mir in der SPS noch einen FB gebastelt, der misst, wie lange ich den Screenshot-Button betätige und der dann nach dem Loslassen einen gleich langen Countdown runter zählt und danach erst das Screenshot-Script über das Event "Wertänderung" auslöst.

So hat man bei Bedarf auch Zeit, bestimmte Einstellungen (z.b. bei uns das Sprachen- oder Anmelde-Popup) erst noch zu öffnen, die man sonst vielleicht nicht mit dem Button erreichen würde.


Daher auch der Enable-Eingang beim Screenshot-Script, auf den ich dann beim Aufruf die Variable lege, deren Wert überwacht wird.
 
Zurück
Oben