蘇全在,胡世廣
(1.中國汽車技術(shù)研究中心有限公司,天津 300000;2.中汽研汽車工業(yè)工程(天津)有限公司,天津 300000)
汽車驅(qū)動(dòng)橋在汽車行駛過程中承受復(fù)雜的載荷,它既要傳遞系統(tǒng)中的扭矩,又要支撐汽車的荷重。驅(qū)動(dòng)橋必須具有足夠的強(qiáng)度、剛度和壽命。因而驅(qū)動(dòng)橋總成及其零部件必須經(jīng)受嚴(yán)格的試驗(yàn)[1]。研究一種性能好、高精度的汽車傳動(dòng)系耐久試驗(yàn)臺(tái)非常有必要。
傳動(dòng)系旋轉(zhuǎn)耐久試驗(yàn)臺(tái)主要由驅(qū)動(dòng)電機(jī)、驅(qū)動(dòng)端變速箱、驅(qū)動(dòng)端試件扭矩傳感器、驅(qū)動(dòng)端試件轉(zhuǎn)速傳感器、驅(qū)動(dòng)端軸承測(cè)溫傳感器、負(fù)載1驅(qū)動(dòng)電機(jī)、負(fù)載1端變速箱、負(fù)載1端試件扭矩傳感器、負(fù)載1端試件轉(zhuǎn)速傳感器、負(fù)載1端軸承測(cè)溫傳感器、負(fù)載2驅(qū)動(dòng)電機(jī)、負(fù)載2端變速箱、負(fù)載2端試件扭矩傳感器、負(fù)載2端試件轉(zhuǎn)速傳感器、負(fù)載2端軸承測(cè)溫傳感器、驅(qū)動(dòng)端變速箱油溫控制、負(fù)載1變速箱油溫控制、負(fù)載2變速箱油溫控制、試件油溫控制、電氣傳動(dòng)系統(tǒng)、自動(dòng)化及采集控制系統(tǒng)等構(gòu)成。試驗(yàn)臺(tái)結(jié)構(gòu)框如圖1所示。
圖1 傳動(dòng)系旋轉(zhuǎn)耐久試驗(yàn)臺(tái)結(jié)構(gòu)框
整個(gè)試驗(yàn)臺(tái)的控制集中在上位機(jī),并使用高級(jí)語言編制控制程序。上位機(jī)軟件完成驅(qū)動(dòng)電機(jī)、負(fù)載1電機(jī)、負(fù)載2電機(jī)、4個(gè)潤滑系統(tǒng)的溫控、以及其他設(shè)備的控制,同時(shí)還要進(jìn)行數(shù)據(jù)采集和圖形界面顯示。驅(qū)動(dòng)電機(jī)、負(fù)載1電機(jī)、負(fù)載2電機(jī)均可以工作在速度模式、轉(zhuǎn)矩開環(huán)模式和轉(zhuǎn)矩閉環(huán)模式,每個(gè)電機(jī)根據(jù)具體試驗(yàn)的要求分別工作在相應(yīng)的工作模式下以相互匹配。例如在旋轉(zhuǎn)耐久試驗(yàn)中,驅(qū)動(dòng)電機(jī)工作在轉(zhuǎn)速模式,負(fù)載1電機(jī)和負(fù)載2電機(jī)同時(shí)工作在轉(zhuǎn)矩開環(huán)模式或者轉(zhuǎn)矩閉環(huán)模式;但在差速試驗(yàn)中正好相反,驅(qū)動(dòng)電機(jī)工作工作在轉(zhuǎn)矩閉環(huán)或者轉(zhuǎn)矩開環(huán)模式,而負(fù)載1電機(jī)和負(fù)載2電機(jī)均工作在轉(zhuǎn)速模式。試驗(yàn)臺(tái)有的試驗(yàn)需要同時(shí)使用4個(gè)電機(jī),但還有一些試驗(yàn)只使用2臺(tái)電機(jī),控制模式較多。4個(gè)潤滑站的功能基本相同,均可以完成溫度設(shè)定和溫度實(shí)時(shí)檢測(cè)。
根據(jù)車橋種類的不同,這種旋轉(zhuǎn)耐久試驗(yàn)臺(tái)還會(huì)出現(xiàn)4電機(jī),6電機(jī)等相似結(jié)構(gòu)和功能的試驗(yàn)臺(tái),同時(shí)他們的潤滑溫控系統(tǒng)也會(huì)相應(yīng)增加。設(shè)計(jì)上位機(jī)控制軟件時(shí)不但要滿足4電機(jī)配置試驗(yàn)臺(tái),還應(yīng)為該軟件擴(kuò)展成4電機(jī),6電機(jī)等試驗(yàn)臺(tái)做好準(zhǔn)備。
以往的工控機(jī)配置的基本都是單核心CPU,為了提高計(jì)算機(jī)系統(tǒng)的性能,可以提高CPU的主頻和帶寬,這樣會(huì)產(chǎn)生各種實(shí)際很難處理的問題,比如溫度飆升等。單核CPU性能達(dá)到一定程度后,計(jì)算速度難以提升。不過現(xiàn)在的工控機(jī)基本都配有多核心CPU。線程是CPU處理實(shí)際業(yè)務(wù)的實(shí)體,就是說一個(gè)CPU在同一時(shí)刻只能執(zhí)行一個(gè)線程,需要執(zhí)行其他線程就必須要把當(dāng)前的線程“掛”起來,再去執(zhí)行。要加強(qiáng)程序的計(jì)算能力,就需要多創(chuàng)建幾個(gè)線程把每個(gè)實(shí)際的物理CPU都利用起來。舉個(gè)簡單的例子,我們有一個(gè)8核心的CPU,以查詢字典的方式破解密碼,可創(chuàng)建8個(gè)線程,把字典拆成8份,每一個(gè)線程運(yùn)算一份,并行計(jì)算。這樣比單核心CPU要快得多。為了提高程序運(yùn)行速度,不但要提高CPU核心數(shù)量和單核CPU性能,而且應(yīng)用軟件也必須根據(jù)多核CPU特性進(jìn)行多線程設(shè)計(jì)。以往的文本高級(jí)編程語言有的不支持多線程編程,有的雖然支持多線程編程,但開發(fā)環(huán)境并不友好,對(duì)于測(cè)試工程師開發(fā)難度過大。尋找一種適合測(cè)試工程師使用,同時(shí)又具有高性能、易擴(kuò)展、友好的支持多線程編程的編程軟件非常有意義。
Labview是美國國家儀器公司的創(chuàng)新軟件,允許用圖形方式編程,拋棄了晦澀難懂的文本代碼,使得計(jì)算機(jī)編程不再是少數(shù)人的專利。Labview是由測(cè)試工程師開發(fā)的專用編程語言,主要用于測(cè)試測(cè)量領(lǐng)域。在Labview編程環(huán)境下,使用不同的專用工具包可以覆蓋工業(yè)自動(dòng)化、測(cè)量測(cè)試、嵌入式應(yīng)用、運(yùn)動(dòng)控制、圖像處理、計(jì)算機(jī)仿真、FPGA等各種不同的領(lǐng)域[2]。
操作者框架是Labview特有的編程結(jié)構(gòu),它面向?qū)ο?,面向多線程,可使擴(kuò)展性和重復(fù)使用得以解決。在拓展功能或者添加其他處理需要復(fù)制很多代碼時(shí),操作者框架可以很好地解決這類問題。操作者框架完全基于多線程,可以充分有效利用多核CPU系統(tǒng)的性能。
操作者是Labview類表示某個(gè)任務(wù)的狀態(tài)。所有操作者類都從Labview的操作者類繼承。該類主要由3個(gè)部分構(gòu)成。
(1)操作者的核心程序命名為操作者核心,專門用來定義操作者的連續(xù)行為,它定義了操作者的消息處理。該類的子孫類重寫該方法用來顯示操作者的用戶界面、添加并行循環(huán)以及啟動(dòng)嵌套操作者。操作者核心程序作用相當(dāng)于一個(gè)隊(duì)列消息處理器。該程序接收并響應(yīng)系統(tǒng)中其他操作者發(fā)送給它的消息和數(shù)據(jù)。因?yàn)椴僮髡呤荓abview類,所以比傳統(tǒng)的隊(duì)列消息處理器更容易重復(fù)使用和擴(kuò)展。(2)操作者的特定方法的程序是Labview類的成員,用來定義操作者。通常每個(gè)方法對(duì)應(yīng)操作者可以執(zhí)行的一個(gè)任務(wù)。祖先類包含專門設(shè)計(jì)用于被子孫類重寫的方法。對(duì)于響應(yīng)消息而發(fā)生的行為,應(yīng)首先創(chuàng)建操作者方法,然后創(chuàng)建觸發(fā)方法的消息。(3)操作者的消息是一個(gè)Labview類,定義了操作者可以接收的指令和能夠作出響應(yīng)的方式。其他操作者將該消息發(fā)送到一個(gè)操作者,以便讓操作者調(diào)用其中的某個(gè)方法。使用操作者框創(chuàng)建應(yīng)用程序時(shí),一般需要為操作者的所有方法分別定義一個(gè)消息。全部消息都從Labview中消息類繼承。盡管消息本身不是操作者的一部分,但用戶一般在定義操作者同時(shí)定義了操作者的消息。因?yàn)檫@種緊密的聯(lián)系,操作者框架模板將操作者和消息放在同一個(gè)項(xiàng)目庫中。通常情況下特定操作者只可把消息發(fā)送到調(diào)用方操作者或者嵌套操作者。消息是通過隊(duì)列發(fā)送的,每個(gè)操作者可以訪問操作者用來將消息發(fā)送至調(diào)用方的隊(duì)列和操作者用來將消息發(fā)送至自身的隊(duì)列。為了防止其他操作者釋放其消息隊(duì)列,操作者框架引入了待入消息隊(duì)列,它是一個(gè)引用,只能使操作者發(fā)送消息到隊(duì)列,但不能執(zhí)行任何其他操作。
操作者框架通常包括多個(gè)彼此獨(dú)立而又需要相互通信的任務(wù)。操作者之間的通信線路構(gòu)為樹狀結(jié)構(gòu)。通常在操作者框架的應(yīng)用程序中,一個(gè)子程序啟動(dòng)一個(gè)根操作者。該操作者調(diào)用一個(gè)或多個(gè)嵌套操作者。每個(gè)嵌套的操作者可能會(huì)啟動(dòng)屬于它自己的嵌套操作者,依次類推。調(diào)用方至操作者的關(guān)系和操作者層次樹是操作者框架應(yīng)用程序的基礎(chǔ)。為減少出錯(cuò)并提高應(yīng)用程序的可靠性,操作者框架限制了能夠互相發(fā)送消息的操作者。一般情況下,一個(gè)操作者只能和它的調(diào)用方,或者屬于它自己的嵌套操作者通信。這樣只有一個(gè)通信路徑需要管理,很容易寫入代碼,并且可以確保在退出之前保證其他的操作者可以接收到消息,并作出響應(yīng)。雖然盡量避免在操作者層次樹中建立任何直接通信,但特殊情況下,在層次樹中跨越節(jié)點(diǎn)而直接通信可提高性能。
使用操作者框架可將通用功能封裝到一個(gè)通用操作者中。通用操作者是一個(gè)Labview類,本身無法創(chuàng)建實(shí)例,無法進(jìn)行控制測(cè)量;但是通用操作者的成員可以從總體上定義需要哪些步驟,每個(gè)步驟都和一個(gè)成員子程序相關(guān)聯(lián)。
因?yàn)橥ㄓ貌僮髡呤且粋€(gè)類,因此可創(chuàng)建從通用操作者繼承通用操作者功能的子操作者。子操作者獲得父操作者全部功能,同時(shí)還會(huì)添加子操作者所需的特殊功能,這樣子操作者就可以完成連續(xù)測(cè)量控制和顯示結(jié)果等功能。這種方法將通用功能封裝到通用操作者,從而最大化代碼的重復(fù)使用性。
在旋轉(zhuǎn)試驗(yàn)臺(tái)中,主要被控對(duì)象有電機(jī)、潤滑站、各種測(cè)量設(shè)備。本旋轉(zhuǎn)試驗(yàn)臺(tái)中電機(jī)可以作為通用操作者,具有速度控制、轉(zhuǎn)矩控制、報(bào)警功能等。試驗(yàn)臺(tái)中3臺(tái)電機(jī)分別是驅(qū)動(dòng)電機(jī)、負(fù)載1電機(jī)、負(fù)載2電機(jī),3臺(tái)電機(jī)可分別繼承電機(jī)通用操作者從而完成除通用功能外的一些特殊功能。對(duì)于潤滑站有的潤滑站帶加熱功能,有的沒有該功能,可以建立潤滑站通用操作者,完成油站起停、溫度控制、流量控制等。4個(gè)潤滑站可分別建立4個(gè)操作者,每個(gè)操作者均繼承自潤滑站通用操作者來完成除通用功能外的其他功能。可以看到,不管是增加、刪除、改變新的類似設(shè)備,都可以利用通用操作者,讓代碼重復(fù)利用率大幅提高。
該上位機(jī)控制系統(tǒng)已經(jīng)運(yùn)行數(shù)月,可以完全滿足車輛傳動(dòng)系耐久試驗(yàn)系統(tǒng)要求。該上位機(jī)軟件可以很容易地?cái)U(kuò)展成四電機(jī)或者更多電機(jī)的類似試驗(yàn)臺(tái)的上位機(jī)控制軟件。