陳紅芳,舒 雋
(華北電力大學(xué) 電氣與電子工程學(xué)院,北京 102206)
智能電能表的標(biāo)準(zhǔn)統(tǒng)一,自動(dòng)化測(cè)試技術(shù)日益強(qiáng)盛,電子類設(shè)備成本的降低,人員成本的增加,為了提供可靠的產(chǎn)品,減少產(chǎn)品故障率,因此實(shí)現(xiàn)自動(dòng)化測(cè)試是科技發(fā)展的方向.就利潤(rùn)最大化的發(fā)展趨勢(shì).
智能電能表行業(yè)性很強(qiáng),因此沒(méi)有通用的自動(dòng)測(cè)試軟件.只有開(kāi)發(fā)一套符合智能電能表要求的自動(dòng)測(cè)試系統(tǒng)才能提高產(chǎn)品研發(fā)、測(cè)試、生產(chǎn)效率.自動(dòng)測(cè)試系統(tǒng)研發(fā)出來(lái)之后,應(yīng)用與樣機(jī)階段,可以把測(cè)試人員從繁重的黑盒測(cè)試中解脫出來(lái),讓測(cè)試人員有更多的時(shí)間去分析、研究測(cè)試方法,以提高測(cè)試效率,提升產(chǎn)品質(zhì)量,縮短開(kāi)發(fā)周期.應(yīng)用與小批生產(chǎn)時(shí)可以在同樣多的時(shí)間內(nèi)測(cè)試更多的功能,并且更容易發(fā)現(xiàn)不良品,發(fā)現(xiàn)個(gè)體差異,或概率性問(wèn)題.應(yīng)用與批量生產(chǎn)時(shí)可以提高生產(chǎn)效率,減少人工操作,提高產(chǎn)品質(zhì)量,提高產(chǎn)品交貨合格率.
智能電能表是屬于工業(yè)產(chǎn)品,需要長(zhǎng)期可靠穩(wěn)定運(yùn)行,那么每一個(gè)功能都需要經(jīng)過(guò)嚴(yán)格的測(cè)試.而黑盒測(cè)試是不能完全覆蓋,而這種嵌入式產(chǎn)品沒(méi)有現(xiàn)成的自動(dòng)測(cè)試軟件.因此我們開(kāi)發(fā)了一款基于智能電能表產(chǎn)品的自動(dòng)測(cè)試系統(tǒng).這套系統(tǒng)的特點(diǎn)是:滿足測(cè)試方案靈活性需求,用戶自定義測(cè)試方案;多種臺(tái)體的適應(yīng)性;多種表計(jì)協(xié)議的適應(yīng)性;單機(jī)版和網(wǎng)絡(luò)版的適應(yīng)性.此系統(tǒng)需要與多功能電源臺(tái)體配合使用,否則使用功能將收到限制.
智能電能表的通信協(xié)議共有3萬(wàn)多條,每一條都要進(jìn)行測(cè)試才能保證產(chǎn)品的可靠性,測(cè)試周期很長(zhǎng),并且各功能之間又存在關(guān)聯(lián),需要交叉測(cè)試,因此測(cè)試的復(fù)雜度非常高.智能電能表的功能也非常多,主要的功能有:電量、最大需量、瞬時(shí)量、時(shí)區(qū)時(shí)段、顯示、負(fù)荷曲線、事件記錄、凍結(jié)、合格率、狀態(tài)字等功能.
我們?cè)O(shè)計(jì)開(kāi)發(fā)的這套系統(tǒng)采用MICROSOFT.NET編程語(yǔ)言.操作系統(tǒng)是:Windows XP.數(shù)據(jù)庫(kù)是:SQL或SQLLite.腳本語(yǔ)言:C#.
這套軟件使用是必須與多功能自動(dòng)測(cè)試臺(tái)體配合才能使用.這種臺(tái)體需要具有以下的功能:三相電壓、電流可任意調(diào)節(jié)大??;相角可任意調(diào)節(jié);脈沖常數(shù)可以任意設(shè)置;頻率可任意調(diào)節(jié);臺(tái)體具有多功能輸出檢測(cè)裝置;臺(tái)體能檢測(cè)脈沖信號(hào);臺(tái)體能檢測(cè)時(shí)鐘信號(hào);臺(tái)體能檢測(cè)報(bào)警、跳閘信號(hào).臺(tái)體的所有操作都可以通過(guò)命令方式實(shí)現(xiàn).這樣可以在腳本中隨意控制臺(tái)體,并讀取臺(tái)體的狀態(tài)和數(shù)據(jù).臺(tái)體提供通信接口,臺(tái)體廠家提供.
我們選用C#語(yǔ)言來(lái)做為我們的腳本語(yǔ)言,此語(yǔ)言是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NET Framework之上的高級(jí)程序設(shè)計(jì)語(yǔ)言.C#是一種安全的、穩(wěn)定的、簡(jiǎn)單的、優(yōu)雅的,由C和C++衍生出來(lái)的面向?qū)ο蟮木幊陶Z(yǔ)言.它可以讓我們的測(cè)試人員快速地編寫(xiě)各種腳本語(yǔ)言.正是由于C#面向?qū)ο蟮淖吭皆O(shè)計(jì),使它成為我們選用的最佳腳本語(yǔ)言.
腳本語(yǔ)言是為了縮短傳統(tǒng)的編寫(xiě)-編譯-鏈接-運(yùn)行過(guò)程而創(chuàng)建的計(jì)算機(jī)編程語(yǔ)言.一個(gè)腳本通常是解釋運(yùn)行而非編譯.因此我們開(kāi)發(fā)設(shè)計(jì)的腳本語(yǔ)言也是一樣的具有:簡(jiǎn)單、易學(xué)、易用的特性.目前腳本語(yǔ)言應(yīng)用的范圍也是非常的寬,如:DOS,Windows的批處理文件和Unix的shell腳本、游戲中的角色、網(wǎng)頁(yè)中的嵌入式教本等等應(yīng)用范圍非常廣泛,其可靠性也是非常的高.我們開(kāi)發(fā)的自動(dòng)測(cè)試系統(tǒng)利用腳本來(lái)編寫(xiě)自動(dòng)測(cè)試腳本的優(yōu)點(diǎn)有:
快速開(kāi)發(fā):腳本語(yǔ)言極大地簡(jiǎn)化了“開(kāi)發(fā)、部署、測(cè)試和調(diào)試”的周期過(guò)程.不需要學(xué)習(xí).net開(kāi)發(fā)工具如何使用,只要學(xué)習(xí).net編程技巧,而這些編程技巧在大學(xué)時(shí)都學(xué)過(guò),所以現(xiàn)在只要再進(jìn)行升華就可以應(yīng)用了.
容易部署:腳本語(yǔ)言都能夠隨時(shí)部署,而不需要耗時(shí)的編譯/打包過(guò)程.我們?cè)O(shè)計(jì)的腳本開(kāi)發(fā)提供語(yǔ)法檢查,而編譯、打包是在運(yùn)行時(shí)才進(jìn)行,由樣機(jī)自動(dòng)測(cè)試系統(tǒng)來(lái)提供,這樣測(cè)試人員在編寫(xiě)腳本時(shí)只需要寫(xiě)具體的操作流程即可,而并用再進(jìn)行其它部署.
易學(xué)易用:我們開(kāi)發(fā)的這套系統(tǒng)已經(jīng)把常用的操作編寫(xiě)成函數(shù)或動(dòng)態(tài)庫(kù)形式,可以在腳本中任意調(diào)用.
這套系統(tǒng)的整體框架結(jié)構(gòu)是采用C/S結(jié)構(gòu),采用多層分級(jí)管理結(jié)構(gòu):物理層、邏輯層、應(yīng)用層.詳細(xì)架構(gòu)如圖一所示.物理層主要有:電源臺(tái)體、智能電能表、PC機(jī)、服務(wù)器.邏輯層有:通信接口及管理、規(guī)約管理層和數(shù)據(jù)庫(kù)管理層.應(yīng)用層是與用戶直接操作的界面,應(yīng)用層提供了用戶管理、臺(tái)體管理、項(xiàng)目管理、參數(shù)管理、腳本管理、協(xié)議管理、數(shù)據(jù)管理、日志管理等功能.
圖1
通信層首先要對(duì)串口、網(wǎng)口進(jìn)行初始化,只有在通信通道暢通的情況下才能繼續(xù)通信指令操作.對(duì)與通信方式上的判斷從以下幾個(gè)方面進(jìn)行判斷.通信方式.通信方式的選擇是根據(jù)目的地來(lái)選擇.通信目標(biāo).即命令類型,命令傳輸?shù)哪康牡?指令內(nèi)容.指令內(nèi)容的判斷,命令是給表計(jì)還是臺(tái)體的.指令配置信息.指令配置信息是指,指令的執(zhí)行次數(shù),是否需要判斷長(zhǎng)度、校驗(yàn)和、是否需要返回等.當(dāng)系統(tǒng)接受到信息之后需要根據(jù)配置信息進(jìn)行解析.
規(guī)約管理層包含:DL/T645-2007通信規(guī)約、TCPIP協(xié)議、與臺(tái)體通信協(xié)議等,方便擴(kuò)充規(guī)約,如:IEC1107、IEC62056等規(guī)約.規(guī)約管理層還負(fù)責(zé)規(guī)約解析,負(fù)責(zé)對(duì)下發(fā)和接受的指令進(jìn)行解析.當(dāng)腳本中需要對(duì)表計(jì)進(jìn)行操作時(shí),會(huì)先生成一個(gè)新的XML文件,在從規(guī)約數(shù)據(jù)中獲取相關(guān)信息完善到XML文件中,得到完整的信息之后,在把指令從通信通道下發(fā)至目的地.根據(jù)通信協(xié)議標(biāo)準(zhǔn)把下發(fā)的內(nèi)容轉(zhuǎn)化成報(bào)文形式.當(dāng)收到命令時(shí)再把報(bào)文解析成文字或數(shù)據(jù).通信解析管理首先要建立通訊鏈路,在建立解析進(jìn)程,然后管理流程,建立通訊層與解析層的關(guān)聯(lián);將信息傳給應(yīng)用層;處理完之后釋放線程.
數(shù)據(jù)庫(kù)采用的是SQL或SQLLite數(shù)據(jù)庫(kù),這兩者是完全兼容的,并且SQLLite數(shù)據(jù)庫(kù)是開(kāi)源的,對(duì)于一些小型用戶已經(jīng)足夠,而對(duì)于用戶數(shù)量較多的用戶可以選擇SQL數(shù)據(jù)庫(kù).
應(yīng)用層主要的功能是管理用戶、用戶權(quán)限、臺(tái)體管理、項(xiàng)目管理、腳本管理、協(xié)議管理的用戶操作界面.
當(dāng)用戶需要運(yùn)行腳本時(shí),首先進(jìn)入腳本運(yùn)行界面,選擇需要執(zhí)行的腳本,選擇配置參數(shù)文件.會(huì)調(diào)用腳本,把腳本編譯成C#源代碼,再編譯成可執(zhí)行的動(dòng)態(tài)庫(kù)文件.最后再調(diào)用可執(zhí)行文件,運(yùn)行腳本.
腳本運(yùn)行時(shí),首先把表計(jì)信息、臺(tái)體信息、默認(rèn)參數(shù)等眾多參數(shù)傳入到運(yùn)行的腳本中,然后連接數(shù)據(jù)庫(kù),調(diào)用臺(tái)體信息、項(xiàng)目信息得到表計(jì)信息,再執(zhí)行腳本,執(zhí)行腳本時(shí)需要調(diào)用數(shù)據(jù)庫(kù)管理層、通信解析管理層、解析層和通信層.執(zhí)行完成之后釋放所有的線程,保存數(shù)據(jù)到數(shù)據(jù)庫(kù),發(fā)送結(jié)束消息,把表計(jì)電源斷掉.退出腳本運(yùn)行狀態(tài)
腳本主要測(cè)試表計(jì)當(dāng)前分相電能的走字功能,包括正、反向有無(wú)功分相電能和四象限的分相電能.
該腳本走的電流為400%Ib,先走第一象限,分別單獨(dú)走A、B、C三相,加電流時(shí),先抄讀表計(jì)的時(shí)間,延時(shí)一段時(shí)間(600秒)后,再抄讀表計(jì)的時(shí)間并掉電流,利用前后兩次的時(shí)間差跟理論的功率乘積來(lái)計(jì)算理論電量.再抄讀當(dāng)前所走電能跟理論值進(jìn)行比較.
設(shè)備:自動(dòng)測(cè)試臺(tái)體、標(biāo)準(zhǔn)源、PC機(jī)、局域網(wǎng)
測(cè)試點(diǎn):100%Un,400%Ib.
測(cè)試方法:
(1)臺(tái)體啟動(dòng)工作電壓,設(shè)置表計(jì)額定電壓,額定電流等參數(shù);
(2)顯示本腳本可實(shí)現(xiàn)的功能;
(3)表計(jì)上額定電壓并延時(shí)10秒;
(4)表計(jì)執(zhí)行清零操作,并設(shè)置相關(guān)參數(shù).
(5)設(shè)置電流幅值為400%Ib,相位調(diào)整為30度.
(6)上ABC相電流.
(7)抄讀表計(jì)時(shí)間和當(dāng)前臺(tái)體功率.
(8)延時(shí)600秒后再掉電流.
(9)抄讀表計(jì)時(shí)間,根據(jù)這兩次的時(shí)間差計(jì)算理論電量.
(10)抄讀相應(yīng)電量跟理論值比對(duì).
(11)結(jié)束測(cè)試,生成測(cè)試結(jié)果.6.7.3 腳本代碼:電量走字
函數(shù)腳本(計(jì)算理論電量與實(shí)際電量之差,當(dāng)電量之差小一0.02時(shí)即判斷合格,否則判斷不合格):
CompareData(table1,"0001FF00",refer_anerg);//判讀電量是否正確,并輸出結(jié)果
整套系統(tǒng)運(yùn)行之后的主界面如下圖,主要的目錄是:文件(修改密碼、退出)、檔案維護(hù)(項(xiàng)目維護(hù)、項(xiàng)目表計(jì)信息)、自動(dòng)測(cè)試(自動(dòng)測(cè)試、默認(rèn)參數(shù)配置、測(cè)試查詢)、腳本管理(腳本編輯、命令編輯、測(cè)試項(xiàng)目管理)、設(shè)置抄讀(表計(jì)設(shè)置抄讀、設(shè)置抄讀方案、負(fù)荷曲線)、系統(tǒng)維護(hù)(用戶管理、協(xié)議導(dǎo)入、模塊配置、數(shù)據(jù)庫(kù)配置、通信參數(shù)配置)、幫助(幫助、關(guān)于).圖2是系統(tǒng)正在運(yùn)行的主界面.
圖2
這套樣機(jī)自動(dòng)測(cè)試系統(tǒng)是采用了先進(jìn)的腳本編寫(xiě)方式來(lái)實(shí)現(xiàn)自動(dòng)測(cè)試.腳本編寫(xiě)最大的好處是靈活.腳本的編寫(xiě)、修改都非常方便,靈活性很大,腳本編寫(xiě)好了之后可以無(wú)故障連續(xù)運(yùn)行.利用腳本來(lái)進(jìn)行自動(dòng)化測(cè)試是目前自動(dòng)測(cè)試領(lǐng)域中最先進(jìn)的方式.
〔1〕王瑩.智能電表/智能能源的技術(shù)市場(chǎng).電子產(chǎn)品世界,2012-07-19.
〔2〕羅秋鳳,肖前貴,楊柳慶.無(wú)人機(jī)自動(dòng)檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).儀器儀表學(xué)報(bào),2011(1).
〔3〕徐理中,寥述劍.基于ATML的自動(dòng)測(cè)試系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn).測(cè)試技術(shù),2008(07).
〔4〕黃全安,宋健.AMT控制器自動(dòng)測(cè)試系統(tǒng)設(shè)計(jì).測(cè)控技術(shù),2012(01).
〔5〕吳建平.淺談C#面向?qū)ο缶幊痰闹匾匦裕庋b性、繼承性及多態(tài)性.計(jì)算機(jī)軟件,2012.