konsistent Variablen in SPS schreiben mit Endemeldung
Hallo Bensen83,
so wie Helmut es schon angedeutet hat, bekommst Du das Problem des konsistenten Schreibens wohl nur mit
Datensätzen/Rezepturen in den Griff. Allerdings hakt es nicht beim Lesen der csv-Datei (readline wartet
tatsächlich, bis die Zeile aus der Datei gelesen wurde), sondern beim anschließenden Schreiben in die SPS.
Für das konsistente
Schreiben von Datensätzen
mit Endemeldung gibt es in WCF die Systemfunktion
SchreibeDatensatzvariablenInSteuerung (im Script: SetDataRecordTagsToPLC)
Code:
[COLOR="green"]' "DS_Schreibstatus" ist eine Panel-interne Variable (UInt)
' "SPS\neuer_Datensatz" ist die Fertigmeldung-Variable in der SPS (INT, BOOL)[/COLOR]
Dim csvReadOK, wrStat
[COLOR="green"]' Daten aus csv-Datei in Rezepturvariablen lesen
' ...
' Rezepturvariablen in die SPS schreiben[/COLOR]
If csvReadOK Then
SetDataRecordTagsToPLC "Rezepturname", SmartTags("DS_Schreibstatus") [COLOR="green"]'Datensatz in SPS schreiben[/COLOR]
Do [COLOR="green"]'in Schleife auf Ende DS-Schreiben warten, weil interne Variablen kein Ereignis "beiÄnderung" auslösen[/COLOR]
wrStat = SmartTags("DS_Schreibstatus")
Loop While (wrStat And 4) = 0 [COLOR="green"]' 4=fertig OK / 12=abgebrochen mit Fehler[/COLOR]
If wrStat = 4 Then [COLOR="green"]'wenn Schreiben ohne Fehler, dann Fertigmeldung an SPS[/COLOR]
SmartTags("SPS\neuer_Datensatz") = 1
[COLOR="green"] 'weitere Fertig-Aktionen
'...[/COLOR]
End If
End If
Wenn Du die Variable "DS_Schreibstatus" in die SPS legst, dann musst Du nicht unbedingt im Script auf das Ende
des Datensatz-Schreibens warten. (Wenn Du trotzdem wartest, dann dauert es mindestens 2 Sekunden.)
Die SPS braucht dann keine gesonderte Fertigmeldungs-Variable, sie braucht nur "DS_Schreibstatus" überwachen.
Sobald eine 4 darinsteht ist ein neuer Datensatz vom Panel angekommen. Dann den Datensatz an das/die eigentlichen
Ziel(e) schreiben und "DS_Schreibstatus" auf 0 setzen.
@Helmut
Das ist ein Teil dessen, wie ich die Rezepturverwaltung abgelöst habe. Weil da noch viel mehr selbstgestricktes
dazugehört, müßte ich erst ein überschaubares Beispielprojekt zusammenstellen. Deshalb habe ich Dir in dem anderen
Tread (noch) nicht geantwortet.
Gruß
Harald