TP

带有定义周期的定时器

通过功能块TP可使用定义的时钟周期编程脉冲定时器。

参数

输入

IN (BOOL)

时钟发生器

如果在IN检测到上升沿,将生成具有PT中定义周期的时钟

PT (TIME)

时钟周期

16位值:0~327.27s

32位值:0~21,474,836.47s (不可用于FP3FPCFP5FP10/10S的32位值)

每个分辨率10ms

IN中的各个上升沿产生具有周期PT的定时器。在脉冲周期内在IN检测到的新上升沿不会产生新的定时器。

输出

Q (BOOL)

比较输出信号

只要在IN检测到上升沿,即对PT的周期设置

ET (TIME)

经过时间

包含定时器的经过周期。如果PT = ETQ将复位

通过从编程编辑器写入变量,可以在计数操作过程中改变数值。

标注

  • FP2FP2SHFP10SHPT使用32位值。

  • 独立于IN信号的打开周期,在具有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(状态 = TRUE),将在signal_output产生时钟,直到达到时钟周期的set_value

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的上升沿之后,定时器开始计数且Q设置为TRUE。当在经过时钟周期之前bEmergencyStop设置为TRUE时,计数停止且输出Q立即复位。在此例中,以30s的时钟周期PT初始化定时器。

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;

最后更新日期: 此页面上的反馈松下热线