FP_FIFO_DEFINE

Definisci area buffer FIFO

Questa istruzione FP specifica l'area iniziale d_Start per il buffer FIFO (First-In-First-Out) e la capacità memoria n_Words del buffer FIFO.

Parametri

Ingresso

n_Words (WORD, INT, UINT)

Specifica la capacità di memoria del buffer

Valori: 1–4096

Uscita

d_Start (WORD, INT, UINT)

Area dati iniziale del buffer

Note

Formato del buffer di dati

  1.  (1) Dimensione del buffer
  2.  (2) Numero di dati memorizzati
  3.  (3) Puntatore di lettura
  4.  (4) Puntatore di scrittura
  5.  (5) Area buffer dati (non cancellata)

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)
  • se un valore specificato per un parametro è fuori dall'intervallo utilizzabile.

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)
  • se un valore specificato per un parametro è fuori dall'intervallo utilizzabile.

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
		bDefineBuffer: BOOL:=FALSE;
		dutTestError: BOOL32_OVERLAPPING_DUT;
		iWords: INT:=8;
		arrFifo: ARRAY [0..11] OF INT:=[12(0)];
	END_VAR

Corpo del POU

Quando la variabile bDefineBuffer è impostata su TRUE, la funzione viene eseguita.

Corpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_F,E_NE!,,13,2,19,7,,?DEN?D?D?AENO?C);
B(B_VARIN,,iWords,11,4,13,6,);
B(B_VARIN,,arrFifo[0],11,5,13,7,);
B(B_VAROUT,,dutTestError.b0,19,4,21,6,);
B(B_CONTACT,,bDefineBuffer,5,3,7,5,);
B(B_COMMENT,,Check the Buffer size,2,1,13,2,);
L(7,4,13,4);
L(1,4,5,4);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_F,FP_FIFO_DEFINE!,,13,1,22,5,,?DEN?Dn_Words?AENO?Cd_Start);
B(B_VARIN,,iWords,11,3,13,5,);
B(B_VAROUT,,arrFifo[0],22,3,24,5,);
B(B_CONTACT,,bDefineBuffer,5,2,7,4,);
L(7,3,13,3);
L(1,3,5,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corpo ST

if (bDefineBuffer) then    
    FP_FIFO_DEFINE(n_Words := iWords, d_Start => arrFifo[0]);
        (* Check the Buffer size *)
        dutTestError.b0 := arrFifo[0] <> iWords;
end_if;

L'ultima revisione: 2022-11-14Feedback su questa paginaPanasonic hotline