10ms间隔的定时器(0至327.67s)
此定时器以0.01s为单位用作接通延迟定时器。如果功能块的start触点处于ON状态,将启动预置时间SV(设置值)。当经过此时间时,定时器触点T打开。
输入
启动触点
每次检测到上升沿时,设置值SV被复制到经过值EV,且定时器启动
设置值
定义的接通延迟定时器(0至327.67s)
输出
定时器触点
当经过在SV中定义的时间时设置,这意味着当EV变为0时
经过值
当定时器正在运行时,每0.01s减去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(5s后)且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*)