CT_FB

降值计数器

使用CT_FB功能块实现的计数器为降值计数器。计数区域SV(设置值)为1至32767。

参数

输入

Count (BOOL)

计数触点(降值)

每次在Count检测到上升沿时,从经过值EV减去数值1,直到达到数值0

Reset (BOOL)

复位触点

每次在Reset检测到上升沿时,数值0被分配到EV,且比较输出信号C复位;每次在Reset检测到下降沿时,SV中的值被分配到EV

SV (INT)

设置值

复位程序后EV的值

输出

C (BOOL)

比较输出信号

EV变为0时设置

EV (INT)

经过值

  • 当前计数器值

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

标注

  • 为了正常工作,CT_FB功能块每次在使用前都需要复位。

  • 可用计数器的数量受限并取决于系统寄存器5和6中的设置。编译器为每个计数器实例分配一个NUM*地址。地址从最大可能的地址开始向下计数进行分配。

  • 基本FUNCT(降值计数器)使用相同的NUM*地址区域(Num输入)。为了避免错误(地址冲突),不能在一个项目中同时使用CT函数和CT_FB功能块。

时间图

  1.  (1) 下载PROG模式
  2.  (2) RUN模式

示例

POU头

所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。

	VAR
		copy_name: CT_FB;
		set_value: INT:=10;
		signal_output: BOOL:=FALSE;
		count_contact: BOOL:=FALSE;
		Reset_CT: BOOL:=FALSE;
		machine_error: BOOL:=FALSE;
		number_error: INT:=0;
	END_VAR

POU本体

此例使用变量。也可以使用常量用于输入变量。每次在count_contact检测到上升沿时,从经过值EV减去数值1。如果经过值EV变为0,则Signal_output设置为TRUE

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_FB,CT_FB!,copy_name,9,1,15,6,,?BCount?BReset?BSV?AC?AEV);
B(B_VARIN,,count_contact,7,2,9,4,);
B(B_VARIN,,Reset_CT,7,3,9,5,);
B(B_VARIN,,set_value,7,4,9,6,);
B(B_VAROUT,,signal_output,15,2,17,4,);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_F,E_MOVE!,Instance,10,1,16,5,,?DEN?D?AENO?C);
B(B_VARIN,,copy_name.EV,8,3,10,5,);
B(B_VAROUT,,number_error,16,3,18,5,);
B(B_CONTACT,,machine_error,4,2,6,4,);
L(1,3,4,3);
L(6,3,10,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

IL本体

如果要调用指令列表中的功能块,请输入以下内容:

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