FP_FIFO_DEFINE

FIFOバッファエリアの定義

このFP命令は、FIFO (ファーストイン/ファーストアウト)バッファの先頭エリアd_Startとメモリサイズn_Wordsを指定します。

パラメータ

入力

n_Words (WORD, INT, UINT)

バッファのメモリサイズを指定します

値: 1~4096

出力

d_Start (WORD, INT, UINT)

バッファの先頭データエリア

解説

データバッファのフォーマット

  1.  (1) バッファサイズ
  2.  (2) 格納されるデータ数
  3.  (3) 読み出しポインタ
  4.  (4) 書き込みポインタ
  5.  (5) データバッファエリア(クリアされない)

エラーフラグ

sys_bIsOperationErrorHold (TRUEになり、TRUEを保持)
  • パラメータに指定された値が許容範囲外の場合。

sys_bIsOperationErrorNonHold (1回のスキャンに対してTRUE)
  • パラメータに指定された値が許容範囲外の場合。

POUヘッダ

POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。POUヘッダは全プログラム言語で使用できます。

	VAR
		bDefineBuffer: BOOL:=FALSE;
		dutTestError: BOOL32_OVERLAPPING_DUT;
		iWords: INT:=8;
		arrFifo: ARRAY [0..11] OF INT:=[12(0)];
	END_VAR

POUボディ

変数bDefineBufferTRUEにセットされると、このファンクションが実行されます。

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

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;

最終修正日: 2022-10-18このページに関するフィードバックお問い合わせ窓口