唐伎玲 費樹明
(1.長春大學,長春 130022;2.長春工業(yè)大學,長春 130012)
主題詞:車用開關(guān) 耐久性 檢測系統(tǒng)
車用開關(guān)的耐久性能研究,即疲勞壽命研究,是機電一體化、計算機控制技術(shù)和信息檢測技術(shù)有機結(jié)合的產(chǎn)物。目前,國內(nèi)的開關(guān)試驗機產(chǎn)品普遍存在通用性差和檢測效率低的問題:車用開關(guān)規(guī)格性能大都有相應的國家標準,汽車開關(guān)功能逐漸多樣化,尤其是轉(zhuǎn)向柱組合開關(guān)種類快速變化,目前市場上的耐久性檢測試驗臺很難適應較新型組合開關(guān)的試驗要求[1];耐久性試驗機多是單機模式,可以實現(xiàn)多工位的串行動作,缺少對多開關(guān)聯(lián)合動作的并行檢測能力[2]。
本文根據(jù)汽車轉(zhuǎn)向柱上的常用開關(guān)(如遠近光、霧燈、夜間行車燈、轉(zhuǎn)向燈、雨刮器開關(guān)等)的耐久性檢測需求,以實現(xiàn)通用性、提高檢測效率為目標,設計一款能實現(xiàn)旋動、撥動、抬動3種動作并行控制,并能實時顯示開關(guān)閉合狀態(tài)的車用組合開關(guān)耐久性檢測系統(tǒng)。
車用組合開關(guān)耐久性檢測系統(tǒng)由檢測試驗臺和檢測控制子系統(tǒng)組成,如圖1所示。
檢測試驗臺采用基于ARM 處理器的閉環(huán)控制,通過電機驅(qū)動系統(tǒng)實現(xiàn)每個工位上執(zhí)行機構(gòu)的精確控制[3],完成對開關(guān)進行旋動、撥動和抬動動作的并行控制,同時通過現(xiàn)場傳感器獲取檢測開關(guān)當前閉合狀態(tài)完成獨立檢測,且各工位可以同時對3 種類型的開關(guān)實施組合動作的檢測,進而提高系統(tǒng)的通用性。
檢測控制子系統(tǒng)采用中控機與基于ARM的分控機的雙控結(jié)構(gòu)[4]。中控主機負責對測試數(shù)據(jù)的輸入及測試順序進行編排并發(fā)送給ARM處理器,同時接收ARM處理器發(fā)送的檢測開關(guān)當前閉合狀態(tài)并實時顯示,需完成人機交互模塊、數(shù)據(jù)庫和通信模塊的設計。ARM 處理器負責與中控主機通信、接收測試數(shù)據(jù)、調(diào)度試驗臺3個工位多開關(guān)并行動作,同時采集各開關(guān)當前閉合狀態(tài)發(fā)送給中控主機,需完成通信程序、驅(qū)動程序和調(diào)度程序的設計。軟件系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 檢測控制子系統(tǒng)軟件結(jié)構(gòu)
圖3 試驗臺三維結(jié)構(gòu)示意
開關(guān)旋動機構(gòu)如圖4所示。通過對遠近光燈、雨刮和間歇調(diào)整等開關(guān)的機械結(jié)構(gòu)進行分析,確定支架的左右調(diào)節(jié)角度范圍為0°~120°,上下調(diào)節(jié)角度為0°~50°。機械手由一個自帶減速比為1∶60的減速機帶動定比齒側(cè)壓力傳感器控制[6]。
圖4 開關(guān)旋動機構(gòu)結(jié)構(gòu)示意
開關(guān)撥動機結(jié)構(gòu)如圖5 所示。撥動機構(gòu)主要實現(xiàn)針對轉(zhuǎn)向開關(guān)和雨刮器開關(guān)的前后撥動,由高精度伺服電機驅(qū)動,并通過滾珠絲杠將動力傳遞給安裝在直線導軌上的滑動底座,滑動底座移動時,帶動開關(guān)手柄實現(xiàn)前后撥動。直線導軌滑塊上連結(jié)板與滾珠絲杠螺母連結(jié)塊通過力傳感器相連,傳感器根據(jù)左右撥動力大小判斷轉(zhuǎn)向開關(guān)、雨刮器等通斷位置或擋位。
圖5 開關(guān)撥動機構(gòu)示意
抬動機構(gòu)底座連接件結(jié)構(gòu)如圖6 所示。由直線電機將動力傳遞給安裝在滑動底座的撥桿,使其做直線運動,并通過撥桿上的夾緊模塊實現(xiàn)開關(guān)手柄的上下抬動動作。夾緊模塊安裝有力傳感器,開關(guān)通斷后通過記錄力傳感器讀數(shù)判斷開關(guān)當前閉合狀態(tài),并與標準件數(shù)據(jù)比較判斷其品質(zhì)優(yōu)劣。其動作的速度、力和頻率根據(jù)開關(guān)的不同類型在系統(tǒng)軟件中設定。
圖6 抬動機構(gòu)底座連接件結(jié)構(gòu)示意
3.2.1 主控機通信模塊的設計
可靠的數(shù)據(jù)通信是系統(tǒng)穩(wěn)定運行的基礎(chǔ)。檢測開始前,用戶通過系統(tǒng)交互界面將試驗臺各工位開關(guān)的測試數(shù)據(jù)寫入數(shù)據(jù)庫,中控主機從數(shù)據(jù)庫中提取當前測試數(shù)據(jù),通過串口發(fā)送給ARM處理器,同時通過監(jiān)聽方式隨時接收ARM 處理器發(fā)送的試驗臺開關(guān)閉合狀態(tài),并實時顯示于交互界面。為提高系統(tǒng)的檢測速度,選用基于Windows32 的應用程序編程接口(Application Programming Interface,API)函數(shù)編寫多線程串口通信程序,主線程負責發(fā)送數(shù)據(jù),子線程負責接收數(shù)據(jù)。
串口通信包括簡單的查詢方式、定時方式和事件驅(qū)動方式。本文提出的檢測系統(tǒng)采用事件驅(qū)動方式,其具有實時、高效、靈活等優(yōu)點。通信程序的具體設計流程如圖7所示。
圖7 主控機通信模塊設計流程
在整個程序中,OVERLAPPED是重要結(jié)構(gòu),用于設置異步輸入/輸出(I/O),CreatFile 函數(shù)的第6 個參數(shù)必須設置FILE_FLAG_OVERLAPPED標識,同時,串口讀、寫函數(shù)ReadFile 和WriteFile 的第5 個參數(shù)也必須指定VOERLAPPED結(jié)構(gòu),否則函數(shù)不會正確地報告I/O操作是否完成[7]。串口使用完畢后必須調(diào)用CloseHandle 函數(shù)將其關(guān)閉,否則將無法使用其他程序。
3.2.2 分控機通信程序的設計
人力資源和社會保障部推出的《2017年度人力資源和社會保障事業(yè)發(fā)展統(tǒng)計公報》顯示,我國參加城鎮(zhèn)職工養(yǎng)老保險的農(nóng)民工人數(shù)僅占農(nóng)民工總?cè)藬?shù)的21.6%,參加城鎮(zhèn)職工醫(yī)療保險的農(nóng)民工人數(shù)占農(nóng)民工總?cè)藬?shù)的21.7%,參加城鎮(zhèn)職工失業(yè)保險的農(nóng)民工人數(shù)占農(nóng)民工總?cè)藬?shù)的17%,參加城鎮(zhèn)職工工傷保險的農(nóng)民工人數(shù)占農(nóng)民工總?cè)藬?shù)的27%。目前我國失業(yè)率居高不下的形勢下,農(nóng)民工失業(yè)保險參保率遠低于工傷、醫(yī)療和養(yǎng)老保險參保率,失業(yè)保險參保概率不足。因此,新生代農(nóng)民工養(yǎng)失業(yè)老保險作為推進新型城鎮(zhèn)化重要方面,解決好這一問題體現(xiàn)新型城鎮(zhèn)化“以人為本”的發(fā)展核心。
分控機采用ARM1156T2-S 處理器,ARM11 采用ARMv6 架構(gòu)并行體系結(jié)構(gòu),增強的異常和中斷處理能力使實時任務的處理更加迅速,內(nèi)核含有AMBA 3.0 AXI,可對頻率和電壓變化進行控制[8],滿足系統(tǒng)對車用組合開關(guān)性能檢測的并行性和實時性要求。
ARM 處理器的通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter,UART)通信方式有輪循和中斷2 種方式[9]。多工位并行測試時,為提高串口數(shù)據(jù)處理的實時性和數(shù)據(jù)傳輸?shù)男?,采用中斷方式編寫串口通信程序,其設計方法如表1所示。
ARM 處理器通過通用輸入/輸出端口(General-Purpose Input/Output Ports,GPIO)與試驗臺的3 個工位相連,系統(tǒng)將測試數(shù)據(jù)從GPIO 端口輸出控制試驗臺各工位動作,同時通過GPIO 端口讀入傳感器采集的開關(guān)閉合狀態(tài)。系統(tǒng)采用字符驅(qū)動方式,因此需編寫字符驅(qū)動程序,主要設計過程為:
a.驅(qū)動程序與應用程序不同,沒有main 函數(shù),使用宏module_int 將GPIO 驅(qū)動程序加入內(nèi)核全局初始化函數(shù)列表,在系統(tǒng)初始化時完成GPIO驅(qū)動程序注冊,之后等待被應用程序調(diào)用[10]。
b.設備初始化,調(diào)用register_chrdev 函數(shù)生成字符型設備號,調(diào)用class_create 函數(shù)動態(tài)創(chuàng)建設備的邏輯類將其添加到內(nèi)核中,使用device_create函數(shù)在linux的/dev目錄下創(chuàng)建設備的節(jié)點,調(diào)用raw_write函數(shù)設置GPIO各端口數(shù)據(jù)輸入、輸出方向。
c.在file_opeartions結(jié)構(gòu)體中定義設備的讀(read)和寫(write)操作。
d.調(diào)用open 函數(shù)打開GPIO,調(diào)用read 和write 函數(shù)讀寫GPIO端口的數(shù)據(jù)。
表1 ARM通信程序設計
分控機的ARM 處理器需要控制多個現(xiàn)場,負責與主控機的通信和試驗臺3個工位的控制,因此需編寫調(diào)度程序,主要設計過程為:
a.多線程的創(chuàng)建。利用pthread_create函數(shù)創(chuàng)建6個線程,分別是從UART 串口接收測試數(shù)據(jù)的schedule_reciever 函數(shù)、通過GPIO向試驗臺各工位輸出測試數(shù)據(jù)的3 個gw_out 函數(shù)、從GPIO 讀取開關(guān)閉合狀態(tài)的gw_in 函數(shù),以及通過UART 串口向中控主機發(fā)送數(shù)據(jù)的schedule_sender函數(shù)。
b.互斥與同步控制。1個schedule_reciever和3個gw_out同時對測試數(shù)據(jù)進行讀寫操作,故設置數(shù)據(jù)緩沖區(qū)control_buffer,該數(shù)據(jù)緩沖區(qū)是臨界資源,使用了pthread_mutex_t互斥鎖信號量和sem_t信號燈信號量及相關(guān)函數(shù)來實現(xiàn)線程間的同步與互斥。同理,gw_in 和schedule_sender 線程同時對開關(guān)閉合狀態(tài)進行讀寫操作,設置了數(shù)據(jù)緩沖區(qū)result_buffer,也需要同步和互斥控制。
c.并行處理。為提高系統(tǒng)的檢測效率,試驗臺多工位采用并行控制,使用針對共享內(nèi)存的多線程編程技術(shù)(Open Multiprocessing,OpenMP),通過編譯制導語句#pragma omp 來顯示并行化。OpenMP 執(zhí)行模型采用Fork-Jion 形式,并行執(zhí)行時,主線程和派生線程共同工作[11]。
以汽車用轉(zhuǎn)向管柱上組合開關(guān)為檢測對象,共設計5組試驗,試驗臺各工位的測試數(shù)據(jù)如表2所示。
表2 試驗臺實驗測試數(shù)據(jù)
由表2 可知,試驗臺每種連續(xù)動作10 000~100 000次時,速度為每分鐘30~60 次[12],試驗臺旋動精度在±0.5°以內(nèi),左右撥動精度在±0.08 mm 內(nèi),上下抬動精度在±0.1 mm 內(nèi),符合國家對汽車組合開關(guān)檢測設備精度的要求[13]。檢測試驗臺各工位實時檢測過程如圖8 所示,檢測結(jié)果如圖9 所示。
圖8 各工位試驗實時檢測界面
圖9 檢測結(jié)果報表
本文應用CAD/CAM技術(shù)和嵌入式技術(shù)完成了車用組合開,關(guān)耐久性檢測系統(tǒng)的硬件結(jié)構(gòu)和控制軟件的設計,實現(xiàn)了對旋動、撥動和抬動3 種動作開關(guān)的耐久性檢測,提高了系統(tǒng)的通用性,系統(tǒng)利用基于嵌入式的Linux 多線程編程技術(shù)OpenMP 實現(xiàn)并行檢測控制和實時顯示測試數(shù)據(jù),提高了檢測效率。