TIA USB-Speicherung durch Button mit bestimmter Aufrufreihenfolge von Ereignissen

ManAtWork!

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

ich habe eine Frage bezügliche der Aufrufreihenfolge von Ereignissen die ich z.B. einem Button anhängen kann.

Und zwar geht es bei mir konkret um das Speichern von Datensätzen und das übertragen dieser Datensätze auf ein USB-Stick.

Dazu benötige ich ja die Ereignisse:

1. LöscheDatensatz (optional)
2. LeseDatensatzvariablenAusSteuerung
3. SpeichereDatensastz
4. EsportiereDatensätze

Wenn ich diese nun in dieser Reihenfolge über ein Button auslöse funktioniert das nicht, weil er eben die Aufrufreihenfolge der Ereignisse nicht wirklich befolgt...
Über einzelne Buttons funktioniert das einwandfrei.

Über ein Skript und den entsprechenden Systemfunktionen bekomme ich es leider auch nicht gebacken.
Was mache ich falsch?

(TIA V14 SP1 und WinCC Advanced)

Grüße
Dominik
 
Zwischen 2 und 3 muß eine Wartezeit für das Einlesen der RezepturVariablen. Die Systemfunktion LeseDatensatzvariablenAusSteuerung wartet nicht bis die Variablen gelesen wurden, sondern löst den Leseauftrag nur aus.

prinzipielle Lösung:
- teilen der Funktionsliste in zwei Teil-Abläufe: 1+2 und 3+4
- bei 2. LeseDatensatzvariablenAusSteuerung eine PLC-Variable als Statusvariable angeben
- bei der Statusvariable beim Ereignis Wertänderung den Ablauf ab 3. fortsetzen

Warum verwendest Du eine Funktionsliste? Sooo einfach ist die Aufgabe nicht zu lösen. Ich meine, eine gut funktionierende Lösung, die auch auf mögliche Fehlfunktionen reagiert, muß als Skript geschrieben werden. In einer Funktionsliste ist es vermutlich nicht oder nur schwer möglich, gezielt nur auf das Ereignis "Lesen fertig OK" zu reagieren (wenn der Wert der Statusvariable von 0 auf 4 geht)

Es gibt hier im Forum zu dem Thema "Variablen aus PLC in csv-Dateien schreiben" schon unzählige Beiträge, am besten mal nach Stichwort "GetDataRecordTagsFromPLC" suchen.

Für den schnellen Einstieg: die beiden treffendsten Programmbeispiele hatte ich mal hier verlinkt:
VBS-Codebeispiel für Variablen Lesen/Schreiben mit Fertigmeldung (GetDataRecordTagsFromPLC/SetDataRecordTagsToPLC)

Schau Dir auch mal diesen Thread an, besonders ab Beitrag #12, wo ein sicherer Export von Speicherbereichen aus der CPU in eine CSV-Datei beschrieben ist (ereignisgesteuert, kein Warten im Script).

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

vielen Dank für deine Antwort. Habe mir das jetzt durchgelesen und versucht zu verstehen.

Zu deiner prinzipiellen Lösung...das habe ich auch schon so über "Werteänderung" versucht...jedoch kommt dann die Fehlermeldung "20015 - Überlast: Skript <SaveDataRecord> wird verworfen.:confused:

Habe auch schon zwischen den Schritten eine Warteschleife erstellt die erst bei "Status = 4" den Start an die nächste Systemfunktion geben soll programmiert. Aber auch hier funktioniert nur der erste Aufruf und alle weiteren funktionieren nicht. Obwohl der die Abfrage auf den Status = 4 richtig erkannt wird.

Dominik
 
Zurück
Oben