噜噜噜噜私人影院,少妇人妻综合久久中文字幕888,AV天堂永久资源网,5566影音先锋

歡迎來(lái)到優(yōu)發(fā)表網(wǎng)!

購(gòu)物車(0)

期刊大全 雜志訂閱 SCI期刊 期刊投稿 出版社 公文范文 精品范文

單元測(cè)試方法范文

時(shí)間:2023-02-17 17:22:14

序論:在您撰寫(xiě)單元測(cè)試方法時(shí),參考他人的優(yōu)秀作品可以開(kāi)闊視野,小編為您整理的7篇范文,希望這些建議能夠激發(fā)您的創(chuàng)作熱情,引導(dǎo)您走向新的創(chuàng)作高度。

單元測(cè)試方法

第1篇

關(guān)鍵詞:飛行控制軟件;單元測(cè)試;動(dòng)態(tài)測(cè)試

中圖分類號(hào):TP301

文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2015)005-0029-03

作者簡(jiǎn)介:劉思思(1985-),女,陜西商洛人,碩士,上海機(jī)電工程研究所工程師,研究方向?yàn)轱w行控制軟件開(kāi)發(fā)、系統(tǒng)集成與驗(yàn)證;劉迪(1985-),男,黑龍江哈爾濱人,碩士,上海機(jī)電工程研究所工程師,研究方向?yàn)橹茖?dǎo)控制系統(tǒng)設(shè)計(jì)與仿真。

0 引言

在飛行控制軟件(簡(jiǎn)稱飛控軟件)開(kāi)發(fā)過(guò)程中,單元測(cè)試環(huán)節(jié)必不可少。其中,靜態(tài)度量指標(biāo)可以用專門(mén)的工具很方便得出其具體數(shù)值,而動(dòng)態(tài)測(cè)試雖然也有專門(mén)的工具,但編寫(xiě)測(cè)試用例需要花費(fèi)大量時(shí)間和精力。當(dāng)前,航天多型號(hào)開(kāi)發(fā)任務(wù)重,迫切需要應(yīng)用自動(dòng)化的測(cè)試工具軟件來(lái)提高動(dòng)態(tài)測(cè)試的工作效率。

本文結(jié)合飛控軟件的特點(diǎn),論述通過(guò)自動(dòng)生成測(cè)試用例的工具軟件Cantata6.2進(jìn)行單元?jiǎng)討B(tài)測(cè)試的方法。

1 飛行控制軟件特點(diǎn)

飛控軟件的主要功能是完成相關(guān)設(shè)備之間的實(shí)時(shí)信息交互與控制解算,從而實(shí)現(xiàn)飛行過(guò)程中姿態(tài)和位置的控制。飛控軟件主要分為應(yīng)用層軟件、接口協(xié)議層軟件和底層驅(qū)動(dòng)軟件3個(gè)部分,軟件架構(gòu)如圖1所示。

應(yīng)用層軟件由實(shí)現(xiàn)姿態(tài)和位置控制的各功能模塊組成;接口協(xié)議層軟件主要為飛行控制設(shè)備與其它設(shè)備之間通信的協(xié)議模塊;底層驅(qū)動(dòng)軟件主要由飛行控制設(shè)備的接口驅(qū)動(dòng)模塊以及硬件輸入輸出模塊組成。

飛控軟件嵌入在飛控設(shè)備中,具有實(shí)時(shí)性高、時(shí)序和邏輯復(fù)雜、可靠性高的特點(diǎn)。首先,要確保底層驅(qū)動(dòng)軟件和接口協(xié)議軟件的正確性,使得各類信號(hào)得以正確傳輸;其次,要確保軟件與控制算法模型的一致性,輸入輸出及解算正確;最后,要確保軟件時(shí)序和邏輯的正確性。只有這樣才能保證飛行控制系統(tǒng)正常工作。

2 飛行控制軟件單元測(cè)試的意義

對(duì)飛控軟件的最小組成單位――函數(shù)進(jìn)行測(cè)試的目的在于檢驗(yàn)其能否正確地實(shí)現(xiàn)其功能,滿足性能指標(biāo)和接口要求。通過(guò)語(yǔ)句(SC)、條件(DC)、修正條件判斷(MC/DC)等覆蓋率指標(biāo)評(píng)價(jià)程序結(jié)構(gòu),及早發(fā)現(xiàn)軟件代碼中的編碼和邏輯錯(cuò)誤。

對(duì)控軟件來(lái)說(shuō),被測(cè)函數(shù)已經(jīng)完成了編碼和調(diào)試,能夠通過(guò)編譯和鏈接進(jìn)行單元測(cè)試。此外,不考慮每個(gè)模塊與其它模塊之間的關(guān)系,為每個(gè)模塊設(shè)計(jì)驅(qū)動(dòng)模塊和樁模塊,每個(gè)模塊進(jìn)行獨(dú)立的單元測(cè)試,各模塊的單元測(cè)試可以并行進(jìn)行,能夠提高測(cè)試效率,也較容易實(shí)現(xiàn)100%的覆蓋率指標(biāo)要求[1]。

3 Cantata6.2測(cè)試工具

3.1 Cantata6.2簡(jiǎn)介

Cantata6.2采用先進(jìn)的代碼分析器和AutoTest技術(shù),智能分析被測(cè)代碼,掃描代碼的所有可能路徑,根據(jù)選定的覆蓋率標(biāo)準(zhǔn),自動(dòng)生成滿足100%覆蓋率的測(cè)試用例。對(duì)全局變量、返回值自動(dòng)賦期望值,并包含對(duì)全局變量、返回值、調(diào)用函數(shù)參數(shù)傳遞等進(jìn)行檢查。對(duì)形參為復(fù)雜類型,如結(jié)構(gòu)體指針的情況,能自動(dòng)生成相應(yīng)的測(cè)試對(duì)象,即構(gòu)造一個(gè)結(jié)構(gòu)體數(shù)組,將結(jié)構(gòu)體數(shù)組的地址賦給形參。自動(dòng)生成樁函數(shù),在測(cè)試工程中替代真實(shí)的外部函數(shù)。使用Cantata6.2進(jìn)行單元測(cè)試的原理如圖2所示。

用戶可以使用Cantata6.2工具AutoTest選擇相應(yīng)的覆蓋率規(guī)則集,通常航天A級(jí)軟件要滿足修正條件判斷(MC/DC)覆蓋率100%,B級(jí)軟件要滿足分支判斷(DC)覆蓋率指標(biāo)100%,C級(jí)軟件要滿足語(yǔ)句(SC)覆蓋率指標(biāo)100%。飛控軟件通常均為A級(jí)軟件,選擇DO-178B/ED-12B Level A Coverage規(guī)則,自動(dòng)生成滿足SC、DC、MC/DC3個(gè)覆蓋率指標(biāo)要求的測(cè)試腳本文件。

3.2 含有樁函數(shù)的測(cè)試實(shí)例

本文以飛控軟件的指令形成函數(shù)模塊為例,檢驗(yàn)Cantata6.2的動(dòng)態(tài)測(cè)試功能。該函數(shù)模塊的主要功能是形成穩(wěn)定控制系統(tǒng)姿態(tài)控制等的指令信號(hào)。代碼框架如下:

void Instruction (C_INSTRCUTION *C_)

{

……; //定義局部變量

if(C_->fInTT < t1)

{

……; //控制解算

}

else

{

……; //控制解算

Function1(C_);

……;

if(C_-> fInTT < t2) //注①

{

……;

}

else

{

……;

}

……;

}

}

利用Cantata6.2進(jìn)行動(dòng)態(tài)測(cè)試。自動(dòng)生成10個(gè)測(cè)試用例并執(zhí)行完后,語(yǔ)句覆蓋率和分支判斷覆蓋率都沒(méi)有達(dá)到100%,源代碼中注①處標(biāo)注的條件判斷的假分支沒(méi)有得到執(zhí)行。于是,手動(dòng)添加一個(gè)測(cè)試用例,使得在給定的輸入條件下結(jié)構(gòu)體變量C_-> fInTT的值落在[t2,∞)的區(qū)間內(nèi),接著重新執(zhí)行該測(cè)試用例,結(jié)果還是執(zhí)行不到該假分支。仔細(xì)分析代碼后發(fā)現(xiàn),該分支中的條件判斷表達(dá)式中的結(jié)構(gòu)體變量C_-> fInTT的值已被樁函數(shù)Function1(C_)修改。

處理方法如下:第一步,在Cantata6.2的調(diào)用接口控制界面中,為該樁函數(shù)添加一個(gè)新的樁函數(shù)實(shí)例,并手動(dòng)修改結(jié)構(gòu)體變量C_-> fInTT的值,該數(shù)值應(yīng)大于或等于t2;第二步,在Cantata6.2測(cè)試用例界面,將調(diào)用序列更改為新的樁函數(shù)實(shí)例。至此,執(zhí)行全部11個(gè)測(cè)試用例之后,滿足語(yǔ)句和分支判斷覆蓋率全達(dá)到100%的指標(biāo)要求。

3.3 編譯器對(duì)測(cè)試結(jié)果的影響

飛行控制軟件的編譯器目前主要使用CCS2.2或CCS3.3,在用Cantata6.2進(jìn)行單元測(cè)試時(shí),CCS被設(shè)置為Simulator模式,Cantata6.2會(huì)自動(dòng)調(diào)用CCS,執(zhí)行編譯好的測(cè)試中間文件,進(jìn)而生成測(cè)試結(jié)果文件。測(cè)試過(guò)程中,筆者發(fā)現(xiàn)對(duì)于如下代碼段,Cantata6.2自動(dòng)生成的測(cè)試用例對(duì)X自動(dòng)賦值為0.9999,調(diào)用CCS2.2執(zhí)行用例后,代碼運(yùn)行的實(shí)際路徑與期望路徑不一致,測(cè)試結(jié)果不能達(dá)到100%的分支覆蓋率指標(biāo)要求。

#define ZEROP 0.00001

void Function2 (void)

{

if(X

{

……;

}

else

{

……;

}

……;

}

筆者分別在CCS2.2和CCS3.3編譯器環(huán)境下,驗(yàn)證了該代碼段的運(yùn)行情況,最終得出結(jié)論如下:①在CCS2.2編譯器下,程序執(zhí)行真分支,與期望不一致,結(jié)果不正確;②在CCS3.3編譯器下,程序執(zhí)行假分支,與期望一致,結(jié)果正確。上述結(jié)果表明,不同的編譯器版本影響程序?qū)嶋H執(zhí)行路徑的正確性。

4 基控軟件的Cantata6.2使用策略

4.1 Cantata6.2使用策略

飛控軟件中包含很多復(fù)雜的結(jié)構(gòu)體數(shù)據(jù)類型,Cantata6.2能夠?qū)Y(jié)構(gòu)體類型自動(dòng)賦值,不用手動(dòng)一一賦值;而且飛控軟件涉及大量數(shù)學(xué)計(jì)算,Catata6.2的測(cè)試腳本是開(kāi)放的純C代碼,可在其腳本管理器界面或測(cè)試腳本中直接修改某個(gè)測(cè)試用例的變量值,提高測(cè)試效率。Cantata6.2測(cè)試工具是通用的,而飛控軟件具有其特殊性,就二者的融合使用,筆者總結(jié)出如下經(jīng)驗(yàn):

(1)飛控軟件中一般都包含do while(1)的死循環(huán)結(jié)構(gòu),測(cè)試時(shí)需要將這類死循環(huán)放開(kāi),測(cè)試用例才能執(zhí)行完畢。

(2)飛控軟件中包含有很多類似“x=x”的賦值操作,本義是在某些特定條件下,x的值不變,測(cè)試時(shí)要將這類語(yǔ)句注釋起來(lái),否則Cantata6.2會(huì)報(bào)錯(cuò)。

