FP_SD_WRITE

Werte auf SD-Karte schreiben

Dieser FP-Befehl liest die durch n_NumberOfDataToWrite festgelegte Anzahl an Werten, die bei der Anfangsadresse s_Start gespeichert sind. Die Werte werden dann in die Datei d1_FullFileName auf der SD-Karte geschrieben. Der strukturierte Datentyp FP_SD_WRITE_DUT in d2_dutWrite legt die Schreibparameter fest.

Parameter

Eingang

s_Start (ANY)

Anfangsadresse

n_NumberOfDataToWrite (WORD, INT, UINT)

Anzahl der zu schreibenden Daten, angegeben vom DUT-Element udiNumberOfDataWritten###

  • Für wFormat=1–8: Anzahl der kommagetrennten 16-Bit-/32-Bit-Daten

  • Für wFormat=10: Anzahl der 8-Bit-Zeichen

  • Für wFormat=11: Anzahl der 16-Bit-Zeichen

d1_FullFileName (STRING)

Dateiname mit Erweiterung, z.B. '\Test.csv'

Ein-/Ausgang

d2_dutWrite (FP_SD_WRITE_DUT)

Schreibformat, Schreibmodus, Zeigerposition usw.

Zeigermodus

Wenn in FP_SD_WRITE_DUT am Eingang s2_dutWrite ein Zeigermodus ausgewählt wurde (wMode=2 oder wMode=3), wird mit dem Schreiben an der Zeigerposition begonnen. Nach dem Schreiben zeigt der Zeiger auf die Position, an der der Schreibvorgang beendet wurde. Der nächste Schreibvorgang beginnt an dieser Stelle. Die Zeigerposition kann auch durch udiBytePosition im strukturierten Datentyp festgelegt werden. Im Beispiel unten werden die Dateizeigerpositionen für verschiedene Datenformate angegeben.

  1.  (1) 16-Bit-INT-Werte (Datei im BIN-Format)
  2.  (2) 16-Bit-INT-Werte (Datei im CSV-Format)
  3.  (3) ASCII-Werte (Datei im CSV-Format)
  4.  (4) Dateizeiger

Anmerkungen

  • 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.

  • Wenn das Dateiattribut schreibgeschützt ist, können keine Werte geschrieben werden.

  • Beim Speichern von ASCII-Werten werden geschriebene Zeichenfolgen durch doppelte Anführungszeichen begrenzt.

  • Ein doppeltes Anführungszeichen (") in Zeichenfolgen wird in zwei doppelte Anführungszeichen ("") umgewandelt.

Fehleralarmmerker

sys_bIsSDMemoryAccessError
  • 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.

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)
  • wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)
  • wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich

Beispiel:

POE-Kopf

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

POE-Rumpf

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.

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 3 ;
        NETWORK_BODY
B(B_COMMENT,,ø^Write string ASCII data into SD card memory - ASCII value,3,0,58,3,);
L(1,0,1,3);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_CONTACT,,bStart,2,1,4,3,R);
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,1,12,3,N);
B(B_F,E_MOVE!,,18,0,24,4,,?DEN?D?AENO?C);
B(B_VARIN,,10,16,2,18,4,);
B(B_VAROUT,,dutFpWriteTest_csv.wFormat,24,2,26,4,);
L(1,2,2,2);
L(4,2,10,2);
L(12,2,18,2);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_VARIN,,sStringWrite,16,2,18,4,);
B(B_CONTACT,,bStart,2,1,4,3,R);
B(B_VARIN,,sFile_Test_Csv,16,4,18,6,);
B(B_VARIN,,dutFpWriteTest_csv,16,5,18,7,);
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,1,12,3,N);
B(B_F,FP_SD_WRITE!,,18,0,31,7,,?DEN?Ds_Start?Dn_NumberOfDataToWrite?Dd1_FullFileName?Dd2_dutWrite?Ad2_dutWrite?AENO);
B(B_VARIN,,iStringLength,16,3,18,5,);
L(1,2,2,2);
L(4,2,10,2);
L(12,2,18,2);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

IF DF(bStart)AND not sys_bIsSDMemoryAccessActive then
    dutFpWriteTest_csv.wFormat:=10;
    FP_SD_WRITE(s_Start := sStringWrite,
                n_NumberOfDataToWrite := iStringLength,
                d1_FullFileName := sFile_Test_Csv,
                d2_dutWrite := dutFpWriteTest_csv);
END_IF;

Letzte Änderung: 2024-03-07Feedback zu dieser SeitePanasonic Hotline