Counter
在给定的数字范围内向前和向后计数。
类型: 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 参数设置为 "自由运行",设备将不使用 Inc 和 Dec 端口,并以恒定的时间间隔进行计数。
数据类型: 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
的计数值,其中 M
是 Samples per output frame 参数中指定的值。
依赖关系
要启用此端口,请将 Output 参数设置为 Count
或 Count 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/Dec 或 Rst 端口收到 Inc 或 Rst 时触发设备递增、递减或重置计数器的事件类型:
-
上升沿"- 当 Inc/Dec 或 Rst 输入端口上的信号发生如下变化时,触发计数器上升或复位操作:
-
从上升沿上升到正或零。
-
如图所示,从零上升到上升沿时,上升沿不是从后沿上升到零的延续。
-
-
下降沿"- 当 Inc/Dec 或 Rst 输入端口的信号发生如下变化时,开始计数或复位操作:
-
从上升沿下降到负或零。
-
如图所示,从零下降到下降沿时,下降沿不是从上升沿下降到零的延续。
-
-
任一边沿"- 当 Inc/Dec 或 Rst 输入端口上出现 "上升沿 "或 "下降沿 "触发事件时,触发计数或复位操作。
-
非零采样"- 当 Inc/Dec 或 Rst 输入端口的信号不为零时,在每个采样时钟开始计数或复位操作。
-
自由运行"- 禁用 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 端口发生启动事件时将计数器重置回初始值。
*输出*为计数值、命中值,或两个值都是
计数"(默认) | "命中"| "计数和命中
选择要激活(或启用)的输出端口。端口的有效参数值为 Count
、Hit
或 Count 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/Dec 和 Rst 端口同时接收到触发事件,程序块将首先重置计数器,然后相应地递增或递减计数器。要在仿真期间禁用重置计数器,必须取消选中 Reset 输入,禁用 Rst 端口。
输出*参数允许您指定程序块的输出值:
-
计数 "可启用程序块上的 Cnt 输出端口。Cnt 端口以标量形式提供计数器的当前值。Cnt 输出端口的采样时间与 Inc/Dec 输入端口相同。
-
Hit "启用程序块上的 Hit 输出端口。如果计数器值不等于 Hit values 参数中指定的任何整数,Hit 端口将输出 0。您可以为 Hit values 参数指定一个整数或一个整数矢量。当计数器值等于 Hit values 参数指定的一个或多个值时,程序块将向 Hit 输出端口输出值
1
。Hit 输出端口的采样时间与 Inc/Dec 输入端口的采样时间相同。 -
计数和命中 "包括 Cnt 和 Hit 两个输出端口。
向量输入操作
程序块将输入到 Inc/Dec 端口的矢量输入数据视为帧。矢量操作与标量操作类似,但程序块会根据 Inc/Dec 输入矢量中包含的触发事件总数递增或递减计数器。因此,在处理单个 Inc/Dec 输入矢量期间,计数器可能会发生多次变化。
如果程序块有一个 Hit 端口,则在处理 Inc/Dec 输入矢量期间,如果任何 Hit 值与计数器的任何值相匹配,程序块就会输出值 1
。
如果触发事件发生在两个连续矢量之间,则在包含事件完成时间的矢量中计算该事件。当端口 Rst 与端口 Inc/Dec 同时接收到启动事件时,程序块首先会重置计数器。然后,程序块根据 Inc/Dec 输入矢量中包含的触发事件数量递增或递减计数器。
如果输入端口信号 Inc/Dec 是一个 1 的字符串矢量 ,则输入端口 Inc/Dec 的端口采样时间等于输入信号的帧周期或输入信号采样时间的倍数 。输出端口采样时间 Cnt 和 Hit 等于输入端口采样时间 Inc/Dec。
自动计数
如果 Count event 参数设置为 "自由运行",则设备以自动计数模式运行。
在此模式下,Inc/Dec 输入端口将被禁用,设备将以恒定的间隔 递增或递减计数器,该间隔在*采样时间*参数中设置。
在此模式下,Rst 端口的行为始终与*计数事件*参数设置为 "非零采样 "相同。因此,当 Rst 输入端口不为零时,程序块会在每个采样时间触发复位事件。
在此模式下,Cnt 输出是一个矢量字符串 by 1,其中包含 连续采样时刻的计数值, 是为*每输出帧采样*参数设置的值。命中*输出端口是一个以 1 表示的向量字符串 ,包含 每个连续采样时刻的匹配状态("0 "或 "1")。输出端口 Cnt 和 Hit 的端口采样时间都是 。