写入高速计数器控制代码

存储高速计数器和脉冲输出控制代码的特殊数据寄存器,可通过系统变量sys_wHscOrPulseControlCode访问。系统变量sys_wHscOrPulseControlCode对应于特殊数据寄存器DT90052

由高速计数器控制代码执行的操作

可使用系统变量sys_wHscChannelxControlCodesys_wPulseChannelxControlCode(其中x=通道编号)监控每个通道的控制代码设置。在执行另一个设置操作之前,此系统变量的设置保持不变。

取消高速计数器指令(第3位)

若要取消指令执行,将存储高速计数器控制代码(sys_wHscOrPulseControlCode)的数据寄存器的第3位设置为TRUE。然后高速计数器控制标志变为FALSE。若要重新启用执行高速计数器指令,请将第3位复位至FALSE

启用/禁用高速计数器的复位输入(硬件复位)(第2位)

X0高速计数器输入

  1.  (1) 经过值
  2.  (2) 高速计数器控制代码的第2位(启用/禁用复位输入)
  3.  (3) 经过值复位至0
  4.  (4) 无法复位

当控制代码的第2位设置为TRUE时,无法使用系统寄存器中指定的复位输入进行硬件复位。即使复位输入已变为TRUE,也将继续计数。在第2位复位至0之前,禁用硬件复位。

启用/禁用计数操作(第1位)

计数输入控制操作

X0高速计数器输入

  1.  (1) 经过值
  2.  (2) 高速计数器控制代码的第1位(计数)

当控制代码的第1位设置为TRUE时,禁止计数且经过值保持为其当前值。当第1位复位至FALSE时,计数继续。

将高速计数器的经过值(软件复位)复位至0(第0位)

X0高速计数器输入

  1.  (1) 经过值
  2.  (2) 高速计数器控制代码的第0位(软件复位)

当控制代码的第0位设置为TRUE时,执行软件复位且经过值设置为0。经过值保持为值0,直到第0位复位至FALSE为止。

FP-Sigma、FP-X、FP0R的描述

控制代码的第0~15位以4个为一组进行分配。每组中的位设置由十六进制数表示(例如00020000 0000 1001 = 16#2009)。

  1.  (1) 通道编号(通道n16#n
  2.  (2) 取消高速计数器指令(第3位)

    0:继续/1:取消

  3.  (3) 复位输入(第2位)(参见摘要)

    0:启用/1:禁用

  4.  (4) 计数(第1位)

    0:允许/1:禁止

  5.  (5) 将经过值复位至0(第0位)

    0:否/1:是

例如:16#2009

数值

描述

IV

2

通道编号: 2

III

0

(固定)

II

0

(固定)

I

9

十六进制9对应于二进制1001

取消高速计数器指令(第3位):取消(第3位)

1

复位输入:启用(第2位)

0

计数:允许(第1位)

0

将经过值复位至0:是(第0位)

1

FP0、FP-e的描述

控制代码的第0-15位以4个为一组分配,每个组包含一个通道的设置。每组中的位设置由十六进制数表示(例如0000 0000 1001 0000 = 16#90)。

  1.  (1) 取消高速计数器指令(第3位)(第3位)

    0:继续/1:取消

  2.  (2) 复位输入(第2位)(参见摘要)

    0:启用/1:禁用

  3.  (3) 计数(第1位)

    0:允许/1:禁止

  4.  (4) 将经过值复位至0(第0位)

    0:否/1:是

IV

III

II

I

通道

3

2

1

0

例如:16#90

数值

描述

IV

0

III

0

II

9

通道编号: 1

十六进制9对应于二进制1001

取消高速计数器指令(第3位):取消(第3位)

1

复位输入:启用(第2位)

0

计数:允许(第1位)

0

将经过值复位至0:是(第0位)

1

I

0

注释

将复位输入设置为TRUE,将经过值设置为0使用复位输入设置(第2位)禁用系统寄存器中分配的复位输入。

例如:通道0的软件重设

POU头

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

	VAR
		bSoftwareReset: BOOL:=FALSE;
			(*Activates the function*)
	END_VAR
	VAR CONSTANT 
		HSC_CH0_RESET_ELAPSED_VALUE: WORD:=16#0001;
			(*Resets elapsed value of channel 0*)
		HSC_CH0_CONTINUE: WORD:=16#0000;
			(*Continues counting in channel 0*)
	END_VAR
	VAR 
	END_VAR

POU本体

在步骤1中执行复位,并且在步骤2之后输入0以开始计数。仅复位不会开始计数。

LD本体

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,,HSC_CH0_RESET_ELAPSED_VALUE,22,2,24,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH0_CONTINUE,22,6,24,8,);
B(B_F,E_MOVE!,Instance,24,0,30,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,2,32,4,);
B(B_F,E_MOVE!,Instance,24,4,30,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,6,32,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,24,2);
L(8,6,24,6);
L(8,2,8,6);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

if DF(bSoftwareReset) then
    sys_wHscOrPulseControlCode:=HSC_CH0_RESET_ELAPSED_VALUE;
    sys_wHscOrPulseControlCode:=HSC_CH0_CONTINUE;
end_if;

例如:通道1的软件重设(FP-SIGMAFP-XFP0R

POU头

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

	VAR
		bSoftwareReset: BOOL:=FALSE;
			(*Activates the function*)
	END_VAR
	VAR CONSTANT 
		HSC_CH1_RESET_ELAPSED_VALUE: WORD:=16#1001;
			(*Resets elapsed value of channel 1*)
		HSC_CH1_CONTINUE: WORD:=16#1000;
			(*Continues counting in channel 1*)
	END_VAR
	VAR 
	END_VAR

POU本体

在步骤1中执行复位,并且在步骤2之后输入0以开始计数。仅复位不会开始计数。

LD本体

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,,HSC_CH1_RESET_ELAPSED_VALUE,24,2,26,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH1_CONTINUE,24,6,26,8,);
B(B_F,E_MOVE!,Instance,26,0,32,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,2,34,4,);
B(B_F,E_MOVE!,Instance,26,4,32,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,6,34,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,26,2);
L(1,0,1,8);
L(8,6,26,6);
L(8,2,8,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

if DF(bSoftwareReset) then
    sys_wHscOrPulseControlCode:=HSC_CH1_RESET_ELAPSED_VALUE;
    sys_wHscOrPulseControlCode:=HSC_CH1_CONTINUE;
end_if;

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