第一章 分基本指令
第二十二节 使用高速计数器累计模拟量/频率转换器的脉冲来模拟电压值
项目22
使用高速计数器累计模拟量/频率转换器的脉冲来模拟电压值

利用S7-200的高速计数器HSC及模拟量/频率转换器来计算模拟电压。

模拟量/频率转换器(A/F)将输入电压(0~10V)转换为矩形脉冲信号(0~2000Hz),再将此 信号送入S7-200高速计数器的输入端并累计脉冲数。当预置的间隔时间到后,通过累计脉冲数,计 算出被测模拟电压值。
本项目需要的1台电压/频率转换器参数如下:
供电电压 DC 24V
输入 DC 0~10V
输出 方波,GND~24V
测量范围 0~10V 0~2000Hz
比率 200Hz/V(线性)

本项目包括主程序和子程序SBR_0及中断子程序INT_0,即主程序在第一个扫描周期调用子程序SBR_0,SBR_0实现高速计数器和定时中断的初始化,INT_0为对高速计数器求值的定时中断程序。程序清单及注释如图22-1~图22-3所示。
由图22-1~图22-3可以看出:每100ms调用一次中断程序0,读出高速计数器的数值后将其置零。通过HSC1计数值及变换关系(0~2kHz对应于0~10V)来求被测的模拟电压值。本例中,计数值仅除以2(右移1位),然后送入输出字节QB0,以便通过LED来显示被测的电压值,这样显示值与10倍的真实电压值相对应。例如,计数值为200除以2是100,那么被测的模拟电压值就是10.0V。因为计数器100ms内共有200个计数脉冲,这正与2000Hz-10V相对应,假设计数值为104,则实际电压值应为5.2V。
定时中断间隔时间可在5~255ms的范围内变化。通过设立一个标志,可根据需要来延长高速计数器的求值和复位时间,这样就有更长的扫描间隔,提高精确度,但同时也会带来更长的更新时间。例如,定时中断设为100ms,每调用一次,标志增加1,仅当标志到达10时,才对高速计数器求值和复位。即10V电压可接收的最大脉冲为2000,则求值精确到5/1000V,即精确度是本例的10倍,但同时速度也减慢了10倍。