Binärdaten auf SD-Karte schreiben
Dieser FP-Befehl liest Binärdaten aus einem durch s_Start und n_Words festgelegten Speicherbereich. Die Daten werden dann in eine durch d_FIleNumber festgelegte Binärdatei auf der SD-Karte geschrieben. Der Verzeichnisname lautet \data und der Dateiname lautet dtxxx.bin, wobei "xxx" für die Dateinummer steht.
Eingang
Anfangsadresse
Anzahl der Worte
Ausgang
Dateinummer (0–999)
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.
Achten Sie darauf, dass sys_bIsSDMemoryAccessDone auf FALSE gesetzt ist.
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 der angegebene Ordner nicht vorhanden ist, wird ein neuer Ordner angelegt.
Wenn die Datei bereits vorhanden ist, wird sie überschrieben.
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
Mit einem strukturierten Datentyp (SDT) können zusammengesetzte Datentypen definiert werden. Ein SDT wird zunächst im SDT-Pool angelegt und dann wie die Standardtypen (BOOL, INT usw.) in der globalen Variablenliste oder im POE-Kopf verarbeitet.
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*)
dutValuesWrite: DUT_VALUES:=iValue := -32768,uiValue := 65535,diValue := -2157492,udiValue := 2333422234,rValue := 27.02,arrValue := [16#0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],sStringValue := 'Test String 25 characters';
iFileNumberDut: INT:=2;
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 := 11 ;
NETWORK_BODY
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,2,12,4,N);
B(B_CONTACT,,bStart,2,2,4,4,R);
B(B_F,FP_SD_WRITE_BIN!,,16,3,27,8,,?DEN?Ds_Start?Dn_Words?AENO?Cd_FileNumber);
B(B_VAROUT,,iFileNumberDut,27,5,29,7,);
B(B_F,Adr_Of_Var_I!,,9,5,16,7,,?D?C);
B(B_VARIN,,dutValuesWrite,7,5,9,7,);
B(B_F,Size_Of_Var!,,9,6,16,8,,?D?C);
L(9,6,9,7);
L(1,3,2,3);
L(4,3,10,3);
L(12,3,12,5);
L(12,5,16,5);
L(1,0,1,11);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(bStart)AND not sys_bIsSDMemoryAccessActive then
FP_SD_WRITE_BIN(s_Start := Adr_Of_Var(dutValuesWrite),
n_Words := Size_Of_Var(dutValuesWrite),
d_FileNumber => iFileNumberDut);
END_IF;