高速计数器寻址
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
多次访问高速计数器
应用举例
假设在旋转机械上有单相增量编码器作为反馈,接入到S7-1200 CPU,要求在计数25个脉冲时,计数器复位,置位 M0.5,并设定新预置值为50个脉冲,当计满50个脉冲后复位M0.5,并将预置值再设为25,周而复始执行此功能。
针对此应用,选择CPU 1214C,高速计数器为:HSC1。模式为:单相计数,内部方向控制,无外部复位。据此,脉冲输入应接入I0.0,使用HSC1的预置值中断(CV=RV)功能实现此应用。
组态步骤:
先在设备与组态中,选择CPU,单击属性,激活高速计数器,并设置相关参数。此步骤必须事先执行,1200的高速计数器功能必须要先在硬件组态中激活,才能进行下面的步骤。添加硬件中断块,关联相对应的高速计数器所产生的预置值中断,在中断块中添加高速计数器指令块,编写修改预置值程序,设置复位计数器等参数。将程序下载,执行功能。
硬件组态
选中CPU如图1.所示。
图1.选中CPU
图2.所示为选择属性打开组态界面
图2.选择属性打开组态界面
激活高速计数功能如图3
图3.激活高速计数功能
计数类型,计数方向组态如图4所示
图4.计数类型,计数方向
1 此处计数类型分为3种,Axis of motion(运动轴),Frequency(频率测量),Counting(计数)。这里选择Counting
2 模式分为4种:Single phase(单相), Two phase(双相), AB Quadrature 1X(A/B相正交1倍速), ABQuadrature 4X(A/B相正交4倍速)。这里择Single phase
3 输入源,这里使用的为CPU集成输入点。
4 计数方向选择,这里选用User program (internal direction control)(内部方向控制)
5初始计数方向。这里选择Count up(向上计数)
初始值及复位组态如图5.
图5.初始值及复位组态
预置值中断组态如图6
图6. 预置值中断组态
图7.添加硬件中断
组态添加的硬件中断,如图8
图8.组态添加的硬件中断
图9.地址分配与硬件识别号
至此硬件组态部分已经完成,下面进行程序编写
程序编写
将高速计数指令块添加到硬件中断中
图10. 打开硬件中断块
图11.添加高速计数器
图12. 定义高速计数器背景数据块
程序视图如图13
图13. 程序视图
1这里就是图9中系统指定的高速计数器硬件识别号,这里填1
注意:应根据CPU属性里的硬件标识符设置该值, 如硬件标识符为257,应将指令输入的 HSC 值从 1 改为 257,如下图 14 所示:
图 14. 硬件标识符
2 1为使能更新初值;
3 1为使能更新预置值;
4 新的初始值;
5 新的预置值。
至此程序编制部分完成,将完成的组态与程序下载到CPU后即可执行,当前的计数值可在ID1000中读出 ,关于高速计数器指令块,若不需要修改硬件组态中的参数,可不需要调用,系统仍然可以计数。