3.6 高速计数器与高速脉冲输出

3.6.1 高速计数器

PLC的普通计数器的计数过程与扫描工作方式有关,CPU通过每一个扫描周期读取一次被测信号的方法来捕捉被测信号的上升沿,被测信号的频率较高时,会丢失计数脉冲,因此普通计数器的最高工作频率一般仅有几十赫兹。高速计数器(HSC)可以对发生速率快于程序循环OB执行速率的事件进行计数。

1.编码器

高速计数器一般与增量式编码器一起使用,后者每圈发出一定数量的计数脉冲和一个复位脉冲,作为高速计数器的输入。编码器有以下几种类型。

(1)增量式编码器

光电增量式编码器的码盘上有均匀刻制的光栅。码盘旋转时,输出与转角的增量成正比的脉冲,需要用计数器来计脉冲数。有3种增量式编码器:

1)单通道增量式编码器内部只有1对光耦合器,只能产生一个脉冲列。

2)双通道增量式编码器又称为A/B相或正交相位编码器,内部有两对光耦合器,输出相位差为90°的两组独立脉冲列。正转和反转时两路脉冲的超前、滞后关系相反(见图3-62),如果使用A/B相编码器,PLC可以识别出转轴旋转的方向。

978-7-111-57703-4-Chapter03-87.jpg

图3-62 A/B相编码器的输出波形图

a)正转 b)反转

A/B相正交计数器可以选择1倍频模式(见图3-63)和4倍频模式(见图3-64),1倍频模式在时钟脉冲的每一个周期计1次数,4倍频模式在时钟脉冲的每一个周期计4次数。

978-7-111-57703-4-Chapter03-88.jpg

图3-63 1倍频A/B相计数器波形

978-7-111-57703-4-Chapter03-89.jpg

图3-64 4倍频A/B相计数器波形

(2)绝对式编码器

N位绝对式编码器有N个码道,最外层的码道对应于编码的最低位。每一码道有一个光耦合器,用来读取该码道的0、1数据。绝对式编码器输出的N位二进制数反映了运动物体所处的绝对位置,根据位置的变化情况,可以判别出旋转的方向。

2.高速计数器使用的输入点

S7-1200的系统手册给出了各种型号的CPU的HSC1~HSC6分别在单向、双向和A/B相输入时默认的数字量输入点,以及各输入点在不同的计数模式的最高计数频率。

HSC1~HSC6的实际计数值的数据类型为DInt,默认的地址为ID1000~ID1020,可以在组态时修改地址。

3.高速计数器的功能

(1)HSC的工作模式

HSC有4种高速计数工作模式:具有内部方向控制的单相计数器,具有外部方向控制的单相计数器,具有两路时钟脉冲输入的双相计数器和A/B相正交计数器。

每种HSC模式都可以使用或不使用复位输入。复位输入为1状态时,HSC的实际计数值被清除。直到复位输入变为0状态,才能启动计数功能。

(2)频率测量功能

某些HSC模式可以选用3种频率测量的周期(0.01s、0.1s和1.0s)来测量频率值。频率测量周期决定了多长时间计算和报告一次新的频率值。得到的是根据信号脉冲的计数值和测量周期计算出的频率平均值,频率的单位为Hz(每秒的脉冲数)。

(3)周期测量功能

使用“扩展高速计数器”指令CTRL HSC EXT,可以按指定的时间周期,用硬件中断的方式测量出被测信号的周期数和精确到微秒的时间间隔,从而计算出被测信号的周期。

4.硬件接线

生成项目“频率测量例程”,CPU为继电器输出的CPU 1214C。为了输出高频脉冲,使用了一块2DI/2DQ信号板。

图3-65是硬件接线图,用信号板的输出点Q4.0发出PWM脉冲,送给HSC1的高速脉冲输入点I0.0计数。使用PLC内部的脉冲发生器的优点是简单方便,做频率测量实验时易于验证测量的结果。

CPU的L+和M端子之间是内置的DC 24V电源。将它的参考点M与数字量输入的内部电路的公共点1M相连,用内置的电源作输入回路的电源。内置的电源同时又作为2DI/2DQ信号板的电源。电流从DC 24V电源的正极L+流出,流入信号板的L+端子,经过信号板内部的MOSFET(场效应管)开关,从Q4.0输出端子流出,流入I0.0的输入端,经内部的输入电路,从1M端子流出,最后回到DC 24V电源的负极M点。

也可以用外部的脉冲信号发生器或增量式编码器为高速计数器提供外部脉冲信号。

5.高速计数器组态

打开PLC的设备视图,选中其中的CPU。选中巡视窗口的“属性”选项卡左边的高速计数器HSC1的“常规”,勾选复选框“启用该高速计数器”。

978-7-111-57703-4-Chapter03-90.jpg

图3-65 硬件接线图

选中左边窗口的“功能”(见图3-66),在右边窗口设置HSC1的功能,“计数类型”为“频率”(频率测量),“工作模式”为单相,内部方向控制,初始计数方向为加计数,频率测量周期为1.0s。

