FP_SD_READ_BIN

Leggere i dati binari dalla SD memory card

Questa istruzione FP legge il numero di parole specificate da n_Words dal file di formato binario specificato dal numero di file s_FileNumber sulla SD memory card. Il nome della directory è \data e il nome del file è dtxxx.bin laddove "xxx" è il numero del file. Il risultato viene memorizzato nell'area specificata da d_Start. Il codice ASCII richiede 8 bit (1 byte) per esprimere 1 carattere BCD. Dopo la conversione in ASCII, la lunghezza del dato sarà quindi doppia rispetto alla lunghezza del dato source.

Parametri

Ingresso

s_FileNumber (WORD, INT, UINT)

Numero file (0–999)

n_Words (WORD, INT, UINT)

Numero di parole (0–65535)

Uscita

d_Start (WORD, INT, UINT)

Indirizzo iniziale

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.

  • Non leggere i dati dall’area di uscita fino a che l’esecuzione dell’istruzione non è stata completata.

  • Se non è presente una directory \data o se non ci sono fili con il numero di file specificato nella directory, si verifica un errore.

  • Se il numero dei dati nel file è inferiore rispetto al numero di dati da leggere, i dati vengono letti fino al numero di dati presenti nel file.

Flag di errore

sys_bIsSDMemoryAccessError
  • FALSE: quando l’istruzione è stata completata senza errori

  • TRUE: quando l’istruzione è stata completata 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

DUT

Con un tipo unità dati (DUT) è possibile definire un tipo unità dati composto da altri tipi di dati. Una DUT è definita prima di tutto nel gruppo DUT e poi elaborata come i tipi di dati standard (BOOL, INT, ecc.) nella lista delle variabili globali o nell'intestazione del POU.

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*)
		dutValuesRead: DUT_VALUES;
		iFileNumberDut: INT:=2;
	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

eneral">BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 9 ;
        NETWORK_BODY
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,2,12,4,N);
B(B_CONTACT,,bStart,2,2,4,4,R);
B(B_VARIN,,iFileNumberDut,14,5,16,7,);
B(B_F,FP_SD_READ_BIN!,,16,3,27,8,,?DEN?Ds_FileNumber?Dn_Words?AENO?Cd_Start);
B(B_F,Size_Of_Var!,,9,6,16,8,,?D?C);
B(B_VARIN,,dutValuesRead,7,6,9,8,);
B(B_F,Adr_Of_Var_O!,,27,5,35,7,,?D?C);
B(B_VAROUT,,dutValuesRead,35,5,37,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,9);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corpo ST

IF DF(bStart)AND not sys_bIsSDMemoryAccessActive then
    FP_SD_READ_BIN(s_FileNumber := iFileNumberDut,
                   n_Words := Size_Of_Var(dutValuesRead),
                   d_Start => Adr_Of_Var(dutValuesRead));
END_IF;

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