《电子技术应用》
您所在的位置:首页 > 微波|射频 > 设计应用 > 用PLC高速计数器和电压/频率传感器测量模拟电压信号的方法
用PLC高速计数器和电压/频率传感器测量模拟电压信号的方法
王玉田,程耀忠
摘要: 介绍了用PLC高速计数器和电压/频率传感器累计测量脉冲的原理,阐明了应用中需注意的事项,通过程序实例详实介绍了测量模拟电压信号的方法。
Abstract:
Key words :

1   引言

    由PLC控制的某些系统,经常要测量各类模拟电压信号,以往通常用电压传感器进行采样,由PLC的模拟量扩展模块进行运算处理。电压传感器输出是模拟量,在电磁骚扰较强的环境中,容易出现较大的测量误差;同时,由于占用模拟量扩展模块宝贵的输入点(模拟量扩展模块价格接近中、小型PLC的价格,且输入点极少),使系统的性价比降低。当用电压/频率传感器进行采样,进而用PLC高速计数器计数,能较好地解决上述问题,V/F传感器输出是脉冲信号,该信号在电磁骚扰下变化极小;另外,该信号是数字量,可直接接入PLC高速计数器的输入点。下面以西门子SIMATCS7-00、CPU224和V/F传感器为例介绍测量模拟电压信号的方法。

2  高速计数器和V/F传感测量模拟电压信号的原理

    CPU224有HSC0-HSC5共6个高速计数器,每个高速计数器都有多种工作模式以完成不同的功能,在使用一个高速计数器时,根据系统的控制需要,首先要给计数器选定一种工作模式,可用高速计数器定义指令HDEF来进行设置。只有定义了计数器和计数器模式,才能对计数器的动态参数进行编程。编程时,每个高速计数器只能使用一条HDEF指令。每个高速计数器都有一个控制字节,包括允许或禁止计数,计数方向的控制,要装入的计数器当前值和要装入的预置值。

    V/F传感器把测量的模拟电压信号按着固定的比率转换成矩形脉冲信号,本例采用的电压/频率传感器,它的比率为20Hz/V。

    下面以一台35kV级中、小容量变电所用直流电源为例,说明如何利用CPU224的高速计数器HSC1和V/F传感器(输入:DC0~500V电压,输出:0~10kHz脉冲)来测量控制母线电压。首先,V/F传感器将输入电压(控制母线电压)转换为矩形脉冲信号,再将此信号送入高速计数器HSC1的输入端,并累计脉冲数。通过设置定时中断0的间隔时间,来控制高速计数器累计脉冲的时间,当预置的间隔时间到后,根据累计脉冲数,计算出被测控制母线电压值,测量原 理 图 如 图1所 示 。

图1  高速计数器测量V/F传感器脉冲电路

3  测量模拟电压信号的方法

3.1  硬件要求

     需要使用设备     CPU224     1台

                      电压/频率传感器     1台

     技术参数     供电电压     DC 24V

                  输    入     DC 0~500V

                  输出         方波,GND~24V

                  测量范围     0~500V→0~10kHz

                 比     率     20Hz/V

3.2  程序结构

    主程序在第一个扫描周期调用子程序SBR0

    SBR0高速计数器和定时中断的初始化

    INT0对高速计数器求值的定时中断程序

3.3  程序和注释

    主程序在第一个扫描周期调用初始化子程序SBR0,仅在第一个扫描周期标志位SM0.1=1。由子程序SBR0实现初始化。

    首先,把高速计数器HSC1的控制字节MB47置为16进制数FC,其含义是:正方向计数,可更新预置值(PV),可更新当前值(CV),激活HSC1。

    然后,用定义指令HDEF把高速计数器HSC1设置成工作模式0,即没有复位或启动输入,也没有外部的方向选择。当前值SMD48复位为0,预置值SMD52置为FFFF(16进制)。定时中断0间隔时间SMB34置为100ms,中断程序0分配给定时中断0,并允许中断,用指令HSC1启动高速计数器。

    每100ms调用一次中断程序0,读出高速计数器的数值后,将其置零。通过HSC1计数值及变换关系来求被测的控制母线电压值。本例中,采用参数为输入0~500V、输出0~10kHz的V/F传动器,100ms时间累计脉冲最多为1kHz,在中断程序中用乘法指令MUL将该计数值乘5,则100ms内最多脉冲累计数为1k×5=5kHz,从而实现显示值与10倍的真实电压值相对应,假设经乘法指令运算后计数值为2200Hz,则实际电压值相应为220V。然后将经程序处理的计数值置入输出字节QBO,以便通过LED来显示被测的模拟电压值。高速计数器和V/F传感器测量模拟电压信号的主程序、子程序和中断程序如下所述。

      主程序

      LD     SM0.1     //用初次扫描存储器位(SM0.1)调用执行初始化操作的子程序。由于采用这样的子程序调用,后续扫描不会再调用这个子程序,从而减少了扫描时间,也提供了一个结构优化的程序。

     CALL     SBR_0     //调用初始化子程序SBR_0

     子程序

     SBR0     SM0.0     //启动子程序0

     LD     SM0.0     //SM0.0总是1

     MOVB     16#FC,SMB47     //设置高速计数器HSC1控制字节:上升沿复位,上升沿启动,1X计数速率,正向计数,可改变方向,可更新PV(预置值),可CV(当前值),激活HSC1。

     HDEF     1,0     //定义高速计数器,选用HSC1工作于模式0

     MOVO     0,SM048     //HSC1当前值清0

     MOVD     16#FFFF,SMD52     //将预置值装入SMD52

     MOVB     100,SMB34     //设置定时中断0间隔时间为100ms

     ATCH     0,10     //中断连接指令,中断程序为INT_0,事件号为10

     EN     1     //允许所有中断

     HSC     1     //编程计数器SHC1,使设置生效

     中断程序0

     INT     0     //启动中断程序

     LD     SM0.0     //SM00总是1

     MOVD     HSC1,AC0     //把HSC1的计数值存入累加器AC0

     MOVD     AC0,VD100     //把计数值存入VD100

     MOVD     0,SM048     //HSC1当前值清0

     MOVB     16#C0,SMB47     //重新设置HSC1控制字节:上升沿复位,上升沿启动,4X计数速率;反向计数,不改变计数方向,不更新PV,可更新CV,激活HSC1。

     HSC     1     //启动高速计数器HSC1

     MUL     5,VD100     //把HSC1的计数值乘以5

     MOVB     VB103,QB0     //在输出端Q00至Q0.7显示10倍被测控母电压值

4  结语

    以上方法已用于GZS2智能型高频开关直流电源等控制系统(变电站、发电厂用直流电源),实践证明,该方法进行模拟电压信号测量,具有精度高(最高可达5/1000V),抗骚扰性强,运行可靠等优点,具有较大的实用价值和广泛的应用前景。

此内容为AET网站原创,未经授权禁止转载。