CTU

升值计数器

功能块CTU(正计数)可用于编程计数程序。

递增计数从零开始,直到达到最大值32767为止。递增计数CU端每检测到一个上升沿,在当前值CV的基础上加1。

参数

输入

CU (BOOL)

正计数

对于CU的每个上升沿,CV会增加数值1,除非设置了R

R (BOOL)

复位(R)

R端检测到上升沿时,当前值CV复位至零并停止计数。输出Q设置为FALSE

R端检测到下一个下降沿时,重新开始计数。

PV (INT)

预置值

如果CV等于/大于PV,则Q设置为TRUE

如果未设置预置值或预置值为零,则输出Q在计数开始后将立即被设置为TRUE

输出

Q (BOOL)

比较输出信号

设置为TRUE,如果CV大于/等于PV

设置为FALSE,如果R端检测到上升沿

CV (INT)

当前值

  • 包含加法结果

  • 如果CV达到预设值PV,则输出Q设置为TRUE,但计数将继续,直到达到最大限值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(状态 = TRUE),则复位iCurrentValue(CV)。如果在CU检测到上升沿,iCurrentValue将增加数值1。如果在CU检测到上升沿,则会重复此程序直到iCurrentValue大于/等于iPresetValue。然后,bUpCounting_PV_reached将设置为TRUE

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本体

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