Problem mit diesem Script

al3x

Level-2
Beiträge
149
Reaktionspunkte
26
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich benutze folgendes Script in WinCC flexible um Produktionsdaten in eine CSV Datei zu exportieren.

Es funktioniert auch alles wunderbar, es wird alles exportiert, AUßER die ID, welche im Format String ist. Diese wird einfach nicht exportiert.

Hab schon alles ausprobiert, wisst ihr was an diesem Script falsch ist?


Code:
If SmartTags("Archivieren") Then


	Dim fso,fso2, f, ts, path
	Dim datum, dateiname, ordnername

	

		Dim A001, A002, A003, A004, A005, A006, A007, A008, A009, A010, A011, A012, A013, A014, A015, A016, A017, A018, A019, A020
		Dim A021, A022, A023, A024, A025, A026, A027, A028, A029, A030, A031, A032, A033, A034, A035, A036, A037, A038, A039, A040
		Dim A041, A042, A043, A044, A045, A046, A047, A048, A049, A050, A051, A052, A053, A054, A055, A056, A057, A058, A059, A060
		Dim A061, A062, A063, A064, A065, A066, A067, A068, A069, A070, A071, A072, A073, A074, A075, A076, A077, A078, A079, A080
		Dim A081, A082, A083, A084, A085, A086, A087, A088, A089, A090, A091, A092, A093, A094, A095, A096, A097, A098, A099, A100
		Dim A101, A102, A103, A104, A105, A106, A107, A108, A109, A110, A111, A112, A113, A114, A115, A116, A117, A118, A119, A120
		Dim A121, A122, A123, A124, A125, A126, A127


		A001 = SmartTags("DB_Lens.DS[57]\DB_Lens.DS[57].ID")
		A002 = SmartTags("DB_Lens.DS[57]\DB_Lens.DS[57].IO")
		A003 = SmartTags("DB_Lens.DS[57]\DB_Lens.DS[57].NIO")
		.
		.
		.



	datum = Date
	dateiname = DatePart("yyyy", datum)&"_"&DatePart("m", datum)&"_"&DatePart("d", datum)&".csv"	
	
	ordnername = DatePart("yyyy", datum)
	dateiname = "D:\Logs\LensDB\"&dateiname 
	
	'Ordner erstellen falls nicht vorhanden	
	'Set fso2 = CreateObject("Scripting.FileSystemObject")
	'If Not fso2.FolderExists(ordnername) Then fso2.CreateFolder(ordnername)	
	'Set fso2 = Nothing

	'Fehlerroutine
	On Error Resume Next

	'Objekt erstellen
	Set fso = CreateObject("Scripting.FileSystemObject")
	If Err.Number <> 0 Then
		ShowSystemAlarm "Error #" & CStr(Err.Number) & " " & Err.Description
		Err.Clear
		Exit Sub
	End If

	'Datei erstellen, wenn kein vorhanden
	'If Not fso.FileExists(dateiname) Then
	'	fso.CreateTextFile dateiname
		
	'End If

	Set f = fso.GetFile(dateiname)
	If Err.Number <> 0 Then
		ShowSystemAlarm "Error #" & CStr(Err.Number) & " " & Err.Description
		Err.Clear
		Exit Sub
	End If

	Set ts = f.OpenAsTextStream(8, -2)
		If Err.Number <> 0 Then
		ShowSystemAlarm "Error #" & CStr(Err.Number) & " " & Err.Description
		Err.Clear
		Exit Sub
	End If

	'Werte in die Datei schreiben
	ts.WriteLine A001&";"&A002&";"&A003&";"&A004&";"&A005&";"&A006&";"&A007&";"&A008&";"&A009&";"&A010&";"&A011&";"&A012&";"&A013&";"&A014&";"&A015&";"&A016&";"&A017&";"&A018&";"&A019&";"&A020&";"&A021&";"&A022&";"&A023&";"&A024&";"&A025&";"&A026&";"&A027&";"&A028&";"&A029&";"&A030&";"&A031&";"&A032&";"&A033&";"&A034&";"&A035&";"&A036&";"&A037&";"&A038&";"&A039&";"&A040&";"&A041&";"&A042&";"&A043&";"&A044&";"&A045&";"&A046&";"&A047&";"&A048&";"&A049&";"&A050&";"&A051&";"&A052&";"&A053&";"&A054&";"&A055&";"&A056&";"&A057&";"&A058&";"&A059&";"&A060&";"&A061&";"&A062&";"&A063&";"&A064&";"&A065&";"&A066&";"&A067&";"&A068&";"&A069&";"&A070&";"&A071&";"&A072&";"&A073&";"&A074&";"&A075&";"&A076&";"&A077&";"&A078&";"&A079&";"&A080&";"&A081&";"&A082&";"&A083&";"&A084&";"&A085&";"&A086&";"&A087&";"&A088&";"&A089&";"&A090&";"&A091&";"&A092&";"&A093&";"&A094&";"&A095&";"&A096&";"&A097&";"&A098&";"&A099&";"&A100&";"&A101&";"&A102&";"&A103&";"&A104&";"&A105&";"&A106&";"&A107&";"&A108&";"&A109&";"&A110&";"&A111&";"&A112&";"&A113&";"&A114&";"&A115&";"&A116&";"&A117&";"&A118&";"&A119&";"&A120&";"&A121&";"&A122&";"&A123&";"&A124&";"&A125&";"&A126&";"&A127
		
	'Datei schließen
	ts.Close
	Set ts = Nothing
	Set f = Nothing
	Set fso = Nothing
	ShowSystemAlarm "Daten wurden exportiert!"
	
	ResetBit SmartTags("Archivieren")
