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