1 、引言
数字信号处理是过去四十年以来快速发展起来的科学和工程领域,这种快速发展是数字计算机技术和集成电路技术迅猛发展的结果。利用数字信号处理方法实现的电能测量与传统的机电式仪表测量相比具有精度高、可以同时实现多个参数测量以及使用方便等优点。
传统的机电式电能表不能实现谐波功率的测量,但是它得到了静止式交流电能表国际标准(IEC-1268)的支持。这个标准在基波频率下定义了有功电量和无功电量的计量,这就意味着是否包含谐波成分并不是强制性的。
基于上述标准,常用来完成功率测量的方法包括时延法、公式法和积分法。这些方法中的时延法非常适合利用数字系统来实现。这时,有功功率和无功功率可以被分别由下面公式来表达:
2、 利用微控制器实现电能参数的计算
当待测的交流电压和电流信号通过模拟/数字转换器转换为相应的数字量以后,微控制器可以完成有功功率、无功功率以及总功率的计算。由于式(1)和(2)的计算与信号周期相关,当电源周期发生变化时,有功功率和无功功率的计算将产生误差。如果能测量信号周期,并根据其变化对计算进行调整则可以减少,或者消除计算误差。
这里采用MCS51兼容芯片和Keil开发软件完成市电周期的测量以及各种参数的计算。待测信号的周期测量通过单片机片内的定时/计数器实现。定时/计数器工作在定时模式,16位计数方式。计数的起止由正弦波转换获得的方波信号控制,当第一个方波前沿到来时启动计数,紧接着的方波前沿到来时停止计数,这样在计数器中的数据即为以单片机工作周期为单位的待测信号的周期值。设计中单片机的时钟频率选为12MHz,单片机工作周期,也就是周期测量的时间分辨率,为1us。定时/计数器的16位计数方式的计数最大值为65535,市电周期为20ms,因此它直接满足周期测量的范围要求。
Keil开发软件支持MCS51系列芯片的汇编语言和C语言开发,并支持汇编语言和C语言的混合编程。Keil Cx51支持的数据类型包括有浮点(float)数据类型,它包括4字节(32位),这使得进行乘加运算时即保持足够的精度,也提供足够的动态范围。Keil Cx51支持浮点数据类型的加、减、乘和除等算术运算,同时也提供了包括乘方运算、开方运算等运算库的支持,这些使得完成式(1)、(2)和(3)描述的计算非常方便。
完成一次电压和电流信号的模拟/数字转换需要一定的时间,由实测的信号周期和这个时间数据就可以获得实现积分运算需要完成的乘加运算次数。由于进行乘加运算次数只能为整数,还有如果电压与电流数据不能同时采集,而只能分时采集之间而存在的时间间隔,这些都将对积分运算的精度产生影响。
3、 数据分析
在市电周期是模拟/数字转换需要的时间的整数倍数,同时也不考虑电压和电流信号进行模拟/数字转换之间的时间差,即同时完成电压信号和电流信号的采样,这时在电压信号与电流信号之间存在相位差时有功功率和无功功率的模拟测量数据如表1所示。表1的测量条件为:待测信号频率50Hz,一个信号周期的采样点为1000,模拟/数字转换器的分辨率为8位,电压幅度数据100单位,电流幅度数据100单位。
当市电频率偏离标称的50Hz,例如市电频率稍微升高,也就是信号周期稍微下降,由于实现积分运算需要完成的乘加运算次数必须为整数,这时信号周期与积分时间将产生误差。当这个误差达到最大时,即完成一次模拟/数字转换所需要的时间,在不考虑电压和电流信号进行模拟/数字转换之间的时间差的情况下,其它测量条件同表1,这时电压信号与电流信号之间存在相位差时各种功率的模拟测量数据如表2所示。
许多微控制器具有多路模拟信号输入通道和在片模拟/数字转换器,例如ADI公司的ADuC8xx和TI公司的TMS320C28x系列,但是它们的内部是通过一个多路选通电路,再利用一个模块完成模拟/数字转换。如果用这样的芯片完成电压和电流信号的数据采集,那么在两者之间不可避免地产生时间差。表3给出电压和电流信号进行模拟/数字转换之间存在10us时间差,但信号周期是模拟/数字转换需要的时间的整数倍数,这时在电压信号与电流信号之间存在相位差时各种功率的模拟测量数据。表3的其它测量条件同表1。
由表1可以看出,本文提出的有功功率和无功功率的测量方法具有很好的理论测量精度。表2显示电网频率发生变化对测量将会产生影响,但是影响很小[3]。最大的测量误差,尤其是无功功率的测量,来自于电压和电流信号进行模拟/数字转换之间的时间差,这点如表3所示。
4 、利用FPGA克服电压和电流信号之间的测量时间差
使用微控制器控制2个独立工作的模拟/数字转换器可以克服电压信号和电流信号测量之间的时间差,利用扩展的数据存储器可以存储测量数据,但是这时所面临的问题是需要在一个市电周期的时间内同时完成2路多次模拟/数字转换,并需要把获得的数据存入数据存储器。
可编程逻辑器件的并行处理能力使其在工作速度方面优于微控制器,由于计算机一次只能执行一条指令,因此它的主要局限性是工作速度,采用硬件方案设计的数字系统总是比软件方案的数字系统的工作速度快。
在本设计中,FPGA完成的工作包括控制2片TLC0820模拟/数字转换器的控制、提供数据存储所需要的存储单元以及实现它与AT89S51微控制器之间的数据传输接口。FPGA芯片采用ALTERA公司的EP1C3T144I-7。
TLC0820是TI公司生产的8位分辨率,转换时间为2.5us,具有并行数据接口的模拟/数字转换器,它满足本次设计的要求[6]。利用VHDL语言实现单片TLC0820模拟/数字转换器的控制代码。
IF (reset_adc = ‘0’) THEN
current_state_adc 《= 0;
wr_tlc0820 《= ‘1’; rd_tlc0820 《= ‘1’; clk_ram_in 《= ‘0’;
ELSIF (clk_sys‘EVENT AND clk_sys = ’1‘) THEN
CASE current_state_adc IS
WHEN 0 =》 wr_tlc0820 《= ’0‘; rd_tlc0820 《= ’1‘; clk_ram_in 《= ’0‘;
current_state_adc 《= 1;
WHEN 1 =》 wr_tlc0820 《= ’1‘; rd_tlc0820 《= ’1‘; clk_ram_in 《= ’0‘;
current_state_adc 《= 2;
WHEN 2 =》 wr_tlc0820 《= ’1‘; rd_tlc0820 《= ’1‘; clk_ram_in 《= ’0‘;
IF (int_tlc0820 = ’0‘) THEN
current_state_adc 《= 3;
ELSE
current_state_adc 《= 2;
END IF;
WHEN 3 =》 wr_tlc0820 《= ’1‘; rd_tlc0820 《= ’0‘; clk_ram_in 《= ’1‘;
current_state_adc 《= 4;
WHEN 4 =》 wr_tlc0820 《= ’1‘; rd_tlc0820 《= ’0‘; clk_ram_in 《= ’1‘;
current_state_adc 《= 5;
WHEN 5 =》 wr_tlc0820 《= ’1‘; rd_tlc0820 《= ’1‘; clk_ram_in 《= ’0‘;
current_state_adc 《= 6;
WHEN 6 =》 wr_tlc0820 《= ’1‘; rd_tlc0820 《= ’1‘; clk_ram_in 《= ’0‘;
current_state_adc 《= 6;
END CASE;
END IF;
FPGA芯片控制2片TLC0820模拟/数字转换器的工作,分别实现电压信号和电流信号的采样。模拟/数字转换器复位信号reset_adc同时送到2片TLC0820的控制代码,实现电压信号和电流信号的同步采样。模拟/数字转换过程完成之后,TLC0820产生中断信号int_tlc0820,在这个信号控制下,上面代码产生数据存储器写入时钟clk_ram_in,把模拟/数字转换结果写入对应的数据存储器。
存储模拟/数字转换结果的数据存储器利用QUARTUS II可编程逻辑器件开发软件提供的可变参数模块LPM_RAM_DP来实现。电压信号和电流信号具有各自的数据存储器。数据存储器具有独立的读写地址线、数据线、使能信号以及时钟信号。
FPGA芯片向微控制器的数据传送通过后者的数据总线实现。这部分也可以采用有限状态机模型进行编写。
在完成上述各个部分的设计以后,生成它们的符号文件,再利用QUARTUS II可编程逻辑器件开发软件提供的原理图输入方式把所有符号连接起来实现完整的系统。该系统占用EP1C3T144I-7芯片2910个逻辑单元的42个;104个输入/输出管脚的47个;59904位存储空间的32768位。系统实际工作时钟为1MHz,FPGA芯片在完成本次设计可达到的最高时钟为212MHz。
5、结束语
用电设备的技术复杂程度的提高使得仅用有功功率进行计量已经不能表示输送到终端的全部电量。根据一些电力供应商的经验,对无功功率也进行计量是解决问题的一种对策。例如意大利最重要的电力公司已经决定安装2000万只同时具有有功功率和无功功率计量的电能表用于对用户的用电进行计量。
本文作者创新点:利用数字方法实现有功功率和无功功率测量的方法,并利用EP1C3T144I-7这样的FPGA芯片完成对2个TLC0820模拟/数字转换器的工作控制,克服了电压信号和电流信号测量的不同步所引起的测量误差。系统可以实现电网功率,包括有功功率、无功功率以及总功率,的计量。整个系统具有比较满意的各项功率测量精度,并且结构简单,成本低廉。
责任编辑:gt
评论
查看更多