時間:2023-02-17 17:22:14
序論:在您撰寫單元測試方法時,參考他人的優秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發您的創作熱情,引導您走向新的創作高度。
關鍵詞:飛行控制軟件;單元測試;動態測試
中圖分類號:TP301
文獻標識碼:A 文章編號:1672-7800(2015)005-0029-03
作者簡介:劉思思(1985-),女,陜西商洛人,碩士,上海機電工程研究所工程師,研究方向為飛行控制軟件開發、系統集成與驗證;劉迪(1985-),男,黑龍江哈爾濱人,碩士,上海機電工程研究所工程師,研究方向為制導控制系統設計與仿真。
0 引言
在飛行控制軟件(簡稱飛控軟件)開發過程中,單元測試環節必不可少。其中,靜態度量指標可以用專門的工具很方便得出其具體數值,而動態測試雖然也有專門的工具,但編寫測試用例需要花費大量時間和精力。當前,航天多型號開發任務重,迫切需要應用自動化的測試工具軟件來提高動態測試的工作效率。
本文結合飛控軟件的特點,論述通過自動生成測試用例的工具軟件Cantata6.2進行單元動態測試的方法。
1 飛行控制軟件特點
飛控軟件的主要功能是完成相關設備之間的實時信息交互與控制解算,從而實現飛行過程中姿態和位置的控制。飛控軟件主要分為應用層軟件、接口協議層軟件和底層驅動軟件3個部分,軟件架構如圖1所示。
應用層軟件由實現姿態和位置控制的各功能模塊組成;接口協議層軟件主要為飛行控制設備與其它設備之間通信的協議模塊;底層驅動軟件主要由飛行控制設備的接口驅動模塊以及硬件輸入輸出模塊組成。
飛控軟件嵌入在飛控設備中,具有實時性高、時序和邏輯復雜、可靠性高的特點。首先,要確保底層驅動軟件和接口協議軟件的正確性,使得各類信號得以正確傳輸;其次,要確保軟件與控制算法模型的一致性,輸入輸出及解算正確;最后,要確保軟件時序和邏輯的正確性。只有這樣才能保證飛行控制系統正常工作。
2 飛行控制軟件單元測試的意義
對飛控軟件的最小組成單位――函數進行測試的目的在于檢驗其能否正確地實現其功能,滿足性能指標和接口要求。通過語句(SC)、條件(DC)、修正條件判斷(MC/DC)等覆蓋率指標評價程序結構,及早發現軟件代碼中的編碼和邏輯錯誤。
對控軟件來說,被測函數已經完成了編碼和調試,能夠通過編譯和鏈接進行單元測試。此外,不考慮每個模塊與其它模塊之間的關系,為每個模塊設計驅動模塊和樁模塊,每個模塊進行獨立的單元測試,各模塊的單元測試可以并行進行,能夠提高測試效率,也較容易實現100%的覆蓋率指標要求[1]。
3 Cantata6.2測試工具
3.1 Cantata6.2簡介
Cantata6.2采用先進的代碼分析器和AutoTest技術,智能分析被測代碼,掃描代碼的所有可能路徑,根據選定的覆蓋率標準,自動生成滿足100%覆蓋率的測試用例。對全局變量、返回值自動賦期望值,并包含對全局變量、返回值、調用函數參數傳遞等進行檢查。對形參為復雜類型,如結構體指針的情況,能自動生成相應的測試對象,即構造一個結構體數組,將結構體數組的地址賦給形參。自動生成樁函數,在測試工程中替代真實的外部函數。使用Cantata6.2進行單元測試的原理如圖2所示。
用戶可以使用Cantata6.2工具AutoTest選擇相應的覆蓋率規則集,通常航天A級軟件要滿足修正條件判斷(MC/DC)覆蓋率100%,B級軟件要滿足分支判斷(DC)覆蓋率指標100%,C級軟件要滿足語句(SC)覆蓋率指標100%。飛控軟件通常均為A級軟件,選擇DO-178B/ED-12B Level A Coverage規則,自動生成滿足SC、DC、MC/DC3個覆蓋率指標要求的測試腳本文件。
3.2 含有樁函數的測試實例
本文以飛控軟件的指令形成函數模塊為例,檢驗Cantata6.2的動態測試功能。該函數模塊的主要功能是形成穩定控制系統姿態控制等的指令信號。代碼框架如下:
void Instruction (C_INSTRCUTION *C_)
{
……; //定義局部變量
if(C_->fInTT < t1)
{
……; //控制解算
}
else
{
……; //控制解算
Function1(C_);
……;
if(C_-> fInTT < t2) //注①
{
……;
}
else
{
……;
}
……;
}
}
利用Cantata6.2進行動態測試。自動生成10個測試用例并執行完后,語句覆蓋率和分支判斷覆蓋率都沒有達到100%,源代碼中注①處標注的條件判斷的假分支沒有得到執行。于是,手動添加一個測試用例,使得在給定的輸入條件下結構體變量C_-> fInTT的值落在[t2,∞)的區間內,接著重新執行該測試用例,結果還是執行不到該假分支。仔細分析代碼后發現,該分支中的條件判斷表達式中的結構體變量C_-> fInTT的值已被樁函數Function1(C_)修改。
處理方法如下:第一步,在Cantata6.2的調用接口控制界面中,為該樁函數添加一個新的樁函數實例,并手動修改結構體變量C_-> fInTT的值,該數值應大于或等于t2;第二步,在Cantata6.2測試用例界面,將調用序列更改為新的樁函數實例。至此,執行全部11個測試用例之后,滿足語句和分支判斷覆蓋率全達到100%的指標要求。
3.3 編譯器對測試結果的影響
飛行控制軟件的編譯器目前主要使用CCS2.2或CCS3.3,在用Cantata6.2進行單元測試時,CCS被設置為Simulator模式,Cantata6.2會自動調用CCS,執行編譯好的測試中間文件,進而生成測試結果文件。測試過程中,筆者發現對于如下代碼段,Cantata6.2自動生成的測試用例對X自動賦值為0.9999,調用CCS2.2執行用例后,代碼運行的實際路徑與期望路徑不一致,測試結果不能達到100%的分支覆蓋率指標要求。
#define ZEROP 0.00001
void Function2 (void)
{
if(X
{
……;
}
else
{
……;
}
……;
}
筆者分別在CCS2.2和CCS3.3編譯器環境下,驗證了該代碼段的運行情況,最終得出結論如下:①在CCS2.2編譯器下,程序執行真分支,與期望不一致,結果不正確;②在CCS3.3編譯器下,程序執行假分支,與期望一致,結果正確。上述結果表明,不同的編譯器版本影響程序實際執行路徑的正確性。
4 基控軟件的Cantata6.2使用策略
4.1 Cantata6.2使用策略
飛控軟件中包含很多復雜的結構體數據類型,Cantata6.2能夠對結構體類型自動賦值,不用手動一一賦值;而且飛控軟件涉及大量數學計算,Catata6.2的測試腳本是開放的純C代碼,可在其腳本管理器界面或測試腳本中直接修改某個測試用例的變量值,提高測試效率。Cantata6.2測試工具是通用的,而飛控軟件具有其特殊性,就二者的融合使用,筆者總結出如下經驗:
(1)飛控軟件中一般都包含do while(1)的死循環結構,測試時需要將這類死循環放開,測試用例才能執行完畢。
(2)飛控軟件中包含有很多類似“x=x”的賦值操作,本義是在某些特定條件下,x的值不變,測試時要將這類語句注釋起來,否則Cantata6.2會報錯。
(3)當被測函數包含子函數時,Cantata6.2會自動作打樁處理,但樁函數有可能會修改某些全局變量的值,進而導致某個分支始終無法覆蓋。這時,可以在該樁函數的調用接口添加一個樁函數實例,并手動修改該變量的值,再將調用序列更改為新的樁函數實例,如3.2小節所述實例。
(4)飛控軟件作為嵌入式軟件,最終是固化在飛控設備中,構成飛控系統運行。因此,軟件一般都包含對硬件端口地址的操作,如果是從端口輸出數據,測試時需要將這些代碼注釋起來,如果是讀取某個地址的值,則可以自己定義一個變量代替該數值,否則將導致不能自動生成測試用例。
(5)飛控軟件中的控制算法一般都包含有積分計算,開發人員一般習慣定義靜態的局部變量,遇到這種情況時,應該將這些變量移到函數外部定義,否則會導致不能自動生成測試用例。
4.2 測試驅動開發
Cantata6.2測試工具能夠自動生成測試用例,即使不滿足語句、分支判斷、修正條件判斷覆蓋率100%要求,測試人員也能很快根據覆蓋率結果圖示手動添加新的測試用例,使得該用例執行后覆蓋到上一次未覆蓋到的分支。但是,就筆者的使用經驗而言,Cantata6.2對被測代碼的要求比較高,被測代碼要符合標準C要求,其頭文件不能相互嵌套重復引用,否則一個.c文件和其相關的.h文件加載進去就會出現錯誤提示和警告,而且必須將這些錯誤提示解決完并通過編譯后,才能進行下一步生成測試用例的工作。此外,由控軟件具有邏輯復雜、運算量大的特點,要借助Cantata6.2的自動生成測試用例的功能快速完成飛控軟件測試,這也對飛控軟件的代碼質量和框架結構提出了比較高的要求。在飛控軟件框架結構和代碼質量比較高的情況下,可以加載整個.c文件,一次性生成整個.c的全部測試用例,而不用單個函數去建測試工程,從而加快測試速度。筆者總結使用經驗如下:
(1)飛控軟件的自動駕駛儀模塊根據控制系統的模型編寫,模型中包含滾動、偏航、俯仰三通道控制解算算法,該模塊代碼最好拆成3個函數模塊,單個模塊代碼行數要在200行以內,便于測試,代碼結構也更加清晰。
(2)由控軟件的特殊功能需求,同一個函數中包含多個條件表達式“與”或者“或”,再進行邏輯(即if else)判斷的用法非常多,譬如if(條件表達式1&&條件表達式2||條件表達式3),開發人員在編寫代碼時,最好將這些條件表達式的計算在if判斷之前完成,以有利于測試用例能夠正常覆蓋到期望的分支。
(3)依據航天軟件工程化標準要求,飛控軟件的安全關鍵性等級一般為A級,單元測試必須滿足語句(SC)、分支判斷(DC)、修正條件判斷(MC/DC)覆蓋率均達到100%。MC/DC要求每個判定中的每個條件都曾至少一次獨立影響判定結果。由控系統的特殊算法需求,模型中涉及分段函數計算比較多,選擇MC/DC覆蓋率標準后,某些代碼會覆蓋不到。代碼結構如下,斜體加粗部分為未覆蓋到的代碼:
if((x1>x2)&&(x1< (x2+const1)))
{
……;
}
else if( (x1>(x2+ const2))&&(x1< (x2+const3))) //注2:0
{
……;
}
else
{
……;
}
分析上述代碼,筆者認為由于選擇了修正條件判斷覆蓋率標準MC/DC,Cantata6.2認為第一個判斷條件“x1>x2”的假分支不應再包含“x1>(x2+const2)”的判斷條件。類似情況,建議控制系統設計師修改模型文件,或者軟件開發人員優化程序結構。
(4)通過3.3小節中的實例,建議開發人員應該選擇升級版本的編譯器作為開發工具。此外,筆者嘗試了將ZEROP定義為局部變量0.00001,結果程序無論在CCS2.2還是CCS3.3編譯器下,均執行不到期望的正確分支,這對編碼質量提出了較高要求。
5 結語
利用Cantata6.2自動生成測試用例的功能能夠快速完成單元動態測試,促進開發人員提高編碼質量,提高飛控軟件的可移植性和可維護性,滿足當前航天多型號軟件開發和單元測試的工作需求。同時,工具內置的很多規則集能夠幫助測試人員快速定位軟件編碼錯誤和框架問題,進而幫助開發人員更好的優化程序結構,進一步提高航天軟件研制水平。
參考文獻:
[1] 張猛,毛亮.航天嵌入式軟件的單元測試方法探討[J].航天器工程,2006(7):32-35.
[2] 陶幸輝,宋志剛.嵌入式飛控軟件測試方法研究及實踐[J].軟件導刊,2011(8):14-16.
[3] 馬颯颯,趙守偉,肖小峰.基于覆蓋與故障注入的飛控軟件測試技術研究[J].計算機測量與控制,2005,13(3):291-293.
關鍵詞:遺傳算法;模擬退火算法;自動化;單元測試
中圖分類號:TP311.53
隨著計算機技術的發展,計算機智能技術也逐漸得到了開發應用,生物智能、人工智能以及算計智能的聯合應用和優勢互補,使智能技術的應用更加有效。隨著計算機的普及,軟件產品已經深入人們生活工作的各個領域,成為日常工作、生活、娛樂的必不可少的組成部分。而對于軟件安全性能的要求則在很大程度上促進了軟件測試的發展。軟件測試是軟件安全性能和良好的使用性能的重要哦保證,貫穿于軟甲開發過程的始終,保證軟件開發每個階段的質量。
軟件的質量需要經過軟件功能測試才能得到保障,而單元測試則是軟件功能測試的基礎和前提,是軟件測試的起步環節。單元測試針對的對象是程序中最小的軟件模塊,一般是軟件開發人員通過編寫小段代碼,針對被測試代碼的某個較小較明確的功能進行測試,看其是否可以正常運行。
1 參數化單元測試
單元測試作為軟件測試的起步環節,同時也是不可或缺的環節,對軟件的質量起著至關重要的作用。在實際測試中,單元測試代碼的手動編寫工作是一件極其復雜且耗時的工作,并且所選測試實例不能保證覆蓋較大的代碼,具有很大的隨機性,進而降低單元測試的效率。
參數化單元測試將程序規格與測試用例生成分離,解決了傳統單元測試存在的弊端。運用參數化單元測試方法,程序要實現的功能需要人工書寫代碼,然后測試工具就會通過對測試代碼的分析和檢測,自動根據測試的實際路徑生成對應的實例和測試代碼,實現代碼的高覆蓋率。
2 基于遺傳算法的搜索策略
在退火算法的運行過程中溶入遺傳算法,稱為退火遺傳算法,依舊是說,所謂的退火遺傳算法,實際上是由退火算法和遺傳算法兩個部分組成,結合雙方各自的優點和特性,所得到的新的綜合性計算方法。
2.1 遺傳算法依據
遺傳算法的提出源于計算機發展初期提出的所謂“人工進化系統”,它是根據生物進化的特點,借鑒優勝劣汰的自然遺傳法則,參照達爾文進化論的理論思想而形成的一種不依賴具體問題的直接搜索方法,在運用遺傳算法進行數據計算時,不僅要用到進化學的概念,同時也要符合遺傳學說的基因遺傳原理。
運用遺傳算法進行計算時,一般要經過幾個基本步驟,即:初始化數據、數據的擇優選擇、隨機對選中的兩個數據進行交叉互換、根據遺產學說的基因變異原理所進行的個體數據變異、全局最優收斂,進而得出需要的結論或數據。
2.2 模擬退火算法依據
模擬退火算法是根據固體退火過程和組合優化問題之間的相似性而提出的。在對物質進行加熱處理時,物質組成中粒子之間的布朗運動加強,當加熱到一定程度時,溫度達到物質熔點,固體物質會轉化為液體形態。這時,對物體進行退火處理,使溫度降低,則物體的粒子運動減弱,并且會逐漸趨于平衡和有序,最終達到物質性質的穩定。
模擬退火算法運用溫度參數進行控制,當溫度較高時,數據運動變化劇烈,從而使解的區間變化較大,容易接受到較差解;當溫度降低,數據運動逐漸減緩時,解的區間也會逐漸趨于穩定,這時候就可以得到較為優良的解果,從而對遺傳算法的不足進行彌補。
2.3 退火遺傳算法依據
退火遺傳算法,是指以遺傳算法為主要運算方法,并在運算過程中引入模擬退火算法,使兩者達到優勢互補,進一步對群體進行優化調整。退火遺傳算法可以分為兩個組成部分:首先,運用遺傳算法的進化理論,產生一個相對較為優良的群體,然后利用模擬退火算法,對群體中的個體進行優化和調整。
(1)針對遺傳算子進行改進
所謂遺傳算子,是指在遺傳算法中,用來維持遺傳多樣性所使用的算子,遺傳多樣性是生物或數據演化過程中不可或缺的一個必要性質,遺傳算子在遺傳算法中類似于自然中的適者生存原則,對于個體的進化會產生巨大的影響。
初始進化階段,為了保持種群的多樣性,便于從中進行選擇,應該加大對于個體間相互交叉和互換的概率;在進化的終極階段,頻繁的交叉互換不利于種群的穩定和最優解的產生,因此需要適當地減小個體間的聯系和活動,減少最優解的求解難度,縮短求解過程。針對種群中的個體而言,在進行變異操作時,對優勢個體進行較小的變異,劣勢個體進行較大的變異,可以使其更加趨近于最優解。
(2)合理構造適應值函數
適應值函數可以針對遺傳算法的求解過程進行指導,對最優解的數值區間進行限定,在適應值函數的構造過程中,引入關鍵分支的概念。關鍵分支,指在選定的路徑中,對存在的結點的真實性進行判定,求解過程可能會在這些結點處產生偏離,引發錯誤,而這些會導致求解過程偏離目標路徑的結點,就是關鍵分支。
適應值函數在遺傳算法中是用來區分個體優劣的標準,是進行自然選擇的唯一依據。原始適應值函數是對問題最初求解目標的反映。適應值對個體的判斷有兩個截然相反的情形:適應值越大,個體性能越好和適應值越小,個體性能越好。在遺傳算法中,對適應值函數是有限制的,即適應值函數必須為非負數,這就需要選擇較大的適應值函數來選擇較為優良的個體。
為了使被測數據中每個參數都可以得到評估,根據相關數據對判斷結點進行數據轉換,在保證個體數據得到充分計算的情況下,不會對程序主體造成破壞
3 實驗結果與分析
為了對退火遺傳算法的性能進行驗證,采用判斷三角形的相關測試程序,將退火遺傳算法與單純的遺傳算法進行對比,對進化每一代的最大適應值進行記錄。
從實驗數據可以看出,初始進化階段,個體的產生具有隨機性,在對實驗進行多次運行后,可以看出,最高適應值之間差異十分明顯。進化過程初期,兩種算法的最高適應值都存在較大的波動,而隨著遺傳的不斷進行,退火遺傳算法的最大適應值范圍逐漸趨于穩定,而遺傳算法的最大適應值范圍仍不穩定。因此可以得出結論,將模擬退火算法與遺傳算法相互配合,可以有效避免單一遺傳算法的不足,加快對最優解的計算速度,減少計算所需時間。根據實驗的數據,對多次實驗的結果進行統一總結,可以看出,相對于單一的遺傳算法而言,退火遺傳算法的進化速度大大加快,減少了計算時間。
4 結束語
經過實驗和分析,我們可以看到,生成高代碼覆蓋率的測試用例是自動化測試的關鍵問題,是提高自動化測試性能的主要手段。針對遺傳算法存在的缺陷,將遺傳算法和模擬退火算法相互結合,實現優勢互補,針對群體數據中的遺傳算子以及適應值函數作出改進,最終通過對比實驗,驗證了退火遺傳算法的有效性和優越性。
參考文獻:
[1]趙慧娟,孫文輝.基于退火遺傳算法的單元測試方法[J].計算機工程,2013,39(1):49-53.
[2]楊學紅.自動化單元測試概述[J].信息通信技術,2012,(1):66-68.
【關鍵詞】單元測試;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.引言
隨著軟件系統越來越復雜,在產品開發各階段進行完全的軟件測試也越來越重要,大多數軟件開發者都已意識到這一點。但考慮到測試費用問題,軟件開發者往往面臨著在提高產品質量與減少費用之間進行選擇的問題。IPL提供的Cantata測試軟件應這種需要,在合理的費用下提供給軟件開發者的強有效的軟件測試工具。Cantata可以同時支持C和C++語言的測試,能夠滿足開發者進行高效的單元和集成測試的需求,該產品不僅能提高產品質量,還能幫助提高生產率。
作為專業軟件測試工具,Cantata++除包含一些標準的特征之外,還提供了一些新功能:
(1)支持語句、判定和布爾代碼覆蓋率度量;
(2)支持運用白盒測試技術,自動獲取私有類數據;
(3)支持面向對象測試用例的重用;
(4)圖形化和XML形式的結果報告。[1]
2.單元測試用例的設計
軟件質量的好壞很大程度上取決于測試用例的設計質量。不論程序員的編程水平、軟件設計水平有多高,軟件工程化執行得多好,如果沒有通過合適質量的測試用例進行測試,其最終軟件質量都是難以保證的。因此,測試用例設計是軟件測試的最核心和最重要的內容之一。[2]
單元測試主要使用白盒測試技術,測試用例的設計方法一般分兩種類型,即測試人員自己編寫測試腳本和借助測試工具生成測試腳本框架后維護測試數據。Cantata++測試工具可用于生成和維護測試腳本,編譯并運行測試可執行程序,查看測試結果和覆蓋率數據。
3.基于cantata的測試用例設計方法
在cantata工具中常見的單元測試用例的實現方法很簡單,不再贅述。本文主要介紹復雜函數實現的單元測試用例的設計方法。如單元測試的被測單元函數使用的函數形參是結構體變量和全局變量是結構體數組且結構體的成員是指針時,在設計測試用例時如何給結構體變量賦值?
3.1 函數的形參為結構體類型
Cantata測試工具自動生成的測試用例中,函數形參的默認值都是“NOT_SET”,編譯測試腳本時不能被識別,給函數的形參賦正確的參數值是得到正確的測試結果的前提。設計帶有結構體類型的形參的測試用例時,我們分別做了如下實驗:
(1)按照在C語言中結構體變量成員賦值的方式給測試用例中的結構體變量賦值;
(2)使用改造C語言結構體變量成員賦值的方式把“->”改為“?”給測試用例中的結構體變量賦值。
編譯結果證明兩種賦值方式均不能被正確識別。
3.2 全局變量為結構體類型的數組變量,且其成員為指針
Cantata在自動生成測試用例時使用其本身封裝的INITIALISE()函數給全局變量賦初值為0x55,以滿足一般的測試需要。為達到充分測試的目的,需要給全局變量賦相應的數值,當全局變量為結構體類型的數組變量,且其成員為指針時,我們進行了如下實驗:
(1)使用C語言中數組初始化的方式給結構體數組賦值;
(2)一個數組元素一個數據元素的方式給結構體數組賦值;
(3)使用分配內存的方式給結構體數組賦值。
編譯結果證明三種賦值方式均不能被編譯器識別。
結構體形參賦值時是不是因為該形參在賦值之前沒有被分配內存空間所以無法賦值?結構體數組賦值的情況會不會因為cantata測試工具對編碼規則要求較嚴格,必須按照相應的編程規則才可以編譯通過?帶著這種疑問我們查閱了大量編程規則的資料,通過反復實踐,最終找到了解決該兩個問題的辦法。
其一,假設函數形參是如下兩個結構體變量:
struct DIST* StrCount;
struct FILTER* StrFilter;
在測試用例腳本中可以通過下面的方式給結構體變量賦值:
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; /*結構體成員賦初值*/
free(StrCount) ;
free(StrFilter) ;/*釋放內存*/
如此賦值后的測試腳本文件加入測試工程后編譯通過,得到了覆蓋率測試結果,函數形參是結構體類型變量的測試用例設計的問題得以解決。
其二,假定定義如下的結構體數組:
PORT_CB g_PortCbTable[10];
其中:PORT_CB 為如下的結構體類型:
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或無后綴指明所賦常量的類型,強制轉換類型不可以忽略。如此賦值后的測試腳本文件加入測試工程后編譯通過,得到了覆蓋率測試結果,至此全局變量為結構體類型的數組變量,且其成員為指針時,測試用例的設計問題得以解決。
4.小結
本文介紹了測試工具cantata的功能特性及其在單元測試中的應用,在此基礎上提出了一種復雜單元函數的測試用例設計方法,該方法在類似的軟件測試項目中得到了應用,在實踐中取得了良好效果。
參考文獻
[1]Cantata++ Reference Manual v6.1 2011,3.
[2]周偉明著.軟件測試實踐[M].電子工業出版社,2008:46.
作者簡介:
現代中藥質量控制技術橫空出世
2004年3月19日是個讓人激動的日子,由浙江大學藥學院、中國生物制品檢定所和天津天士力制藥股份有限公司等聯合承擔的國家“十五”科技攻關重大項目“指紋圖譜應用示范研究”正式通過國家科技部和國家中醫藥管理局驗收。緊接著,該攻關項目成果“復方丹參滴丸指紋圖譜分析及質量控制技術”通過國家技術鑒定。由四位院士為首的技術鑒定委員會對此作出高度評價:“該技術大大提高了復方丹參滴丸質量控制水平,為我國建立中藥質量指紋圖譜檢測標準起了示范帶頭作用,為保障工藝穩定和實現藥材-中間體-中成藥制劑全程質量控制奠定了技術基礎。它是中藥現代化研究領域的重大技術進步,是我國以復方丹參滴丸為代表的中藥產品指紋圖譜分析技術創新發展的成果,總體達到國內領先、國際先進水平,為發展形成具有我國自主知識產權的現代中藥質量控制技術作出了重要貢獻?!边@項技術已經成為代表當今現代中藥質量控制技術領域世界最高水平的標志,它的誕生預示著一場中藥產業的革命正在悄然來臨。
根據《中國藥典》記載,早期中藥的質量檢驗方法非常簡單,一直采用外觀形態的經驗鑒別方法,1963年開始采用重量法、容量法等實驗室手段協助鑒定,發展到1985年開始采用手工分析化驗的鑒定方法。直到1990年才真正開始采用氣相/液相色譜等現代儀器分析檢測方法鑒定。中藥指紋圖譜檢測技術運用現代分析儀器和化學信息處理手段對中藥產品質量進行表征,突破了傳統中藥質控技術諸多缺陷,可對藥品生產的各環節進行全面質量控制,已為國內外藥物分析界所廣泛接受。FDA(美國食品藥品監督管理局)對植物藥的質量檢測要求制訂指紋圖譜檢測標準,歐共體對某些草藥的質量控制也采用了指紋圖譜技術。指紋圖譜作為中藥材、中藥提取物、中成藥等含有混合物質群的質量分析檢測方法,已經成為全球醫藥界共識。
全程質量控制從復方丹參滴丸開始
從現代中藥復方丹參滴丸研制成功起,天士力就致力于打造一條符合國際標準的現代中藥產業鏈,從中藥材、提取物再到成藥采取了全程質量控制,從采用液相色譜分析等方法一步步發展到今天,更進一步將最先進的多元色譜指紋圖譜分析及質量控制技術定為內控方法。該技術對復方丹參滴丸主要化學成分進行了系統分析,鑒定出10種丹參水溶性成分和20種三七皂苷類成分,基本揭示了復方丹參滴丸化學物質基礎;它首次創造性地提出多元化學指紋圖譜技術概念及其技術方法學,建立了復方丹參滴丸指紋圖譜分析方法,同時還首次研制創建了多元指紋圖譜相似度計算分析軟件系統,從根本上保證了研究結果的可驗證性和科學嚴謹性。與現有的單元指紋圖譜分析技術相比,該技術能更完整地反映出復雜中藥產品的化學組成特征,可用于復雜中藥產品的質量控制。因此,它能夠準確反映復方丹參滴丸的整體質量狀況,有效地監控及優化制藥工藝參數,科學嚴格地確保中藥多組分的質量穩定性。
中藥承載著人類健康的希望,天士力肩負著人類健康的使命與責任。以浙江大學程翼宇教授、中國藥品生物制品檢定所林瑞超主任、天士力研究院葉正良副院長等為課題負責人的科研組與天士力制藥股份有限公司的專家通力合作,協同利用多元指紋圖譜計算分析技術,分別對天士力陜西商洛國家丹參GAP基地生產的61批丹參藥材進行指紋圖譜檢測,相似度均在95 %以上,充分表明通過規范化管理種植、生產的藥材質量的穩定性,科學嚴格的質檢標準保證了天士力丹參藥材無農藥殘留,遠遠高于國家藥典標準;重金屬含量低于國際標準390倍。從而在根本上保證了復方丹參滴丸的高品質;對天士力現代中藥資源有限公司生產的122批浸膏進行指紋圖譜檢測,相似度在90%以上,同樣表明通過GEP生產的藥材提取物質量的穩定性;對天士力制藥股份有限公司生產的近200批復方丹參滴丸進行質量追蹤,指紋圖譜檢測的相似度在90%以上,更加充分證明了復方丹參滴丸采用現代中藥制劑工藝技術生產的產品質量的穩定性,是十年來被億萬消費者首選的復方丹參滴丸療效確切、使用安全的保障。
復方丹參滴丸指紋圖譜分析技術的研究成功與應用,在科學規范地檢測復方丹參滴丸質量穩定性的同時,為復方丹參滴丸暢銷10年不衰秘密的揭示提供了強有力的科學依據:穩定的產品質量換取的是穩定有效的藥物療效,真正使老百姓吃上安全有效的放心藥,患者的肯定也造就了天士力大健康產業的蓬勃發展。
中藥現代化任重而道遠
關鍵詞 EXCEL單元格 地址表示方法 實例
中圖分類號:TP317.3 文獻標識碼: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智能運算服務的,這也是Excel不同于計算器和其他電子表格的地方。使用普通計算器時,需針對不同的數據重復進行計算,即浪費時間又不能發現數據的變化規律。而使用Excel進行計算時,對于相同的運算,不需要重復進行,只要針對不同的應用問題寫出對應的自變量的地址,就可以通過“拷貝”公式的功能得出其他單元格中的結果。所以說,在EXCEL中對公式或函數的“拷貝”是進行智能運算的助手。為此,先綜述一下各種“拷貝”方法。
在EXCEL中“拷貝”操作可以使用通用的拷貝方法,如快捷鍵方法:Ctrl+C 再Ctrl+V;或人們習慣用的拷貝與粘貼兩個圖標方法以及右鍵快捷菜單方法。上述這些“拷貝”方法都需借助剪貼板來進行。若按Ctrl+左鍵拖被選內容,則不需要將拷貝信息事先注入剪貼板,這也是常用的一種拷貝方法。這些通用的拷貝方法對于EXCEL的計算不很方便,當待拷貝的公式單元格較多時,既浪費時間還容易出錯。為此,EXCEL給出一種特殊的拷貝方法:拖公式單元格右下角的(細十字)“填充柄”進行公式或函數的拷貝操作。需要注意的是:這種拷貝方法僅限于相鄰單元間的拷貝,而在EXCEL中我們最需要的恰恰就是相鄰單元格間的快速拷貝方法。
為了能正確地計算出數據庫類型表格中的公式或函數結果,自變量所在的單元格必須使用“相對地址”表示,即用“列標+行號”來表示。如A2表示第一列第二行中的數據,對于一個自變量區域,不必一個一個地寫出來,可以用左上角和右下角單元格地址簡捷地表示,兩者之間用英文的冒號隔開,如A3:D6就表示一個含有16個單元格的矩形區域,在進行公式運算時特別方便。
用“相對地址”表示自變量單元格時的特點是:自變量單元格地址與(因變量)公式單元格的地址在空間布局上看是不變的,不會因為“拷貝”操作而改變。例如,某個單元格中的公式是計算左面3個單元格數據之和,則不論將該公式“拷貝”到哪個單元格中,結果始終是左面3個單元格數據之和。這就是我們在做成績統計時,只要計算出第一個學生的總成績,再向下拖動“填充柄”進行拷貝,就會得到其他同學的總成績的原理。也就是說,用相對地址表示自變量時,自變量的地址始終是跟隨因變量變化而變化的,并計算出其他單元中的結果。單元格的相對地址表示方法普遍適用于成績表、設備表、工資表等數據庫形式的表格統計與計算。
EXCEL單元格地址的第二種表示方法是:絕對地址表示法。所謂“絕對”就是永恒不變的意思,即自變量單元格不會跟隨因變量變化而變化,形象地說,單元格地址被鎖住了。在數據庫計算和其他表格制作時均有應用。
絕對地址表示方法是:在自變量單元格的列標和行號前均加$號。如:一個單元格的絕對表示是$B$4,一個區域的絕對地址表示是$B$4:$D$7。
我們在制作數據表格時,有時需要對自變量進行篩選、比較,例如:在對一個班級學生成績進行排位時,需逐個比較每名學生成績在班級所有同學成績中的位置。其中,單個學生的成績是變化的,須用相對地址表示,而所有學生成績的單元格區域必須是不變的,不能因為學生變化而改變,在Excel中這種不變的自變量或區域采用“絕對地址表示”。在對公式或函數單元格“拷貝”時,用“絕對地址表示”的區域始終保持不變,與“拷貝”無關。
在前面提到的學生成績排位問題中,成績對比區域必須用“絕對地址”表示,與此類似的應用問題很多。雖然我們可以用“排序”圖標來進行,但這種排序方法會破壞原有表格行的位置,這恰恰是我們最不希望看到的。為此,用Excel 的排位函數Rank可以實現在不改變原有數據庫記錄次序的前提下,又能添加一個“排位”字段的功能。應用時的格式為:Rank(變量,變量區域,0或1)。其中,“變量”用相對地址表示,是跟隨因變量變化的,第二個參數“變量區域”是變量大小比較的區域,在排序的過程中必須保持不變,須用“絕對地址”表示。第三個參數是可選參數,可以取0或1,取0時,表示第一個參數(變量)的值越大,排位越靠前,省略該參數時相當于取值為0。若第三個參數取1,則第一個參數(變量)值越小,排位越靠前。
該例是按“總成績”進行排位的,G2中的公式為RANK(F2,$F$2:$F$10)。F列上的數據就是函數中的“變量”,其中F2必須用相對地址表示,在對G2中的公式向下“拷貝”的過程中,F2自動變更為F3、F4、F5一直到F10。第2個參數$F$2:$F$10是“總成績”字段區域,既所有自變量所在的區域,須用絕對地址表示,以保證在對排位函數“拷貝”的過程中這個區域始終保持不變。此公式僅用了兩個參數,省略第三個參數表明:總成績高的排位號在前。拖G2單元格的“填充柄”向下“拷貝”時,單個學生的總成績不斷在變化,而所有學生的總成績區域被“鎖住”,拷貝到最后一個學生,即可快速得到整個“排名”字段。
另外,在實際工作時,某些公式中的常數有可能發生變化。如請假扣款金額、計件工資金額等,當把這些常數直接寫在公式中時,一旦發生金額變化,就需要重新進行計算。最好的方法是在將該常數先放在表格中的某單元格處,而在公式中用該單元格的絕對地址表示,就可以實現在金額變化后,所有應用該金額的地方會自動更新。
EXCEL單元格地址的第三種表示方法是:混合地址表示法。他是介于相對地址和絕對地址表示之間的一種地址表示方法,這種表示方法中的自變量在跟隨因變量變化的過程中受到一定的限制,僅能沿行方向變化或沿列方向變化。這種變量地址表示方法主要用于制作類似于九九乘法表的“交叉數據表”。當一個公式或函數中有多個變量時,提取兩個相互獨立的變量分別放在行和列上,并設定一個變化序列,相當于建立了一個二維的X-Y坐標系。再利用EXCEL的運算特點:相同運算僅計算一次,其他數據通過拷貝得到,就可以快速地制作一個函數F(X,Y)的平面數據表,我們中學用的《常用數學用表》可以利用這種方法快速地制作。
“混合地址”表示方法是僅在列標或行號前加$號。如$D6、A$8。其中,$D6表示Y方向變化的變量,即數據僅限于在D列上變化。A$8表示X方向變化的變量,該數據僅于在第8行上變化。也就是說,前面有$號的行或列,就是被限定變化的區域。
下面以制作兩數和的立方表為例,介紹變量的“相對地址”表示方法在制作“交叉運算表”時的應用。圖2為一最簡單的X-Y 坐標系,自變量分別沿第一行和第一列放置。
在表中任意一個單元格中輸入公式均可,但考慮到“拷貝”公式的方便,最好在坐標系左上角的B2單元格中輸入計算公式:=(B$1+$A2)^3,如圖2所示。
摘 要:隨著汽車電子市場的快速發展,汽車控制器的電子控制單元(ECU)已越來越多,對ECU的功能測試也變得日趨復雜。為解決車載ECU功能測試,研究了基于控制器局域網絡(CAN)的ECU自動測試方法。以NI公司的軟硬件為開發平臺、CAN總線為通信平臺搭建測試系統與被測ECU形成閉環結構。通過CAN總線傳輸測試信息,可實現對同型號ECU的批量測試。此系統采用了新的測試方法來降低測試誤差,并支持ECU的流水線測試,大大降低了測試的復雜度,減少了工作量。同時,在完善仿真信號產生模塊和測試模塊用例庫后,也能適用于其他類型ECU的功能測試。
關鍵詞:
控制器局域網絡;電子控制單元;批量測試;汽車電子;車載網絡
中圖分類號: TP206.1 文獻標志碼: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 引言
隨著汽車電子的不斷發展,汽車已進入電子控制時代,其標志為電子控制單元(Electric Control Unit, ECU)的廣泛應用?,F如今,車輛上電控單元數量不斷增加,功能越發復雜,多個處理器之間相互連接、協調工作并共享信息構成了汽車車載互聯通信網絡。其中控制器局域網絡(Controller Area Network, CAN)是汽車中應用較多的現場總線。其良好的實時性、可靠性和經濟性能很好地滿足汽車ECU之間數據通信的需要,已成為最有發展前景的現場總線之一[1-2]。因此,帶CAN總線功能的ECU測試也將變得更加復雜。ECU功能測試屬應用層功能測試范疇,是為了檢測ECU是否符合給定的協議規范,能否進行正常的控制工作。這種測試在系統級開發中占據了很大的比重,成為應用層測試中最為關鍵的部分[3]。
在傳統的ECU功能測試中,一種方式是利用測試面板產生ECU各種信號后連接到ECU各輸入引腳,觸發它的各驅動模塊進行控制工作,有專門的線路負責數據交換,但這樣的測試系統隨著傳感器數量的增多,連線非常困難,且需要高速的數據采集和信號調理設備,使整體成本增加[4-5];另一種則改進了信號的產生方式,即通過虛擬儀器模擬ECU的控制信號來代替傳統的觸發信號,采用人工對控制效果進行直接的觀察和記錄。這些測試方法都加大了測試過程中的測試誤差、復雜度和測試工作量,且無法進行自動測試和結果的自動生成,也不能同時對多個ECU進行測試,給ECU廠商進行批量生產時帶來很大的不便。
由此,引發了對新的測試方法的思考和探索?;贑AN總線的ECU功能測試方法以CAN總線的傳輸作為關鍵技術,采用閉環測試方法對同型號的ECU進行自動和批量測試。
1 基于CAN總線的ECU功能測試介紹
車載控制系統主要任務就是要解決車身電器設備的功能性問題,所以,首先應關注ECU是否能實現功能上的控制,即測試其是否滿足控制協議的要求。ECU在控制功能上包括了通信服務功能、傳送數據功能、診斷信息及標定信息功能、設備監控和網絡管理功能等,具體的要求規范則由各ECU生產廠商自行制定。
目前應用層協議制定分為以測試為重心的模式和以設計為重心的模式。不論哪種模式,控制器開發過程中,都需要通過測試來驗證功能的正確性,確定ECU工作正常并不干擾總線正常通信[6]。
由圖1的控制器開發“V”模式圖可見,控制器開發過程包括多個環節,其中的應用層功能測試是其重要組成部分,它包括ECU功能測試、網絡管理功能測試、故障診斷測試等,是進行實車測試前的重要環節。在引入CAN總線后,將大大降低ECU功能測試的復雜度和測試工作量,是CAN總線測試的重要組成部分[7]。
在基于CAN總線的ECU測試系統中,通信網絡是進行數據傳輸,實現各模塊協調工作的橋梁[8]。利用LabVIEW[5,7,11]虛擬儀器產生仿真信號代替數據采集卡采集的真實信號,并在此基礎上引入CAN總線作為測試的關鍵技術,充分發揮CAN總線在傳輸上的高可靠性和實時性等優點。通過總線對仿真信號的測試報文進行有效傳輸,如表1所示。
表1中:Message表示報文名稱;ID表示報文仲裁場;DLC表示報文長度;Data表示報文數據。
將報文與同型號ECU進行連接,形成閉環測試結構,模擬實車中ECU的各種傳感器信號來驅動其進行控制工作(于3.2節詳細描述),將仿真報文數據和CAN總線上反饋回來的ECU控制報文數據進行解析,提取出Data的值,并自動進行多次對比和測試后,在人機界面上對測試結果和各種信號量進行直觀顯示,并利用測試結果自動生成測試報告,優化和改進了傳統的測試方法。
2 設計方案
此方法采用仿真信號序列代替采集卡采集的真實信號,利用CAN總線的特點對數據進行傳輸,并將整個測試構建成閉環結構,大大降低測試的復雜性。
2.1 方法總體框架
由CAN2.0協議可知,CAN報文的基本要素是報文ID、周期和信號與消息的映射關系。因此對ECU的協議功能測試,主要任務就是測試ID、消息周期、確定信號與消息的映射關系是否滿足要求,并測試在循環執行多次之后,ECU是否具備在控制功能上的穩定性[8]。
選用以LabVIEW為軟件平臺實現ECU的功能測試。測試系統整體框架包括三部分:上位機仿真和測試、CAN網絡和底層待測ECU模塊。如圖2所示。
工業計算機仿真給定ECU的各種信號量,驅動ECU進行控制工作。由于各ECU之間是相互獨立的,“測試與結果顯示模塊”采集不同ECU廣播的控制信息,并通過ID對它們進行識別。對采集到的控制信息進行分析、對比原始輸入來判定各個ECU在功能控制中是否滿足協議要求。
具體測試方法如下:
首先,通過上位機LabVIEW模擬仿真信號(如:轉向燈信號、溫度信號等),通過NI 6259板卡,與待測ECU各引腳進行對接;
然后,發送仿真信號,驅動ECU進行控制工作,并發送出相應的CAN控制信息;
再次,通過NI 8473s板卡與上位機LabVIEW進行對接,接收采集到的CAN報文,并通過LabVIEW實現報文的解析、處理和ECU控制效果的同步顯示;
最后,把原始仿真數據和處理后的數據進行對比,驗證ECU在功能控制上是否滿足預期效果,并對以上測試步驟循環多次,得出測試結論,生成測試文檔。
在此,根據測試大綱要求,選用一個由實驗室和整車廠聯合開發的ECU作為應用實例,仿真信號由模擬信號和開關量信號組成,主要分為:轉向燈信號、報警信號、狀態信號、門信號、溫度信號和壓力信號控制信號。具體的控制量與變化范圍因測試ECU功能要求進行定制化處理。測試ECU仿真控制信號如表2所示。
2.2 軟件設計流程
上位機軟件整體分為7部分:虛擬儀器配置、模擬信號仿真、同步信號顯示、測試結果顯示、系統數據判斷、數據處理、測試報告生成。模塊示意圖如圖3所示。
1)虛擬儀器配置。對測試時使用的板卡進行初始化配置,設定參數和使用通道。
2)模擬信號仿真。產生ECU仿真信號(如轉向燈信號,水溫信號等)。
3)同步信號顯示。將采集到的CAN報文,進行處理之后,在人機界面上進行控件顯示,方便測試者進行直接觀察和分析。
4)測試結果顯示。在人機界面上進行測試結果的顯示,以表格和BOOL數組的形式顯示出每個信號在多次測試之后的通過情況。
5)系統數據判斷。將處理后的CAN報文數據與預先保存的仿真信號數據進行對比,得出測試結果。
6)數據處理。處理NI 8473s板卡采集到的CAN報文,提取數據信息。
7)測試報告生成。在人機界面上顯示測試結果后,將測試結果以網頁(.html)格式的文檔進行保存,便于后期的分析和處理。
軟件設計流程如圖4所示。
3 系統分析
由圖2測試方法總體框架圖可知,此系統主要包含三部分:上位機仿真和測試、CAN網絡和底層待測ECU模塊。其中上位機仿真和測試模塊又分為仿真信號產生模塊和測試與結果顯示模塊兩部分。
3.1 仿真信號產生模塊
使用NI 6259板卡和上位機LabVIEW構建仿真信號產生模塊。此板卡可支持48路數字信號輸出和4路模擬信號輸出。在調用接口函數模塊后,可產生需要的仿真信號,在板卡對應引腳輸出對應電壓信號。
由表2的ECU控制信號表可知,此待測ECU具有兩種不同類型的信號:模擬信號和開關量信號。所以需要在LabVIEW中使用DAQmx各模塊仿真出ECU需要的模擬信號和開關量信號。
1)產生模擬仿真信號[10]。需要把模擬信號轉化為ECU能識別的電壓信號,一般范圍在5V以內。
如:仿真發動機冷卻水溫度信號,水溫與電壓之間的關系如圖5所示。
通過最小二乘法線性擬合得出公式:
y=-4×10-10x5+7×10-8x4-3×10-6x3+0.0002x2-0.0642x+4.2044
其中:y為輸出電壓值;x為冷卻水溫度值。
如:進氣歧管壓力信號,壓力與電壓之間的關系式:
V=V參(0.0023P-0.015)
其中:P為上位機模擬的壓力值;V參為參考電壓5V。關系如圖6如示。
由圖5~6可知模擬信號與電壓值之間的轉換特性,由上位機進行轉換后通過板卡進行輸出,傳遞對應電壓值到待測ECU,驅動其進行控制工作。
2)產生開關量仿真信號。
在LabVIEW中定義各種開關量信號,通過板卡產生高/低電平。一般情況下,ECU檢測到高邊信號(ECU有效電平分兩種:H、L,即高電平有效或低電平有效)后進行控制工作(一般情況下,ECU的高電平判斷電壓在2.5V~5V),控制信號的開啟或關閉,并同步使用CAN模塊廣播CAN報文。
如:DriverDoorStatus(左前門狀態),根據ECU手冊可知,其為BOOL量,所以在前面板中放置一個BOOL型控件。在對信號進行操作處理后調用NI6259板卡的接口函數并配置通道信息,與此板卡進行通信,產生所需仿真信號(此功能是否正??赏ㄟ^示波器進行驗證)。
3.2 待測ECU模塊
車載ECU控制功能工作原理:ECU外接12V工作電壓,在人為進行操作或發生狀態變化(如開啟轉向燈、水溫變化)時電路接通,然后產生電壓值傳遞到ECU的模擬輸入引腳,如圖7所示。
此系統使用板卡產生的各種電壓信號代替左側虛線部分圖中未見虛線,請補充或說明。,ECU檢測到信號后進行控制工作。
3.3 測試與結果顯示模塊
上位機LabVIEW調用NI 8473s板卡接口函數采集CAN報文[12]。根據ECU控制協議,對CAN報文進行解析、分析、處理,提取出周期、ID、DATA等控制信息。然后對比原始數據(3.1節部分),進行多次測試后,如果每次測試都全部通過,則判斷為Pass,否則為False,并在前面板中進行顯示。
其中:原始數據包括報文周期、ID和控制信號數據等;報文周期和ID由ECU控制協議決定;控制信號數據由仿真控制信號模塊在產生仿真信號時提供。
4 測試實現
測試ECU在控制功能上是否滿足給定的協議和規范,并測試在循環測試多次之后,ECU控制功能是否具有較好的穩定性。測試系統人機界面如圖8所示。
“仿真信號控制部分”產生表1的ECU控制信號。“ECU控制顯示部分”是對接收到的CAN報文進行解析、處理之后用控件進行形象的顯示,并與“仿真信號控制部分”進行對比。結果顯示,在循環測試100次之后,信號量“左前門狀態”和“進氣歧管壓力信號”控制出錯,在BOOL數組和測試表格中都有明確顯示?!癊CU控制顯示部分”顯示出“左前門狀態”燈不亮以及進氣歧管壓力信號數據不一致,這些也同樣說明了信號控制的錯誤。在生成的測試報告(.html格式)中也有明確顯示,如圖9所示。
從測試過程中得知,各個ECU的觸發電平有可能不一樣,大致在5V~12V。NI 6259板卡的工作電壓需小于10V,所以在需要觸發電平高于10V的ECU上進行測試時,則需要在板卡的輸出端加入一個增壓電路。
同時,為了保證測試的正確性,在使用示波器確認仿真部分的輸出電壓無誤后,采用車載網絡測試專用工具CANoe對ECU控制報文進行監測,觀察結果如圖10如示。
由圖8和圖10可知,使用CANoe監測的總線報文與測試系統監測到的報文一致,驗證了本文所設計測試方法的可行性和準確性。在對比分析圖8和圖10中的監測數據,驗證了數據一致性和通信協議的可行性。
根據不同ECU的控制協議,制定不同的仿真信號產生模塊和測試模塊,并在使用過程中,不斷完善ECU的測試用例庫,在完善后進行不同ECU功能測試時,進行規格選擇后,即可實現對不同ECU的功能測試。
5 結語
本文介紹了ECU功能測試的現狀,優化和改進了傳統測試方法。此方法以仿真信號代替采集的真實信號來驅動ECU進行控制工作,并引入閉環結構和CAN總線,使測試過程更加簡單和智能化。所測結果準確可靠,能運用于ECU生產線,提高ECU批量測試的工作效率,為整車廠進行ECU測試帶來了方便。在完善仿真信號模塊和測試模塊用例庫后可擴展到對不同型號ECU的功能測試。同時,此方法的思想,還可以應用于車載網絡的測試、故障診斷等方面,具有較好的理論價值和實際意義。
參考文獻:
[1]
夏巍,嚴輝,丁剛.CAN網絡的實時性與可靠性的研究[J].安徽建筑工業學院學報:自然科學版,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網絡在汽車控制方法的應用[J].工業儀表與自動化裝置,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總線網絡測試系統的研究[J].電子應用,2008,27(1):83-86.
[7]
梁銳.NI軟硬件平臺在汽車ECU開發和測試中的應用[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]
曹更彥.汽車燃氣發動機電控系統實時仿真技術研究[D].重慶:重慶郵電大學,2009.
[11]
阮奇楨.我和LabVIEW[M].北京:北京航空航天大學出版社,2009.
[12]
Society of Automotive Engineers. SAE J1939 [EB/OL]. [2011-03-03]. 省略/PDFs/manual/drehgeber/M36X8/M3658_J1939.pdf.
[13]
胡思德.汽車車載網絡(VAN/CAN/LIN)技術詳解[M].北京:機械工業出版社,2006.
收稿日期:2011-06-16;修回日期:2011-08-21。
基金項目:
國家“核高基”重大專項(2009ZX01038-002-002-2);重慶高校優秀成果轉化項目(KJZH08210)。
關鍵詞:氨氮;在線監測儀;使用;原理;方法
目前,水質監測儀器的發展前景仍處在一個未知的卻極其可觀的發展趨勢當中,在北美等國都陸續設立了一定規模的專業生產企業。水質在線監測系統之所以得到世界各國的青睞,緣于其具有自動轉換量程,自動在線監測、并能夠完成自動運行、自動校正等對內部數據的管理功能,對測量值與測量時間的實時掌控有著較大的裨益。在日常的使用過程當中,應做好定期維護,了解其使用原理與及方法,保證其正常運行,從而才能保證監測的數據更為準確精密,更好的完成對水質環境的監控管理,下面我們一起來進行詳細探討。
一.對氨氮在線監測儀器的認識
氨氮(NH3-N)在線監測儀器是基于酸堿指示劑的變色原理的應用和分析從而測量和判斷所檢驗的水樣當中的NH3-N的濃度,在以往的監測方法之上進行改良,克服了采用電極法儀器的維修率頻繁的缺憾,同時也解決了在采用納氏試劑進行監測之時卻同時對水質帶來的毒害問題。
一套完整的氨氮(NH3-N)在線監測儀器具體應當具有監測主機(水中NH3-N含量的自動監測的重心)、流量綜合儀(包括超聲波流量計與巴歇爾流量槽),除此之外還有傳輸設置(常見的傳輸設置有PSIN有線網絡與及GPRS無線網絡兩種,主要負責數據的輸入與輸出)[1]。
近幾年來,氨氮(NH3-N)在線檢測儀器較以往來看得到極其顯著的改善,在進行污染源與水質環境的檢測管控等方面都作出了極大的貢獻,但是其主要的生產和供應商卻都還主要集中在歐美等國家,這也直接導致了我們在進行水質監控時若需要一臺具有較高質量保證的氨氮在線檢測儀器往往需要從國外購置,這樣一來所需耗費的成本和運行費用,這樣的問題也是我們在采用氨氮在線檢測儀器的最大制約因素。
二、氨氮在線監測儀器的使用原理和方法
氨氮(NH3-N)在線監測儀器是基于計算機技術與實時監控技術的綜合應用與結合起來的,實現了對水質監控全程的自動化,在進行化工企業生產過程的污水排放與及城市生活的污水排放的實時監控起到了較明顯的作用,獲取水體重NH3-N的濃度與污染指數。下面我們首先來一起探討氨氮(NH3-N)在線監測儀器的使用原理。就目前我國環境監測情況來看,氨氮(NH3-N)在線檢測儀器的原理可以歸結為氨氣敏電法與及納氏試劑法(也稱分光光度法)。
納氏試劑法與檢測水質中銨含量時的測定方法(GB7479-1987)近似,在410-424mm的范圍限制內對水樣中的氨與碘化鉀汞進行反應,所生成的化合物呈現為淡紅色膠狀,采取此類方法的儀表一般都配備有水樣過濾裝置,并對其檢測期限做了明確的規定:0.1mg/L測定周期1H。
多年來較常采用的方法――氨氣敏電法,我們根據其檢測原理做了如圖示1所示的實驗,通過實驗我們了解,氨氮監測分為五個過程,即:氨的轉化、氨的溢出、氨的擴散、填充液受到氨的影響而發生改變與及PH值電極的監測與其數據的轉化這五個過程[2]。
圖示1 氨氣敏電極檢測原理實驗
我們知道,通常氨氮以兩種以NH3和NH4+這兩種主要形式存在于水中,并以一定的量來保證這二者達到平衡,而這個量則取決于水的PH值,水的酸性濃度越大H+則相對較高,轉化為NH4+的量也相對較多,我們可將其原理表示為以下兩個式子:
注:①為水中NH3和NH4+動態平衡關系式,②式為著二者相對量的平衡常數計算式,Ks為所測定水中氨達到平衡時的常數。
通過實驗研究與分析之后我們了解到,要得出水中NH3:NH4+的值,首先應當對水的PH值進行測定,PH值越大,NH3轉化為NH4+的量也就越大,并且水溫的高低也將對其轉化速率產生影響,PH值得變化也是是影響氨的溢出和透過膜的關鍵因素,然而,在檢測時,為了保證儀表穩定,應首先保證緩沖液當中的NaOH與EDTA二鈉鹽達到足夠高的溶度當中,當樣品水的表面包含活性劑類的物質時,應首先對水樣進行預處理[3]。
三、小結
氨氮在線檢查儀器的目前雖然已得到了較為廣泛的應用,但從其設備成本投入費用來看仍然是制約其在水質監測當中的普及程度,在通過分光光度法與及氨氣敏電極法這兩種方法的認識與研究之后,我們進一步對目前進行水質環境污染時所采取的監控技術與設備有了更深入的了解,就目前較為普遍的氨氣敏電極監測方法來看,離子數與及溶解性物資的數量、表面活性劑物質與及水樣的PH值偏向都是檢測當中存在的主要影響因素,如何能夠更好的掌握這一系列因素所造成的影響規律,是今后采取氨氮在線儀器進行水質檢測工作的中心,也是水質監測工作的重要指標。
參考文獻:
[1] 陳濤;劉永波;袁紅明;;納氏試劑比色法測定污水中氨氮的方法[J];中國新技術新產品;2010(03):301.
[2] 王樂華;劉鳳芝;;分光光度法測定生活飲用水中Cr~(6+)的不確定度評定[J];職業與健康;2010(02):67.