答: 有两种方法,分别利用CTRL_HSC指令和CTRL_HSC_EXT指令。
首先配置高速计数器:
1

在设备视图>HSC_1>属性>常规,启用该高速计数器。
图 01
2在设备视图>HSC_1>属性>功能,定义计数类型为计数。
图 02
3在设备视图>HSC_1>属性>I/O地址,利用缺省地址1000作为高速计数器地址。
图 03
方法1:利用CTRL_HSC指令
1
添加一个新的 DB 命名为 DB HSC retain,并且创建一个DINT数据元素,命名为HSC_1用于保存高速计数器的值。为了实现这个功能,HSC_1通过勾选保持项实现数据保持。
图 04
2插入 Cyclic interrupt (循环中断)OB201,设置中断韶光为 10 ms (也可以根据须要改变这个韶光)。然后在 OB201 中将高速计数器的值 ID1000:P 送到 \"大众DB HSC retain\"大众.HSC_1 中。这样,高速计数器的值每10ms 送到 DB 中保存。
图 05
3创建Startup(启动OB)OB100,并且编程将保存的数值 \"大众DB HSC retain\公众.HSC_1 送到 NEW_CV,并且置位 CV 位。使得在CPU 启动时,保存的值被设置成当前值。
图 06
4
在 OB1 中编程 CTRL_HSC ,再将保存的值设为当前值后,复位 CV 位。
图07
方法2:利用CTRL_HSC_EXT指令
1
添加一个新的 DB 命名为 DB HSC retain,并且创建一个DINT数据元素,命名为HSC_1用于保存高速计数器的值。为了实现这个功能,HSC_1通过勾选保持项实现数据保持。此外创建系统数据类型HSC_Count的变量Static_1用于CTRL_HSC_EXT指令。
图 08
2
插入 Cyclic interrupt (循环中断)OB201,设置中断韶光为 10 ms (也可以根据须要改变这个韶光)。然后在 OB201 中将高速计数器的值 ID1000:P 送到 \公众DB HSC retain\"大众.HSC_1 中。这样,高速计数器的值每10ms 送到 DB 中保存。
图 10
4在 OB1 中编程 CTRL_HSC_EXT ,将保存的值设为当前值后,复位触发位。
图 11
断电停机或复位后,高速计数器的值会复位到什么值?
答: CPU 断电或重启后,高速计数器的值会复位到初始值;如果实行了外部复位,高速计数器的值会复位为0。
不编写 CTRL_HSC,高速计数器是否可以计数?
答: 只要在硬件配置里使能并组态了高速计数器,不编写 CTRL_HSC,高速计数器就可以正常计数。CTRL_HSC 只是完成参数写入的功能。
为什么高速计数器的数值不增加,总是停在一个固定的值?
答: 如果编程了 CTRL_HSC,当置位 CV 将 NEW_CV 写入当前值后,CV位不会自动复位为0,这时程序会一贯将 NEW_CV写入当前值,导致高速计数器不连续计数而保持在固定的 NEW_CV 值。因此必须编程复位 CV,才能避免该缺点的发生。
如果高速计数器定义为 \"大众运动轴\"大众 计数,程序中是否还可以访问 ID1000:P 的值?
答: 如果高速计数器用做内部的运动掌握的计数,此时程序中不能再访问 ID1000:P 的值,否则会造成 I/O 访问缺点。如果没有编程GET_ERROR 或 GET_ERR_ID 指令,还会造成 CPU 停机。
为什么 CTRL_HSC 的 \"大众STATUS\公众 会返回 \"大众80C0\"大众 多次访问高速计数器缺点?
答: 如果高速计数器用做内部的运动掌握的计数,则CTRL_HSC 的 \"大众STATUS\"大众 就会返回 \"大众80C0\"大众 多次访问高速计数器缺点。
利用旗子暗记板 SB1221 4DI (CPU V3.0及早期版本)最多可以接入多少组高速计数器 ?
答: 最多2组,所利用的高速计数器号可以是 HSC1、HSC2、HSC5、HSC6个中2组。
为什么S7-1200 高速计数器只能检测到低频率的脉冲旗子暗记?
答: 在 S7-1200 CPU 和 SB 旗子暗记板的属性中,数字量输入通道的输入滤波器默认设置值为 6.4 millisec,该输入滤波韶光对应的高速计数器能检测到的最大频率为 78Hz。
因此如果利用该默认值,且 S7-1200 CPU 或 SB 旗子暗记板接入的高速输入脉冲超过 78Hz,则 S7-1200 CPU 或SB 旗子暗记板过滤掉该频率的输入脉冲。
要精确利用 S7-1200 CPU 和 SB 旗子暗记板高速计数功能,须要根据实际接入的高速输入脉冲最大频率,在\公众属性—常规—数字量输入通道设置\公众输入滤波器韶光。
V4.0 或更高版本的 S7-1200 CPU 和 SB 旗子暗记板,每个数字量输入点都可设置输入滤波器韶光, 如下图 12、13 所示:
图 12. 设置 S7-1200 CPU 输入滤波器韶光
图 13. 设置 SB 旗子暗记板输入滤波器韶光
下表 1 显示了输入滤波器韶光和可检测到的最大输入频率:
输入滤波器韶光可检测到的最大输入频率0.1 microsec1MHz0.2 microsec1MHz0.4 microsec1MHz0.8 microsec625kHz1.6 microsec312kHz3.2 microsec156kHz6.4 microsec78kHz10 microsec50kHz12.8 microsec39kHz20 microsec25kHz0.05 millisec10kHz0.1 millisec5kHz0.2 millisec2.5kHz0.4 millisec1.25kHz0.8 millisec625Hz1.6 millisec312Hz3.2 millisec156Hz6.4 millisec78Hz10 millisec50Hz12.8 millisec39Hz20 millisec25Hz
表 1 输入滤波器韶光和可检测到的最大输入频率
S7-1200 的高速计数器输入通道是否固定?
答: 早期固件版本的高速计数器输入通道是固定的。
V4.0 或更高版本的 S7-1200 的高速计数器输入通道可以在其属性中变动。如图 14 所示:
图 14. 变动高速计数器输入通道
S7-1200 CPU 最多支持多少个高速计数器?
答: 早期固件版本的S7-1200 CPU 中,CPU 1211C 最多支持3个单相的高速计数器,CPU 1212C 最多支持 4 个单相的高速计数器,CPU1214C 和 CPU1215C最 多支持6个单相的高速计数器。
V4.0或更高版本的所有型号的S7-1200 CPU 都支持最多6个单相高速计数器。
须要把稳的是V4.0或更高版本的 S7-1200 CPU 有默认的高速计数器通道地址,而 CPU 1211C 数字量输入地址仅有 6 个,为I0.0-I0.5,CPU 1212C 数字量输入地址仅有8个,为I0.0-I0.7。
因此如果须要利用 CPU 1211C 的 HSC4, HSC5, HSC6 或 CPU 1212C 的 HSC5, HSC6 ,则须要变动其硬件输入地址到有效的范围才能正常利用。以 CPU1211C 举例,如图 15、16、17所示:
图 15. 变动 HSC4 的硬件输入地址
图 16. 变动 HSC5 的硬件输入地址
图 17. 变动 HSC6 的硬件输入地址