(3)當(dāng)被測(cè)函數(shù)包含子函數(shù)時(shí),Cantata6.2會(huì)自動(dòng)作打樁處理,但樁函數(shù)有可能會(huì)修改某些全局變量的值,進(jìn)而導(dǎo)致某個(gè)分支始終無(wú)法覆蓋。這時(shí),可以在該樁函數(shù)的調(diào)用接口添加一個(gè)樁函數(shù)實(shí)例,并手動(dòng)修改該變量的值,再將調(diào)用序列更改為新的樁函數(shù)實(shí)例,如3.2小節(jié)所述實(shí)例。

(4)飛控軟件作為嵌入式軟件,最終是固化在飛控設(shè)備中,構(gòu)成飛控系統(tǒng)運(yùn)行。因此,軟件一般都包含對(duì)硬件端口地址的操作,如果是從端口輸出數(shù)據(jù),測(cè)試時(shí)需要將這些代碼注釋起來(lái),如果是讀取某個(gè)地址的值,則可以自己定義一個(gè)變量代替該數(shù)值,否則將導(dǎo)致不能自動(dòng)生成測(cè)試用例。

(5)飛控軟件中的控制算法一般都包含有積分計(jì)算,開(kāi)發(fā)人員一般習(xí)慣定義靜態(tài)的局部變量,遇到這種情況時(shí),應(yīng)該將這些變量移到函數(shù)外部定義,否則會(huì)導(dǎo)致不能自動(dòng)生成測(cè)試用例。

4.2 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)

Cantata6.2測(cè)試工具能夠自動(dòng)生成測(cè)試用例,即使不滿足語(yǔ)句、分支判斷、修正條件判斷覆蓋率100%要求,測(cè)試人員也能很快根據(jù)覆蓋率結(jié)果圖示手動(dòng)添加新的測(cè)試用例,使得該用例執(zhí)行后覆蓋到上一次未覆蓋到的分支。但是,就筆者的使用經(jīng)驗(yàn)而言,Cantata6.2對(duì)被測(cè)代碼的要求比較高,被測(cè)代碼要符合標(biāo)準(zhǔn)C要求,其頭文件不能相互嵌套重復(fù)引用,否則一個(gè).c文件和其相關(guān)的.h文件加載進(jìn)去就會(huì)出現(xiàn)錯(cuò)誤提示和警告,而且必須將這些錯(cuò)誤提示解決完并通過(guò)編譯后,才能進(jìn)行下一步生成測(cè)試用例的工作。此外,由控軟件具有邏輯復(fù)雜、運(yùn)算量大的特點(diǎn),要借助Cantata6.2的自動(dòng)生成測(cè)試用例的功能快速完成飛控軟件測(cè)試,這也對(duì)飛控軟件的代碼質(zhì)量和框架結(jié)構(gòu)提出了比較高的要求。在飛控軟件框架結(jié)構(gòu)和代碼質(zhì)量比較高的情況下,可以加載整個(gè).c文件,一次性生成整個(gè).c的全部測(cè)試用例,而不用單個(gè)函數(shù)去建測(cè)試工程,從而加快測(cè)試速度。筆者總結(jié)使用經(jīng)驗(yàn)如下:

(1)飛控軟件的自動(dòng)駕駛儀模塊根據(jù)控制系統(tǒng)的模型編寫(xiě),模型中包含滾動(dòng)、偏航、俯仰三通道控制解算算法,該模塊代碼最好拆成3個(gè)函數(shù)模塊,單個(gè)模塊代碼行數(shù)要在200行以內(nèi),便于測(cè)試,代碼結(jié)構(gòu)也更加清晰。

(2)由控軟件的特殊功能需求,同一個(gè)函數(shù)中包含多個(gè)條件表達(dá)式“與”或者“或”,再進(jìn)行邏輯(即if else)判斷的用法非常多,譬如if(條件表達(dá)式1&&條件表達(dá)式2||條件表達(dá)式3),開(kāi)發(fā)人員在編寫(xiě)代碼時(shí),最好將這些條件表達(dá)式的計(jì)算在if判斷之前完成,以有利于測(cè)試用例能夠正常覆蓋到期望的分支。

(3)依據(jù)航天軟件工程化標(biāo)準(zhǔn)要求,飛控軟件的安全關(guān)鍵性等級(jí)一般為A級(jí),單元測(cè)試必須滿足語(yǔ)句(SC)、分支判斷(DC)、修正條件判斷(MC/DC)覆蓋率均達(dá)到100%。MC/DC要求每個(gè)判定中的每個(gè)條件都曾至少一次獨(dú)立影響判定結(jié)果。由控系統(tǒng)的特殊算法需求,模型中涉及分段函數(shù)計(jì)算比較多,選擇MC/DC覆蓋率標(biāo)準(zhǔn)后,某些代碼會(huì)覆蓋不到。代碼結(jié)構(gòu)如下,斜體加粗部分為未覆蓋到的代碼:

if((x1>x2)&&(x1< (x2+const1)))

{

……;

}

else if( (x1>(x2+ const2))&&(x1< (x2+const3))) //注2:0

{

……;

}

else

{

……;

}

分析上述代碼,筆者認(rèn)為由于選擇了修正條件判斷覆蓋率標(biāo)準(zhǔn)MC/DC,Cantata6.2認(rèn)為第一個(gè)判斷條件“x1>x2”的假分支不應(yīng)再包含“x1>(x2+const2)”的判斷條件。類似情況,建議控制系統(tǒng)設(shè)計(jì)師修改模型文件,或者軟件開(kāi)發(fā)人員優(yōu)化程序結(jié)構(gòu)。

(4)通過(guò)3.3小節(jié)中的實(shí)例,建議開(kāi)發(fā)人員應(yīng)該選擇升級(jí)版本的編譯器作為開(kāi)發(fā)工具。此外,筆者嘗試了將ZEROP定義為局部變量0.00001,結(jié)果程序無(wú)論在CCS2.2還是CCS3.3編譯器下,均執(zhí)行不到期望的正確分支,這對(duì)編碼質(zhì)量提出了較高要求。

5 結(jié)語(yǔ)

利用Cantata6.2自動(dòng)生成測(cè)試用例的功能能夠快速完成單元?jiǎng)討B(tài)測(cè)試,促進(jìn)開(kāi)發(fā)人員提高編碼質(zhì)量,提高飛控軟件的可移植性和可維護(hù)性,滿足當(dāng)前航天多型號(hào)軟件開(kāi)發(fā)和單元測(cè)試的工作需求。同時(shí),工具內(nèi)置的很多規(guī)則集能夠幫助測(cè)試人員快速定位軟件編碼錯(cuò)誤和框架問(wèn)題,進(jìn)而幫助開(kāi)發(fā)人員更好的優(yōu)化程序結(jié)構(gòu),進(jìn)一步提高航天軟件研制水平。

參考文獻(xiàn):

[1] 張猛,毛亮.航天嵌入式軟件的單元測(cè)試方法探討[J].航天器工程,2006(7):32-35.

[2] 陶幸輝,宋志剛.嵌入式飛控軟件測(cè)試方法研究及實(shí)踐[J].軟件導(dǎo)刊,2011(8):14-16.

[3] 馬颯颯,趙守偉,肖小峰.基于覆蓋與故障注入的飛控軟件測(cè)試技術(shù)研究[J].計(jì)算機(jī)測(cè)量與控制,2005,13(3):291-293.

第2篇

關(guān)鍵詞:遺傳算法;模擬退火算法;自動(dòng)化;單元測(cè)試

中圖分類號(hào):TP311.53

隨著計(jì)算機(jī)技術(shù)的發(fā)展,計(jì)算機(jī)智能技術(shù)也逐漸得到了開(kāi)發(fā)應(yīng)用,生物智能、人工智能以及算計(jì)智能的聯(lián)合應(yīng)用和優(yōu)勢(shì)互補(bǔ),使智能技術(shù)的應(yīng)用更加有效。隨著計(jì)算機(jī)的普及,軟件產(chǎn)品已經(jīng)深入人們生活工作的各個(gè)領(lǐng)域,成為日常工作、生活、娛樂(lè)的必不可少的組成部分。而對(duì)于軟件安全性能的要求則在很大程度上促進(jìn)了軟件測(cè)試的發(fā)展。軟件測(cè)試是軟件安全性能和良好的使用性能的重要哦保證,貫穿于軟甲開(kāi)發(fā)過(guò)程的始終,保證軟件開(kāi)發(fā)每個(gè)階段的質(zhì)量。

軟件的質(zhì)量需要經(jīng)過(guò)軟件功能測(cè)試才能得到保障,而單元測(cè)試則是軟件功能測(cè)試的基礎(chǔ)和前提,是軟件測(cè)試的起步環(huán)節(jié)。單元測(cè)試針對(duì)的對(duì)象是程序中最小的軟件模塊,一般是軟件開(kāi)發(fā)人員通過(guò)編寫(xiě)小段代碼,針對(duì)被測(cè)試代碼的某個(gè)較小較明確的功能進(jìn)行測(cè)試,看其是否可以正常運(yùn)行。

1 參數(shù)化單元測(cè)試

單元測(cè)試作為軟件測(cè)試的起步環(huán)節(jié),同時(shí)也是不可或缺的環(huán)節(jié),對(duì)軟件的質(zhì)量起著至關(guān)重要的作用。在實(shí)際測(cè)試中,單元測(cè)試代碼的手動(dòng)編寫(xiě)工作是一件極其復(fù)雜且耗時(shí)的工作,并且所選測(cè)試實(shí)例不能保證覆蓋較大的代碼,具有很大的隨機(jī)性,進(jìn)而降低單元測(cè)試的效率。

參數(shù)化單元測(cè)試將程序規(guī)格與測(cè)試用例生成分離,解決了傳統(tǒng)單元測(cè)試存在的弊端。運(yùn)用參數(shù)化單元測(cè)試方法,程序要實(shí)現(xiàn)的功能需要人工書(shū)寫(xiě)代碼,然后測(cè)試工具就會(huì)通過(guò)對(duì)測(cè)試代碼的分析和檢測(cè),自動(dòng)根據(jù)測(cè)試的實(shí)際路徑生成對(duì)應(yīng)的實(shí)例和測(cè)試代碼,實(shí)現(xiàn)代碼的高覆蓋率。

2 基于遺傳算法的搜索策略

在退火算法的運(yùn)行過(guò)程中溶入遺傳算法,稱為退火遺傳算法,依舊是說(shuō),所謂的退火遺傳算法,實(shí)際上是由退火算法和遺傳算法兩個(gè)部分組成,結(jié)合雙方各自的優(yōu)點(diǎn)和特性,所得到的新的綜合性計(jì)算方法。

2.1 遺傳算法依據(jù)

遺傳算法的提出源于計(jì)算機(jī)發(fā)展初期提出的所謂“人工進(jìn)化系統(tǒng)”,它是根據(jù)生物進(jìn)化的特點(diǎn),借鑒優(yōu)勝劣汰的自然遺傳法則,參照達(dá)爾文進(jìn)化論的理論思想而形成的一種不依賴具體問(wèn)題的直接搜索方法,在運(yùn)用遺傳算法進(jìn)行數(shù)據(jù)計(jì)算時(shí),不僅要用到進(jìn)化學(xué)的概念,同時(shí)也要符合遺傳學(xué)說(shuō)的基因遺傳原理。

運(yùn)用遺傳算法進(jìn)行計(jì)算時(shí),一般要經(jīng)過(guò)幾個(gè)基本步驟,即:初始化數(shù)據(jù)、數(shù)據(jù)的擇優(yōu)選擇、隨機(jī)對(duì)選中的兩個(gè)數(shù)據(jù)進(jìn)行交叉互換、根據(jù)遺產(chǎn)學(xué)說(shuō)的基因變異原理所進(jìn)行的個(gè)體數(shù)據(jù)變異、全局最優(yōu)收斂,進(jìn)而得出需要的結(jié)論或數(shù)據(jù)。

2.2 模擬退火算法依據(jù)

