99热精品69堂国产-97超级碰在线精品视频-日韩欧美中文字幕在线视频-欧美日韩大尺码免费专区-最新国产三级在线不卡视频-在线观看成人免费视频-亚洲欧美国产精品完整版-色综久久天天综合绕视看-中文字幕免费在线看线人-久久国产精品99精品国产

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

購物車(0)

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

單元測試方法范文

時間:2023-02-17 17:22:14

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

單元測試方法

第1篇

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

中圖分類號:TP301

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

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

0 引言

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

本文結(jié)合飛控軟件的特點,論述通過自動生成測試用例的工具軟件Cantata6.2進(jìn)行單元動態(tài)測試的方法。

1 飛行控制軟件特點

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

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

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

2 飛行控制軟件單元測試的意義

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

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

3 Cantata6.2測試工具

3.1 Cantata6.2簡介

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

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

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

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

void Instruction (C_INSTRCUTION *C_)

{

……; //定義局部變量

if(C_->fInTT < t1)

{

……; //控制解算

}

else

{

……; //控制解算

Function1(C_);

……;

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

{

……;

}

else

{

……;

}

……;

}

}

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

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

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

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

#define ZEROP 0.00001

void Function2 (void)

{

if(X

{

……;

}

else

{

……;

}

……;

}

筆者分別在CCS2.2和CCS3.3編譯器環(huá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)體類型自動賦值,不用手動一一賦值;而且飛控軟件涉及大量數(shù)學(xué)計算,Catata6.2的測試腳本是開放的純C代碼,可在其腳本管理器界面或測試腳本中直接修改某個測試用例的變量值,提高測試效率。Cantata6.2測試工具是通用的,而飛控軟件具有其特殊性,就二者的融合使用,筆者總結(jié)出如下經(jīng)驗:

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

(2)飛控軟件中包含有很多類似“x=x”的賦值操作,本義是在某些特定條件下,x的值不變,測試時要將這類語句注釋起來,否則Cantata6.2會報錯。

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

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

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

4.2 測試驅(qū)動開發(fā)

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

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

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

(3)依據(jù)航天軟件工程化標(biāo)準(zhǔn)要求,飛控軟件的安全關(guān)鍵性等級一般為A級,單元測試必須滿足語句(SC)、分支判斷(DC)、修正條件判斷(MC/DC)覆蓋率均達(dá)到100%。MC/DC要求每個判定中的每個條件都曾至少一次獨立影響判定結(jié)果。由控系統(tǒng)的特殊算法需求,模型中涉及分段函數(shù)計算比較多,選擇MC/DC覆蓋率標(biāo)準(zhǔn)后,某些代碼會覆蓋不到。代碼結(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)為第一個判斷條件“x1>x2”的假分支不應(yīng)再包含“x1>(x2+const2)”的判斷條件。類似情況,建議控制系統(tǒng)設(shè)計師修改模型文件,或者軟件開發(fā)人員優(yōu)化程序結(jié)構(gòu)。

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

5 結(jié)語

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

參考文獻(xiàn):

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

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

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

第2篇

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

中圖分類號:TP311.53

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

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

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

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

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

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

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

2.1 遺傳算法依據(jù)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3 實驗結(jié)果與分析

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

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

4 結(jié)束語

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

參考文獻(xiàn):

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

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

第3篇

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

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

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

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

(2)支持運用白盒測試技術(shù),自動獲取私有類數(shù)據(jù);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

struct DIST* StrCount;

struct FILTER* StrFilter;

在測試用例腳本中可以通過下面的方式給結(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)存*/

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

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

PORT_CB g_PortCbTable[10];

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

typedef struct

{

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

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

}PORT_CB;

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

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

4.小結(jié)

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

參考文獻(xiàn)

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

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

作者簡介:

第4篇

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

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

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

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

從現(xiàn)代中藥復(fù)方丹參滴丸研制成功起,天士力就致力于打造一條符合國際標(biāo)準(zhǔn)的現(xiàn)代中藥產(chǎn)業(yè)鏈,從中藥材、提取物再到成藥采取了全程質(zhì)量控制,從采用液相色譜分析等方法一步步發(fā)展到今天,更進(jìn)一步將最先進(jìn)的多元色譜指紋圖譜分析及質(zhì)量控制技術(shù)定為內(nèi)控方法。該技術(shù)對復(fù)方丹參滴丸主要化學(xué)成分進(jìn)行了系統(tǒng)分析,鑒定出10種丹參水溶性成分和20種三七皂苷類成分,基本揭示了復(fù)方丹參滴丸化學(xué)物質(zhì)基礎(chǔ);它首次創(chuàng)造性地提出多元化學(xué)指紋圖譜技術(shù)概念及其技術(shù)方法學(xué),建立了復(fù)方丹參滴丸指紋圖譜分析方法,同時還首次研制創(chuàng)建了多元指紋圖譜相似度計算分析軟件系統(tǒng),從根本上保證了研究結(jié)果的可驗證性和科學(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é)程翼宇教授、中國藥品生物制品檢定所林瑞超主任、天士力研究院葉正良副院長等為課題負(fù)責(zé)人的科研組與天士力制藥股份有限公司的專家通力合作,協(xié)同利用多元指紋圖譜計算分析技術(shù),分別對天士力陜西商洛國家丹參GAP基地生產(chǎn)的61批丹參藥材進(jìn)行指紋圖譜檢測,相似度均在95 %以上,充分表明通過規(guī)范化管理種植、生產(chǎn)的藥材質(zhì)量的穩(wěn)定性,科學(xué)嚴(yán)格的質(zhì)檢標(biāo)準(zhǔn)保證了天士力丹參藥材無農(nóng)藥殘留,遠(yuǎn)遠(yuǎn)高于國家藥典標(biāo)準(zhǔn);重金屬含量低于國際標(biāo)準(zhǔn)390倍。從而在根本上保證了復(fù)方丹參滴丸的高品質(zhì);對天士力現(xiàn)代中藥資源有限公司生產(chǎn)的122批浸膏進(jìn)行指紋圖譜檢測,相似度在90%以上,同樣表明通過GEP生產(chǎn)的藥材提取物質(zhì)量的穩(wěn)定性;對天士力制藥股份有限公司生產(chǎn)的近200批復(fù)方丹參滴丸進(jìn)行質(zhì)量追蹤,指紋圖譜檢測的相似度在90%以上,更加充分證明了復(fù)方丹參滴丸采用現(xiàn)代中藥制劑工藝技術(shù)生產(chǎn)的產(chǎn)品質(zhì)量的穩(wěn)定性,是十年來被億萬消費者首選的復(fù)方丹參滴丸療效確切、使用安全的保障。

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

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

第5篇

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

中圖分類號:TP317.3 文獻(xiàn)標(biāo)識碼: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智能運算服務(wù)的,這也是Excel不同于計算器和其他電子表格的地方。使用普通計算器時,需針對不同的數(shù)據(jù)重復(fù)進(jìn)行計算,即浪費時間又不能發(fā)現(xiàn)數(shù)據(jù)的變化規(guī)律。而使用Excel進(jìn)行計算時,對于相同的運算,不需要重復(fù)進(jìn)行,只要針對不同的應(yīng)用問題寫出對應(yīng)的自變量的地址,就可以通過“拷貝”公式的功能得出其他單元格中的結(jié)果。所以說,在EXCEL中對公式或函數(shù)的“拷貝”是進(jìn)行智能運算的助手。為此,先綜述一下各種“拷貝”方法。

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

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

用“相對地址”表示自變量單元格時的特點是:自變量單元格地址與(因變量)公式單元格的地址在空間布局上看是不變的,不會因為“拷貝”操作而改變。例如,某個單元格中的公式是計算左面3個單元格數(shù)據(jù)之和,則不論將該公式“拷貝”到哪個單元格中,結(jié)果始終是左面3個單元格數(shù)據(jù)之和。這就是我們在做成績統(tǒng)計時,只要計算出第一個學(xué)生的總成績,再向下拖動“填充柄”進(jìn)行拷貝,就會得到其他同學(xué)的總成績的原理。也就是說,用相對地址表示自變量時,自變量的地址始終是跟隨因變量變化而變化的,并計算出其他單元中的結(jié)果。單元格的相對地址表示方法普遍適用于成績表、設(shè)備表、工資表等數(shù)據(jù)庫形式的表格統(tǒng)計與計算。

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

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

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

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

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

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

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

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

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

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

第6篇

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

關(guān)鍵詞:

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

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

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

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

1 基于CAN總線的ECU功能測試介紹

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

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

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

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

表1中:Message表示報文名稱;ID表示報文仲裁場;DLC表示報文長度;Data表示報文數(shù)據(jù)。

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

2 設(shè)計方案

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

2.1 方法總體框架

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

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

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

具體測試方法如下:

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

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

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

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

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

2.2 軟件設(shè)計流程

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

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

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

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

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

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

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

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

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

3 系統(tǒng)分析

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

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

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

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

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

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

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

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

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

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

V=V參(0.0023P-0.015)

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

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

2)產(chǎn)生開關(guān)量仿真信號。

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

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

3.2 待測ECU模塊

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

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

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

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

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

4 測試實現(xiàn)

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

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

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

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

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

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

5 結(jié)語

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

參考文獻(xiàn):

[1]

夏巍,嚴(yán)輝,丁剛.CAN網(wǎng)絡(luò)的實時性與可靠性的研究[J].安徽建筑工業(yè)學(xué)院學(xué)報:自然科學(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è)儀表與自動化裝置,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的汽車測試方案[J].汽車制造與裝備,2005(3):44-46.

[6]

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

[7]

梁銳.NI軟硬件平臺在汽車ECU開發(fā)和測試中的應(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ā)動機電控系統(tǒng)實時仿真技術(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].北京:機械工業(yè)出版社,2006.

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

基金項目:

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

第7篇

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

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

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

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

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

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

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

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

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

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

圖示1 氨氣敏電極檢測原理實驗

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

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

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

三、小結(jié)

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

參考文獻(xiàn):

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

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