选中左边窗口的“硬件输入”,设置“时钟发生器输入”地址为I0.0。选中左边窗口的“I/O地址”,HSC1默认的地址为ID1000,在运行时可以用该地址监视HSC的频率测量值。

978-7-111-57703-4-Chapter03-91.jpg

图3-66 组态HSC测频

6.设置数字量输入的输入滤波器的滤波时间

CPU和信号板的数字量输入通道的输入滤波器的滤波时间默认值为6.4ms,如果滤波时间过大,输入脉冲将被过滤掉。对于高速计数器的数字量输入,使用期望的最小脉冲宽度设置对应的数字量输入滤波器。本例的输入脉冲宽度为1ms,选用CPU的数字量输入的输入滤波时间列表中的0.8ms。如果改变了输入脉冲宽度,应同时改变输入滤波器的滤波时间。

3.6.2高速脉冲输出

1.高速脉冲输出

每个CPU有4个PTO/PWM发生器,分别通过DC输出的CPU集成的Q0.0~Q0.7或信号板上的Q4.0~Q4.3输出PTO或PWM脉冲(见表3-6)。CPU 1211C没有Q0.4~Q0.7,CPU1212C没有Q0.6和Q0.7。

脉冲宽度与脉冲周期之比称为占空比,脉冲列输出(PTO)功能提供占空比为50%的方波脉冲列输出。脉冲宽度调制(PWM)功能提供脉冲宽度可以用程序控制的脉冲列输出。

3-6PTO/PWM的输出点

978-7-111-57703-4-Chapter03-92.jpg

2.PWM的组态

PWM功能提供可变占空比的脉冲输出,脉冲宽度为0时占空比为0,没有脉冲输出,输出一直为FALSE(0状态)。脉冲宽度等于脉冲周期时,占空比为100%,没有脉冲输出,输出一直为TRUE(1状态)。

打开项目“频率测量例程”的设备视图,选中CPU。选中巡视窗口的“属性>常规”选项卡(见图3-67),再选中左边的“PTO1/PWM1”文件夹中的“常规”,用右边窗口的复选框启用该脉冲发生器。

选中图3-67左边窗口的“参数分配”,在右边的窗口用下拉式列表设置“信号类型”为PWM,“时基”(时间基准)为毫秒,“脉宽格式”为百分之一。

978-7-111-57703-4-Chapter03-93.jpg

图3-67 设置脉冲发生器的参数

用“循环时间”输入域设置脉冲的周期值为2ms,用“初始脉冲宽度”输入域设置脉冲的占空比为50%,即脉冲周期为2ms,脉冲宽度为1ms。

选中左边窗口的“硬件输出”,设置用信号板上的Q4.0输出脉冲。

选中左边窗口的“I/O地址”(见图3-68),在右边窗口可以看到PWM1的起始地址和结束地址。可以修改其起始地址,在运行时用这个地址来修改脉冲宽度。

978-7-111-57703-4-Chapter03-94.jpg

图3-68 PWM的输出地址

3.PWM的编程

打开OB1,将右边指令列表的“扩展指令”窗格的文件夹“脉冲”中的“脉宽调制”指令CTRLPWM拖放到程序区(见图3-69),单击出现的“调用选项”对话框中的“确定”按钮,生成该指令的背景数据块DB1。

978-7-111-57703-4-Chapter03-95.jpg

图3-69 CTRLPWM指令

单击参数PWM左边的问号,再单击出现的978-7-111-57703-4-Chapter03-96.jpg按钮,用下拉式列表选中"Local~Pulse1",其值为9,它是PWM1的硬件标识符的值。

EN输入信号为1状态时,用输入参数ENABLE(I0.4)来启动或停止脉冲发生器,可以用PWM的输出地址(见图3-68)来修改脉冲宽度。因为在执行CTRL PWM指令时S7-1200激活了脉冲发生器,输出BUSY总是0状态。参数STATUS是状态代码。

4.实验情况

将组态数据和用户程序下载到CPU后运行程序。用外接的小开关使I0.4为1状态,信号板的Q4.0开始输出PWM脉冲,送给I0.0测频。PWM脉冲使Q4.0和I0.0的LED点亮,如果脉冲的频率较低,Q4.0和I0.0的LED将会闪动。

在监控表中输入HSC1的地址ID1000(见图3-70),单击工具栏上的978-7-111-57703-4-Chapter03-97.jpg按钮,“监视值”列显示测量得到的频率值为500Hz,与理论计算值相同。

978-7-111-57703-4-Chapter03-98.jpg

图3-70 监控表

在设置脉冲发生器的图3-67中,修改PWM脉冲的循环时间(即周期)。在图3-66中,修改频率测量的周期。脉冲周期为10μs~100ms时,都能得到准确的频率测量值。信号频率较低时,应选用较大的测量周期。信号频率较高时,频率测量周期为0.01s时也能得到准确的测量值。