10msオンディレイタイマ(0~327.67s)
0.01秒タイマは、オンディレイタイマとして動作します。ファンクションブロックのstart接点がONのとき、プリセットされた時間SV (設定値)の計時が開始されます。この設定時間が経過すると、タイマ接点TがONになります。
入力
スタート入力
立ち上がり検出毎に、設定値SVの値が経過値エリアEVにコピーされ、タイマを開始します。
設定値
定義されたオンディレイタイマ(0~327.67s)
出力
タイマ接点
SVで設定された時間が経過すると(EVが0になると)セットされます。
経過値
タイマ動作中、0.01秒毎に1が減算されるカウント値
プログラミングエディタから値を書き込むことにより、カウント動作中に値を変更することができます。
使用可能なタイマ数には制限があり、システムレジスタ5、6の設定により変化します。
タイマファンクションブロックでは、コンパイラがすべてのタイマインスタンスにNUM*アドレスを自動的に割り当てます。アドレスは、割り付けできる最大アドレスから順に割り付けられます。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR
Alarm_control: TM_10ms_FB;
Start_contact: BOOL:=FALSE;
Alarm_Relay_1: BOOL:=FALSE;
Alarm_Relay_2: BOOL:=FALSE;
END_VAR
この例では、変数を使用しています。入力変数に定数を使用することもできます。
変数Start_contactがTRUEになるとすぐに、タイマAlarm_controlの計時が開始されます。タイマの変数EVは、SVの値に設定されます。Start_contactがTRUEになっている間は、10ms毎にEVから"1"が減算されます。EVの値が"0"になると(TM_10ms_FBタイマではSV = 1000なので10秒後に)、変数Alarm_Relay_2がTRUEになります。
タイマの変数EVの値が500 (5秒後)以下でEVが0でないときは直ちに、Alarm_Relay_1がTRUEにセットされます。
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,Start_contact,8,3,10,5,);
B(B_VARIN,,1000,8,4,10,6,);
B(B_VAROUT,,Alarm_Relay_2,20,3,22,5,);
B(B_FB,TM_10ms_FB,Alarm_control,10,2,19,6,,?Bstart?BSV?AT?AEV);
L(1,0,1,8);
L(19,4,20,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_F,@LE-2!,Instance,11,0,16,3,,?D?D?C);
B(B_VARIN,,Alarm_control.EV,9,0,11,2,);
B(B_VARIN,,500,9,1,11,3,);
B(B_F,@NE!,Instance,11,5,16,8,,?D?D?C);
B(B_VARIN,,0,9,6,11,8,);
B(B_VARIN,,Alarm_control.EV,9,5,11,7,);
B(B_F,@AND-2!,Instance,20,2,25,5,,?D?D?C);
B(B_VAROUT,,Alarm_Relay_1,25,2,27,4,);
L(16,1,17,1);
L(17,1,17,3);
L(17,3,20,3);
L(17,4,20,4);
L(17,4,17,6);
L(16,6,17,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
Alarm_Control( start:= Start_Contact ,
SV:= 1000,
T=> Alarm_Relay_2 ,
EV=> Alarm_Control.EV );
(*The ON-delay time is 10s*)
Alarm_Relay_1:= Alarm_Control.EV <= 500 & Alarm_Control.EV <> 0;
(*Alarm_Relay_1 is set to TRUE after 5s*)