模擬退火算法是根據(jù)固體退火過(guò)程和組合優(yōu)化問(wèn)題之間的相似性而提出的。在對(duì)物質(zhì)進(jìn)行加熱處理時(shí),物質(zhì)組成中粒子之間的布朗運(yùn)動(dòng)加強(qiáng),當(dāng)加熱到一定程度時(shí),溫度達(dá)到物質(zhì)熔點(diǎn),固體物質(zhì)會(huì)轉(zhuǎn)化為液體形態(tài)。這時(shí),對(duì)物體進(jìn)行退火處理,使溫度降低,則物體的粒子運(yùn)動(dòng)減弱,并且會(huì)逐漸趨于平衡和有序,最終達(dá)到物質(zhì)性質(zhì)的穩(wěn)定。

模擬退火算法運(yùn)用溫度參數(shù)進(jìn)行控制,當(dāng)溫度較高時(shí),數(shù)據(jù)運(yùn)動(dòng)變化劇烈,從而使解的區(qū)間變化較大,容易接受到較差解;當(dāng)溫度降低,數(shù)據(jù)運(yùn)動(dòng)逐漸減緩時(shí),解的區(qū)間也會(huì)逐漸趨于穩(wěn)定,這時(shí)候就可以得到較為優(yōu)良的解果,從而對(duì)遺傳算法的不足進(jìn)行彌補(bǔ)。

2.3 退火遺傳算法依據(jù)

退火遺傳算法,是指以遺傳算法為主要運(yùn)算方法,并在運(yùn)算過(guò)程中引入模擬退火算法,使兩者達(dá)到優(yōu)勢(shì)互補(bǔ),進(jìn)一步對(duì)群體進(jìn)行優(yōu)化調(diào)整。退火遺傳算法可以分為兩個(gè)組成部分:首先,運(yùn)用遺傳算法的進(jìn)化理論,產(chǎn)生一個(gè)相對(duì)較為優(yōu)良的群體,然后利用模擬退火算法,對(duì)群體中的個(gè)體進(jìn)行優(yōu)化和調(diào)整。

(1)針對(duì)遺傳算子進(jìn)行改進(jìn)

所謂遺傳算子,是指在遺傳算法中,用來(lái)維持遺傳多樣性所使用的算子,遺傳多樣性是生物或數(shù)據(jù)演化過(guò)程中不可或缺的一個(gè)必要性質(zhì),遺傳算子在遺傳算法中類似于自然中的適者生存原則,對(duì)于個(gè)體的進(jìn)化會(huì)產(chǎn)生巨大的影響。

初始進(jìn)化階段,為了保持種群的多樣性,便于從中進(jìn)行選擇,應(yīng)該加大對(duì)于個(gè)體間相互交叉和互換的概率;在進(jìn)化的終極階段,頻繁的交叉互換不利于種群的穩(wěn)定和最優(yōu)解的產(chǎn)生,因此需要適當(dāng)?shù)販p小個(gè)體間的聯(lián)系和活動(dòng),減少最優(yōu)解的求解難度,縮短求解過(guò)程。針對(duì)種群中的個(gè)體而言,在進(jìn)行變異操作時(shí),對(duì)優(yōu)勢(shì)個(gè)體進(jìn)行較小的變異,劣勢(shì)個(gè)體進(jìn)行較大的變異,可以使其更加趨近于最優(yōu)解。

(2)合理構(gòu)造適應(yīng)值函數(shù)

適應(yīng)值函數(shù)可以針對(duì)遺傳算法的求解過(guò)程進(jìn)行指導(dǎo),對(duì)最優(yōu)解的數(shù)值區(qū)間進(jìn)行限定,在適應(yīng)值函數(shù)的構(gòu)造過(guò)程中,引入關(guān)鍵分支的概念。關(guān)鍵分支,指在選定的路徑中,對(duì)存在的結(jié)點(diǎn)的真實(shí)性進(jìn)行判定,求解過(guò)程可能會(huì)在這些結(jié)點(diǎn)處產(chǎn)生偏離,引發(fā)錯(cuò)誤,而這些會(huì)導(dǎo)致求解過(guò)程偏離目標(biāo)路徑的結(jié)點(diǎn),就是關(guān)鍵分支。

適應(yīng)值函數(shù)在遺傳算法中是用來(lái)區(qū)分個(gè)體優(yōu)劣的標(biāo)準(zhǔn),是進(jìn)行自然選擇的唯一依據(jù)。原始適應(yīng)值函數(shù)是對(duì)問(wèn)題最初求解目標(biāo)的反映。適應(yīng)值對(duì)個(gè)體的判斷有兩個(gè)截然相反的情形:適應(yīng)值越大,個(gè)體性能越好和適應(yīng)值越小,個(gè)體性能越好。在遺傳算法中,對(duì)適應(yīng)值函數(shù)是有限制的,即適應(yīng)值函數(shù)必須為非負(fù)數(shù),這就需要選擇較大的適應(yīng)值函數(shù)來(lái)選擇較為優(yōu)良的個(gè)體。

為了使被測(cè)數(shù)據(jù)中每個(gè)參數(shù)都可以得到評(píng)估,根據(jù)相關(guān)數(shù)據(jù)對(duì)判斷結(jié)點(diǎn)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,在保證個(gè)體數(shù)據(jù)得到充分計(jì)算的情況下,不會(huì)對(duì)程序主體造成破壞

3 實(shí)驗(yàn)結(jié)果與分析

為了對(duì)退火遺傳算法的性能進(jìn)行驗(yàn)證,采用判斷三角形的相關(guān)測(cè)試程序,將退火遺傳算法與單純的遺傳算法進(jìn)行對(duì)比,對(duì)進(jìn)化每一代的最大適應(yīng)值進(jìn)行記錄。

從實(shí)驗(yàn)數(shù)據(jù)可以看出,初始進(jìn)化階段,個(gè)體的產(chǎn)生具有隨機(jī)性,在對(duì)實(shí)驗(yàn)進(jìn)行多次運(yùn)行后,可以看出,最高適應(yīng)值之間差異十分明顯。進(jìn)化過(guò)程初期,兩種算法的最高適應(yīng)值都存在較大的波動(dòng),而隨著遺傳的不斷進(jìn)行,退火遺傳算法的最大適應(yīng)值范圍逐漸趨于穩(wěn)定,而遺傳算法的最大適應(yīng)值范圍仍不穩(wěn)定。因此可以得出結(jié)論,將模擬退火算法與遺傳算法相互配合,可以有效避免單一遺傳算法的不足,加快對(duì)最優(yōu)解的計(jì)算速度,減少計(jì)算所需時(shí)間。根據(jù)實(shí)驗(yàn)的數(shù)據(jù),對(duì)多次實(shí)驗(yàn)的結(jié)果進(jìn)行統(tǒng)一總結(jié),可以看出,相對(duì)于單一的遺傳算法而言,退火遺傳算法的進(jìn)化速度大大加快,減少了計(jì)算時(shí)間。

4 結(jié)束語(yǔ)

經(jīng)過(guò)實(shí)驗(yàn)和分析,我們可以看到,生成高代碼覆蓋率的測(cè)試用例是自動(dòng)化測(cè)試的關(guān)鍵問(wèn)題,是提高自動(dòng)化測(cè)試性能的主要手段。針對(duì)遺傳算法存在的缺陷,將遺傳算法和模擬退火算法相互結(jié)合,實(shí)現(xiàn)優(yōu)勢(shì)互補(bǔ),針對(duì)群體數(shù)據(jù)中的遺傳算子以及適應(yīng)值函數(shù)作出改進(jìn),最終通過(guò)對(duì)比實(shí)驗(yàn),驗(yàn)證了退火遺傳算法的有效性和優(yōu)越性。

參考文獻(xiàn):

[1]趙慧娟,孫文輝.基于退火遺傳算法的單元測(cè)試方法[J].計(jì)算機(jī)工程,2013,39(1):49-53.

[2]楊學(xué)紅.自動(dòng)化單元測(cè)試概述[J].信息通信技術(shù),2012,(1):66-68.

第3篇

【關(guān)鍵詞】單元測(cè)試;cantata;測(cè)試用例

Abstract:The design of unit-testing case is one of the most important part of the unit testing,and it is an important guarantee for improving the software quality to design reasonable unit-testing cases.The article puts forward a designed method of unit-testing cases of a complex function,by introducing the cantata++ which is a testing tool and its function in unit testing,also considering that the true condition of making use of unit testing.This software unit-testing method is widely used in some other tastings and also well reputably.

Key Words:unit testing;cantata++;test case

1.引言

隨著軟件系統(tǒng)越來(lái)越復(fù)雜,在產(chǎn)品開(kāi)發(fā)各階段進(jìn)行完全的軟件測(cè)試也越來(lái)越重要,大多數(shù)軟件開(kāi)發(fā)者都已意識(shí)到這一點(diǎn)。但考慮到測(cè)試費(fèi)用問(wèn)題,軟件開(kāi)發(fā)者往往面臨著在提高產(chǎn)品質(zhì)量與減少費(fèi)用之間進(jìn)行選擇的問(wèn)題。IPL提供的Cantata測(cè)試軟件應(yīng)這種需要,在合理的費(fèi)用下提供給軟件開(kāi)發(fā)者的強(qiáng)有效的軟件測(cè)試工具。Cantata可以同時(shí)支持C和C++語(yǔ)言的測(cè)試,能夠滿足開(kāi)發(fā)者進(jìn)行高效的單元和集成測(cè)試的需求,該產(chǎn)品不僅能提高產(chǎn)品質(zhì)量,還能幫助提高生產(chǎn)率。

作為專業(yè)軟件測(cè)試工具,Cantata++除包含一些標(biāo)準(zhǔn)的特征之外,還提供了一些新功能:

(1)支持語(yǔ)句、判定和布爾代碼覆蓋率度量;

(2)支持運(yùn)用白盒測(cè)試技術(shù),自動(dòng)獲取私有類數(shù)據(jù);

(3)支持面向?qū)ο鬁y(cè)試用例的重用;

(4)圖形化和XML形式的結(jié)果報(bào)告。[1]

2.單元測(cè)試用例的設(shè)計(jì)

軟件質(zhì)量的好壞很大程度上取決于測(cè)試用例的設(shè)計(jì)質(zhì)量。不論程序員的編程水平、軟件設(shè)計(jì)水平有多高,軟件工程化執(zhí)行得多好,如果沒(méi)有通過(guò)合適質(zhì)量的測(cè)試用例進(jìn)行測(cè)試,其最終軟件質(zhì)量都是難以保證的。因此,測(cè)試用例設(shè)計(jì)是軟件測(cè)試的最核心和最重要的內(nèi)容之一。[2]

單元測(cè)試主要使用白盒測(cè)試技術(shù),測(cè)試用例的設(shè)計(jì)方法一般分兩種類型,即測(cè)試人員自己編寫(xiě)測(cè)試腳本和借助測(cè)試工具生成測(cè)試腳本框架后維護(hù)測(cè)試數(shù)據(jù)。Cantata++測(cè)試工具可用于生成和維護(hù)測(cè)試腳本,編譯并運(yùn)行測(cè)試可執(zhí)行程序,查看測(cè)試結(jié)果和覆蓋率數(shù)據(jù)。

3.基于cantata的測(cè)試用例設(shè)計(jì)方法

在cantata工具中常見(jiàn)的單元測(cè)試用例的實(shí)現(xiàn)方法很簡(jiǎn)單,不再贅述。本文主要介紹復(fù)雜函數(shù)實(shí)現(xiàn)的單元測(cè)試用例的設(shè)計(jì)方法。如單元測(cè)試的被測(cè)單元函數(shù)使用的函數(shù)形參是結(jié)構(gòu)體變量和全局變量是結(jié)構(gòu)體數(shù)組且結(jié)構(gòu)體的成員是指針時(shí),在設(shè)計(jì)測(cè)試用例時(shí)如何給結(jié)構(gòu)體變量賦值?

3.1 函數(shù)的形參為結(jié)構(gòu)體類型

Cantata測(cè)試工具自動(dòng)生成的測(cè)試用例中,函數(shù)形參的默認(rèn)值都是“NOT_SET”,編譯測(cè)試腳本時(shí)不能被識(shí)別,給函數(shù)的形參賦正確的參數(shù)值是得到正確的測(cè)試結(jié)果的前提。設(shè)計(jì)帶有結(jié)構(gòu)體類型的形參的測(cè)試用例時(shí),我們分別做了如下實(shí)驗(yàn):

