CPU 将每个高速计数器的测量值,存储在输入过程映像区内,数据类型为 32 位双整型有符号数,用户可以在设备组态中修改这些存储地址,在程序中可直接访问这些地址,但由于过程映像区受扫描周期影响,读取到的值并不是当前时刻的实际值,在一个扫描周期内,此数值不会发生变化,但计数器中的实际值有可能会在一个周期内变化,用户无法读到此变化。用户可通过读取外设地址的方式,读取到当前时刻的实际值。以 ID1000 为例,其外设地址为 “ID1000:P”。表1. 所示为高速计数器寻址列表。
表1. 高速计数器寻址
高速计数器号 | 数据类型 | 默认地址 |
HSC1 | DINT | ID1000 |
HSC2 | DINT | ID1004 |
HSC3 | DINT | ID1008 |
HSC4 | DINT | ID1012 |
HSC5 | DINT | ID1016 |
HSC6 | DINT | ID1020 |
S7-1200 在高速计数器中提供了中断功能,用以处理某些特定条件下触发的程序
共有 3 种中断事件:
1.当前值等于预置值
2.使用外部信号复位
3.带有外部方向控制时,计数方向发生改变
S7-1200 除了提供计数功能外,还提供了频率测量功能,有 3 种不同的频率测量周期:1.0 秒,0.1 秒和0.01 秒。
频率测量周期是这样定义的:计算并返回新的频率值的时间间隔。返回的频率值为上一个测量周期中所有测量值的平均,无论测量周期如何选择,测量出的频率值总是以 Hz (每秒脉冲数)为单位。
高速计数器指令块,需要使用指定背景数据块用于存储参数, 如图1所示。
图1. 高速计数器指令块
表2. 高速计数器参数说明
HSC (HW_HSC) |
高速计数器硬件识别号 |
DIR (BOOL) TRUE |
使能新方向 |
CV (BOOL) TRUE |
使能新起始值 |
RV (BOOL) TRUE |
使能新参考值 |
PERIODE (BOOL) TRUE |
使能新频率测量周期 |
NEW_DIR (INT) |
方向选择1:=正向;-1 :=反向 |
NEW_CV (DINT) |
新起始值 |
NEW_RV (DINT) |
新参考值 |
NEW_PERIODE (INT) |
更新频率测量周期 |
表3. STATUS 错误代码
错误代码(十六进制) |
描述 |
0 | 无错误 |
80A1 |
高速计数器的硬件标识符无效 |
80B1 |
计数方向 (NEW_DIR) 无效 |
80B2 | 计数值 (NEW_CV) 无效 |
80B3 | 参考值 (NEW_RV) 无效 |
80B4 | 频率测量周期 (NEW_PERIOD) 无效 |
80C0 | 多次访问高速计数器 |