打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
西门子S7-1200PLC编程之高速计数器

1、CTRL_HSC(控制高速计数器)指令

参数的数据类型:

您可以在 CPU 的设备组态中为各 HSC的计数/频率功能、复位选项、中断事件组态、硬件 I/O以及计数值地址对相应参数进行组态。
可以通过用户程序来修改某些 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 参数中没有提供当前计数值。在高速计数器硬件的组态期间分配存储当前计数值的过程映像地址。可以使用程序逻辑直接读取计数值。返回给程序的值将是读取计数器瞬间的正确计数。但计数器仍将继续对高速事件计数。因此,程序使用旧的计数值完成处理前,实际计数值可能会更改。

HSC 当前计数值:程序访问、值范围和翻转特性
CPU 将各 HSC 的当前值存储在输入 (I) 地址中。下表列出了为各 HSC的当前值分配的默认地址。可通过修改设备组态中的 CPU 属性来更改当前值的 I 地址。
高速计数器使用 DInt 值存储当前计数值。DInt 的计数值范围为 -2147483648 到+2147483647。进行加计数时,计数器从最大正值翻转到最大负值;进行减计数时,计数器从最大负值翻转到最大正值。

如果发生错误,则 ENO 将设置为 0,且 STATUS 输出将指示条件代码。

Execution condition codes:

2、CTRL_HSC_EXT(控制高速计数器(扩展))指令

利用 CTRL_HSC_EXT指令,程序可以按指定时间周期访问指定高速计数器的输入脉冲数量。
该指令使得程序可以以纳米级精度确定输入脉冲之间的时间长度。
要使用 CTRL_HSC_EXT 指令,请按下列步骤操作:
1. 为 Period 模式组态相关的高速计数器 选择所需要的运行阶段。
如果选择内部方向控制,则可以释放用于其它用途的方向输入。
2. 将 CTRL_HSC_EXT 拖放至梯形图程序中,该操作会同时创建一个背景数据块CTRL_HSC_EXT_DB。
3. 创建一个 User Global_DB=ex: 'MYDB'(CTRL_HSC_EXT 的输入参数)。该数据块含有该 SFB 所需要的信息。
4. 在 MYDB 中,找到一个空行,并添加变量 Name=Ex:'My period'。
5. 输入 'HSC_Period' <回车键> 以添加数据类型 (下拉控件目前没有该选项)。必须由用户正确地输入该名称(如图所示)。
6. 检查 'MyPeriod' 变量现在是否是一个可以扩展的通信数据结构。
7. 在梯形图指令 CTRL_HSC_EXT: 'CTRL' 控点上附加背景数据块变量'MYDB'.MyPeriod。

CTRL_HSC_EXT 指令:

参数的数据类型:

HSC_Period 结构:

HSC_Period 结构元素定义
● ElapsedTime
返回当前周期测量间隔最后一个脉冲和前一个周期测量间隔最后一个脉冲之间的间隔时间(单位:纳秒)。

若 EdgeCount = 0, 则 ElapsedTime 为自最后一个脉冲算起的累计时间。ElapsedTime的范围为 0 至 4,294,967,280 纳秒(0x0000 0000 至0xFFFFFFF0)。返回值若为429496295 (0xFFFF FFFF),则表示出现周期溢出。自 0xFFFF FFF1 至 0xFFFFFFFE 的值为保留值。
如果 ElapsedTime 为 0 (没有收到输入脉冲)或 0xFFFFFFFF(出现周期溢出),则 EdgeCount 中的值无效。
● EdgeCount 返回最近一个测量间隔的输入脉冲的数量。EdgeCount必须大于等于“1”才能计算脉冲之间的间隔时间。该周期采用以下公式计算:周期=ElapsedTime/EdgeCount。
以下示例描述如何采用该指令进行周期测量。

CPU 将各 HSC 的当前值存储在输入 (I) 地址中。下表列出了为各 HSC的当前值分配的默认地址。可通过修改设备组态中的 CPU 属性来更改当前值的输入(I)地址。
高速计数器使用 DInt 值存储当前计数值。DInt 的计数值范围为 -2147483648 到+2147483647。进行加计数时,计数器从最大正值翻转到最大负值;进行减计数时,计数器从最大负值翻转到最大正值。

3、高速计数器的使用方法

高速计数器 (HSC) 能够对发生速率快于循环 OB 执行速率的事件进行计数。
如果待计数事件的发生速率慢于 OB 执行速率,则可使用 CTU、CTD 或 CTUD标准计数器指令。如果事件的发生速率快于 OB 的执行速率,则应使用更快的 HSC设备。CTRL_HSC 指令允许程序通过程序更改一些 HSC 参数。
例如:可以将 HSC 用作增量轴编码器的输入。
该轴编码器每转提供指定数量的计数值以及一个复位脉冲。
来自轴编码器的时钟和复位脉冲将输入到 HSC 中。
先是将若干预设值中的第一个装载到 HSC上,并且在当前计数值小于当前预设值的时段内计数器输出一直是激活的。
在当前计数值等于预设时、发生复位时以及方向改变时,HSC 会提供一个中断。每次出现“当前计数值等于预设值”中断事件时,将装载一个新的预设值,同时设置输出的下一状态。
当出现复位中断事件时,将设置输出的第一个预设值和第一个输出状态,并重复该循环。由于中断发生的频率远低于 HSC 的计数速率,因此能够在对 CPU
扫描周期影响相对较小的情况下实现对高速操作的精确控制。
通过提供中断,可以在独立的中断例程中执行每次的新预设值装载操作以实现简单的状态控制。此外,也可在单个中断例程中处理所有中断事件。
HSC 输入通道选择使用以下表格并确保连接的 CPU 和 SB 输入通道可以支持过程信号中的最大脉冲速率。

CPU 输入:最大频率

SB 信号板输入:最大频率(可选信号板)

选择 HSC 的功能
所有 HSC 在同种计数器运行模式下的工作方式都相同。在 CPU 设备组态中为 HSC功能属性分配计数器模式、方向控制和初始方向。
HSC 共有四种基本类型:
● 具有内部方向控制的单相计数器
● 具有外部方向控制的单相计数器
● 具有 2 个时钟输入的双相计数器
● A/B 相正交计数器

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

HSC 的输入地址
组态 CPU 时,可以选择为每个 HSC 启用和组态“硬件输入”。
所有 HSC 输入必须连接到 CPU 模块上的端子,或插入 CPU 模块前方的可选信号板。

下表显示了 CPU 的板载 I/O 和可选 SB 两者的默认 HSC 输入分配。(如果所选 SB模块只有 2 个输入,则仅输入 4.0 和 4.1 可用。)
HSC 输入表定义
● 单相:C 为时钟输入,[d] 为方向输入(可选),[R] 为外部复位输入(可选)(复位仅适用于“计数”模式。)
● 双相:CU 为加时钟输入,CD 为减时钟输入,[R] 为外部复位输入(可选)。(复位仅适用于“计数”模式。)
● AB 相正交:A 为时钟 A 输入,B 为时钟 B 输入,[R] 为外部复位输入(可选)。(复位仅适用于“计数”模式。)

HSC 默认地址分配:

4、组态 HSC

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
高级工程师的项目:高速计数器使用案例,含程序
入门学PLC不再缺少方法和技巧,西门子S7-1200计数干货很全面
S7
西门子1200的HSC的应用实例!
从零开始学PLC-第四讲指令详解3
一招教您轻松运用1200高速计数功能!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服