Hendrik
Level-1
- Beiträge
- 219
- Reaktionspunkte
- 19
-> Hier kostenlos registrieren
Moin Moin,
ich steh aktuell vor einem Problem. Ich habe mehrere Sprachen auf dem Tc3 System und wollte ein ErrLog als CSV exportieren. In der PLC arbeite ich mit Dynamischen Textlisten und somit mit Fehlercodes. Damit beim Exportieren nicht nur die Fehlernummern aufgelistet werden dachte ich mir ich lese die Sprachdatei einfach aus und such mir entsprechend meiner Nummern die Übersetzung aus der Datei. Leider funktioniert dies nicht. Hat jemand vielleicht eine Idee?
Die Datei befindet sich unter TC3 und einem CE in folgendem Pfad.
\Hard Disk\TwinCAT\3.1\Boot\Plc\Port_851\Visu\port_851.errortextlist.txt
Ich habe also einen Funktionsbaustein programmiert. Siehe Code:
Leider kommt beim auslesen nur Buchstabengulasch raus....
Am PRG Code zu erkennen habe ich schon mehrere Kombinationen zum Lesen der Datei ausprobiert.
Ich hoffe ich steh einfach nur auf dem "Schlauch".
Vielen Dank für alle Anregungen im voraus!
Grüße Hendrik
ich steh aktuell vor einem Problem. Ich habe mehrere Sprachen auf dem Tc3 System und wollte ein ErrLog als CSV exportieren. In der PLC arbeite ich mit Dynamischen Textlisten und somit mit Fehlercodes. Damit beim Exportieren nicht nur die Fehlernummern aufgelistet werden dachte ich mir ich lese die Sprachdatei einfach aus und such mir entsprechend meiner Nummern die Übersetzung aus der Datei. Leider funktioniert dies nicht. Hat jemand vielleicht eine Idee?
Die Datei befindet sich unter TC3 und einem CE in folgendem Pfad.
\Hard Disk\TwinCAT\3.1\Boot\Plc\Port_851\Visu\port_851.errortextlist.txt
Ich habe also einen Funktionsbaustein programmiert. Siehe Code:
Code:
FUNCTION_BLOCK FB_Read_ErrText_List
VAR_INPUT
bExecute: BOOL;
END_VAR
VAR_OUTPUT
bBusy: BOOL;
bError: BOOL;
iErrID: UDINT;
END_VAR
VAR
iStep: UINT;
ExecuteTrig: R_TRIG;
VarExecute: BOOL;
fbFileOpen: FB_FileOpen;
Var_nMode: DWORD := FOPEN_MODEREAD OR FOPEN_MODETEXT;
Var_ePath: E_OpenPath := PATH_GENERIC;
Var_tTimeout: TIME := DEFAULT_ADS_TIMEOUT;
Var_hFile: UINT;
fbFileGets: FB_FileGets;
Var_sLine: STRING[255];
sLineArray: ARRAY[1..100] OF STRING[255];
sCbReadArray: ARRAY[1..100] OF UDINT;
ArraysLinePos: INT;
fbFileClose: FB_FileClose;
fbFileRead: FB_FileRead;
iReadStep: UINT := 50;
nModeCase: INT;
END_VAR
(*___________________________________________________________*)
//Main
ExecuteTrig(CLK := bExecute);
CASE iStep OF
(*____________________________________________________*)
0:
IF ExecuteTrig.Q = TRUE THEN
bBusy := TRUE;
bError := FALSE;
iErrID := 0;
Var_hFile := 0;
ArraysLinePos := 1;
VarExecute := TRUE;
CASE nModeCase OF
0:
Var_nMode:= FOPEN_MODEREAD OR FOPEN_MODETEXT;
10:
Var_nMode:= FOPEN_MODEREAD;
20:
Var_nMode:= FOPEN_MODEREAD OR FOPEN_MODEBINARY;
END_CASE
MEMSET(ADR (sLineArray[1]),0,100* SIZEOF (sLineArray[1]));
iStep := 10;
END_IF;
(*____________________________________________________*)
10: // Open
fbFileOpen(
sNetId := '',
sPathName := '\Hard Disk\TwinCAT\3.1\Boot\Plc\Port_851\Visu\port_851.errortextlist.txt',
nMode := Var_nMode,
ePath := Var_ePath,
bExecute := VarExecute,
tTimeout := Var_tTimeout);
VarExecute := FALSE;
IF fbFileOpen.bError = FALSE THEN
IF fbFileOpen.bBusy = FALSE THEN
Var_hFile := fbFileOpen.hFile;
fbFileOpen(
sNetId := '',
sPathName := '\Hard Disk\TwinCAT\3.1\Boot\Plc\Port_851\Visu\port_851.errortextlist.txt',
nMode := Var_nMode,
ePath := Var_ePath,
bExecute := FALSE,
tTimeout := Var_tTimeout);
VarExecute := TRUE;
iStep := iReadStep;
ELSE
;
END_IF;
ELSE
fbFileOpen(
sNetId := '',
sPathName := '\Hard Disk\TwinCAT\3.1\Boot\Plc\Port_851\Visu\port_851.errortextlist.txt',
nMode := Var_nMode,
ePath := Var_ePath,
bExecute := FALSE,
tTimeout := Var_tTimeout);
iStep := 1000;
END_IF;
(*____________________________________________________*)
20: // READ
fbFileRead(
sNetId := '',
hFile := Var_hFile,
pReadBuff := ADR(Var_sLine),
cbReadLen := SIZEOF(Var_sLine),
bExecute := VarExecute,
tTimeout := Var_tTimeout);
VarExecute := FALSE;
IF fbFileRead.bError = FALSE THEN
IF fbFileRead.bBusy = FALSE THEN
VarExecute := TRUE;
sCbReadArray[ArraysLinePos] := fbFileRead.cbRead;
sLineArray[ArraysLinePos] := Var_sLine;
fbFileRead(
sNetId := '',
hFile := Var_hFile,
pReadBuff := ADR(Var_sLine),
cbReadLen := SIZEOF(Var_sLine),
bExecute := FALSE,
tTimeout := Var_tTimeout);
IF ArraysLinePos < 100 THEN
ArraysLinePos := ArraysLinePos + 1;
ELSE
iStep := 30;
END_IF;
IF fbFileRead.bEOF = FALSE THEN
;
ELSE
iStep := 30;
END_IF;
ELSE
; //WAIT
END_IF;
ELSE
fbFileRead(
sNetId := '',
hFile := Var_hFile,
pReadBuff := ADR(Var_sLine),
cbReadLen := SIZEOF(Var_sLine),
bExecute := FALSE,
tTimeout := Var_tTimeout);
iStep := 1000;
END_IF;
(*____________________________________________________*)
50: // READ
fbFileGets(
sNetId := '',
hFile := Var_hFile,
bExecute:= VarExecute,
tTimeout:= Var_tTimeout);
VarExecute := FALSE;
IF fbFileGets.bError = FALSE THEN
IF fbFileGets.bBusy = FALSE THEN
sLineArray[ArraysLinePos] := fbFileGets.sLine;
fbFileGets(
sNetId := '',
hFile := Var_hFile,
bExecute:= FALSE,
tTimeout:= Var_tTimeout);
VarExecute := TRUE;
IF ArraysLinePos < 100 THEN
ArraysLinePos := ArraysLinePos + 1;
ELSE
iStep := 30;
END_IF;
IF fbFileGets.bEOF = FALSE THEN
;
ELSE
iStep := 30;
END_IF;
ELSE
;//WAIT
END_IF
ELSE
fbFileGets(
sNetId := '',
hFile := Var_hFile,
bExecute:= FALSE,
tTimeout:= Var_tTimeout);
iStep := 1000;
END_IF;
(*____________________________________________________*)
30: // CLOSE
fbFileClose(
sNetId := '',
hFile := Var_hFile,
bExecute:= VarExecute,
tTimeout:= Var_tTimeout);
VarExecute := FALSE;
IF fbFileClose.bError = FALSE THEN
IF fbFileClose.bBusy = FALSE THEN
fbFileClose(
sNetId := '',
hFile := 0,
bExecute:= FALSE,
tTimeout:= Var_tTimeout);
Var_hFile := 0;
bBusy := FALSE;
iStep := 0;
ELSE
;
END_IF;
ELSE
fbFileClose(
sNetId := '',
hFile := 0,
bExecute:= FALSE,
tTimeout:= Var_tTimeout);
iStep := 1000;
END_IF
(*____________________________________________________*)
1000: // Error
bBusy := FALSE;
bError := TRUE;
iErrID := 1000;
Var_hFile := 0;
iStep := 0;
END_CASE
Leider kommt beim auslesen nur Buchstabengulasch raus....
Am PRG Code zu erkennen habe ich schon mehrere Kombinationen zum Lesen der Datei ausprobiert.
Ich hoffe ich steh einfach nur auf dem "Schlauch".
Vielen Dank für alle Anregungen im voraus!
Grüße Hendrik