TP

パルスタイマ

ファンクションブロックTPで、定義された持続時間を持つパルスタイマをプログラムすることができます。

パラメータ

入力

IN (BOOL)

パルスジェネレータ入力

INで立ち上がりが検出されると、PTで定義された持続時間のパルスが発生します。

PT (TIME)

持続時間

16ビット値: 0~327.27s

32ビット値: 0~21,474,836.47s (32ビット値は、FP3FPCFP5FP10/10Sでは使用できません。)

単位は10ms

INで立ち上がりが検出されるたびに、PTの持続時間をもつタイマーが開始されます。そのパルスの持続時間内にINで新たな立ち上がりが検出されても、新しいタイマは開始されません。

出力

Q (BOOL)

信号出力

INで立ち上がりが検出されるとすぐに、PTの持続時間の間、出力QはONになります。

ET (TIME)

経過時間

タイマの経過時間が格納されます。PT値がET値と等しくなると、出力QはOFFになります。

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

解説

  • FP2FP2SHFP10SHでは、PTの32ビット値を使用します。

  • IN信号のON時間に関わらず、PTで定義した長さのパルスが出力Qに発生します。入力INで立ち上がりエッジが検出されると、ファンクションブロックTPが実行されます。

  • パルスタイマPTの持続時間中は、入力INの立ち上がりエッジの影響を受けません。

タイムチャート

POUヘッダ

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

	VAR
		copy_name: TP;
		start: BOOL:=FALSE;
		set_value: TIME:=T#0s;
		signal_output: BOOL:=FALSE;
		current_value: TIME:=T#0s;
	END_VAR

POUボディ

startがON (TRUE)になると、パルスタイマ持続時間set_valueが経過するまで、signal_outputはONになります。

LDボディ

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_CONTACT,,start,3,2,5,4,);
B(B_VARIN,,set_value,7,3,9,5,);
B(B_VAROUT,,current_value,14,3,16,5,);
B(B_COIL,,signal_output,21,2,23,4,);
B(B_FB,TP!,copy_name,9,1,14,5,,?BIN?BPT?AQ?AET);
L(1,3,3,3);
L(1,0,1,6);
L(5,3,9,3);
L(14,3,21,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

STボディ

copy_name( IN:= start ,
        PT:= set_value ,
        Q=> signal_output ,
        ET=> current_value );

ILボディ

非常停止とプリセットされた時間の初期化の例

POUヘッダ

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

	VAR
		TP1: TP;
		bIN: BOOL:=FALSE;
		tPT: TIME:=T#30s;
		tET: TIME:=T#0s;
		bQ: BOOL:=FALSE;
		bEmergencyStop: BOOL:=FALSE;
	END_VAR

POUボディ

INで立ち上がりエッジが検出されると、タイマがカウントを開始し、QTRUEにセットされます。持続時間が経過する前にbEmergencyStopTRUEにセットされると、カウントが停止し、出力Qが直ちにリセットされます。タイマは、持続時間PT (この例では30秒)で初期化されます。

LDボディ

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_F,E_MOVE!,,16,0,22,4,,?DEN?D?AENO?C);
B(B_VARIN,,tPT,14,2,16,4,);
B(B_VAROUT,,TP1.ET,22,2,24,4,);
B(B_CONTACT,,TP1.Q,12,1,14,3,);
B(B_CONTACT,,bEmergencyStop,7,1,9,3,);
L(14,2,16,2);
L(1,2,7,2);
L(9,2,12,2);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_VARIN,,tPT,14,3,16,5,);
B(B_VAROUT,,tET,21,3,23,5,);
B(B_CONTACT,,bIN,7,2,9,4,);
B(B_COIL,,bQ,33,2,35,4,);
B(B_FB,TP!,TP1,16,1,21,5,,?BIN?BPT?AQ?AET);
B(B_CONTACT,,bEmergencyStop,27,2,29,4,N);
L(1,3,7,3);
L(9,3,16,3);
L(29,3,33,3);
L(21,3,27,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

STボディ

if (bEmergencyStop AND TP1.Q) then
    TP1.ET:=tPT;
end_if;
TP1(IN := bIN, PT := tPT, ET => tET);
bQ := NOT bEmergencyStop AND TP1.Q;

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