(1)按照在C語(yǔ)言中結(jié)構(gòu)體變量成員賦值的方式給測(cè)試用例中的結(jié)構(gòu)體變量賦值;

(2)使用改造C語(yǔ)言結(jié)構(gòu)體變量成員賦值的方式把“->”改為“?”給測(cè)試用例中的結(jié)構(gòu)體變量賦值。

編譯結(jié)果證明兩種賦值方式均不能被正確識(shí)別。

3.2 全局變量為結(jié)構(gòu)體類型的數(shù)組變量,且其成員為指針

Cantata在自動(dòng)生成測(cè)試用例時(shí)使用其本身封裝的INITIALISE()函數(shù)給全局變量賦初值為0x55,以滿足一般的測(cè)試需要。為達(dá)到充分測(cè)試的目的,需要給全局變量賦相應(yīng)的數(shù)值,當(dāng)全局變量為結(jié)構(gòu)體類型的數(shù)組變量,且其成員為指針時(shí),我們進(jìn)行了如下實(shí)驗(yàn):

(1)使用C語(yǔ)言中數(shù)組初始化的方式給結(jié)構(gòu)體數(shù)組賦值;

(2)一個(gè)數(shù)組元素一個(gè)數(shù)據(jù)元素的方式給結(jié)構(gòu)體數(shù)組賦值;

(3)使用分配內(nèi)存的方式給結(jié)構(gòu)體數(shù)組賦值。

編譯結(jié)果證明三種賦值方式均不能被編譯器識(shí)別。

結(jié)構(gòu)體形參賦值時(shí)是不是因?yàn)樵撔螀⒃谫x值之前沒(méi)有被分配內(nèi)存空間所以無(wú)法賦值?結(jié)構(gòu)體數(shù)組賦值的情況會(huì)不會(huì)因?yàn)閏antata測(cè)試工具對(duì)編碼規(guī)則要求較嚴(yán)格,必須按照相應(yīng)的編程規(guī)則才可以編譯通過(guò)?帶著這種疑問(wèn)我們查閱了大量編程規(guī)則的資料,通過(guò)反復(fù)實(shí)踐,最終找到了解決該兩個(gè)問(wèn)題的辦法。

其一,假設(shè)函數(shù)形參是如下兩個(gè)結(jié)構(gòu)體變量:

struct DIST* StrCount;

struct FILTER* StrFilter;

在測(cè)試用例腳本中可以通過(guò)下面的方式給結(jié)構(gòu)體變量賦值:

StrCount = malloc(sizeof(struct DIST));

StrFilter = malloc(sizeof(struct FILTER));

memset(DIST_COUNT,0,sizeof(struct DIST));

memset(DIST_FILTER,0,sizeof(struct FILTER));

StrCount->cnt = 100; /*結(jié)構(gòu)體成員賦初值*/

free(StrCount) ;

free(StrFilter) ;/*釋放內(nèi)存*/

如此賦值后的測(cè)試腳本文件加入測(cè)試工程后編譯通過(guò),得到了覆蓋率測(cè)試結(jié)果,函數(shù)形參是結(jié)構(gòu)體類型變量的測(cè)試用例設(shè)計(jì)的問(wèn)題得以解決。

其二,假定定義如下的結(jié)構(gòu)體數(shù)組:

PORT_CB g_PortCbTable[10];

其中:PORT_CB 為如下的結(jié)構(gòu)體類型:

typedef struct

{

char num[16]; /* 端口名稱*/

CONNOBJ* pObj; /* 端口句柄指針*/

}PORT_CB;

在測(cè)試用例腳本中,修改指針成員變量的方式為:

g_PortCbTable[0].pObj = (CONNOBJ*)-1;

g_PortCbTable[1].pObj = (CONNOBJ*)1U;

g_PortCbTable[2].pObj = (CONNOBJ*)1U;

g_PortCbTable[3].pObj = (CONNOBJ*)1U;

g_PortCbTable[4].pObj = (CONNOBJ*)1U;

g_PortCbTable[5].pObj = (CONNOBJ*) -12;

g_PortCbTable[6].pObj = (CONNOBJ*)2U;

g_PortCbTable[7].pObj = (CONNOBJ*)2U;

g_PortCbTable[8].pObj = (CONNOBJ*)2U;

g_PortCbTable[9].pObj = (CONNOBJ*)2U;

其中有后綴U或無(wú)后綴指明所賦常量的類型,強(qiáng)制轉(zhuǎn)換類型不可以忽略。如此賦值后的測(cè)試腳本文件加入測(cè)試工程后編譯通過(guò),得到了覆蓋率測(cè)試結(jié)果,至此全局變量為結(jié)構(gòu)體類型的數(shù)組變量,且其成員為指針時(shí),測(cè)試用例的設(shè)計(jì)問(wèn)題得以解決。

4.小結(jié)

本文介紹了測(cè)試工具cantata的功能特性及其在單元測(cè)試中的應(yīng)用,在此基礎(chǔ)上提出了一種復(fù)雜單元函數(shù)的測(cè)試用例設(shè)計(jì)方法,該方法在類似的軟件測(cè)試項(xiàng)目中得到了應(yīng)用,在實(shí)踐中取得了良好效果。

參考文獻(xiàn)

[1]Cantata++ Reference Manual v6.1 2011,3.

[2]周偉明著.軟件測(cè)試實(shí)踐[M].電子工業(yè)出版社,2008:46.

作者簡(jiǎn)介:

第4篇

現(xiàn)代中藥質(zhì)量控制技術(shù)橫空出世

2004年3月19日是個(gè)讓人激動(dòng)的日子,由浙江大學(xué)藥學(xué)院、中國(guó)生物制品檢定所和天津天士力制藥股份有限公司等聯(lián)合承擔(dān)的國(guó)家“十五”科技攻關(guān)重大項(xiàng)目“指紋圖譜應(yīng)用示范研究”正式通過(guò)國(guó)家科技部和國(guó)家中醫(yī)藥管理局驗(yàn)收。緊接著,該攻關(guān)項(xiàng)目成果“復(fù)方丹參滴丸指紋圖譜分析及質(zhì)量控制技術(shù)”通過(guò)國(guó)家技術(shù)鑒定。由四位院士為首的技術(shù)鑒定委員會(huì)對(duì)此作出高度評(píng)價(jià):“該技術(shù)大大提高了復(fù)方丹參滴丸質(zhì)量控制水平,為我國(guó)建立中藥質(zhì)量指紋圖譜檢測(cè)標(biāo)準(zhǔn)起了示范帶頭作用,為保障工藝穩(wěn)定和實(shí)現(xiàn)藥材-中間體-中成藥制劑全程質(zhì)量控制奠定了技術(shù)基礎(chǔ)。它是中藥現(xiàn)代化研究領(lǐng)域的重大技術(shù)進(jìn)步,是我國(guó)以復(fù)方丹參滴丸為代表的中藥產(chǎn)品指紋圖譜分析技術(shù)創(chuàng)新發(fā)展的成果,總體達(dá)到國(guó)內(nèi)領(lǐng)先、國(guó)際先進(jìn)水平,為發(fā)展形成具有我國(guó)自主知識(shí)產(chǎn)權(quán)的現(xiàn)代中藥質(zhì)量控制技術(shù)作出了重要貢獻(xiàn)?!边@項(xiàng)技術(shù)已經(jīng)成為代表當(dāng)今現(xiàn)代中藥質(zhì)量控制技術(shù)領(lǐng)域世界最高水平的標(biāo)志,它的誕生預(yù)示著一場(chǎng)中藥產(chǎn)業(yè)的革命正在悄然來(lái)臨。

根據(jù)《中國(guó)藥典》記載,早期中藥的質(zhì)量檢驗(yàn)方法非常簡(jiǎn)單,一直采用外觀形態(tài)的經(jīng)驗(yàn)鑒別方法,1963年開(kāi)始采用重量法、容量法等實(shí)驗(yàn)室手段協(xié)助鑒定,發(fā)展到1985年開(kāi)始采用手工分析化驗(yàn)的鑒定方法。直到1990年才真正開(kāi)始采用氣相/液相色譜等現(xiàn)代儀器分析檢測(cè)方法鑒定。中藥指紋圖譜檢測(cè)技術(shù)運(yùn)用現(xiàn)代分析儀器和化學(xué)信息處理手段對(duì)中藥產(chǎn)品質(zhì)量進(jìn)行表征,突破了傳統(tǒng)中藥質(zhì)控技術(shù)諸多缺陷,可對(duì)藥品生產(chǎn)的各環(huán)節(jié)進(jìn)行全面質(zhì)量控制,已為國(guó)內(nèi)外藥物分析界所廣泛接受。FDA(美國(guó)食品藥品監(jiān)督管理局)對(duì)植物藥的質(zhì)量檢測(cè)要求制訂指紋圖譜檢測(cè)標(biāo)準(zhǔn),歐共體對(duì)某些草藥的質(zhì)量控制也采用了指紋圖譜技術(shù)。指紋圖譜作為中藥材、中藥提取物、中成藥等含有混合物質(zhì)群的質(zhì)量分析檢測(cè)方法,已經(jīng)成為全球醫(yī)藥界共識(shí)。

全程質(zhì)量控制從復(fù)方丹參滴丸開(kāi)始

從現(xiàn)代中藥復(fù)方丹參滴丸研制成功起,天士力就致力于打造一條符合國(guó)際標(biāo)準(zhǔn)的現(xiàn)代中藥產(chǎn)業(yè)鏈,從中藥材、提取物再到成藥采取了全程質(zhì)量控制,從采用液相色譜分析等方法一步步發(fā)展到今天,更進(jìn)一步將最先進(jìn)的多元色譜指紋圖譜分析及質(zhì)量控制技術(shù)定為內(nèi)控方法。該技術(shù)對(duì)復(fù)方丹參滴丸主要化學(xué)成分進(jìn)行了系統(tǒng)分析,鑒定出10種丹參水溶性成分和20種三七皂苷類成分,基本揭示了復(fù)方丹參滴丸化學(xué)物質(zhì)基礎(chǔ);它首次創(chuàng)造性地提出多元化學(xué)指紋圖譜技術(shù)概念及其技術(shù)方法學(xué),建立了復(fù)方丹參滴丸指紋圖譜分析方法,同時(shí)還首次研制創(chuàng)建了多元指紋圖譜相似度計(jì)算分析軟件系統(tǒng),從根本上保證了研究結(jié)果的可驗(yàn)證性和科學(xué)嚴(yán)謹(jǐn)性。與現(xiàn)有的單元指紋圖譜分析技術(shù)相比,該技術(shù)能更完整地反映出復(fù)雜中藥產(chǎn)品的化學(xué)組成特征,可用于復(fù)雜中藥產(chǎn)品的質(zhì)量控制。因此,它能夠準(zhǔn)確反映復(fù)方丹參滴丸的整體質(zhì)量狀況,有效地監(jiān)控及優(yōu)化制藥工藝參數(shù),科學(xué)嚴(yán)格地確保中藥多組分的質(zhì)量穩(wěn)定性。

