FP_SD_WRITE

Scrivere i dati sulla SD memory card

Questa istruzione FP legge il numero dei dati specificati da n_NumberOfDataToWrite memorizzati all’indirizzo che inizia con s_Start, e scrive i dati sul file specificato da d1_FullFileName sulla scheda SD. La DUT FP_SD_WRITE_DUT su d2_dutWrite specifica i parametri di scrittura.

Parametri

Ingresso

s_Start (ANY)

Indirizzo iniziale

n_NumberOfDataToWrite (WORD, INT, UINT)

Numero di dati da scrivere, specificato dal membro DUT udiNumberOfDataWritten

  • Per wFormat=1–8: Numero di dati a 16 bit/32 bit separati da virgola

  • Per wFormat=10: Numero di caratteri a 8 bit

  • Per wFormat=11: Numero di dati a 16 bit

d1_FullFileName (STRING)

Nome del file con estensione p.es. '\Test.csv'

Ingresso/uscita

d2_dutWrite (FP_SD_WRITE_DUT)

Formato di scrittura, modalità scrittura, posizione puntatore, eccetera.

Modalità puntatore

Se la modalità puntatore è stata selezionata in FP_SD_WRITE_DUT su s2_dutWrite (wMode=2 or wMode=3), la scrittura viene avviata alla posizione del puntatore. Dopo la scrittura, il puntatore si sposta alla posizione in cui è stata completata la scrittura. L’operazione di scrittura successiva partirà da questo punto. La posizione del puntatore può essere anche specificata dalla udiBytePosition nella DUT. Nell’esempio sottostante, le posizioni del puntatore file vengono indicate per diversi formati di dati.

  1.  (1) Dati INT a 16 bit (formato file BIN)
  2.  (2) Dati INT a 16 bit (formato file CSV)
  3.  (3) Dati ASCII (file formato CSV)
  4.  (4) Puntatore file

Note

  • Fare riferimento anche alle precauzioni per l’accesso alla SD card.

  • Il flag accesso memoria SD attivo (sys_bIsSDMemoryAccessActive) passa a TRUE dopo che il trigger EN dell’istruzione di accesso alla memoria SD è passata a TRUE e resta TRUE fino al completamento dell’esecuzione. Durante questo periodo non è possibile eseguire altre istruzioni di accesso alla memoria SD.

  • Il flag accesso memoria SD eseguito (sys_blsSDMemoryAccessDone) è FALSE quando l’istruzione viene eseguita e passa a TRUE e resta TRUE quando l’istruzione è stata completata.

  • Quando l’attributo del file è in sola lettura, non è possibile scrivere dati.

  • Al momento di salvare i dati ASCII, le stringhe di caratteri scritte vengono racchiuse tra virgolette doppie.

  • Le virgolette doppie (") nelle stringhe di caratteri vengono convertite in due virgolette doppie ("").

Flag di errore

sys_bIsSDMemoryAccessError
  • FALSE: quando l'istruzione si è conclusa senza errori

  • TRUE: quando l'istruzione si è conclusa con un errore

  • Utilizzare sys_iSDMemoryAccessErrorCode per valutare il codice di errore.

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)
  • se l'area specificata utilizzando il registro indice eccede il limite.

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)
  • se l'area specificata utilizzando il registro indice eccede il limite.

Esempio

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU.La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	VAR
		bStart: BOOL:=FALSE;
			(*activates the instruction*)
		sStringWrite1: STRING[32]:='Test String1';
	END_VAR

Corpo del POU

Quando la variabile bStart passa da FALSE a TRUE e la variabile di sistema sys_bIsSDMemoryAccessActive non è TRUE, la funzione viene svolta.

Corpo LD

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

Corpo ST

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;

L'ultima revisione: 2024-03-07Feedback su questa paginaPanasonic hotline