MrAnderson0815
Level-2
- Beiträge
- 13
- Reaktionspunkte
- 3
-> Hier kostenlos registrieren
Hallo zusammen,
ich habe ein Problemchen / Herausforderung.
Da ich ehr aus der Beckhoff Richtung kommen, stelle ich mich mit Codesys vielleicht einfach nur dusselig an, aber ich versuche gerade ein Logging Programm zu erstellen, welches im ersten Schritt den Logging Ordner erstellen soll. Da hapert es schon. Ich bekomme immer den Fehler 5113 "ASM_CREATEJOB_FAILED"
Ich habe jetzt verschiedene Beispiele versucht, um das zu verstehen.
https://product-help.schneider-electric.com
die File Beispiele aus dem Codesys Store
Oder der Teil von @wollvieh nur eben auf create folder angepasst, den er in einem anderen Thema gepostet hat. Aber immer kommt der Fehler.
https://www.sps-forum.de/threads/codesys-caa-file-bitte-hilfe.104576/
Ich habe einen Win10 64bit PC (ist eigentlich eine VM) -> habe aber dort Adminrechte)
Codesys ist die V3.5 SP12 (32bit) -> (muss ich nehmen, da das Programm auf eine Pilzsteuerung soll)
Update:
SysFile funktioniert, wie im Beispiel : https://support.crosscontrol.com/kb/file-utility-example
Also direkt ohne Ordner erstellen, sondern gleich die Datei.
Wenn ich aber versuche die Datei zu Öffnen, via CAA bleibt er hängen.
Hier mal mein Code (ist erst einmal nur ein Test und aus den Beispielen)
ich habe ein Problemchen / Herausforderung.
Da ich ehr aus der Beckhoff Richtung kommen, stelle ich mich mit Codesys vielleicht einfach nur dusselig an, aber ich versuche gerade ein Logging Programm zu erstellen, welches im ersten Schritt den Logging Ordner erstellen soll. Da hapert es schon. Ich bekomme immer den Fehler 5113 "ASM_CREATEJOB_FAILED"
Ich habe jetzt verschiedene Beispiele versucht, um das zu verstehen.
https://product-help.schneider-electric.com
die File Beispiele aus dem Codesys Store
Oder der Teil von @wollvieh nur eben auf create folder angepasst, den er in einem anderen Thema gepostet hat. Aber immer kommt der Fehler.
https://www.sps-forum.de/threads/codesys-caa-file-bitte-hilfe.104576/
Ich habe einen Win10 64bit PC (ist eigentlich eine VM) -> habe aber dort Adminrechte)
Codesys ist die V3.5 SP12 (32bit) -> (muss ich nehmen, da das Programm auf eine Pilzsteuerung soll)
Update:
SysFile funktioniert, wie im Beispiel : https://support.crosscontrol.com/kb/file-utility-example
Also direkt ohne Ordner erstellen, sondern gleich die Datei.
Wenn ich aber versuche die Datei zu Öffnen, via CAA bleibt er hängen.
Hier mal mein Code (ist erst einmal nur ein Test und aus den Beispielen)
Code:
VAR
sFirstFileName : STRING; //Variable to create a text file.
xWriteTest : BOOL;
xTest2Done : BOOL:=FALSE;
iFilesCount : INT;
sDirEntry : STRING(1024);
stDirInfo : DirInfo;
udiResult : __XWORD;
udiDirHandle : RTS_IEC_HANDLE;
udiFileHandle : RTS_IEC_HANDLE;
udiReadResult : UDINT;
xStartTest : BOOL:= FALSE; (* true, if a button is pressed *)
xTestDone : BOOL:= FALSE;
xError : BOOL;
ErrorCode : RTS_IEC_RESULT;
udiCreateError: UDINT;
udiReadError: UDINT;
udiCloseError: UDINT;
udiRenameError: UDINT;
udiDeleteError1: UDINT;
udiDeleteError2: UDINT;
udiDirDeleteError: UDINT;
szTestLine: STRING;
hFile : RTS_IEC_HANDLE := RTS_INVALID_HANDLE;
udiBytesRead : __XWORD;
udiBytesCopied : __XWORD;
udiWrite : __XWORD;
udiFileSize : __XWORD;
udiPos : __XWORD;
udiPosError : RTS_IEC_RESULT;
udi_pos_write : RTS_IEC_RESULT;
udiCopyError : RTS_IEC_RESULT;
udiWriteError1 : RTS_IEC_RESULT;
udiWriteError2 : RTS_IEC_RESULT;
udiWriteError3 : RTS_IEC_RESULT;
udiOpenError1 : RTS_IEC_RESULT;
udiOpenError2 : RTS_IEC_RESULT;
udiOpenError3 : RTS_IEC_RESULT;
udiOpenError4 : RTS_IEC_RESULT;
udiReadError1 : RTS_IEC_RESULT;
udiReadError2 : RTS_IEC_RESULT;
udiReadError3 : RTS_IEC_RESULT;
udiCloseError1 : RTS_IEC_RESULT;
udiCloseError2 : RTS_IEC_RESULT;
udiCloseError3 : RTS_IEC_RESULT;
udiCloseError4 : RTS_IEC_RESULT;
udiSizeError : RTS_IEC_RESULT;
// mein Versuch
n_step : INT := 0;
n_step_last: INT;
n_step_old: INT;
szFileSize1: CAA.SIZE := 0;
fb_open : FILE.Open;
fb_write : FILE.Write;
fb_close : FILE.Close;
handleFile : DWORD;
handleFileInternal : DWORD;
END_VAR
(* This program uses the synchronous functions for directory modification*)
IF xStartTest THEN
sFirstFileName := '/Test File.txt'; //Name given for the text file.
xTestDone := FALSE;
sFirstFileName := CONCAT(g_sMainDirectory, sFirstFileName); //Concatenation of two strings allows for the file to be in directory defined in the Global Variable List (GVL)
(* File is created and stored into the directory*)
udiFileHandle := SysFileOpen(szFile:=sFirstFileName, am:=FILE.AM_WRITE_PLUS, pResult:=ADR(ErrorCode)); //Built-in function SysFileOpen, with options to Write/Read/Append,Copy look at app. note for more info.
IF udiFileHandle <> RTS_INVALID_HANDLE THEN
SysFileClose(hFile:=udiFileHandle);
END_IF
xTestDone := TRUE; //Used for buttons
END_IF
(* This is where you write to a file*)
IF xWriteTest
THEN
szTestLine := 'HELLO WORLD!!!';
(*
hFile := SysFileOpen(szFile:=sFirstFileName, am:=FILE.AM_WRITE_PLUS, pResult:=ADR(udiOpenError1)); //Built-in function to open file and write to it.
IF hFile <> RTS_INVALID_HANDLE THEN
udiPosError := SysFileGetPos(hFile:=hFile, pulPos:=ADR(udiPos)); //test for error, this is optional
udi_pos_write := SysFileSetPos(hFile:= hFile, ulOffset:= udiPosError);
udiWrite := SysFileWrite(hFile:=hFile, pbyBuffer:=ADR(szTestLine), ulSize:=INT_TO_UDINT(LEN(szTestLine)), pResult:=ADR(udiWriteError1));
udiCloseError := SysFileClose(hFile:=hFile);
END_IF
(* Close the directory *)
udiCloseError := SysDirClose(hDir:= udiDirHandle);
xTest2Done:=TRUE; //Used for buttons.
*)
n_step := 1;
END_IF
CASE n_step OF
0: // nix
1: // Datei öffnen
fb_open.sFileName:=sFirstFileName;
fb_open.eFileMode:=FILE.MODE.MAPPD;
fb_open.xExclusive:=TRUE;
fb_open(xExecute:=TRUE);
IF fb_open.xDone
THEN
hFile:=fb_open.hFile;
n_step := 2;
END_IF
IF fb_open.xError
THEN
;
END_IF
2: // in Datei schreiben
fb_write.hFile:=hFile;
fb_write.pBuffer:=ADR(szTestLine);
szFileSize1:=SIZEOF(szTestLine);
fb_write.szSize:=szFileSize1;
fb_write.udiTimeOut:=100000; (* 100ms Timeout *)
fb_write( xExecute:=TRUE);
IF fb_write.xDone
THEN
n_step := 3;
END_IF
IF fb_write.xError
THEN
(* error handling*)
;
END_IF
3: // close Datei
fb_close.hFile:=hFile;
fb_close( xExecute:=TRUE);
IF fb_close.xDone
THEN
n_step := 0;
xTest2Done:=TRUE; //Used for buttons.
END_IF
IF fb_close.xError
THEN
(* error handling*)
;
END_IF
END_CASE
Zuletzt bearbeitet: