Engee 文档

Counter

在给定的数字范围内向前和向后计数。

类型: Counter

图书馆中的路径:

/Signal Operations/Signal Management/Switches and Counters/Counter

说明

计数器*程序块在指定的数字范围内执行向前和向后计数。如果 Count direction 参数设置为 "上",程序块将启用 Inc 端口(加法)。如果 Count direction 参数设置为 "Down",程序块将启用 Dec 端口(减少)。如果 Count event 参数设置为 "Free running"(自由运行),程序块将禁用 Inc/Dec 端口,并以恒定的时间间隔进行计数。在 Count event 参数的其他设置下,每次 Inc/Dec 输入端口上发生启动事件时,程序块都会递增或递减计数。当 Rst 辅助端口上发生启动事件时,设备会将计数器重置为初始状态。

端口

输入

Inc/Dec - 触发计数事件的输入信号
标量

输入信号指定为实数标量或矢量,用于计数器的递增或递减。如果输入信号是矢量,程序块会将矢量视为一帧。每次 Inc/Dec 输入端口上发生触发事件时,程序块都会相应地递增或递减计数器。触发事件的类型由 Count event 参数控制。

依赖关系

  • Count direction 参数设置为 "Up "时,程序块将启用 Inc(添加)端口。

  • Count direction 参数设置为 "Down"(下降)时,该单元启用 Dec 端口(减少)。

  • 如果 Count event 参数设置为 "自由运行",设备将不使用 IncDec 端口,并以恒定的时间间隔进行计数。

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, UInt128, Bool

Rst - 复位信号
标量

输入信号指定为实数标量,用于确定块何时复位计数器。Rst 端口的采样时间必须与 Inc/Dec 输入端口相同。每次 Rst 端口发生启动事件时,程序块都会将计数器重置为初始值。

依赖关系

要启用此端口,请选择 Reset input 复选框。

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, UInt128, Bool

Max - 最大计数器大小
标量

计数器的最大值,是 Count 数据类型 参数可以表示的任何无符号整数。计数器的取值范围从 0 到指定作为 Max 端口输入的值。

依赖关系

要启用此端口,请将 Counter size 参数设置为 "通过输入端口指定"。

数据类型: Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, UInt128

输出

Cnt - 当前计数器值
标量

计数器的当前值,指定为标量或矢量。如果 Count event 参数设置为 "Free running"(自由运行),则输出信号 Cnt 是一个以 1 表示的矢量字符串 M ,包含连续取样时刻 M 的计数值,其中 MSamples per output frame 参数中指定的值。

依赖关系

要启用此端口,请将 Output 参数设置为 CountCount and Hit

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, UInt128, Bool

命中 - 匹配状态
scalar | vector

Hit values 参数中指定的整数值的匹配状态。当计数器中出现指定值时,程序块将向 Hit 端口输出 1。

依赖关系

要启用此端口,请将 Output 参数设置为 "Count"(计数)或 "Count and Hit"(计数和命中)。

数据类型: Bool

参数

计数方向 - 正向或反向计数
向上(默认) | 向下

Count direction 参数决定计数是正向还是反向。根据参数值的不同,块上的端口标签会变为 Inc(递增)或 Dec(递减)。

  • 如果 Count direction 设置为 "Up",且计数器达到范围上限,则程序块将在 Inc 端口的下一个启动事件发生时从零开始计数。

  • 如果 Count direction 设置为 "Down"(下降),且计数器达到零,则 Dec 端口上的下一个启动事件将使单元从量程的最大值开始计数。

计数事件 - 触发事件类型
上升沿"(默认) | "下降沿"| "任一沿"| "非零采样"| "自由运行"。

指定当 Inc/DecRst 端口收到 IncRst 时触发设备递增、递减或重置计数器的事件类型:

  • 上升沿"- 当 Inc/DecRst 输入端口上的信号发生如下变化时,触发计数器上升或复位操作:

    • 从上升沿上升到正或零。

    • 如图所示,从零上升到上升沿时,上升沿不是从后沿上升到零的延续。

counter 1

  • 下降沿"- 当 Inc/DecRst 输入端口的信号发生如下变化时,开始计数或复位操作:

    • 从上升沿下降到负或零。

    • 如图所示,从零下降到下降沿时,下降沿不是从上升沿下降到零的延续。

counter 2

  • 任一边沿"- 当 Inc/DecRst 输入端口上出现 "上升沿 "或 "下降沿 "触发事件时,触发计数或复位操作。

  • 非零采样"- 当 Inc/DecRst 输入端口的信号不为零时,在每个采样时钟开始计数或复位操作。

  • 自由运行"- 禁用 Inc/Dec 端口,并启用*每输出帧采样*和*采样时间*块参数。程序块以恒定的时间间隔 递增或递减计数器,时间间隔由 Sample time 参数设置。在此模式下,只要在 Rst 端口接收到非零采样,程序块就会重置计数器。

依赖关系

Count event 参数设置为 "Free running"(自由运行)时,程序块将禁用 Inc/Dec 端口,并以 Sample time 参数指定的恒定间隔递增或递减计数器。

*计数器大小*是要计数的整数值范围
8位(默认) | 16位 | 32位 | 用户自定义 | 通过输入端口指定

指定块计数的整数值范围。如果程序块对计数器的整个范围进行计数,则下一次在 Inc/Dec 端口上发生启动事件时,程序块将按如下方式重置计数器:

  • 如果 Count direction 参数设置为 "Up",且计数器达到计数器范围的上限,程序块将从零开始计数。

  • 如果*计数方向*参数设置为 "下",且计数器达到零,程序块将从计数范围的最大值开始计数。

计数器大小*参数可设置为以下值之一:

  • 8 位"- 设置计数器的范围为 0 至 255。

  • 16 位"- 设置计数器的范围为 0 至 65535。

  • 32 bits - 指定范围为 0 至 232-1 的计数器。

  • 用户定义的` - 包括 Maximum count 参数,允许以任意无符号整数的形式指定计数上限,该整数可由 Count 数据类型 参数表示。计数值范围从 0 到 Maximum count 参数的值。

  • 通过输入端口指定"- 启用 Max 输入端口,允许以无符号任意整数形式指定计数上限,该整数可由 Count 数据类型*参数表示。计数值范围从 0 到指定为 *Max 输入端口参数的值。

*最大计数*是计数器的最大值
255"(默认)|"正整数"。

将最大计数值指定为无符号任意整数,可用 Count 数据类型 参数表示。

依赖关系

要使用该参数,请将 Counter size 参数设置为 "用户自定义"。

*初始计数*是计数器的初始值
0"(默认值) | "非负整数"。

将计数器初始值指定为 Counter size 参数定义范围内的任意无符号整数。程序块在仿真开始时使用初始计数器值,并在每次 Rst 端口发生启动事件时将计数器重置回初始值。

*输出*为计数值、命中值,或两个值都是
计数"(默认) | "命中"| "计数和命中

选择要激活(或启用)的输出端口。端口的有效参数值为 CountHitCount and Hit

命中值 - 标记的计数值
32(默认) | 标量 | 矢量

指定一个整数或整数矢量,计数器中出现该整数时,应在 Hit 输出端口上标记为 1。

依赖关系

要使用此参数,请将 Output 参数设置为 "Hit"(命中)或 "Count and Hit"(计数和命中)。

重置输入 - 启用输入端口 Rst
已启用"(默认) | "已禁用"。

选择此复选框可启用 Rst 输入端口。启用 Rst 端口后,每次 Rst 端口发生启动事件时,程序块都会将计数器重置为初始值。导致计数器复位的事件类型在 Count event 参数中设置。如果未选中*复位输入*,则在仿真期间无法复位计数器。

每输出帧采样数 - 每个输出矢量的采样数
1(默认) | `正整数

以正整数指定 每个输出矢量中的样本数。

依赖关系

要使用此参数,请将 Count event 参数设置为 "自由运行"。

