1.高速计数器
S7-1200 CPU提供了最多6个(1214C)高速计数器,其独立于CPU的扫描周期进行计数。可测量的单相脉冲频率最高为100KHz,双相或A/B相最高为30KHz,除用来计数外还可用来进行频率测量,高速计数器可用于连接增量型旋转编码器,用户通过对硬件组态和调用相关指令块来使用此功能。
2.高速计数器工作模式
高速计数器定义为5种工作模式
每种高速计数器有两种工作状态。
所有的计数器无需启动条件设置,在硬件向导中设置完成后下载到CPU中即可启动高速计数器,在A/B相正交模式下可选择1X(1倍) 和4X(4倍)模式,高速计数功能所能支持的输入电压为24V DC,目前不支持5V DC的脉冲输入,表1列出了高速计数器的硬件输入定义和工作模式
描述 | 输入点定义 | 功能 | ||||
HSC | HSC1 | 使用CPU集成I/O或信号板或监控PTO0 | I0.0 | I0.1 | I0.3 | |
I4.0 | I4.1 | |||||
PTO 0 | PTO 0 方向 | |||||
HSC2 | 使用CPU集成I/O或监控PTO0 | I0.2 | I0.3 | I0.1 | ||
PTO 1 | PTO 1 方向 | |||||
HSC3 | 使用CPU集成I/O | I0.4 | I0.5 | I0.7 | ||
HSC4 | 使用CPU集成I/O | I0.6 | I0.7 | I0.5 | ||
HSC5 | 使用CPU集成I/O或信号板 | I1.0 | I1.1 | I1.2 | ||
I4.0 | I4.1 | |||||
HSC6 | 使用CPU集成I/O | I1.3 | I1.4 | I1.5 | ||
模式 | 单相计数,内部方向控制 | 时钟 | 计数或频率 | |||
复位 | 计数 | |||||
单相计数,外部方向控制 | 时钟 | 方向 | 计数或频率 | |||
复位 | 计数 | |||||
双相计数,两路时钟输入 | 增时钟 | 减时钟 | 计数或频率 | |||
复位 | 计数 | |||||
A/B相正交计数 | A相 | B相 | 计数或频率 | |||
Z相 | 计数 | |||||
监控PTO输出 | 时钟 | 方向 | 计数 |
表1 高速计数器硬件输入定义与工作模式
并非所有的CPU都可以使用6个高速计数器,如1211C只有6个集成输入点,所以最多只能支持4个(使用信号板的情况下)高速计数器。
由于不同计数器在不同的模式下,同一个物理点会有不同的定义,在使用多个计数器时需要注意不是所有计数器可以同时定义为任意工作模式。
高速计数器的输入使用与普通数字量输入相同的地址,当某个输入点已定义为高速计数器的输入点时,就不能再应用于其它功能,但在某个模式下,没有用到的输入点还可以用于其它功能的输入
监控PTO的模式只有HSC1和HSC2支持,使用此模式时,不需要外部接线,CPU在内部已作了硬件连接,可直接检测通过PTO功能所发脉冲。
3高速计数器寻址
CPU将每个高速计数器的测量值,存储在输入过程映像区内,数据类型为32位双整型有符号数,用户可以在设备组态中修改这些存储地址,在程序中可直接访问这些地址,但由于过程映像区受扫描周期影响,在一个扫描周期内,此数值不会发生变化,但高速计数器中的实际值有可能会在一个周期内变化,用户可通过读取外设地址的方式,读取到当前时刻的实际值。以ID1000为例,其外设地址为“ID1000:P”。表2 所示为高速计数器寻址列表
高速计数器号 | 数据类型 | 默认地址 |
HSC1 | DINT | ID1000 |
HSC2 | DINT | ID1004 |
HSC3 | DINT | ID1008 |
HSC4 | DINT | ID1012 |
HSC5 | DINT | ID1016 |
HSC6 | DINT | ID1020 |
表1 高速计数器寻址
4频率测量
S7-1200 CPU除了提供计数功能外,还提供了频率测量功能,有3种不同的频率测量周期:1.0秒,0.1秒和0.01秒,频率测量周期是这样定义的:计算并返回新的频率值的时间间隔。返回的频率值为上一个测量周期中所有测量值的平均,无论测量周期如何选择,测量出的频率值总是以Hz(每秒脉冲数)为单位。
5高速计数器指令块
高速计数器指令块,需要使用指定背景数据块用于存储参数。图1所示为高速计数器指令块
图1高速计数器指令块
表3所示为高速计数器指令块参数说明
HSC (HW_HSC) | 高速计数器硬件识别号 |
DIR (BOOL) | TRUE =使能新方向 |
CV (BOOL) | TRUE = 使能新初始值 |
RV (BOOL) | TRUE = 使能新参考值 |
PERIODE (BOOL) | TRUE = 使能新频率测量周期 |
NEW_DIR (INT) | 方向选择1=正向 |
0=反向 | |
NEW_CV (DINT) | 新初始值 |
NEW_RV (DINT) | 新参考值 |
NEW_PERIODE (INT) | 新频率测量周期 |
表1 高速计数器指令块参数
6应用举例
为了便于理解如何使用高速计数功能,通过一个例子来学习组态及应用。
假设在旋转机械上有单相增量编码器作为反馈,接入到S7-1200 CPU,要求在计数25个脉冲时,计数器复位,并重新开始计数,周而复始执行此功能。
针对此应用,选择CPU 1214C,高速计数器为:HSC1。模式为:单相计数,内部方向控制,无外部复位。据此,脉冲输入应接入I0.0,使用HSC1的预置值中断(CV=RV)功能实现此应用。
组态步骤:
1硬件组态
选中CPU如图2
图2选中CPU
图3所示为选择属性打开组态界面
图3 选择属性打开组态界面
激活高速计数功能如图4
图4 激活高速计数功能
计数类型,计数方向组态如图5所示
图5 计数类型,计数方向
1 此处计数类型分为3种,Axis of motion(运动轴),Frequency(频率测量),Counting(计数)。这里选择Counting
2 模式分为4种:Single phase(单相), Two phase(双相), AB Quadrature 1X(A/B相正交1倍速), AB Quadrature 4X(A/B相正交4倍速)。这里择Single phase
3 输入源,这里使用的为CPU集成输入点。
4 计数方向选择,这里选用User program (internal direction control)(内部方向控制)
5初始计数方向。这里选择Count up(向上计数)
初始值及复位组态如图6
图6 初始值及复位组态
预置值中断组态如图7
图7 预置值中断组态
图8 添加硬件中断
组态添加的硬件中断,如图8
图8 组态添加的硬件中断
地址分配与硬件识别号如图9
图9 地址分配与硬件识别号
至此硬件组态部分已经完成,下面进行程序编写
2程序编写
将高速计数指令块添加到硬件中断中
图10 打开硬件中断块 图11 添加高速计数器
图12 定义高速计数器背景数据块
程序视图如图13
图13 程序视图
1 这里就是图9中系统指定的高速计数器硬件识别号,这里填1
2 “1”为使能更新初值
3 “0”新初始值为0
至此程序编制部分完成,将完成的组态与程序下载到CPU后即可执行,当前的计数值可在ID1000中读出 ,关于高速计数器指令块,若不需要修改硬件组态中的参数,可不需要调用,系统仍然可以计数。