S7-1200 V4.2 CPU 高速计数器

S7-1200产品从固件版本V4.2起新增了高速计数器的门功能、同步功能、捕获功能、比较功能,该功能通过CTRL_HSC_EXT扩展高速计数器指令实现。

其他高速计数性能与V4.1 固件版本完全兼容,具体可参见“S7-1200 V4.1高速计数器特性”内容。

CTRL_HSC 高速计数器组态及编程

S7-1200产品固件版本V4.2也可以使用 CTRL_HSC 高速计数器功能。

高速计数器寻址,事件组态和指令使用,请参考以下章节:

高速计数器组态及编程

CTRL_HSC_EXT 扩展高速计数器组态及编程

S7-1200产品从固件版本V4.2起新增了门功能、同步功能、捕获功能、比较功能,这些功能通过 CTRL_HSC_EXT 扩展高速计数器指令实现。

CTRL_HSC_EXT 扩展高速计数器指令

在博途软件集成的工艺指令文件夹中可以找到CTRL_HSC_EXT指令,如图1,图2所示。该指令各参数含义请参考表1。

图1 指令文件夹

 

图2 CTRL_HSC_EXT指令

参数 声明 数据类型 描述
HSC IN HW_HSC HSC 标识符
CTRL IN_OUT Variant SFB 输入和返回数据,支持HSC_Count、HSC_Period 和HSC_Frequency数据类型
DONE OUT Bool =1 表示SFB已完成
BUSY OUT Bool 始终为 0
ERROR OUT Bool =1 表示错误
STATUS OUT Word 执行条件代码

表1 CTRL_HSC_EXT各参数含义

CTRL_HSC_EXT 扩展高速计数器指令-周期测量

周期测量请参考以下章节:

S7-1200 V4.1高速计数器特性

CTRL_HSC_EXT 扩展高速计数器指令-频率测量

1 硬件组态,计数类型选择频率,设定频率测量周期,如图3所示。

图3 频率组态

2 建立全局DB块,并建立数据类型为HSC_Frequency的变量,如图4所示。

图4 HSC_Frequency数据

3 在OB1里调用指令块 CTRL_HSC_EXT,如图5所示。

图5 调用CTRL_HSC_EXT

4 使用脉冲发生器,发送频率为1kHz的脉冲信号,使能高速计数器,并监控频率值,如图6所示。

图6 监控频率值

注意:将HSC配置成频率模式时调用CTRL_HSC/CTRL_HSC_EXT指令不是必须的。只要在硬件配置里使能并组态高速计数器即可正常计数,ID1000的值即为HSC1的频率值。

CTRL_HSC_EXT 扩展高速计数器指令-计数

1 硬件组态,计数类型选择计数,工作模式选择单相,如图7所示。

图7 计数组态

2 建立DB块,并建立数据类型为HSC_Count的变量,如图8所示。

图8 HSC_Count数据

3 在OB1里调用指令块 CTRL_HSC_EXT,如图9所示。

图9 调用CTRL_HSC_EXT

4 使用脉冲发生器,发送频率为1kHz的脉冲信号,使能高速计数器,并监控计数值,如图10所示。

图10 监控计数值

注意:将HSC配置成计数模式时调用CTRL_HSC/CTRL_HSC_EXT指令不是必须的。只要在硬件配置里使能并组态高速计数器即可正常计数,ID1000的值即为HSC1的计数值。

门功能

许多应用需要根据其他事件的情况来开启或关闭计数程序。出现这类情况时,便会通过内部门功能来开启或关闭计数。每个 HSC通道有两个门:软件门和硬件门。这些门的状态将决定内部门的状态。如图11所示。

图11 门功能状态

如果软件门和硬件门都处于打开状态或尚未进行组态,则内部门会打开。如果内部门打开,则开始计数。如果内部门关闭,则会忽略其他所有计数脉冲,且停止计数。如图12所示。

图12 内部门与计数器值

硬件门组态,如图13所示。

图13 硬件门组态

打开数据类型为HSC_Count的变量,软件门为HSC_Count.EnHSC,如图14所示。

图14 软件门

注意:硬件门功能仅可用在组态计数模式的HSC时使用。在"周期"和"频率"模式下,内部门的状态与软件门的状态相同。

在周期模式下,通过"HSC_Period.EnHSC"控制软件门。

在频率模式下,通过"HSC_Frequency.EnHSC"控制软件门。

同步功能

同步功能可通过外部输入信号给计数器设置起始值。也可通过执行 CTRL_HSC_EXT指令对起始刻度值进行更改。这样,用户可以将当前计数值与所需的外部输入信号出现值同步,同步示例如图15所示。

图15 同步示例

硬件组态,如图16所示。

图16 同步输入组态

打开数据类型为HSC_Count的变量,软件门为HSC_Count.EnSync,如图17所示。

图17 软件同步信号

注意:CPU启动后,HSC计数值=组态页面中的“初始计数器值”

如果未启用EN_SV, “起始值”=0,如果调用了CTRL_HSC_EXT指令并启用了EN_SV, “起始值” =NewStartValue

在内部门关闭后同步仍然有效。内部门为0,EN_SYNC=1,启用外部同步输入,高速计数器的数值为NewStartValue,默认为0

输入点功能仅可用在组态计数模式的 HSC 时使用。

捕获功能

可使用"捕获"功能通过外部参照信号来保存当前计数值。通过"HSC_Count.EnCapture"位组态并启用捕获功能后,捕获功能会在外部输入沿出现的位置捕获当前计数。无论内部门的状态如何,捕获功能始终有效。执行CTRL_HSC_EXT 指令后,程序会在"HSC_Count.CapturedCount"存储捕获值。图18显示了组态捕获功能在上升沿上进行捕获的示例。

图18 捕获示例

捕获外部输入组态,如图19所示。

图19 捕获输入组态

打开数据类型为HSC_Count的变量,捕获位为HSC_Count.EnCapture,将EnCapture置1,捕获计数值并存储在CapturedCount中,如图20所示。

图20 捕获位及捕获值

注意: 必须调用CTRL_HSC_EXT指令获取捕获计数值,在内部门关闭后捕捉功能仍然有效。输入点功能仅可用在组态计数模式的 HSC 时使用。

比较功能

启用"比较"输出值功能会生成一个可组态脉冲,每次发生组态的事件时便会产生脉冲。如果正在输出脉冲期间又发生了组态的事件,则该事件不会产生新的脉冲。图21显示了比较功能的示例。

图21 比较功能示例

比较功能参考值组态,如图22所示。

图22 参考值组态

比较输出的计数事件组态如图23所示。

图23 计数事件

硬件输出点组态如图24所示。

图24 硬件输出组态

注意:需要更改参考计数值除了更改组态外还可以通过CTRL_HSC_EXT指令更改,如果需要由参考计数1改为参考计数2,只能通过组态来更改输出功能仅可在组态计数模式的HSC时使用