龙空技术网

西门子PLC的计数器指令,高速计数器的用法

智凡桑普雷德 2191

前言:

而今朋友们对“计数器qu cu ld qd”大致比较讲究,姐妹们都想要剖析一些“计数器qu cu ld qd”的相关资讯。那么小编同时在网上网罗了一些有关“计数器qu cu ld qd””的相关资讯,希望咱们能喜欢,你们一起来了解一下吧!

计数器

可使用计数器指令对内部程序事件和外部过程事件进行计数。

● 输入参数 CU 的值从 0 变为 1 时,“加计数”计数器 (CTU) 就会加 1。

● 输入参数 CD 的值从 0 变为 1 时,“减计数”计数器 (CTD) 就会减 1。

● “加计数和减计数”计数器 (CTUD) 在加计数 (CU) 或减计数 (CD) 输入从 0 转换为1时加 1 或减 1。

用户程序中可以使用的计数器数仅受 CPU 存储器容量限制。各个计数器使用 3 个字节(表示 SInt 或 USInt)、6 个字节(表示 Int 或 UInt)或 12 个字节(表示 DInt 或UDInt)。

如上时序图显示了具有无符号整数计数值的 CTU 计数器的运行(其中 PV = 3)。

● 如果参数 CV(当前计数值)的值大于或等于参数 PV(预设计数值)的值,则计数器输出参数 Q = 1。

● 如果复位参数 R 的值从 0 变为 1,则 CV 复位为 0。

如上时序图显示了具有无符号整数计数值的 CTD 计数器的运行(其中 PV = 3)。

● 如果参数 CV(当前计数值)的值等于或小于 0,则计数器输出参数 Q = 1。

● 如果参数 LOAD 的值从 0 变为 1,参数 PV(预设值)的值将作为新的 CV 装载到计数器。

如上时序图显示了具有无符号整数计数值的 CTUD 计数器的运行(其中 PV = 4)。

● 如果参数 CV(当前计数值)的值等于或大于参数 PV(预设值)的值,则计数器输出参数 QU = 1。

● 如果参数 CV 的值小于或等于零,则计数器输出参数 QD = 1。

● 如果参数 LOAD 的值从 0 变为 1,则参数 PV 的值将作为新的 CV 装载到计数器。

● 如果复位参数 R 的值从 0 变为 1,则 CV 复位为 0。

脉冲宽度调制 (PWM)

CTRL_PWM 指令可提供占空比可变的固定循环时间输出。 PWM 输出以指定频率(循环时间)启动之后将连续运行。脉冲宽度会根据需要进行变化以影响所需的控制。

CTRL_PWM 指令将参数信息存储在 DB 中。 数据块的参数由 CTRL_PWM 指令控制。

CPU 第一次进入 RUN 模式时,脉冲宽度将设置为在设备配置中组态的初始值。根据需要将值写入设备配置中指定的字长度输出 (Q) 地址(“输出地址”/“起始地址”)以更改脉冲宽度。 使用指令(例如,Move、Convert、数学运算或 PID)将指定的脉冲宽度写入相应的字长度输出 (Q)。 必须使用输出值的有效范围(百分数、千分数、万分数或 S7 模拟格式)。

占空比可表示为循环时间的百分数或相对量(例如,0 到 1000,或者 0 到 10000)。 脉冲宽度可从 0(无脉冲,始终关闭)到满刻度(无脉冲,始终打开)变化。

PWM 输出可在 0 到满量程之间变化,因此可提供在许多方面都与模拟量输出相同的数字量输出。 例如,PWM输出可用于控制电机的速度,速度范围可以是从停止到全速;也可用于控制阀的位置,位置范围可以是从闭合到完全打开。

高速计数器 (HSC)

使用高速计数器 (HSC, High-Speed Counter) 对发生速率快于 OB 执行速率的事件进行计数。 利用CTRL_HSC指令控制 HSC 的运行。

在 CPU 的设备配置中对每个 HSC 的参数进行组态: 计数模式、I/O 连接、中断分配以及是作为高速计数器还设备来测量脉冲频率。

CTRL_HSC 指令通常放置在触发计数器硬件中断事件时执行的硬件中断 OB 中。 例如,如果 CV=RV 事件触发计数器中断,则硬件中断 OB 代码块执行 CTRL_HSC 指令,并且可通过装载 NEW_RV 值更改参考值。

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

可以通过用户程序来修改某些 HSC 参数,从而对计数过程提供程序控制:

● 将计数方向设置为 NEW_DIR 值

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

● 将参考值设置为 NEW_RV 值

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

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

● 设置 DIR = 1 会装载 NEW_DIR 值。

● 设置 CV = 1 会装载 NEW_CV 值。

● 设置 RV = 1 会装载 NEW_RV 值。

● 设置 PERIOD = 1 会装载 NEW_PERIOD 值。

HSC 的运行

高速计数器 (HSC) 对发生速率快于 OB 执行速率的事件进行计数。 如果待计数事件的发生速率处于 OB 执行速率范围内,可使用 CTU、CTD 或 CTUD 计数器指令。 如果事件的发生速率快于 OB 的执行速率,则应使用 HSC。CTRL_HSC 指令允许用户程序通过程序更改一些 HSC 参数。

例如:可以将 HSC 用做增量轴编码器的输入。 该轴编码器每转提供指定数量的计数值以及一个复位脉冲。 来自轴编码器的时钟和复位脉冲将输入到 HSC 中。