End If
 
ich seh momentan auch keinen fehler.

lass dir doch mal den inhalt von A001 anzeigen, obe der string in
ordnung ist
(z.b. mit ShowSystemAlarm ">>"&A001&"<<")
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wann wird die ID geschrieben? Da flexible zyklisch auf die Variablen schaut kann es sein dass der aktuelle Wert noch nicht "vorhanden" ist. Die Erfassungsart der Variable mal auf zyklisch fortlaufend stellen.
 
Alle Variablen stehen auf zyklisch fortlaufend 100ms. Exportiert werden sie mit einer Verzögerung von 1s.

Wenn ich mit ShowSystemAlarm die Variable ausgebe, steht nichts drin. Wenn ich aber in der Oberfläche die Variable anschaue steht die ID drin..

:confused:
 
wird A001 evtl. irgendwo überschrieben, bzw. evtl. doppelt zugiewesen?
wie zeigst du in der oberfläche die variable an?
A001 ist doch eine variable im script!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die ID ist ein DataMatrix Code er am Anfang eingelesen wird. Wenn das Teil die Anlage verlässt werden da Daten exportiert. In der Oberfläche kann man diese ID auch anschauen.

Ich hab auch schon versucht im Script nicht A001 sonder direkt die Variable ID zu exportieren, funktionierte auch nicht.
 
Dann probier mal den Smarttag direkt mit Showsystemalarm auszugeben:

ShowSystemAlarm SmartTags("DB_Lens.DS[57]\DB_Lens.DS[57].ID")
 
poste hier doch mal einen screenshot wie die variable
definiert ist und wie die anzeige in der oberfläche
projektiert ist.
 
hier mal zwei screenshots. müsste aber theoretisch stimmen?!

sbexojs2.png


67aducwy.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hmm,
mir erschließt sich nicht warum du die variablen im script
anders angibst als in der definition und im ausgabefeld.

A001 = SmartTags("DB_Lens.DS[57]\DB_Lens.DS[57].ID")

es müsste doch lauten:

A001 = SmartTags("DB_Lens.DS[57].ID")

WinCC flex gibt bei variablen die es nicht kennt keinen
rückwert aus. damit bleibt A001 leer.
Das müsste aber dann für die anderen variablen ganauso gelten.
 
die Variablen liegen alle im Variablenordner "DB_Lens.DS[57]"
und im Script muss ich ja den Ordner mit angeben, das ich z.B. beim EA Feld nicht brauch.?!
 
ja, stimmt

hast du den tip von Hotsch schon getestet? was passiert bei:
ShowSystemAlarm SmartTags("DB_Lens.DS[57]\DB_Lens.DS[57].ID")

probier auch mal eine neue variable ohne ordner
und in der sps die id auf diese kopieren und dann im script diese
zu verwenden. wenn es geht, dann macht der ordner die probleme
der ordnername ist schon etwas ungewöhnlich (mit dem ".DS[57]").
evtl. mal nen anderen ordnername versuchen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bin jetzt ein klein bisschen weiter gekommen.
Mit ShowSystemAlarm wird die ID auch nicht ausgegeben.

Hab jetzt die ID auf dem Touchpanel als Anzeige. Dabei ist mir folgendes aufgefallen:
Wenn ich die ID in der VarTabelle setzte (genauso wie im Automatik, also auch mit Länge des Strings) dann wird diese auch angezeigt.

Im Automatik werden die Daten in einem Schritt von einem Platz zum nächsten geschoben. Wenn ich das Bild anschaue und die Daten werden geschoben, funktioniert es nicht, es kommt #############.

Wenn ich jetzt in einem anderen Bild bin, und das Bild erst anschauen wenn die Daten schon geschoben sind, dann funktioniert es... :confused:
 
Hab jetzt die ID auf dem Touchpanel als Anzeige. Dabei ist mir folgendes aufgefallen:
Wenn ich die ID in der VarTabelle setzte (genauso wie im Automatik, also auch mit Länge des Strings) dann wird diese auch angezeigt.
Das heißt dann ja, dass wenn das Richtige drin steht dann klappt die Angelegenheit ...
Im Automatik werden die Daten in einem Schritt von einem Platz zum nächsten geschoben. Wenn ich das Bild anschaue und die Daten werden geschoben, funktioniert es nicht, es kommt #############.

Wenn ich jetzt in einem anderen Bild bin, und das Bild erst anschauen wenn die Daten schon geschoben sind, dann funktioniert es... :confused:
OK - und was passiert hier dann nun konkret ?
Mit dieser Beschreibung kann zumindestens ich nichts anfangen ...
Was kopierst du ? Wie kopierst du ? Was ist das mit dem anderen Bild ?
 
Hab jetzt endlich die Lösung gefunden.
String Variable als StringChar definieren und Byteadresse auf 1. Zeichen setzen.
Dann funktioniert auch der Export problemlos.

So wie ich es hatte (als String) funktionierte der Export nur manchmal, ganz sporadisch.

An dem hab ich jetzt so lange herumprobiert und alles möglich getestet, und jetzt wars so einfach... *ROFL*
 
Zurück
Oben