采样时间 - "自由运行 "模式下的采样时间
1(默认) | -1 | `非负标量

指定一个常数间隔 , 在 Free Running 模式下,程序块在该间隔内递增或递减计数器。 参数的有效值:

  • 非负标量"--大于或等于零的标量。

  • -1 - 继承采样时间。

例如,要使程序块每 5 秒递增一次计数器,可将 Count direction 参数设置为 "Up",Count event 参数设置为 "Free running",Sample time 参数设置为 "5"。在 "自由运行 "模式下,输出端口的采样时间始终等于

依赖关系

要使用此参数,请将 Count event 参数设置为 Free running

Count 数据类型 - 端口数据类型 Cnt
double (默认) | single | int8 | uint8 | int16 | uint16 | int32 | uint32

指定要输出到 Cnt 端口的数据类型。

依赖关系

要使用此参数,请将 Output 参数设置为 "Count(计数)"或 "Count and Hit(计数和命中)"。

命中数据类型 - *命中端口数据类型
逻辑"(默认) | "布尔"(默认

算法

标量输入操作

Count direction 设置为 "Up "时,Inc*输入端口上的起始事件(加法)会导致程序块将计数器递增 1。如果没有复位事件,程序块将继续通过 *Inc 端口上的事件递增计数器值,直至计数器值达到计数上限。在 Inc 端口上的下一个启动事件中,程序块将从 "0 "重新启动计数器,并在 Inc 端口上的每个后续启动事件中继续将计数器递增 1。

如果 Count direction 参数设置为 "Down",则 Dec(减少)输入端口上的启动事件将导致程序块将计数器减少一个。如果没有重置事件,程序块将继续通过*Down*端口事件减少计数器值,直到计数器值达到 "0 "为止。在 Dec 端口的下一个启动事件中,程序块将从计数上限重新启动计数器,并在 Dec 端口的每个后续启动事件中继续将计数器递减 1。

在两次启动事件之间,程序块将输出保持在其最后值。当可选的 Rst 输入端口上发生 Count event 参数指定的启动事件时,程序块会将计数器重置为初始状态。如果 Inc/DecRst 端口同时接收到触发事件,程序块将首先重置计数器,然后相应地递增或递减计数器。要在仿真期间禁用重置计数器,必须取消选中 Reset 输入,禁用 Rst 端口。

输出*参数允许您指定程序块的输出值:

  • 计数 "可启用程序块上的 Cnt 输出端口。Cnt 端口以标量形式提供计数器的当前值。Cnt 输出端口的采样时间与 Inc/Dec 输入端口相同。

  • Hit "启用程序块上的 Hit 输出端口。如果计数器值不等于 Hit values 参数中指定的任何整数,Hit 端口将输出 0。您可以为 Hit values 参数指定一个整数或一个整数矢量。当计数器值等于 Hit values 参数指定的一个或多个值时,程序块将向 Hit 输出端口输出值 1Hit 输出端口的采样时间与 Inc/Dec 输入端口的采样时间相同。

  • 计数和命中 "包括 CntHit 两个输出端口。

向量输入操作

程序块将输入到 Inc/Dec 端口的矢量输入数据视为帧。矢量操作与标量操作类似,但程序块会根据 Inc/Dec 输入矢量中包含的触发事件总数递增或递减计数器。因此,在处理单个 Inc/Dec 输入矢量期间,计数器可能会发生多次变化。

如果程序块有一个 Hit 端口,则在处理 Inc/Dec 输入矢量期间,如果任何 Hit 值与计数器的任何值相匹配,程序块就会输出值 1

如果触发事件发生在两个连续矢量之间,则在包含事件完成时间的矢量中计算该事件。当端口 Rst 与端口 Inc/Dec 同时接收到启动事件时,程序块首先会重置计数器。然后,程序块根据 Inc/Dec 输入矢量中包含的触发事件数量递增或递减计数器。

如果输入端口信号 Inc/Dec 是一个 1 的字符串矢量 ,则输入端口 Inc/Dec 的端口采样时间等于输入信号的帧周期或输入信号采样时间的倍数 。输出端口采样时间 CntHit 等于输入端口采样时间 Inc/Dec

自动计数

如果 Count event 参数设置为 "自由运行",则设备以自动计数模式运行。

在此模式下,Inc/Dec 输入端口将被禁用,设备将以恒定的间隔 递增或递减计数器,该间隔在*采样时间*参数中设置。

在此模式下,Rst 端口的行为始终与*计数事件*参数设置为 "非零采样 "相同。因此,当 Rst 输入端口不为零时,程序块会在每个采样时间触发复位事件。

在此模式下,Cnt 输出是一个矢量字符串 by 1,其中包含 连续采样时刻的计数值, 是为*每输出帧采样*参数设置的值。命中*输出端口是一个以 1 表示的向量字符串 ,包含 每个连续采样时刻的匹配状态("0 "或 "1")。输出端口 CntHit 的端口采样时间都是