三相多功能电能表检定软件设计与开发
引言
随着国民经济和社会的快速发展,人民生活水平的不断提高,全社会对安全、经济、优质用电的要求越来越高,于是可以计量正/反向有功电能、正/反向无功电能、四象限无功电能,并具有多费率控制,负荷曲线记录的多功能电能表已在实际工作中大量使用。三相多功能电能表检定装置也随之发展起来。为了适应三相多功能电能表检定装置的要求,本文以Delphi 7为开发平台设计和开发出了一款技术先进、功能实用、管理全面的三相多功能电能表检定软件系统。该系统除具备普通电能表检定的功能之外,还具有测量正反向有无功电量、四象限无功电能的基本误差、日计时误差和时段投切误差、最大需量误差和需量周期误差等项目的功能[1]。
系统设计
电能表是当前电能计量和经济结算的主要工具,它的准确与否直接关系到国家与用户的经济利益[2]。因此,必须按照先进性、实用性、可靠性、安全性、可维护性及开放性等原则[3],来设计和开放电能表检定软件系统。同时,作为多功能电能表检定软件系统,它应该对所有电能表的各项参数和指标进行检定考核,符合DL/614-2007《多功能电能表》、DL/T645-2007 《多功能电能表通讯规约》、DL/T 460-2005《交流电能表检验装置检定规程》等规程的要求。而且,具备多功能电能表数据的管理功能和极强的证书、报表的打印功能。
根据上述分析,把三相多功能电能表检定软件系统具体分为四个子模块:参数设置模块、试验管理模块、结果查询及打印模块和系统维护模块。
参数设置模块包括系统参数设置和资产参数设置。系统参数设置可以对校验台的挂表总数、通讯规约、通讯端口等进行设置,同时可以对误差试验的误差限内控、误差化整、误差稳定性、误差结果处理等进行设置。在资产参数中要输入资产编号、电表常数、等级、电压档位、额定电流等信息。
试验管理模块包括试验准备、试验项目及自定义校验三个模块。试验准备是在试验校验前进行预热工作和光电头测试工作。试验项目包括基本试验、多功能试验和自定义试验。基本试验是对启动、潜动、谐波、校核常数及基本误差进行鉴定。多功能试验项目针对多功能电子表设计,试验项目有基频试验、时段投切试验、最大需量示值误差试验、计度器组合误差试验和多功能表通讯测试。可以用自定义校验对特殊点进行校验,校验时用户自己设定电压、电流、频率、相位等。
结果查询及打印模块, 校验完成后结果自动存储,用户可以进行查询并打印检定证书或试验数据。系统维护模块,通过建立用户密码识别体系,并对用户进行权限控制,从而保证特定的用户只能执行指定允许的操作。
系统工作流程
该系统包括的主要校验项目如图1所示,检定人员可以任意选择一个或者几个项目进行。另外,为了让检定人员从重复劳动中解脱出来,降低工作强度,提高效率,同时也减少了人为因素的影响,使检定数据的采集更加准确可靠,本系统增加了自动校验。当选择自动校验时,设定完参数后,系统将根据图1完成所有的校验项目,直到保存校验结果、打印鉴定记录和鉴定证书试验结束。
系统主要功能实现
本系统以Delphi 7 为开发平台,Delphi 7具有强大的数据库支持能力,通过引擎BDE(Borland Database Engine)对数据库进行操作和管理并与各种数据库接口。同时,Delphi 7提供功能强大的数据窗口画板及其交互功能,可以提高开发效率,缩短开发周期。
该系统从RS-232串口接收数据,然后转化成记录结构,各功能模块根据记录的数据进行处理和显示。主界面消息分发处理机制的主要代码如下:
procedure Tmain_form.OnGetData(var Msg :TMsg);
var
lPort, mPort: integer;
while CheckRecData(lPort, mPort, OutData) = 1 do
begin
if OutData.Order = UI_Order then
Power; //电源显示
if (OutData.Order = Error_Order)
then
if stand_check_form <> nil then
//电能表误差检定
SendMessage(stand_check_form.
handle, MSG_ERR, 0, 0);
end;
if (OutData.Order = Hits_Order) or
(OutData.Order = Capture_Order)
then
begin
if Start_test_form <> nil then
//起动、潜动试验
SendMessage(Start_test_form.
handle, MSG_StartTest, 0, 0);
if Under_Test_Form <> nil then
SendMessage(Under_test_form.
handle, MSG_UnderTest, 0, 0);
end;
if (OutData.Order = Ask_FReq_
Order) and (JpForm <> nil) then
SendMessage(Jpform.Handle,
MSG_JpTest, 0, 0); //基
- 基于Delphi的直流伺服电机自动测试系统的设计(11-28)
- 12位串行A/D转换器MAX187的应用(10-06)
- 用简化方法对高可用性系统中的电源进行数字化管理(10-02)
- 高速差分ADC驱动放大器AD8137及其应用(01-17)
- 能够产生连续电弧的1kV电源 (01-22)
- 基于CH371的实用USB接口设计(01-23)