中藥承載著人類健康的希望,天士力肩負(fù)著人類健康的使命與責(zé)任。以浙江大學(xué)程翼宇教授、中國(guó)藥品生物制品檢定所林瑞超主任、天士力研究院葉正良副院長(zhǎng)等為課題負(fù)責(zé)人的科研組與天士力制藥股份有限公司的專家通力合作,協(xié)同利用多元指紋圖譜計(jì)算分析技術(shù),分別對(duì)天士力陜西商洛國(guó)家丹參GAP基地生產(chǎn)的61批丹參藥材進(jìn)行指紋圖譜檢測(cè),相似度均在95 %以上,充分表明通過(guò)規(guī)范化管理種植、生產(chǎn)的藥材質(zhì)量的穩(wěn)定性,科學(xué)嚴(yán)格的質(zhì)檢標(biāo)準(zhǔn)保證了天士力丹參藥材無(wú)農(nóng)藥殘留,遠(yuǎn)遠(yuǎn)高于國(guó)家藥典標(biāo)準(zhǔn);重金屬含量低于國(guó)際標(biāo)準(zhǔn)390倍。從而在根本上保證了復(fù)方丹參滴丸的高品質(zhì);對(duì)天士力現(xiàn)代中藥資源有限公司生產(chǎn)的122批浸膏進(jìn)行指紋圖譜檢測(cè),相似度在90%以上,同樣表明通過(guò)GEP生產(chǎn)的藥材提取物質(zhì)量的穩(wěn)定性;對(duì)天士力制藥股份有限公司生產(chǎn)的近200批復(fù)方丹參滴丸進(jìn)行質(zhì)量追蹤,指紋圖譜檢測(cè)的相似度在90%以上,更加充分證明了復(fù)方丹參滴丸采用現(xiàn)代中藥制劑工藝技術(shù)生產(chǎn)的產(chǎn)品質(zhì)量的穩(wěn)定性,是十年來(lái)被億萬(wàn)消費(fèi)者首選的復(fù)方丹參滴丸療效確切、使用安全的保障。

復(fù)方丹參滴丸指紋圖譜分析技術(shù)的研究成功與應(yīng)用,在科學(xué)規(guī)范地檢測(cè)復(fù)方丹參滴丸質(zhì)量穩(wěn)定性的同時(shí),為復(fù)方丹參滴丸暢銷10年不衰秘密的揭示提供了強(qiáng)有力的科學(xué)依據(jù):穩(wěn)定的產(chǎn)品質(zhì)量換取的是穩(wěn)定有效的藥物療效,真正使老百姓吃上安全有效的放心藥,患者的肯定也造就了天士力大健康產(chǎn)業(yè)的蓬勃發(fā)展。

中藥現(xiàn)代化任重而道遠(yuǎn)

第5篇

關(guān)鍵詞 EXCEL單元格 地址表示方法 實(shí)例

中圖分類號(hào):TP317.3 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.16400/ki.kjdkz.2015.12.012

Abstract This paper systematically introduces three EXCEL cell address representation, which is the in-depth study EXCEL EXCEL and expand knowledge base, but also with specific examples illustrate three address representation features and how to use and so on.

Key words EXCEL; address representation methods; example

單元格地址表示方法是為Excel智能運(yùn)算服務(wù)的,這也是Excel不同于計(jì)算器和其他電子表格的地方。使用普通計(jì)算器時(shí),需針對(duì)不同的數(shù)據(jù)重復(fù)進(jìn)行計(jì)算,即浪費(fèi)時(shí)間又不能發(fā)現(xiàn)數(shù)據(jù)的變化規(guī)律。而使用Excel進(jìn)行計(jì)算時(shí),對(duì)于相同的運(yùn)算,不需要重復(fù)進(jìn)行,只要針對(duì)不同的應(yīng)用問(wèn)題寫(xiě)出對(duì)應(yīng)的自變量的地址,就可以通過(guò)“拷貝”公式的功能得出其他單元格中的結(jié)果。所以說(shuō),在EXCEL中對(duì)公式或函數(shù)的“拷貝”是進(jìn)行智能運(yùn)算的助手。為此,先綜述一下各種“拷貝”方法。

在EXCEL中“拷貝”操作可以使用通用的拷貝方法,如快捷鍵方法:Ctrl+C 再Ctrl+V;或人們習(xí)慣用的拷貝與粘貼兩個(gè)圖標(biāo)方法以及右鍵快捷菜單方法。上述這些“拷貝”方法都需借助剪貼板來(lái)進(jìn)行。若按Ctrl+左鍵拖被選內(nèi)容,則不需要將拷貝信息事先注入剪貼板,這也是常用的一種拷貝方法。這些通用的拷貝方法對(duì)于EXCEL的計(jì)算不很方便,當(dāng)待拷貝的公式單元格較多時(shí),既浪費(fèi)時(shí)間還容易出錯(cuò)。為此,EXCEL給出一種特殊的拷貝方法:拖公式單元格右下角的(細(xì)十字)“填充柄”進(jìn)行公式或函數(shù)的拷貝操作。需要注意的是:這種拷貝方法僅限于相鄰單元間的拷貝,而在EXCEL中我們最需要的恰恰就是相鄰單元格間的快速拷貝方法。

為了能正確地計(jì)算出數(shù)據(jù)庫(kù)類型表格中的公式或函數(shù)結(jié)果,自變量所在的單元格必須使用“相對(duì)地址”表示,即用“列標(biāo)+行號(hào)”來(lái)表示。如A2表示第一列第二行中的數(shù)據(jù),對(duì)于一個(gè)自變量區(qū)域,不必一個(gè)一個(gè)地寫(xiě)出來(lái),可以用左上角和右下角單元格地址簡(jiǎn)捷地表示,兩者之間用英文的冒號(hào)隔開(kāi),如A3:D6就表示一個(gè)含有16個(gè)單元格的矩形區(qū)域,在進(jìn)行公式運(yùn)算時(shí)特別方便。

用“相對(duì)地址”表示自變量單元格時(shí)的特點(diǎn)是:自變量單元格地址與(因變量)公式單元格的地址在空間布局上看是不變的,不會(huì)因?yàn)椤翱截悺辈僮鞫淖?。例如,某個(gè)單元格中的公式是計(jì)算左面3個(gè)單元格數(shù)據(jù)之和,則不論將該公式“拷貝”到哪個(gè)單元格中,結(jié)果始終是左面3個(gè)單元格數(shù)據(jù)之和。這就是我們?cè)谧龀煽?jī)統(tǒng)計(jì)時(shí),只要計(jì)算出第一個(gè)學(xué)生的總成績(jī),再向下拖動(dòng)“填充柄”進(jìn)行拷貝,就會(huì)得到其他同學(xué)的總成績(jī)的原理。也就是說(shuō),用相對(duì)地址表示自變量時(shí),自變量的地址始終是跟隨因變量變化而變化的,并計(jì)算出其他單元中的結(jié)果。單元格的相對(duì)地址表示方法普遍適用于成績(jī)表、設(shè)備表、工資表等數(shù)據(jù)庫(kù)形式的表格統(tǒng)計(jì)與計(jì)算。

EXCEL單元格地址的第二種表示方法是:絕對(duì)地址表示法。所謂“絕對(duì)”就是永恒不變的意思,即自變量單元格不會(huì)跟隨因變量變化而變化,形象地說(shuō),單元格地址被鎖住了。在數(shù)據(jù)庫(kù)計(jì)算和其他表格制作時(shí)均有應(yīng)用。

絕對(duì)地址表示方法是:在自變量單元格的列標(biāo)和行號(hào)前均加$號(hào)。如:一個(gè)單元格的絕對(duì)表示是$B$4,一個(gè)區(qū)域的絕對(duì)地址表示是$B$4:$D$7。

我們?cè)谥谱鲾?shù)據(jù)表格時(shí),有時(shí)需要對(duì)自變量進(jìn)行篩選、比較,例如:在對(duì)一個(gè)班級(jí)學(xué)生成績(jī)進(jìn)行排位時(shí),需逐個(gè)比較每名學(xué)生成績(jī)?cè)诎嗉?jí)所有同學(xué)成績(jī)中的位置。其中,單個(gè)學(xué)生的成績(jī)是變化的,須用相對(duì)地址表示,而所有學(xué)生成績(jī)的單元格區(qū)域必須是不變的,不能因?yàn)閷W(xué)生變化而改變,在Excel中這種不變的自變量或區(qū)域采用“絕對(duì)地址表示”。在對(duì)公式或函數(shù)單元格“拷貝”時(shí),用“絕對(duì)地址表示”的區(qū)域始終保持不變,與“拷貝”無(wú)關(guān)。

在前面提到的學(xué)生成績(jī)排位問(wèn)題中,成績(jī)對(duì)比區(qū)域必須用“絕對(duì)地址”表示,與此類似的應(yīng)用問(wèn)題很多。雖然我們可以用“排序”圖標(biāo)來(lái)進(jìn)行,但這種排序方法會(huì)破壞原有表格行的位置,這恰恰是我們最不希望看到的。為此,用Excel 的排位函數(shù)Rank可以實(shí)現(xiàn)在不改變?cè)袛?shù)據(jù)庫(kù)記錄次序的前提下,又能添加一個(gè)“排位”字段的功能。應(yīng)用時(shí)的格式為:Rank(變量,變量區(qū)域,0或1)。其中,“變量”用相對(duì)地址表示,是跟隨因變量變化的,第二個(gè)參數(shù)“變量區(qū)域”是變量大小比較的區(qū)域,在排序的過(guò)程中必須保持不變,須用“絕對(duì)地址”表示。第三個(gè)參數(shù)是可選參數(shù),可以取0或1,取0時(shí),表示第一個(gè)參數(shù)(變量)的值越大,排位越靠前,省略該參數(shù)時(shí)相當(dāng)于取值為0。若第三個(gè)參數(shù)取1,則第一個(gè)參數(shù)(變量)值越小,排位越靠前。

該例是按“總成績(jī)”進(jìn)行排位的,G2中的公式為RANK(F2,$F$2:$F$10)。F列上的數(shù)據(jù)就是函數(shù)中的“變量”,其中F2必須用相對(duì)地址表示,在對(duì)G2中的公式向下“拷貝”的過(guò)程中,F(xiàn)2自動(dòng)變更為F3、F4、F5一直到F10。第2個(gè)參數(shù)$F$2:$F$10是“總成績(jī)”字段區(qū)域,既所有自變量所在的區(qū)域,須用絕對(duì)地址表示,以保證在對(duì)排位函數(shù)“拷貝”的過(guò)程中這個(gè)區(qū)域始終保持不變。此公式僅用了兩個(gè)參數(shù),省略第三個(gè)參數(shù)表明:總成績(jī)高的排位號(hào)在前。拖G2單元格的“填充柄”向下“拷貝”時(shí),單個(gè)學(xué)生的總成績(jī)不斷在變化,而所有學(xué)生的總成績(jī)區(qū)域被“鎖住”,拷貝到最后一個(gè)學(xué)生,即可快速得到整個(gè)“排名”字段。

另外,在實(shí)際工作時(shí),某些公式中的常數(shù)有可能發(fā)生變化。如請(qǐng)假扣款金額、計(jì)件工資金額等,當(dāng)把這些常數(shù)直接寫(xiě)在公式中時(shí),一旦發(fā)生金額變化,就需要重新進(jìn)行計(jì)算。最好的方法是在將該常數(shù)先放在表格中的某單元格處,而在公式中用該單元格的絕對(duì)地址表示,就可以實(shí)現(xiàn)在金額變化后,所有應(yīng)用該金額的地方會(huì)自動(dòng)更新。

EXCEL單元格地址的第三種表示方法是:混合地址表示法。他是介于相對(duì)地址和絕對(duì)地址表示之間的一種地址表示方法,這種表示方法中的自變量在跟隨因變量變化的過(guò)程中受到一定的限制,僅能沿行方向變化或沿列方向變化。這種變量地址表示方法主要用于制作類似于九九乘法表的“交叉數(shù)據(jù)表”。當(dāng)一個(gè)公式或函數(shù)中有多個(gè)變量時(shí),提取兩個(gè)相互獨(dú)立的變量分別放在行和列上,并設(shè)定一個(gè)變化序列,相當(dāng)于建立了一個(gè)二維的X-Y坐標(biāo)系。再利用EXCEL的運(yùn)算特點(diǎn):相同運(yùn)算僅計(jì)算一次,其他數(shù)據(jù)通過(guò)拷貝得到,就可以快速地制作一個(gè)函數(shù)F(X,Y)的平面數(shù)據(jù)表,我們中學(xué)用的《常用數(shù)學(xué)用表》可以利用這種方法快速地制作。

