- {{item.name}}
高速计数器支持的类型
- 0
- 250
S7-1200 G2 V1.0 及 V4.1 版本 CPU 本体集成的高速计数器支持三种计数类型,下边将分别介绍这三种类型相关设置及编程
1.计数
1.1计数组态
在 S7-1200 G2 CPU 的硬件组态中,可以配置高速计数器的参数,其中组态成计数模式、频率模式、周期模式需要在计数类型中配置,如图 1 所示。

图1基础组态
①激活高速计数器。
②设置计数类型:计数模式、频率模式、周期模式。
③设置运行模式:单相、两相位、A/B 计数器、A/B 计数器四倍频,值得注意的是组态 A/B 计数器四倍频会使得计数值变为组态 A/B 计数器的 4 倍,但频率相比组态 A/B 计数器不会发生变化。
④计数方向:取决于用户程序(通过指令修改),还是外部输入,该功能只与单相计数有关。
⑤初始计数方向:正向、反向。
⑥频率测量周期:与频率模式、周期模式有关,只能选择 1s、0.1s、0.01s,一般情况下当脉冲频率比较高时选择更小的测量周期可以更新的更加及时,当脉冲频率比较低时选择更大的测量周期可以测量的更准确。
设置硬件输入点,如图 2 所示。
图2 硬件输入
在 I/O 地址处查看高速计数器起始地址,默认情况下,HSC1 为 992,HSC2 为996,HSC3 为 1000,HSC4 为 10004,HSC5 为 1008,HSC6 为 1012,HSC7 为 1016,HSC8 为 1020 如图3 所示。
注意:对于高速计数器的相关硬件输入点,一般情况下需要设置其滤波时间,具体参见高速计数器概述章节中的滤波设置。
如果组态计数模式、频率模式,可以在不使用指令情况下直接读取计数值与频率值。

图3 高速计数器 I/O 地址
在程序中读取基于起始地址的有符号双整数变量即为计数值或者频率值(单位:Hz),一般使用立即读取方式,这样数值更准确,如图4 所示。

图4 编程
如果组态为计数模式,则计数启动后,计数值使用组态中的初始计数值开始计数,如图5 所示。
图5 初始计数值
1.2 指令编程
在 TIA Portal 软件集成的工艺指令文件夹中可以找到 CTRL_HSC_EXT 指令,如图6 所示

图6 指令文件夹
CTRL_HSC_EXT 指令支持所有功能,例如门功能、同步功能、捕捉功能、计数、频率测量、周期测量、修改参数等。
如果只需要计数或者测量频率,以及硬件门、复位计数值为零、比较输出等基本功能,而其他功能都不使用,可以只组态,然后去读取相应计数器地址即可,无需调用指令。
直接读取地址与调用 CTRL_HSC_EXT 指令区别如表1所示。
表1 指令调用比较
| | 无指令调用 | CTRL_HSC_EXT |
| 计数测量 | 直接读地址 | 支持 |
| 频率测量 | 直接读地址 | 支持 |
| 周期测量 | | 支持 |
| 软件门 | 支持 | |
| 硬件门 | 硬件操作 | 硬件操作 |
| 同步计数值到零 | 硬件操作 | 支持 |
| 同步计数值到零以外的值 | 支持 | |
| 捕捉功能 | 支持 | |
| 比较输出 | 硬件操作 | 硬件操作 |
| 修改当前计数值 | 支持 | |
| 外部修改计数方向 | 硬件操作 | 硬件操作 |
| 软件修改计数方向 | 支持 | |
| 修改参考值 1 | 支持 | |
| 修改频率更新周期 | 支持 | |
| 修改计数同步值 | 支持 | |
| 修改参考值 2 | 支持 | |
| 修改计数溢出限值 | 支持 | |
| 修改计数溢出行为 | 支持 | |
| 事件组态 | 支持 | 支持 |
CTRL_HSC_EXT 各参数含义见表2。
表2 CTRL_HSC_EXT 各参数含义
| 参数 | 声明 | 数据类型 | 描述 |
| HSC | IN | HW_HSC | 高速计数器硬件标识符 |
| CTRL | IN_OUT | Variant | 连接 HSC 参数,支持 HSC_Count、HSC_Frequency 和 HSC_Period 数据类型变量,具体使用参见后文介绍 |
| DONE | OUT | Bool | =1 表示已完成 |
| BUSY | OUT | Bool | 始终为 0 |
| ERROR | OUT | Bool | =1 表示错误 |
| STATUS | OUT | Word | 执行条件代码 |
其中 HSC 参数高速计数器硬件标识符,需要在 PLC 变量表 > 系统常量找到对应标识符,如图 7 所示。
图7 硬件标识符
2.周期
2.1周期组态
1. CPU 硬件组态,启用高速计数器,计数类型选择周期,设定频率测量周期,如图 8 所示。
图8 周期测量组态
2. 建立数据块,并建立系统数据类型为 HSC_Period 的变量,如图9 所示。