用户程序将若干预设值中的第一个值装载到 HSC 上,并且在当前计数值小于当前预设值的时段内计数器输出一直由用户程序保持激活。当计数器值等于参考值(或 CV =RV)、发生复位及发生方向变化时,用户程序会对 HSC 进行组态,以提供中断功能。

每个 CV = RV 中断事件发生时,用户程序都会装载新的参考值,并设置 CV = RV 中断OB 内的下一输出状态。发生复位中断事件时,用户程序会装载第一个参考值,并设置复位中断 OB 中的第一个输出状态,然后重复该循环。

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

选择 HSC 的功能

所有 HSC 在同一计数器运行模式下的工作方式都相同。 HSC 共有四种基本类型:

● 具有内部方向控制的单相计数器

● 具有外部方向控制的单相计数器

● 具有 2 个时钟输入的双向计数器

● A/B 相正交计数器

用户可选择是否激活复位输入来使用各种 HSC 类型。 如果激活复位输入(存在一些限制,请参见下表),则它会清除当前值并在您禁用复位输入之前保持清除状态。

● 频率功能: 有些 HSC 模式允许 HSC 被组态(计数类型)为报告频率而非当前脉冲

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

● 计数器模式和输入: 下表列出了用于与 HSC 相关的时钟、方向控制和复位功能的输

入。同一输入不可用于两个不同的功能,但任何未被其 HSC 的当前模式使用的输入均可用

于其它用途。 例如,如果 HSC1 处于使用内置输入但未使用外部复位 (I0.3) 的模式下,则 I0.3 可以用于沿中断或 HSC2。

在设备配置期间分配高速计数器设备使用的数字量 I/O 点。 将数字量 I/O 点的地址分配给这些设备之后,无法通过监视表格中的强制功能修改所分配的 I/O 点的地址值。组态 CPU 时,可以选择启用和组态每个 HSC。 CPU 会根据其组态自动为每个 HSC 分配输入地址。 (某些 HSC 允许选择是使用 CPU 的板载输入还是使用 SB 的输入。)

如下表所示,不同 HSC 的可选信号的默认分配互相重叠。 例如,HSC 1 的可选外部复位使用的输入与 HSC 2 的其中一个输入相同。

要始终确保组态 HSC 时任何一个输入都不会被两个 HSC 使用。

例如,下表显示了 CPU 1212C 的板载 I/O 和 SB 两者的 HSC 输入分配。 (如果 SB 只有 2 个输入,则仅输入4.0 和 4.1 可用。)

● 对于单相: C 为时钟输入,[d] 为可选方向输入,[R] 为可选外部复位输入。 (复位仅适用于“计数”模式。)

● 对于双相: CU 为加时钟输入,CD 为减时钟输入,[R] 为可选外部复位输入。 (复位仅适用于“计数”模式。)

● 对于 AB 相正交: A 为时钟 A 输入,B 为时钟 B 输入,[R] 为可选外部复位输入。(复位仅适用于“计数”模式。)

HSC 1 和 HSC 2 可组态为使用板载输入或 SB 输入。HSC 5 和 HSC 6 只能使用 SB 输入。 HSC 6 只能使用 4 输入 SB。具有 2 个数字量输入的 SB 只能提供输入 4.0 和 4.1。访问 HSC 的当前值启用脉冲发生器作为 PTO 时,会向该 PTO 分配一个对应的 HSC。 HSC1 分配给PTO1,HSC2 分配给 PTO2。 分配的 HSC 完全属于 PTO 通道,并且禁用 HSC 的正常输出。 HSC 值仅用于内部功能。 生成脉冲时,不能监视当前值(例如,在 ID1000中)。CPU 允许用户组态最多 6 个高速计数器。 用户可编辑CPU 的“属性”(Properties) 来组态各个 HSC 的参数。在用户程序中使用 CTRL_HSC 指令控制 HSC 的运行。通过选择该 HSC 的“启用”(Enable) 选项启用特定的HSC。

启用 HSC 之后组态其它参数,例如计数器功能、初始值、复位选项和中断事件。

那么在什么情况下使用CTU、CTD 或 CTUD 计数器指令,又在什么情况下使用 HSC指令呢?

CU、CD 和 CTUD 指令使用软件计数器,软件计数器的最大计数速率会受到其所在 OB 的执行速率的限制。如果待计数事件的发生速率处于 OB 执行速率范围内,使用 CTU、CTD 或 CTUD 计数器指令。 如果事件的发生速率快于 OB 的执行速率,则应使用 HSC。

我们了解了高速计数器指令那实际编程又是什么样子的呢?我们通过下面的实例看一下吧。

1. 计数器类型分为三种:Axis of motion(运动轴),Frequency(频率测量),Counting(计数)。

2. 计数器模式分为4种:Single phase(单相),Two phase(双相),AB Quadrature 1X(A/B相正交四倍数)。

3. 输入源

4. 技术方向选择,User program (internal direction control)(内部方向控制)

5. 初始计数方向。

1. 是系统指定的高速计数器硬件识别号,这里填写1.

2. “1”为使能更新初值。

3. “0”新初始值为0。

将此程序下载到CPU以后即可执行。当前值可以在ID1000中读出。高速计数器的指令块,若不需要修改硬件组态中的参数,可不需要调用,系统仍然可以计数。

如果感觉文章还不错欢迎点赞关注评论转发。

标签: #计数器qu cu ld qd