CTU

アップカウンタ

ファンクションブロックCTU (count up)で、カウンタのプログラムを作成します。

0から最大値32767に達するまでカウントアップされます。カウントアップCUで立ち上がりエッジが検出されるたびに、現在値CVに1が加算されます。

パラメータ

入力

CU (BOOL)

カウントアップ入力

CU入力で立ち上がりエッジが検出されるたびに、現在値CVに値"1"が加算されます。ただし、R入力がONの場合を除きます。

R (BOOL)

リセット入力

R信号の立ち上がりエッジで、現在値CVは0にリセットされ、カウントが停止します。Qの出力がFALSEにセットされます。

次のR信号の立ち下がりエッジでカウントが再開します。

PV (INT)

設定値

現在値CVが設定値PV以上になると、出力QTRUEにセットされます。

設定値が設定されていない、または設定値が0の場合、Qの出力は、カウント開始直後にTRUEにセットされます。

出力

Q (BOOL)

信号出力

現在値CVが設定値PV以上になると、TRUEになります。

Rで立ち上がりエッジが検出されると、FALSEにセットされます。

CV (INT)

現在値

  • カウンタの加算結果が格納されます。

  • 現在値CVが設定値PVに達すると、出力QTRUEにセットされますが、カウントは最大値32767に達するまで継続されます。

  • プログラミングエディタから値を書き込むことにより、カウント動作中に値を変更することができます。

タイムチャート

POUヘッダ

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

	VAR
		CTU1: CTU;
		bReset: BOOL:=FALSE;
			(*sets CV to zero if TRUE*)
		iPresetValue: INT:=3;
			(*if CV reaches this value,
output Q is set*)
		bUpCounting_PV_reached: BOOL:=FALSE;
			(*is set, if CV reaches PV*)
		iCurrentValue: INT:=0;
			(*contains the current value*)
	END_VAR

POUボディ

bResetがON (TRUE)になると、iCurrentValue (CV)はリセットされます。CUの立ち上がりエッジが検知されると、iCurrentValueに"1"が加算されます。立ち上がりエッジはCUで検出され、この処理は、iCurrentValueiPresetValue以上になるまで繰り返されます。設定値に達すると、bUpCounting_PV_reachedTRUEにセットされます。

LDボディ

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_CONTACT,,sys_bPulse1s,5,2,7,4,);
B(B_FB,CTU!,CTU1,12,1,17,6,,?BCU?BR?BPV?AQ?ACV);
B(B_COIL,,bUpCounting_PV_reached,23,2,25,4,);
B(B_CONTACT,,bReset,5,4,7,6,);
B(B_VAROUT,,iCurrentValue,18,4,20,6,);
B(B_VARIN,,iPresetValue,7,6,9,8,);
L(1,0,1,8);
L(1,3,5,3);
L(7,3,12,3);
L(17,3,23,3);
L(9,4,12,4);
L(9,4,9,5);
L(17,4,17,5);
L(1,5,5,5);
L(7,5,9,5);
L(10,5,12,5);
L(17,5,18,5);
L(10,5,10,7);
L(9,7,10,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

STボディ

CTU1(CU := sys_bPulse1s, R := bReset, PV := iPresetValue,
     Q => bUpCounting_PV_reached, 
	 CV => iCurrentValue);

ILボディ

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