“混合地址”表示方法是僅在列標(biāo)或行號(hào)前加$號(hào)。如$D6、A$8。其中,$D6表示Y方向變化的變量,即數(shù)據(jù)僅限于在D列上變化。A$8表示X方向變化的變量,該數(shù)據(jù)僅于在第8行上變化。也就是說(shuō),前面有$號(hào)的行或列,就是被限定變化的區(qū)域。

下面以制作兩數(shù)和的立方表為例,介紹變量的“相對(duì)地址”表示方法在制作“交叉運(yùn)算表”時(shí)的應(yīng)用。圖2為一最簡(jiǎn)單的X-Y 坐標(biāo)系,自變量分別沿第一行和第一列放置。

在表中任意一個(gè)單元格中輸入公式均可,但考慮到“拷貝”公式的方便,最好在坐標(biāo)系左上角的B2單元格中輸入計(jì)算公式:=(B$1+$A2)^3,如圖2所示。

第6篇

摘 要:隨著汽車電子市場(chǎng)的快速發(fā)展,汽車控制器的電子控制單元(ECU)已越來(lái)越多,對(duì)ECU的功能測(cè)試也變得日趨復(fù)雜。為解決車載ECU功能測(cè)試,研究了基于控制器局域網(wǎng)絡(luò)(CAN)的ECU自動(dòng)測(cè)試方法。以NI公司的軟硬件為開(kāi)發(fā)平臺(tái)、CAN總線為通信平臺(tái)搭建測(cè)試系統(tǒng)與被測(cè)ECU形成閉環(huán)結(jié)構(gòu)。通過(guò)CAN總線傳輸測(cè)試信息,可實(shí)現(xiàn)對(duì)同型號(hào)ECU的批量測(cè)試。此系統(tǒng)采用了新的測(cè)試方法來(lái)降低測(cè)試誤差,并支持ECU的流水線測(cè)試,大大降低了測(cè)試的復(fù)雜度,減少了工作量。同時(shí),在完善仿真信號(hào)產(chǎn)生模塊和測(cè)試模塊用例庫(kù)后,也能適用于其他類型ECU的功能測(cè)試。

關(guān)鍵詞:

控制器局域網(wǎng)絡(luò);電子控制單元;批量測(cè)試;汽車電子;車載網(wǎng)絡(luò)

中圖分類號(hào): TP206.1 文獻(xiàn)標(biāo)志碼:A

Abstract: With the rapid development of automotive electronic market, more and more Electronic Control Units (ECU) for vehicle controller appear and the functional test also becomes more complex. In order to solve the problem of ECU functional test, the ECUs automatic test method based on Controller Area Network (CAN) was studied. The system included the software and hardware platform of National Instrument (NI) and communication platform of CAN bus, by which the system and ECU formed a closed-loop structure. To transmit the test message through CAN bus, the system could achieve batch test of ECUs with the same type. By using the new test method, the system can reduce the test errors, and support assembly line test of ECU, which greatly reduces the complexity of ECU functional test and test work. At the same time, the system can also apply to other types of ECU functional test by improving the generation module of simulated signal and use case library.

Key words: Controller Area Network (CAN); Electric Control Unit (ECU); batch test; vehicle electronic; vehicle network

0 引言

隨著汽車電子的不斷發(fā)展,汽車已進(jìn)入電子控制時(shí)代,其標(biāo)志為電子控制單元(Electric Control Unit, ECU)的廣泛應(yīng)用?,F(xiàn)如今,車輛上電控單元數(shù)量不斷增加,功能越發(fā)復(fù)雜,多個(gè)處理器之間相互連接、協(xié)調(diào)工作并共享信息構(gòu)成了汽車車載互聯(lián)通信網(wǎng)絡(luò)。其中控制器局域網(wǎng)絡(luò)(Controller Area Network, CAN)是汽車中應(yīng)用較多的現(xiàn)場(chǎng)總線。其良好的實(shí)時(shí)性、可靠性和經(jīng)濟(jì)性能很好地滿足汽車ECU之間數(shù)據(jù)通信的需要,已成為最有發(fā)展前景的現(xiàn)場(chǎng)總線之一[1-2]。因此,帶CAN總線功能的ECU測(cè)試也將變得更加復(fù)雜。ECU功能測(cè)試屬應(yīng)用層功能測(cè)試范疇,是為了檢測(cè)ECU是否符合給定的協(xié)議規(guī)范,能否進(jìn)行正常的控制工作。這種測(cè)試在系統(tǒng)級(jí)開(kāi)發(fā)中占據(jù)了很大的比重,成為應(yīng)用層測(cè)試中最為關(guān)鍵的部分[3]。

在傳統(tǒng)的ECU功能測(cè)試中,一種方式是利用測(cè)試面板產(chǎn)生ECU各種信號(hào)后連接到ECU各輸入引腳,觸發(fā)它的各驅(qū)動(dòng)模塊進(jìn)行控制工作,有專門(mén)的線路負(fù)責(zé)數(shù)據(jù)交換,但這樣的測(cè)試系統(tǒng)隨著傳感器數(shù)量的增多,連線非常困難,且需要高速的數(shù)據(jù)采集和信號(hào)調(diào)理設(shè)備,使整體成本增加[4-5];另一種則改進(jìn)了信號(hào)的產(chǎn)生方式,即通過(guò)虛擬儀器模擬ECU的控制信號(hào)來(lái)代替?zhèn)鹘y(tǒng)的觸發(fā)信號(hào),采用人工對(duì)控制效果進(jìn)行直接的觀察和記錄。這些測(cè)試方法都加大了測(cè)試過(guò)程中的測(cè)試誤差、復(fù)雜度和測(cè)試工作量,且無(wú)法進(jìn)行自動(dòng)測(cè)試和結(jié)果的自動(dòng)生成,也不能同時(shí)對(duì)多個(gè)ECU進(jìn)行測(cè)試,給ECU廠商進(jìn)行批量生產(chǎn)時(shí)帶來(lái)很大的不便。

由此,引發(fā)了對(duì)新的測(cè)試方法的思考和探索?;贑AN總線的ECU功能測(cè)試方法以CAN總線的傳輸作為關(guān)鍵技術(shù),采用閉環(huán)測(cè)試方法對(duì)同型號(hào)的ECU進(jìn)行自動(dòng)和批量測(cè)試。

1 基于CAN總線的ECU功能測(cè)試介紹

車載控制系統(tǒng)主要任務(wù)就是要解決車身電器設(shè)備的功能性問(wèn)題,所以,首先應(yīng)關(guān)注ECU是否能實(shí)現(xiàn)功能上的控制,即測(cè)試其是否滿足控制協(xié)議的要求。ECU在控制功能上包括了通信服務(wù)功能、傳送數(shù)據(jù)功能、診斷信息及標(biāo)定信息功能、設(shè)備監(jiān)控和網(wǎng)絡(luò)管理功能等,具體的要求規(guī)范則由各ECU生產(chǎn)廠商自行制定。

目前應(yīng)用層協(xié)議制定分為以測(cè)試為重心的模式和以設(shè)計(jì)為重心的模式。不論哪種模式,控制器開(kāi)發(fā)過(guò)程中,都需要通過(guò)測(cè)試來(lái)驗(yàn)證功能的正確性,確定ECU工作正常并不干擾總線正常通信[6]。

由圖1的控制器開(kāi)發(fā)“V”模式圖可見(jiàn),控制器開(kāi)發(fā)過(guò)程包括多個(gè)環(huán)節(jié),其中的應(yīng)用層功能測(cè)試是其重要組成部分,它包括ECU功能測(cè)試、網(wǎng)絡(luò)管理功能測(cè)試、故障診斷測(cè)試等,是進(jìn)行實(shí)車測(cè)試前的重要環(huán)節(jié)。在引入CAN總線后,將大大降低ECU功能測(cè)試的復(fù)雜度和測(cè)試工作量,是CAN總線測(cè)試的重要組成部分[7]。

在基于CAN總線的ECU測(cè)試系統(tǒng)中,通信網(wǎng)絡(luò)是進(jìn)行數(shù)據(jù)傳輸,實(shí)現(xiàn)各模塊協(xié)調(diào)工作的橋梁[8]。利用LabVIEW[5,7,11]虛擬儀器產(chǎn)生仿真信號(hào)代替數(shù)據(jù)采集卡采集的真實(shí)信號(hào),并在此基礎(chǔ)上引入CAN總線作為測(cè)試的關(guān)鍵技術(shù),充分發(fā)揮CAN總線在傳輸上的高可靠性和實(shí)時(shí)性等優(yōu)點(diǎn)。通過(guò)總線對(duì)仿真信號(hào)的測(cè)試報(bào)文進(jìn)行有效傳輸,如表1所示。

表1中:Message表示報(bào)文名稱;ID表示報(bào)文仲裁場(chǎng);DLC表示報(bào)文長(zhǎng)度;Data表示報(bào)文數(shù)據(jù)。

將報(bào)文與同型號(hào)ECU進(jìn)行連接,形成閉環(huán)測(cè)試結(jié)構(gòu),模擬實(shí)車中ECU的各種傳感器信號(hào)來(lái)驅(qū)動(dòng)其進(jìn)行控制工作(于3.2節(jié)詳細(xì)描述),將仿真報(bào)文數(shù)據(jù)和CAN總線上反饋回來(lái)的ECU控制報(bào)文數(shù)據(jù)進(jìn)行解析,提取出Data的值,并自動(dòng)進(jìn)行多次對(duì)比和測(cè)試后,在人機(jī)界面上對(duì)測(cè)試結(jié)果和各種信號(hào)量進(jìn)行直觀顯示,并利用測(cè)試結(jié)果自動(dòng)生成測(cè)試報(bào)告,優(yōu)化和改進(jìn)了傳統(tǒng)的測(cè)試方法。

2 設(shè)計(jì)方案

此方法采用仿真信號(hào)序列代替采集卡采集的真實(shí)信號(hào),利用CAN總線的特點(diǎn)對(duì)數(shù)據(jù)進(jìn)行傳輸,并將整個(gè)測(cè)試構(gòu)建成閉環(huán)結(jié)構(gòu),大大降低測(cè)試的復(fù)雜性。

2.1 方法總體框架

由CAN2.0協(xié)議可知,CAN報(bào)文的基本要素是報(bào)文ID、周期和信號(hào)與消息的映射關(guān)系。因此對(duì)ECU的協(xié)議功能測(cè)試,主要任務(wù)就是測(cè)試ID、消息周期、確定信號(hào)與消息的映射關(guān)系是否滿足要求,并測(cè)試在循環(huán)執(zhí)行多次之后,ECU是否具備在控制功能上的穩(wěn)定性[8]。

選用以LabVIEW為軟件平臺(tái)實(shí)現(xiàn)ECU的功能測(cè)試。測(cè)試系統(tǒng)整體框架包括三部分:上位機(jī)仿真和測(cè)試、CAN網(wǎng)絡(luò)和底層待測(cè)ECU模塊。如圖2所示。

工業(yè)計(jì)算機(jī)仿真給定ECU的各種信號(hào)量,驅(qū)動(dòng)ECU進(jìn)行控制工作。由于各ECU之間是相互獨(dú)立的,“測(cè)試與結(jié)果顯示模塊”采集不同ECU廣播的控制信息,并通過(guò)ID對(duì)它們進(jìn)行識(shí)別。對(duì)采集到的控制信息進(jìn)行分析、對(duì)比原始輸入來(lái)判定各個(gè)ECU在功能控制中是否滿足協(xié)議要求。

具體測(cè)試方法如下:

首先,通過(guò)上位機(jī)LabVIEW模擬仿真信號(hào)(如:轉(zhuǎn)向燈信號(hào)、溫度信號(hào)等),通過(guò)NI 6259板卡,與待測(cè)ECU各引腳進(jìn)行對(duì)接;

然后,發(fā)送仿真信號(hào),驅(qū)動(dòng)ECU進(jìn)行控制工作,并發(fā)送出相應(yīng)的CAN控制信息;

