• 沒有找到結果。

7 轻松使用内置脉冲发生器

7.1 高速计数器

7.1 高速计数器

高速计数器 (HSC, High-Speed Counter) 可用作增量轴编码器的输入。 该轴编码器每转 提供指定数量的计数值以及一个复位脉冲。 来自轴编码器的时钟和复位脉冲将输入到 HSC 中。

先是将若干预设值中的第一个装载到 HSC 上,并且在当前计数值小于当前预设值的时段 内计数器输出一直是激活的。 在当前计数值等于预设值时、发生复位时以及方向改变 时,HSC 会提供一个中断。

每次出现“当前计数值等于预设值”中断事件时,都将装载一个新的预设值,同时会设置输 出的下一状态。 当出现复位中断事件时,将设置输出的第一个预设值和第一个输出状 态,并重复该循环。

由于中断发生的频率远低于 HSC 的计数速率,因此能够在对 CPU 扫描周期影响相对较 小的情况下实现对高速操作的精确控制。 通过提供中断,可以在独立的中断例程中执行 每次的新预设值装载操作以实现简单的状态控制。 (或者,也可在单个中断例程中处理 所有中断事件。)

选择 HSC 的功能

所有 HSC 在同一计数器运行模式下的工作方式都相同。 HSC 共有四种基本类型: 具有 内部方向控制的单相计数器、具有外部方向控制的单相计数器、具有 2 个时钟输入的双相 计数器以及 A/B 相正交计数器。 请注意,每个计数器并非支持每一种模式。 用户可选择 是否激活复位输入来使用各种 HSC 类型。 如果激活复位输入,则它会清除当前值并在您 禁用复位之前保持清除状态。

频率功能: 有些 HSC 模式允许 HSC 被组态(计数类型)为报告频率而非当前脉冲计数 值。 有三种可用的频率测量周期: 0.01、0.1 或 1.0 秒。

频率测量周期决定 HSC 计算并报告新频率值的频率。 报告频率是通过上一测量周期内总 计数值确定的平均值。 如果该频率在快速变化,则报告值将是介于测量周期内出现的最 高频率和最低频率之间的一个中间值。 无论频率测量周期的设置是什么,总是会以赫兹 为单位来报告频率(每秒脉冲个数)。

计数器的模式和输入: 下表列出了用于与 HSC 相关的时钟、方向控制和复位功能的输 入。 同一输入不可用于两个不同的功能,但任何未被其 HSC 的当前模式使用的输入均可 用于其它用途。

长沙工控帮教育科技有限公司整理

7.1 高速计数器

7.1 高速计数器

访问 HSC 的当前值

CPU 将每个 HSC 的当前值存储在一个输入 (I) 地址中。 下表列出了为每个 HSC 的当前 值分配的默认地址。 可以通过修改 CPU 的属性 (页 44)来更改当前值的输入地址。

高速计数器 数据类型 默认地址

HSC1 DInt ID1000

HSC2 DInt ID1004

HSC3 DInt ID1008

HSC4 DInt ID1012

HSC5 DInt ID1016

HSC6 DInt ID1020

组态 HSC

CPU 允许用户组态最多 6 个高速计数器。 用户可编辑 CPU 的“属性”(Properties) 来组态各个 HSC 的参数。

通过编辑 CPU 的“属性”(Properties) 来组态高速计数器的 参数,例如,计数器功能、初始值、复位选项和中断事 件。

组态 HSC 之后,在用户程序中使用 CTRL_HSC 指令控 制 HSC 的运行。

长沙工控帮教育科技有限公司整理

7.1 高速计数器 使用 CTRL_HSC 指令

CTRL_HSC 指令可控制用于对发生速率比 CPU 扫描速率更快 的事件进行计数的高速计数器。

每个 CTRL_HSC 指令都将数据存储在背景数据块中。 将 CTRL_HSC 指令插入到用户程序中可创建此背景数据块。

参数 数据类型 说明

HSC HW_HSC HSC 标识符 DIR BOOL 1 = 请求新方向

CV BOOL 1 = 请求设置新的计数器值 RV BOOL 1 = 请求设置新的参考值 PERIOD BOOL 1 = 请求设置新的周期值

(仅限频率测量模式)

NEW_DIR INT 新方向: 1= 向前,-1= 向后 NEW_CV DINT 新计数器值

NEW_RV DINT 新参考值

NEW_PERIOD INT 以秒为单位的新周期值: 0.01、0.1 或 1

(仅限频率测量模式)

BUSY BOOL 功能忙

STATUS WORD 执行条件代码

长沙工控帮教育科技有限公司整理

7.1 高速计数器

虽然 CTU、CTD 和 CTUD 计数器指令的计数速率受到 CPU 扫描速率的限制,但 HSC 的运行与 CPU 扫描不同步,能够以高达 100 kHz 的计数速率对事件进行计数(适用于 HSC 1、2 或 3 以及板载 CPU 计数输入组态)。

必须先在 CPU 设备配置的项目设置中组态高速计数器,然后才能在程序中使用高速计数 器。 HSC 设备配置设置包括选择计数模式、I/O 连接、中断分配以及是作为高速计数器 还是设备来测量脉冲频率。 无论是否采用程序控制,均可运行高速计数器。

许多高速计数器组态参数只在项目设备配置中进行设置。 有些高速计数器参数在项目设 备配置中初始化,但以后可以通过程序控制进行修改。 CTRL_HSC 指令参数提供了计数 过程的程序控制:

● 将计数方向设置为 NEW_DIR 值

● 将当前计数值设置为 NEW_CV 值

● 将参考值设置为 NEW_RV 值

● 将周期值(仅限频率测量模式)设置为 NEW_PERIOD 值

如果执行 CTRL_HSC 指令后以下布尔标记值被设置为 1,则相应的 NEW_xxx 值将装载 到计数器。 执行一次 CTRL_HSC 指令可处理多个请求(同时设置多个标记)。

● DIR = 1 表示请求装载 NEW_DIR 值,0 = 无变化

● CV = 1 表示请求装载 NEW_CV 值,0 = 无变化

● RV = 1 表示请求装载 NEW_RV 值,0 = 无变化

● PERIOD = 1 表示请求装载 NEW_PERIOD 值,0 = 无变化

CTRL_HSC 指令通常放置在触发计数器硬件中断事件时执行的硬件中断 OB 中。 例如,

如果 CV=RV 事件触发计数器中断,则硬件中断 OB 代码块可以执行 CTRL_HSC 指令以 通过装载 NEW_RV 值来更改参考值。

在 CTRL_HSC 参数中没有提供当前计数值。 在高速计数器硬件配置期间分配存储当前计 数值的过程映像地址。 可以使用程序逻辑直接读取该计数值,且返回到程序的值将是读 取计数器瞬间的正确计数。但计数器仍将继续对高速事件计数。 程序使用旧的计数值完 成处理前,实际计数值可能会更改。

长沙工控帮教育科技有限公司整理