图9 HSC_Period
数据类型 HSC_Period 用于“周期”类型的高速计数器,其数据结构与功能参考表3。
表3 HSC_Period 数据结构
| 参数名称 | 参数类型 | 数据类型 | 说 明 |
| ElapsedTime | 输出 | UDINT | 前两个测量时间周期的最后一个脉冲的时间之差 |
| EdgeCount | 输出 | UDINT | 测量时间周期内的脉冲个数 |
| EnHSC | 输入 | BOOL | EnHSC=1,启用周期测量;EnHSC=0,禁用 |
| EnPeriod | 输入 | BOOL | 启用 NewPeriod 值。 |
| NewPeriod | 输入 | INT | 新的测量时间周期 |
注意:
- 对于周期测量,高速计数器指令“CTRL_HSC_EXT”没有直接输出脉冲周期,脉冲周期可按照如下公式编程计算:
- Period = ElapsedTime/EdgeCount。
2.2 指令编程
在 OB1 里调用指令块 CTRL_HSC_EXT,如图 10 所示。

图10 调用 CTRL_HSC_EXT
S7-1200 G2 CPU 高速计数器通道接入脉冲信号,如图 11 所示,通过程序对高速计数器软件门信号 EnHSC 信号置位,可以在线监控数据块的数据变化。

图11 监控数值
根据周期计算公式,
脉冲周期 = ElapsedTime/EdgeCount = 1000291000/1004 = 996305 ns ≈ 0.001 s
由此可以得出所测量的脉冲信号周期为 0.001 秒。
3.频率
3.1频率组态
1. CPU 硬件组态,启用高速计数器,计数类型选择频率,设定频率测量周期,如图12 所示。
图12 频率组态
2. 建立数据块,并建立数据类型为 HSC_Frequency 的变量,如图 13 所示。

图13 HSC_Frequency
数据类型 HSC_Frequency 用于“频率”类型的高速计数器,其数据结构与功能参考表4。
表4 HSC_Frequency 数据结构
| 参数名称 | 参数类型 | 数据类型 | 说 明 |
| Frequency | 输出 | DINT | 计算输出的频率值 |
| EnHSC | 输入 | BOOL | EnHSC=1,启用频率测量;EnHSC=0,禁用 |
| EnPeriod | 输入 | BOOL | 启用 NewPeriod 值。 |
| NewPeriod | 输入 | INT | 新的测量时间周期 |
3.2指令编程
在 OB1 里调用指令块 CTRL_HSC_EXT,如图 14 所示。

图14 调用 CTRL_HSC_EXT
CPU 高速计数器通道接入脉冲信号,如图 15 所示,通过程序对高速计数器软件门信号 EnHSC 信号置位,即可在 Frequency 处监控到频率值。

图15 监控频率值
注意:将 HSC 配置成频率模式时调用 CTRL_HSC/CTRL_HSC_EXT 指令不是必须的。只要在硬件配置里使能并组态高速计数器即可正常计数,默认情况下 ID992 的值即为 HSC1 的频率值。
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错



西门子官方商城


{{item.nickName}}