再次,通過(guò)NI 8473s板卡與上位機(jī)LabVIEW進(jìn)行對(duì)接,接收采集到的CAN報(bào)文,并通過(guò)LabVIEW實(shí)現(xiàn)報(bào)文的解析、處理和ECU控制效果的同步顯示;

最后,把原始仿真數(shù)據(jù)和處理后的數(shù)據(jù)進(jìn)行對(duì)比,驗(yàn)證ECU在功能控制上是否滿足預(yù)期效果,并對(duì)以上測(cè)試步驟循環(huán)多次,得出測(cè)試結(jié)論,生成測(cè)試文檔。

在此,根據(jù)測(cè)試大綱要求,選用一個(gè)由實(shí)驗(yàn)室和整車廠聯(lián)合開(kāi)發(fā)的ECU作為應(yīng)用實(shí)例,仿真信號(hào)由模擬信號(hào)和開(kāi)關(guān)量信號(hào)組成,主要分為:轉(zhuǎn)向燈信號(hào)、報(bào)警信號(hào)、狀態(tài)信號(hào)、門(mén)信號(hào)、溫度信號(hào)和壓力信號(hào)控制信號(hào)。具體的控制量與變化范圍因測(cè)試ECU功能要求進(jìn)行定制化處理。測(cè)試ECU仿真控制信號(hào)如表2所示。

2.2 軟件設(shè)計(jì)流程

上位機(jī)軟件整體分為7部分:虛擬儀器配置、模擬信號(hào)仿真、同步信號(hào)顯示、測(cè)試結(jié)果顯示、系統(tǒng)數(shù)據(jù)判斷、數(shù)據(jù)處理、測(cè)試報(bào)告生成。模塊示意圖如圖3所示。

1)虛擬儀器配置。對(duì)測(cè)試時(shí)使用的板卡進(jìn)行初始化配置,設(shè)定參數(shù)和使用通道。

2)模擬信號(hào)仿真。產(chǎn)生ECU仿真信號(hào)(如轉(zhuǎn)向燈信號(hào),水溫信號(hào)等)。

3)同步信號(hào)顯示。將采集到的CAN報(bào)文,進(jìn)行處理之后,在人機(jī)界面上進(jìn)行控件顯示,方便測(cè)試者進(jìn)行直接觀察和分析。

4)測(cè)試結(jié)果顯示。在人機(jī)界面上進(jìn)行測(cè)試結(jié)果的顯示,以表格和BOOL數(shù)組的形式顯示出每個(gè)信號(hào)在多次測(cè)試之后的通過(guò)情況。

5)系統(tǒng)數(shù)據(jù)判斷。將處理后的CAN報(bào)文數(shù)據(jù)與預(yù)先保存的仿真信號(hào)數(shù)據(jù)進(jìn)行對(duì)比,得出測(cè)試結(jié)果。

6)數(shù)據(jù)處理。處理NI 8473s板卡采集到的CAN報(bào)文,提取數(shù)據(jù)信息。

7)測(cè)試報(bào)告生成。在人機(jī)界面上顯示測(cè)試結(jié)果后,將測(cè)試結(jié)果以網(wǎng)頁(yè)(.html)格式的文檔進(jìn)行保存,便于后期的分析和處理。

軟件設(shè)計(jì)流程如圖4所示。

3 系統(tǒng)分析

由圖2測(cè)試方法總體框架圖可知,此系統(tǒng)主要包含三部分:上位機(jī)仿真和測(cè)試、CAN網(wǎng)絡(luò)和底層待測(cè)ECU模塊。其中上位機(jī)仿真和測(cè)試模塊又分為仿真信號(hào)產(chǎn)生模塊和測(cè)試與結(jié)果顯示模塊兩部分。

3.1 仿真信號(hào)產(chǎn)生模塊

使用NI 6259板卡和上位機(jī)LabVIEW構(gòu)建仿真信號(hào)產(chǎn)生模塊。此板卡可支持48路數(shù)字信號(hào)輸出和4路模擬信號(hào)輸出。在調(diào)用接口函數(shù)模塊后,可產(chǎn)生需要的仿真信號(hào),在板卡對(duì)應(yīng)引腳輸出對(duì)應(yīng)電壓信號(hào)。

由表2的ECU控制信號(hào)表可知,此待測(cè)ECU具有兩種不同類型的信號(hào):模擬信號(hào)和開(kāi)關(guān)量信號(hào)。所以需要在LabVIEW中使用DAQmx各模塊仿真出ECU需要的模擬信號(hào)和開(kāi)關(guān)量信號(hào)。

1)產(chǎn)生模擬仿真信號(hào)[10]。需要把模擬信號(hào)轉(zhuǎn)化為ECU能識(shí)別的電壓信號(hào),一般范圍在5V以內(nèi)。

如:仿真發(fā)動(dòng)機(jī)冷卻水溫度信號(hào),水溫與電壓之間的關(guān)系如圖5所示。

通過(guò)最小二乘法線性擬合得出公式:

y=-4×10-10x5+7×10-8x4-3×10-6x3+0.0002x2-0.0642x+4.2044

其中:y為輸出電壓值;x為冷卻水溫度值。

如:進(jìn)氣歧管壓力信號(hào),壓力與電壓之間的關(guān)系式:

V=V參(0.0023P-0.015)

其中:P為上位機(jī)模擬的壓力值;V參為參考電壓5V。關(guān)系如圖6如示。

由圖5~6可知模擬信號(hào)與電壓值之間的轉(zhuǎn)換特性,由上位機(jī)進(jìn)行轉(zhuǎn)換后通過(guò)板卡進(jìn)行輸出,傳遞對(duì)應(yīng)電壓值到待測(cè)ECU,驅(qū)動(dòng)其進(jìn)行控制工作。

2)產(chǎn)生開(kāi)關(guān)量仿真信號(hào)。

在LabVIEW中定義各種開(kāi)關(guān)量信號(hào),通過(guò)板卡產(chǎn)生高/低電平。一般情況下,ECU檢測(cè)到高邊信號(hào)(ECU有效電平分兩種:H、L,即高電平有效或低電平有效)后進(jìn)行控制工作(一般情況下,ECU的高電平判斷電壓在2.5V~5V),控制信號(hào)的開(kāi)啟或關(guān)閉,并同步使用CAN模塊廣播CAN報(bào)文。

如:DriverDoorStatus(左前門(mén)狀態(tài)),根據(jù)ECU手冊(cè)可知,其為BOOL量,所以在前面板中放置一個(gè)BOOL型控件。在對(duì)信號(hào)進(jìn)行操作處理后調(diào)用NI6259板卡的接口函數(shù)并配置通道信息,與此板卡進(jìn)行通信,產(chǎn)生所需仿真信號(hào)(此功能是否正常可通過(guò)示波器進(jìn)行驗(yàn)證)。

3.2 待測(cè)ECU模塊

車載ECU控制功能工作原理:ECU外接12V工作電壓,在人為進(jìn)行操作或發(fā)生狀態(tài)變化(如開(kāi)啟轉(zhuǎn)向燈、水溫變化)時(shí)電路接通,然后產(chǎn)生電壓值傳遞到ECU的模擬輸入引腳,如圖7所示。

此系統(tǒng)使用板卡產(chǎn)生的各種電壓信號(hào)代替左側(cè)虛線部分圖中未見(jiàn)虛線,請(qǐng)補(bǔ)充或說(shuō)明。,ECU檢測(cè)到信號(hào)后進(jìn)行控制工作。

3.3 測(cè)試與結(jié)果顯示模塊

上位機(jī)LabVIEW調(diào)用NI 8473s板卡接口函數(shù)采集CAN報(bào)文[12]。根據(jù)ECU控制協(xié)議,對(duì)CAN報(bào)文進(jìn)行解析、分析、處理,提取出周期、ID、DATA等控制信息。然后對(duì)比原始數(shù)據(jù)(3.1節(jié)部分),進(jìn)行多次測(cè)試后,如果每次測(cè)試都全部通過(guò),則判斷為Pass,否則為False,并在前面板中進(jìn)行顯示。

其中:原始數(shù)據(jù)包括報(bào)文周期、ID和控制信號(hào)數(shù)據(jù)等;報(bào)文周期和ID由ECU控制協(xié)議決定;控制信號(hào)數(shù)據(jù)由仿真控制信號(hào)模塊在產(chǎn)生仿真信號(hào)時(shí)提供。

4 測(cè)試實(shí)現(xiàn)

測(cè)試ECU在控制功能上是否滿足給定的協(xié)議和規(guī)范,并測(cè)試在循環(huán)測(cè)試多次之后,ECU控制功能是否具有較好的穩(wěn)定性。測(cè)試系統(tǒng)人機(jī)界面如圖8所示。

“仿真信號(hào)控制部分”產(chǎn)生表1的ECU控制信號(hào)?!癊CU控制顯示部分”是對(duì)接收到的CAN報(bào)文進(jìn)行解析、處理之后用控件進(jìn)行形象的顯示,并與“仿真信號(hào)控制部分”進(jìn)行對(duì)比。結(jié)果顯示,在循環(huán)測(cè)試100次之后,信號(hào)量“左前門(mén)狀態(tài)”和“進(jìn)氣歧管壓力信號(hào)”控制出錯(cuò),在BOOL數(shù)組和測(cè)試表格中都有明確顯示。“ECU控制顯示部分”顯示出“左前門(mén)狀態(tài)”燈不亮以及進(jìn)氣歧管壓力信號(hào)數(shù)據(jù)不一致,這些也同樣說(shuō)明了信號(hào)控制的錯(cuò)誤。在生成的測(cè)試報(bào)告(.html格式)中也有明確顯示,如圖9所示。

從測(cè)試過(guò)程中得知,各個(gè)ECU的觸發(fā)電平有可能不一樣,大致在5V~12V。NI 6259板卡的工作電壓需小于10V,所以在需要觸發(fā)電平高于10V的ECU上進(jìn)行測(cè)試時(shí),則需要在板卡的輸出端加入一個(gè)增壓電路。

同時(shí),為了保證測(cè)試的正確性,在使用示波器確認(rèn)仿真部分的輸出電壓無(wú)誤后,采用車載網(wǎng)絡(luò)測(cè)試專用工具CANoe對(duì)ECU控制報(bào)文進(jìn)行監(jiān)測(cè),觀察結(jié)果如圖10如示。

由圖8和圖10可知,使用CANoe監(jiān)測(cè)的總線報(bào)文與測(cè)試系統(tǒng)監(jiān)測(cè)到的報(bào)文一致,驗(yàn)證了本文所設(shè)計(jì)測(cè)試方法的可行性和準(zhǔn)確性。在對(duì)比分析圖8和圖10中的監(jiān)測(cè)數(shù)據(jù),驗(yàn)證了數(shù)據(jù)一致性和通信協(xié)議的可行性。

根據(jù)不同ECU的控制協(xié)議,制定不同的仿真信號(hào)產(chǎn)生模塊和測(cè)試模塊,并在使用過(guò)程中,不斷完善ECU的測(cè)試用例庫(kù),在完善后進(jìn)行不同ECU功能測(cè)試時(shí),進(jìn)行規(guī)格選擇后,即可實(shí)現(xiàn)對(duì)不同ECU的功能測(cè)試。

5 結(jié)語(yǔ)

本文介紹了ECU功能測(cè)試的現(xiàn)狀,優(yōu)化和改進(jìn)了傳統(tǒng)測(cè)試方法。此方法以仿真信號(hào)代替采集的真實(shí)信號(hào)來(lái)驅(qū)動(dòng)ECU進(jìn)行控制工作,并引入閉環(huán)結(jié)構(gòu)和CAN總線,使測(cè)試過(guò)程更加簡(jiǎn)單和智能化。所測(cè)結(jié)果準(zhǔn)確可靠,能運(yùn)用于ECU生產(chǎn)線,提高ECU批量測(cè)試的工作效率,為整車廠進(jìn)行ECU測(cè)試帶來(lái)了方便。在完善仿真信號(hào)模塊和測(cè)試模塊用例庫(kù)后可擴(kuò)展到對(duì)不同型號(hào)ECU的功能測(cè)試。同時(shí),此方法的思想,還可以應(yīng)用于車載網(wǎng)絡(luò)的測(cè)試、故障診斷等方面,具有較好的理論價(jià)值和實(shí)際意義。

