Zuviel Werbung?
-> Hier kostenlos registrieren
-> Hier kostenlos registrieren
Hallo,
Wir schreiben momentan ein Program in TwinCAT 2 wobei Werte aus einem Array in eine Datei geschrieben werden sollen. Dies muss innerhalb einer Funktion passieren, die Methode um in TwinCAT Dateien zu beschreiben ist jedoch ein Funktionsblock. Der Versuch ist das Ganze innerhalb einer While-Schleife zu implementieren, es kommt jedoch immer ein Timeout Fehler aus dem Funktionsblock selbst. Der Code sieht wie folgt aus:
Im Case 2 hängt der sich dann immer am Timeout auf. fbFileOpen ist eine Instanz eines FB_FileOpen Funktionsblock.
Die Frage ist also: Ist es möglich in TwinCAT 2 innerhalb von Funktionen Dateien zu beschreiben?
Vielen Dank!Paddel
Wir schreiben momentan ein Program in TwinCAT 2 wobei Werte aus einem Array in eine Datei geschrieben werden sollen. Dies muss innerhalb einer Funktion passieren, die Methode um in TwinCAT Dateien zu beschreiben ist jedoch ein Funktionsblock. Der Versuch ist das Ganze innerhalb einer While-Schleife zu implementieren, es kommt jedoch immer ein Timeout Fehler aus dem Funktionsblock selbst. Der Code sieht wie folgt aus:
Code:
[COLOR=#141823][FONT='inherit']fbTimer(IN:= TRUE, PT := T#2s);[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']fbWrite(udRows:=(iIpolEnd-iIpolStart), bExecute := TRUE, pWriteBuffer := ADR(laMotorValues));[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']WHILEfbWrite.bBusy OR fbTimer.Q DO [/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']fbWrite(udRows:=(iIpolEnd-iIpolStart), bExecute := TRUE, pWriteBuffer := ADR(laMotorValues)); [/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']IFfbWrite.bError THEN Gerade_Velo := 10; [/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']RETURN;[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']END_IF[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']END_WHILE[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']fbTimer.IN:= FALSE;[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']fbWriteist eine Instanz eines Funktionsblocks der so anfängt:[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']RisingEdge(CLK:= bExecute);[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']CASE iStep OF 0:[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']IFRisingEdge.Q THEN iStep := 1; [/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']bBusy:= TRUE; [/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']bError:= FALSE; [/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']nErrId:= 0; hFile := 0;[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit'] END_IF[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']1:fbFileOpen(bExecute := FALSE);[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit'] fbFileOpen(sNetId := sNetId, sPathName :=sPathName, nMode := FOPEN_MODEAPPEND OR FOPEN_MODEPLUS OR FOPEN_MODEBINARY,ePath := PATH_GENERIC, tTimeout := T#2s, bExecute := TRUE); [/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']iStep:= iStep + 1; [/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']2:fbFileOpen(bExecute := FALSE); [/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']IFNOT fbFileOpen.bBusy THEN [/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']IFNOT fbFileOpen.bError THEN hFile := fbFileOpen.hFile;[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit'] iStep := iStep + 1;[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit'] ELSE iStep := 50;[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit'] nErrId := fbFileOpen.nErrId; bError := TRUE; [/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']END_IF[/FONT][/COLOR]
[COLOR=#141823][FONT='inherit']END_IF[/FONT][/COLOR]
Im Case 2 hängt der sich dann immer am Timeout auf. fbFileOpen ist eine Instanz eines FB_FileOpen Funktionsblock.
Die Frage ist also: Ist es möglich in TwinCAT 2 innerhalb von Funktionen Dateien zu beschreiben?
Vielen Dank!Paddel