Eine Zeile in eine Datei auf der SD-Karte schreiben
Dieser FP-Befehl schreibt die durch s_In festgelegte Zeichenfolge in die Datei d_FullFileName auf der SD-Karte.
Eingang
Zeichenfolge
Dateiname
Beachten Sie auch die Vorsichtsmaßnahmen für den SD-Kartenzugriff.
Der Merker "SD-Kartenzugriff aktiv" (sys_bIsSDMemoryAccessActive) wird auf TRUE gesetzt, nachdem der Trigger EN des SD-Kartenbefehls auf TRUE gesetzt wurde, und bleibt TRUE, bis die Ausführung beendet wurde. In dieser Zeit lassen sich keine anderen SD-Kartenbefehle ausführen.
Der Merker "SD-Kartenzugriff beendet" (sys_blsSDMemoryAccessDone) ist auf FALSE gesetzt, während der Befehl ausgeführt wird. Er wird auf TRUE gesetzt und bleibt TRUE, sobald die Ausführung beendet wurde.
Falls die angegebene Datei nicht vorhanden ist, wird eine neue Datei angelegt.
FALSE: Der Befehl wurde fehlerfrei ausgeführt.
TRUE: Bei der Ausführung des Befehls ist ein Fehler aufgetreten.
Werten Sie den Fehlercode mit sys_iSDMemoryAccessErrorCode aus.
wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR
bStart: BOOL:=FALSE;
(*activates the instruction*)
sStringWrite1: STRING[32]:='Test String1';
END_VAR
Wenn die Variable bStart von FALSE auf TRUE gesetzt wird und die Systemvariable sys_bIsSDMemoryAccessActive nicht auf TRUE gesetzt ist, wird die Funktion ausgeführt.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,sStringWrite1,11,4,13,6,);
B(B_CONTACT,,bStart,2,1,4,3,R);
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,1,12,3,N);
B(B_VARIN,,'\TestLine.csv',11,5,13,7,);
B(B_F,FP_SD_WRITE_LINE!,,13,2,23,7,,?DEN?Ds_In?Dd_FullFileName?AENO);
L(1,2,2,2);
L(4,2,10,2);
L(12,2,12,4);
L(12,4,13,4);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(bStart)AND not sys_bIsSDMemoryAccessActive then
FP_SD_WRITE_LINE(s_In := sStringWrite1,
d_FullFileName := '\TestLine.csv');
END_IF;
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden.
VAR
i: INT:=0;
asDumpString: ARRAY [0..99] OF STRING[32]:=['1','2','3','4','5','6','7','8',89(''),'z','y','z'];
dutWriteInfo: FP_SD_WRITE_DUT(wFormat:=11,wMode:=1);
sDumpString: STRING[3500]:='';
(*100 * 32 character + separator*)
bDumpStringArrayToSDCard: BOOL:=FALSE;
bStoreStringToSDCardFile: BOOL:=FALSE;
END_VAR
if (bDumpStringArrayToSDCard AND not(bStoreStringToSDCardFile)) then
bDumpStringArrayToSDCard := FALSE;
(* Convert string array to single string *)
sDumpString := '';
for i := 0 to Elem_OfArray1D(asDumpString) -1 do
sDumpString := CONCAT(sDumpString, asDumpString[i], ','); (* delimiter , OR ; *)
end_for;
sDumpString := DELETE(IN := sDumpString, L := 1, P := LEN(sDumpString));
bStoreStringToSDCardFile := TRUE; (* Enable store to SD card *)
end_if;
if (bStoreStringToSDCardFile AND not(sys_bIsSDMemoryAccessActive)) then
FP_SD_WRITE_LINE(s_In := sDumpString, d_FullFileName := 'Test.csv');
bStoreStringToSDCardFile := FALSE;
end_if;