參考文獻(xiàn):

[1]

夏巍,嚴(yán)輝,丁剛.CAN網(wǎng)絡(luò)的實(shí)時(shí)性與可靠性的研究[J].安徽建筑工業(yè)學(xué)院學(xué)報(bào):自然科學(xué)版,2007,15(1):65-68.

[2]

KONG FENG, ZHANG LIYAN, ZENG JIE, et al. Automatic measurement and control system for vehicle ECU based on CAN bus [C]// Proceedings of the IEEE International Conference on Automation and Logistics. Washington, DC: IEEE Computer Society, 2007: 964-968.

[3]

王立萍.CAN網(wǎng)絡(luò)在汽車控制方法的應(yīng)用[J].工業(yè)儀表與自動(dòng)化裝置,2009(5):77-79.

[4]

WU WEI-BIN, HONG T S, LUO CAI-RU, et al. Hardware-in-loop of alternative fuel engine ECU [C]// Proceedings of the Second International Conference on Computer Modeling and Simulation. Washington, DC: IEEE Computer Society, 2010: 291-294.

[5]

陳彥豐,朱君.基于PXI的汽車測(cè)試方案[J].汽車制造與裝備,2005(3):44-46.

[6]

程躍,康勁松,徐國(guó)卿.一種車用CAN總線網(wǎng)絡(luò)測(cè)試系統(tǒng)的研究[J].電子應(yīng)用,2008,27(1):83-86.

[7]

梁銳.NI軟硬件平臺(tái)在汽車ECU開(kāi)發(fā)和測(cè)試中的應(yīng)用[J].世界電子元器件,2007(12):61-63.

[8]

WEI WEN-XIONG, GUO JIANG-WEI, LIU SHENG-LONG, et al. Design of CAN communication network in automobile ECU testing system [C]// Proceedings of the Second Pacific-Asia Conference on Circuits, Communications and System. Washington, DC: IEEE Computer Society, 2010: 1-3.

[9]

CAN Specification 2.0,Part A [EB/OL]. [2011-02-15]. can-cia.de/fileadmin/cia/specifications/CAN20A.pdf.

[10]

曹更彥.汽車燃?xì)獍l(fā)動(dòng)機(jī)電控系統(tǒng)實(shí)時(shí)仿真技術(shù)研究[D].重慶:重慶郵電大學(xué),2009.

[11]

阮奇楨.我和LabVIEW[M].北京:北京航空航天大學(xué)出版社,2009.

[12]

Society of Automotive Engineers. SAE J1939 [EB/OL]. [2011-03-03]. 省略/PDFs/manual/drehgeber/M36X8/M3658_J1939.pdf.

[13]

胡思德.汽車車載網(wǎng)絡(luò)(VAN/CAN/LIN)技術(shù)詳解[M].北京:機(jī)械工業(yè)出版社,2006.

收稿日期:2011-06-16;修回日期:2011-08-21。

基金項(xiàng)目:

國(guó)家“核高基”重大專項(xiàng)(2009ZX01038-002-002-2);重慶高校優(yōu)秀成果轉(zhuǎn)化項(xiàng)目(KJZH08210)。

第7篇

關(guān)鍵詞:氨氮;在線監(jiān)測(cè)儀;使用;原理;方法

目前,水質(zhì)監(jiān)測(cè)儀器的發(fā)展前景仍處在一個(gè)未知的卻極其可觀的發(fā)展趨勢(shì)當(dāng)中,在北美等國(guó)都陸續(xù)設(shè)立了一定規(guī)模的專業(yè)生產(chǎn)企業(yè)。水質(zhì)在線監(jiān)測(cè)系統(tǒng)之所以得到世界各國(guó)的青睞,緣于其具有自動(dòng)轉(zhuǎn)換量程,自動(dòng)在線監(jiān)測(cè)、并能夠完成自動(dòng)運(yùn)行、自動(dòng)校正等對(duì)內(nèi)部數(shù)據(jù)的管理功能,對(duì)測(cè)量值與測(cè)量時(shí)間的實(shí)時(shí)掌控有著較大的裨益。在日常的使用過(guò)程當(dāng)中,應(yīng)做好定期維護(hù),了解其使用原理與及方法,保證其正常運(yùn)行,從而才能保證監(jiān)測(cè)的數(shù)據(jù)更為準(zhǔn)確精密,更好的完成對(duì)水質(zhì)環(huán)境的監(jiān)控管理,下面我們一起來(lái)進(jìn)行詳細(xì)探討。

一.對(duì)氨氮在線監(jiān)測(cè)儀器的認(rèn)識(shí)

氨氮(NH3-N)在線監(jiān)測(cè)儀器是基于酸堿指示劑的變色原理的應(yīng)用和分析從而測(cè)量和判斷所檢驗(yàn)的水樣當(dāng)中的NH3-N的濃度,在以往的監(jiān)測(cè)方法之上進(jìn)行改良,克服了采用電極法儀器的維修率頻繁的缺憾,同時(shí)也解決了在采用納氏試劑進(jìn)行監(jiān)測(cè)之時(shí)卻同時(shí)對(duì)水質(zhì)帶來(lái)的毒害問(wèn)題。

一套完整的氨氮(NH3-N)在線監(jiān)測(cè)儀器具體應(yīng)當(dāng)具有監(jiān)測(cè)主機(jī)(水中NH3-N含量的自動(dòng)監(jiān)測(cè)的重心)、流量綜合儀(包括超聲波流量計(jì)與巴歇爾流量槽),除此之外還有傳輸設(shè)置(常見(jiàn)的傳輸設(shè)置有PSIN有線網(wǎng)絡(luò)與及GPRS無(wú)線網(wǎng)絡(luò)兩種,主要負(fù)責(zé)數(shù)據(jù)的輸入與輸出)[1]。

近幾年來(lái),氨氮(NH3-N)在線檢測(cè)儀器較以往來(lái)看得到極其顯著的改善,在進(jìn)行污染源與水質(zhì)環(huán)境的檢測(cè)管控等方面都作出了極大的貢獻(xiàn),但是其主要的生產(chǎn)和供應(yīng)商卻都還主要集中在歐美等國(guó)家,這也直接導(dǎo)致了我們?cè)谶M(jìn)行水質(zhì)監(jiān)控時(shí)若需要一臺(tái)具有較高質(zhì)量保證的氨氮在線檢測(cè)儀器往往需要從國(guó)外購(gòu)置,這樣一來(lái)所需耗費(fèi)的成本和運(yùn)行費(fèi)用,這樣的問(wèn)題也是我們?cè)诓捎冒钡诰€檢測(cè)儀器的最大制約因素。

二、氨氮在線監(jiān)測(cè)儀器的使用原理和方法

氨氮(NH3-N)在線監(jiān)測(cè)儀器是基于計(jì)算機(jī)技術(shù)與實(shí)時(shí)監(jiān)控技術(shù)的綜合應(yīng)用與結(jié)合起來(lái)的,實(shí)現(xiàn)了對(duì)水質(zhì)監(jiān)控全程的自動(dòng)化,在進(jìn)行化工企業(yè)生產(chǎn)過(guò)程的污水排放與及城市生活的污水排放的實(shí)時(shí)監(jiān)控起到了較明顯的作用,獲取水體重NH3-N的濃度與污染指數(shù)。下面我們首先來(lái)一起探討氨氮(NH3-N)在線監(jiān)測(cè)儀器的使用原理。就目前我國(guó)環(huán)境監(jiān)測(cè)情況來(lái)看,氨氮(NH3-N)在線檢測(cè)儀器的原理可以歸結(jié)為氨氣敏電法與及納氏試劑法(也稱分光光度法)。

納氏試劑法與檢測(cè)水質(zhì)中銨含量時(shí)的測(cè)定方法(GB7479-1987)近似,在410-424mm的范圍限制內(nèi)對(duì)水樣中的氨與碘化鉀汞進(jìn)行反應(yīng),所生成的化合物呈現(xiàn)為淡紅色膠狀,采取此類方法的儀表一般都配備有水樣過(guò)濾裝置,并對(duì)其檢測(cè)期限做了明確的規(guī)定:0.1mg/L測(cè)定周期1H。

多年來(lái)較常采用的方法――氨氣敏電法,我們根據(jù)其檢測(cè)原理做了如圖示1所示的實(shí)驗(yàn),通過(guò)實(shí)驗(yàn)我們了解,氨氮監(jiān)測(cè)分為五個(gè)過(guò)程,即:氨的轉(zhuǎn)化、氨的溢出、氨的擴(kuò)散、填充液受到氨的影響而發(fā)生改變與及PH值電極的監(jiān)測(cè)與其數(shù)據(jù)的轉(zhuǎn)化這五個(gè)過(guò)程[2]。

圖示1 氨氣敏電極檢測(cè)原理實(shí)驗(yàn)

我們知道,通常氨氮以兩種以NH3和NH4+這兩種主要形式存在于水中,并以一定的量來(lái)保證這二者達(dá)到平衡,而這個(gè)量則取決于水的PH值,水的酸性濃度越大H+則相對(duì)較高,轉(zhuǎn)化為NH4+的量也相對(duì)較多,我們可將其原理表示為以下兩個(gè)式子:

注:①為水中NH3和NH4+動(dòng)態(tài)平衡關(guān)系式,②式為著二者相對(duì)量的平衡常數(shù)計(jì)算式,Ks為所測(cè)定水中氨達(dá)到平衡時(shí)的常數(shù)。

通過(guò)實(shí)驗(yàn)研究與分析之后我們了解到,要得出水中NH3:NH4+的值,首先應(yīng)當(dāng)對(duì)水的PH值進(jìn)行測(cè)定,PH值越大,NH3轉(zhuǎn)化為NH4+的量也就越大,并且水溫的高低也將對(duì)其轉(zhuǎn)化速率產(chǎn)生影響,PH值得變化也是是影響氨的溢出和透過(guò)膜的關(guān)鍵因素,然而,在檢測(cè)時(shí),為了保證儀表穩(wěn)定,應(yīng)首先保證緩沖液當(dāng)中的NaOH與EDTA二鈉鹽達(dá)到足夠高的溶度當(dāng)中,當(dāng)樣品水的表面包含活性劑類的物質(zhì)時(shí),應(yīng)首先對(duì)水樣進(jìn)行預(yù)處理[3]。

三、小結(jié)

氨氮在線檢查儀器的目前雖然已得到了較為廣泛的應(yīng)用,但從其設(shè)備成本投入費(fèi)用來(lái)看仍然是制約其在水質(zhì)監(jiān)測(cè)當(dāng)中的普及程度,在通過(guò)分光光度法與及氨氣敏電極法這兩種方法的認(rèn)識(shí)與研究之后,我們進(jìn)一步對(duì)目前進(jìn)行水質(zhì)環(huán)境污染時(shí)所采取的監(jiān)控技術(shù)與設(shè)備有了更深入的了解,就目前較為普遍的氨氣敏電極監(jiān)測(cè)方法來(lái)看,離子數(shù)與及溶解性物資的數(shù)量、表面活性劑物質(zhì)與及水樣的PH值偏向都是檢測(cè)當(dāng)中存在的主要影響因素,如何能夠更好的掌握這一系列因素所造成的影響規(guī)律,是今后采取氨氮在線儀器進(jìn)行水質(zhì)檢測(cè)工作的中心,也是水質(zhì)監(jiān)測(cè)工作的重要指標(biāo)。

參考文獻(xiàn):

[1] 陳濤;劉永波;袁紅明;;納氏試劑比色法測(cè)定污水中氨氮的方法[J];中國(guó)新技術(shù)新產(chǎn)品;2010(03):301.

[2] 王樂(lè)華;劉鳳芝;;分光光度法測(cè)定生活飲用水中Cr~(6+)的不確定度評(píng)定[J];職業(yè)與健康;2010(02):67.