TIA HMI Daten lesen und schreiben an USB Stick

eplan4ever

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

wir haben bei uns ein S7-1200 und ein KTP600... auf das Panel sind zwei Skripte zu finden die über Aufgabenplaner aufgeführt werden. Programm wurde in TIA V13 erstellt.

Das ganze funktioniert gut für eine Weile und auf einmal hört plötzlich auf Dateien zu generieren. Manchmal nach eine Woche oder nach ein paar Tagen.

Skript 1: erstellt ein Pfad und Datei falls nicht vorhanden außerdem schreibt die Daten in diese Datei. Das Script wird Zyklisch aufgerufen.

Code:
On Error Resume Next

Dim fs

Set fs = CreateObject("filectl.filesystem")
If fs.dir("storage card usb\daten") = "" Then fs.mkdir("storage card usb\daten")

Dim file,filesys,datei,datum,datum_fname,laenge

Set file = CreateObject("filectl.file")
Set filesys = CreateObject("filectl.filesystem")

datum = "20"&Right(Date,2)&"."&Mid(Date,4,2)&"."&Left(Date,2)

datum_fname = "20"&Right(Date,2)&Mid(Date,4,2)&Left(Date,2)

datei = "storage card usb\daten\"&datum_fname&".csv"

If filesys.dir("\"&datei) = "" Then
    file.open datei,2
    file.lineprint "Aufzeichnung der Daten vom "&datum
    file.lineprint "Datum (JJJJ.MM.TT);" & "Uhrzeit;" & "ph-Wert;" & "druck;" & "temp;"
    file.close
End If

file.open datei,8
file.lineprint datum & ";" & Time & ";" & ph & ";" & druck & ";" & temp & ";" 
file.close

VB_FCT_Write_Data = 0
End Function

Skript 2: kopiert die daten von src_path(Daten, die von Skript1 gesammelt wurden) zu dest_path. Das Script wird bei Tageswechsel aufgerufen. Am schluss werden die daten von src_path gelöscht und alles fängt von vorne an. D.h werden immer die daten von "gestern" gespeichert auf dest_path und die Daten werden auf src_path Zyklisch aufgezeichnet.


Code:
On Error Resume Next
Dim file, filesys, src_path, dest_path, fname_ystrdy, datum_ystrdy, datum_temp

src_path = "\storage card usb\daten"
dest_path = "\storage card usb\"

Set file = CreateObject("filectl.file")
Set filesys = CreateObject("filectl.filesystem")

'Datum von gestern
datum_temp = DateAdd("d",-1,Date)
datum_ystrdy = "20" & Right(datum_temp,2) & Mid(datum_temp,4,2) & Left(datum_temp,2)

'Dateiname zusammenbauen
fname_ystrdy = datum_ystrdy & ".csv"

If filesys.dir (dest_path) <> "" Then
    filesys.filecopy src_path & "\" & fname_ystrdy, dest_path & "\" & fname_ystrdy
    filesys.kill src_path & "\" & fname_ystrdy
    'Debug Info!!!
    'ShowSystemAlarm "daten kopiert"

End If

VB_FCT_Copy_Data = 0

End Function

habt ihr Ideen warum das so ist?

das Skript ist sehr ähnlich wie was Volker in diese Post/FAQ gepostet hat

http://www.sps-forum.de/showthread.php?t=41710

Vielen Dank im Voraus
E
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In beide Skripte hast du ON ERROR RESUME NEXT, aber kein Auswertung von das Err Objekt.

Beispiel, nach jeden 'verdächtigen' Code Abschnitt:
Code:
If Err.Number <> 0 Then
    ShowSystemAlarm "Error beim schreiben." & Err.Number & " " & Err.Description
    Err.Clear
    Exit Sub
End If
Dann hast du im Meldeanzeige eine Hinweis warum das Skript nicht funktioniert.
 
Oder einfach das "On Error Resume Next" deaktivieren (auskommentieren), dann werden ebenfalls Runtime-Error-Systemmeldungen erzeugt. Man muss aber eine Meldeanzeige haben, die auch Fehler der Meldeklasse "System" anzeigt, damit man die Runtime-Error-Systemmeldungen mitbekommt.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Kann nicht sein, KTP600 unterstützen keine Skripte. Das ist ein Basic Panel.
Mike Du hattest recht. Im Schaltplan steht KTP600 wenn eigentlich vor Ort ein Comfort Panel installiert ist.

ich habe das Skript neu geschrieben und ein Paar Fehler Routine eingefügt. Alles hat super funktioniert aber ab und zu wird das USB Stick nicht erkannt und springt mein Skript in diese Code-Zeile:

Code:
If fso.Dir("\storage card usb\")="" Then
    ShowSystemAlarm "USB nicht gesteckt, Datenübertragung nicht möglich"
    Exit Function
End If

scheinbar findet mein Skript den USB-Stick nicht. hat jemand Ideen warum das sein kann? Außer USB kaputt/falsch eingesteckt?

Grüße
E
 
Mit den USB-Sticks hatte ich auch schon so meine Probleme, ähnlich wie bei dir, mit wechselenden Panels.
Teilweise musste das Panel neu gestartet werden, damit der Stick richtig erkannte wurde, manchmal reichte es den Stick zu ziehen und neu einzustecken. Hab leere Sticks der unterschiedlichsten Hersteller und Größen probiert, bei manchen haben sich die Panels schon beim Booten aufgehängt. Stick gezogen, reboot und dann ging es als wäre nie etwas gewesen. Irgendwie habe ich da den Eindruck es ist einfach nur Zufall wenn es mal funktioniert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
scheinbar findet mein Skript den USB-Stick nicht. hat jemand Ideen warum das sein kann? Außer USB kaputt/falsch eingesteckt?
Man sollte die HMI Runtime runter fahren und dann in die Windows Desktop ein File Explorer öffnen, und das Laufwerk finden können.
Ein Tip: Stecke ein USB Maus an das Comfort Panel. Das Panel hat 2 USB Ports. Die Bedienung in Windows ist dann viel komfortabler.
 
Hallo.

Kann schwimmers Erfahrungen nur bestätigen, scheinbar sind die Comfort-Panels ein bisschen wählerisch.

Was auch sein kann: Je nach Hersteller und Größe des Memory-Devices (auch SD-Karten) werden andere Speichercontroller und andere Formatierungen (Sektorgrößen etc.) verwendet.
Ich bin mir nicht sicher, ob die relativ alten Comfort-Panels mit allen klarkommen. Auch meine ich mich zu erinnern, dass es mal Hinweise von Siemens bezüglich Speichergrößen gegeben hat.


Gruß, Fred
 
ab und zu wird das USB Stick nicht erkannt
Was machst Du dann? Abziehen und nochmal anstecken und dann geht es?
Ist das immer derselbe USB-Stick? Oder werden manche USB-Sticks immer erkannt und manche nie?
Präzisiere die Problem-Beschreibung.

Code:
If fso.Dir("\storage card usb\")="" Then
Irgendwie geistert in meinem Kopf, daß die Dir-Funktion bei einem leeren (*) USB-Stick "" liefert, und die Bedingung dann erfüllt ist.
(*) leer: keine Dateien und keine Ordner drauf, wie nach frisch formatiert oder alles gelöscht

Ich glaube, die Lösung bzw. korrekte Formulierung ist mit einem Punkt am Ende: If fso.Dir("\storage card usb\.")="" Then

Harald
 
Hi Harald

danke für Deine Hilfe
Was machst Du dann? Abziehen und nochmal anstecken und dann geht es?
Ist das immer derselbe USB-Stick? Oder werden manche USB-Sticks immer erkannt und manche nie?
Präzisiere die Problem-Beschreibung.
meine Erfahrung bisher: Abziehen und nochmal anstecken funktioniert normalerweise. Manchmal flackert das Panel und muss ich neu booten. es ist immer derselbe USB-Stick. Format FAT-32 und 2GB Speicherplatz.

Irgendwie geistert in meinem Kopf, daß die Dir-Funktion bei einem leeren (*) USB-Stick "" liefert, und die Bedingung dann erfüllt ist.
(*) leer: keine Dateien und keine Ordner drauf, wie nach frisch formatiert oder alles gelöscht

Ich glaube, die Lösung bzw. korrekte Formulierung ist mit einem Punkt am Ende: If fso.Dir("\storage card usb\.")="" Then
ich habe das aus diesem Beitrag von Siemens:


1668590676185.png

jetzt kannst Du ruhig schlafen :D

Grüße
E
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Irgendwie geistert in meinem Kopf, daß die Dir-Funktion bei einem leeren (*) USB-Stick "" liefert, und die Bedingung dann erfüllt ist.
(*) leer: keine Dateien und keine Ordner drauf, wie nach frisch formatiert oder alles gelöscht

Ich glaube, die Lösung bzw. korrekte Formulierung ist mit einem Punkt am Ende: If fso.Dir("\storage card usb\.")="" Then
ich habe das aus diesem Beitrag von Siemens:




jetzt kannst Du ruhig schlafen :D
Meinst Du, das Skript bzw. der Code muß korrekt sein, nur weil Du es von einer Siemens FAQ hast? :ROFLMAO:

Die kostenlosen Programmbeispiele von Siemens sind oft nur ein unverbindlicher Proof of Concept (PoC) und noch weit weg von einer zuverlässigen Verwendbarkeit. Oft sind da auch noch Bugs drin, und oft tun sie nur irgendwas vorführbares, aber nicht genau das was da mit schönen Marketing-Worten versprochen wird. Genau der von Dir zitierte FAQ verspricht z.B.:
Wie stellen Sie mit einem Skript fest, ob ein Speicherlaufwerk mit Wechselmedien (USB-Stick, SD-/MM-Card) auf einem HMI-Gerät schreibbereit ist?
Im FAQ finden Sie ein Beispiel-Skript, das überprüft, ob ein Speichermedium in einem HMI-Gerät vorhanden und schreibbereit ist oder nicht. Sie können das Skript frei an Ihre Bedürfnisse anpassen.
Das Skript prüft aber gar NICHT, ob ein Wechselmedium schreibbereit ist. Man kann es nur verwenden um festzustellen, daß gar kein Wechselmedium vorhanden ist.

Harald
 
Zurück
Oben