費曉東,趙轉萍,黃開元
(南京航空航天大學 機電學院,江蘇 南京 210016)
混合裝配生產線是指在一條生產線上,通過改變裝配零部件的型號來生產不同種類的產品[1]。混裝生產線一方面由于每個工位裝配零部件的不同加大了工人操作的難度與強度;另一方面經常在流水線更換產品時發生錯裝、漏裝等問題。而防錯系統可以有效地減小上述錯誤的發生,提高產品的合格率[2]。
防錯系統的運用在國外發展得很成熟,不同的公司都有適合本公司生產特點的防錯控制系統。國外的通用性防錯系統價格昂貴,并且對于國內大量的企業都不適用。目前國內制造商在防錯系統上處于剛剛起步階段,沒有成熟的防錯控制系統[3]。
某公司目前生產2個系列24個型號的發動機,急需一套防錯裝置來提高產品的合格率。防錯裝置要適應裝配線上發動機的混線生產,因此整個裝置因盡可能小巧,并且識別判斷時應使用非接觸式傳感器。針對上述需求,設計一套基于嵌入式的混裝生產線防錯系統,并采用機器視覺系統。嵌入式控制系統體積小,占用空間不大,相機作為非接觸式傳感器可以準確地采集防錯特征以便系統識別判斷。該生產線上不同型號的后殼,其挺住安裝孔直徑不同,因此選取挺住安裝孔作為后殼的防錯識別特征;不同型號的挺住,其與挺住安裝孔之間的間隙不同,因此選取挺住與其安裝孔之間的間隙作為防錯識別特征。系統采用機器視覺來識別不同型號的零部件,視覺識別可以有效地提取安裝孔的直徑以及挺住與安裝孔的間隙信息。系統能夠適應混合裝配流水線生產的防錯控制要求,從而保證零件與發動機型號的正確匹配或錯誤匹配的不流出。
系統通過采集發動機的型號數據和采集防錯特征圖像,由系統確定所對應的發動機型號和所裝配的零部件型號,并和數據庫中保存的正確匹配信息進行比對,來判斷裝配是否正確。如果裝配正確則該零件流向下一個工位,否則重新裝配直至裝配正確,從而保證了錯裝產品的不流出。
防錯裝置要適應生產線的混線生產,并且不影響現有的裝配流程。因此防錯裝置一次檢測時間必須滿足流水線的節拍要求。該公司的混合裝配流水線的節拍為1min, 一個節拍的時間分配如圖1所示。

圖1 一個節拍的時間分配圖
控制系統流程圖如圖2所示。

圖2 系統工作流程圖
1) 系統開機后,先進行自檢,自檢無誤后進行下一步,否則報警提示系統異常并結束程序;
2) 等待光電開關信號,以此確定發動機是否到位,如果等待時間>5s無信號則報警提示光電開關異常并結束程序;
3) 等待按鍵信號,等待工人安裝零部件并將發動機轉到合適的安裝位置,如果等待時間>5s無信號則報警提示按鍵異常并結束程序;
4) 掃描槍掃描二維碼確定發動機型號,若成功則繼續,否則如果等待時間>5s無信號則報警提示掃描槍異常并結束程序;同時機器視覺系統圖像采集并處理,若成功則繼續,否則繼續采集并處理,如果采集次數>5次則報警提示機器視覺系統異常并結束程序;
5) 嵌入式控制系統確定是否匹配正確,若正確轉6),否則轉7);
6) 提示正確數據保存輸出后進行判斷是否繼續檢測,繼續則等待光電開關信號,結束檢測則程序結束;
7) 提示裝配錯誤,氣缸工作,數據保存并提示重新裝配,之后等待按鍵信號。
防錯系統所需硬件均需適應流水線的生產,因此需根據裝配流水線的特點選擇合適的硬件,所有硬件均不能與現有流水線的硬件發生干涉。

圖3 系統硬件組成框圖
1) 系統需要硬件發出啟動信號來開始檢測程序,選擇發動機進入某工位時發出啟動信號。該硬件要適應生產線的生產,因此體積要小,并且每次發動機到達檢測工位后能及時發出啟動信號。鑒于上述需求,選擇光電開關,體積小,耐用,并且當發動機進入工位時會遮擋光電開關發出的信號,由此激發啟動信號。
2) 系統采集發動機的型號數據,由于公司發動機型號數據有限,同時需要快速采集,鑒于每款發動機都有唯一的二維碼與之相對應,因此選擇掃描槍作為采集硬件,掃描槍體積小,可以快速采集數據。
3) 對防錯特征采集須使用非接觸式傳感器,并且要快速準確,鑒于防錯特征是直徑的大小,選擇相機作為采集硬件。
4) 系統所需的控制器不能與現有部件干涉,并且處理速度要快,環境要求度不能太高。因此選用嵌入式開發板作為控制處理單元以滿足上述要求。
5) 當裝配出錯時,由于流水線的運轉會使得該發動機流向下一個工位。因此需要使用擋塊來阻止問題發動機流向下一個工位,由于流水線是滾筒型的,每個滾筒之間有間隙,因此采用氣缸作為擋塊,在滾筒之間安裝氣缸,氣缸伸出不會與流水線發生干涉,同時也可以很好阻擋問題發動機流向下一個工位。
6) 當工人裝配完成或者想結束程序時,需要工人手動發送一個信號給控制系統,該硬件需操作簡單,并易于控制器連接,因此選用按鍵開關作為信號發生裝備。
工作站物理模型如圖4所示,其中開發板、相機、掃描槍處于裝配人員的對側,從而不干涉生產線的正常生產;按鍵開關與工人處于同一側,方便裝配人員使用;氣缸位于流水線下方;光電開關分別固定在流水線兩側。

1—開發板;2—相機;3—掃描槍;4—發動機;5—氣缸;6—流水線;7—按鍵;8—光電開關;9—轉盤圖4 工作站物理模型
Mini2440嵌入式開發板只有1個USBhost接口,而系統中3個外設是通過USB與開發板相連的,因此使用USBhub進行擴展。
光電開關采用M12NPN型對射型光電開關,當發射端與接收端中間有物體遮擋時,接收端有信號輸出,一般為低電平;反之輸出高電平。由于輸出的是模擬信號,需要通過AD轉換器轉換為數字信號以供讀取。友善mini2440內置開發板,通過GPIO口引出了AD轉換接口,故將光電開關的輸出端接到開發板的AD轉換口即可。
按鍵開關使用普通按鍵開關,通過USB接口與開發板相連。
掃描槍為自動感應條碼掃描槍,此款掃描槍為自感式,既不需要人為按鍵即可掃描條形碼。當有條形碼出現在其感應區域內時,該掃描槍就可以自動掃描條形碼。掃描槍通過USB口與開發板相連,掃描槍工作為鍵盤模式。
相機采用500萬CMOS工業相機,搭配環形光源,通過對挺住和后殼的裝配圖拍攝并進行圖像處理以識別裝配情況。相機通過USB口與開發板相連。
氣缸通過雙控電磁閥來控制,雙控電磁閥與開發板GPIO相連接,對該GPIO口輸出高/低電平即可控制氣缸進行往復運動。
系統使用Mini2440作為開發工具,首先需要搭建交叉開發環境。宿主機為虛擬機中安裝的紅帽企業版6,目標機為開發板上所運行的嵌入式Linux系統。開發之前需對目標板進行系統移植:BootLoader的移植;Linux內核的移植;文件系統的實現。系統使用supervivi作為BootLoader,Linux內核通過配置去掉不必要的部分,使其占用空間更小,能耗更低;文件系統采用ext2文件系統。開發時首先在虛擬機Linux中編寫程序,然后用arm-Linux-gcc交叉編譯工具編譯程序,再將編譯好的程序拷貝到開發板上運行[6]。
系統中外設均需驅動的支持,驅動均可以通過編寫、移植或者配置內核以實現。
1) 光電開關輸出的信號需要通過開發板上的AD轉換器轉換為數字信號,因此需編寫ADC驅動程序,ADC設備在Linux中可以看做是簡單的字符設備,也可以當做是一混雜設備(misc設備),系統中當做misc設備來實現ADC的驅動[7]。
2) 按鍵和掃描槍均可以工作為鍵盤模式,所以在編譯嵌入式linux內核時需添加對鍵盤驅動的支持。具體步驟:makemenuconfigARCH=armCROSS_COMPILE=arm-linux- /DeviceDrivers/Inputdevicesupport/keyboards。
3) 相機采用CMOS工業相機,該相機支持UVC協議,所以在編譯嵌入式linux內核時需添加對UVC相機的支持。具體步驟:makemenuconfigARCH=armCROSS_COMPILE=arm-linux- /DeviceDrivers/Multimediasupport/Videocaptureadapters/V4LUSBdevices/USBVideoClass(UVC)、UVCinputeventsdevicessupport。
軟件設計中,使用Linux系統軟件進行開發,通過對驅動的編寫對相機、接近開關和氣缸進行控制。課題中需要采集掃描槍的信號,然后需要去數據庫中查找相對應的零件型號,管理員可以更改數據庫,同時需要采集相機的信號與數據庫中查到的零件型號進行對比,另外還需要報警和控制氣缸使活塞桿伸出。
系統應用軟件主要包括以下模塊(圖5):用戶登錄、光電開關模塊、二維碼采集模塊、按鍵模塊、機器視覺算法、運動控制模塊、顯示輸出模塊、數據庫管理模塊。其中用戶登錄負責區分管理員與普通用戶,管理員權限高,避免普通用戶誤操作;光電開關模塊檢測發動機是否到位;二維碼采集模塊采集發動機上的二維碼信息以此來確定發動機的型號;按鍵模塊通過檢測是否有鍵按下來判斷工人是否裝配完畢;機器視覺算法負責對采集的圖像進行處理,獲取防錯特征的具體信息;運動控制模塊根據匹配情況來決定是否使氣缸工作;顯示輸出模塊對裝配結果進行輸出;數據庫主要保存不同型號的發動機所對應的零部件尺寸與二維碼信息,另外還需要保存防錯系統檢測結果:正確裝配數量、錯誤裝配數量,并可以人工清零。

圖5 系統軟件結構圖
發動機混合裝配流水線復雜度高,系統中各個環節的可靠性共同決定其整體的可靠性。
RS=Rh×Rm
(1)
式中:Rs為整個系統的可靠度;Rh為人的可靠度;Rm為設備可靠度。其中Rh由各個工位上工人所裝配零部件的準確度決定的。發動機由上百個零部件組成。在流水線上裝配時,主體部分固定在流水線上,隨流水線的移動而移動;各種零部件分布在不同的裝配工位上,不斷地添加到主題部分上,最終形成完整的發動機產品。
混合裝配流水線的突出特征即裝配工位上零部件的多樣化。如圖6所示,每個工作站上既有產品A的零部件,又有產品B的零部件,兩種產品的零部件之間可能差距很小;同時也有通用的零部件。

圖6 混合裝配線產品物流
防錯控制系統通過對裝配結果的檢測可以有效地減少各個工作站的錯裝率,提高Rh,從而提高整個系統的可靠度。
本文所設計的防錯系統可能會發生故障,使其防錯功能不能正常實現,甚至出現誤判率很高的情況。因此需要對本系統可靠性分析并采取措施提高可靠性。
系統最終檢測結果存在兩種錯誤判斷:
1) 漏判,將裝配錯誤的情況判斷為正確。
2) 誤判,將裝配正確的情況判斷為錯誤。
防錯系統可靠性是指在實際生產線上應用時,在一定的生產周期內,保證錯誤裝配產品的不流出的能力。可靠性是一個與時間有關的概念,時間越長,可靠性越低[8]。防錯系統是一個串聯系統,系統總體的可靠性為各個元器件可靠性的乘積。
(2)
式中:Rs為總體的可靠性,Ri為每個元器件的可靠性。因此提高每個元器件的可靠性極為重要。
防錯系統需保證在3個月內共檢測約13萬件不發生故障,并且漏判率和誤判率要滿足要求。
系統中所使用的硬件均采取以下措施提高其可靠性:1) 元件降額使用,例如:光電開關等使用時間為其額定壽命的1/4時更換新的光電開關;2) 元件篩選,例如:讓掃描槍處于加溫振動等模擬環境下,使得相對差的產品可以提前失效;3) 硬件冗余,如使用兩個光電開關等,一個光電開關失效時另一個光電開關元件可以繼續工作;4) 信息冗余,如條形碼在制定時加入冗余位,同時對二維碼進行多次采集,提高條形碼掃描的可靠性。本系統設計一個安裝平臺,平臺獨立安裝在地上,平臺上再放置各種元件,可以降低振動對系統的影響。
對防錯系統檢查可以發現故障,極大地提高可靠性。自檢技術分為離線自檢與在線自檢。離線自檢為定期對防錯系統進行檢查,發現固定性故障,只有無故障才可以開始工作。在線自檢為邊工作邊自檢,可以發現偶然性故障。每次開機后進行自檢,自檢方法有重復自檢、再生輸入自檢、輸出自檢、校驗自檢與全信息自檢[9]。通過上述措施來保證其在3個月內不發生故障。
系統既需要滿足3個月內共檢測約13萬件不發生故障的要求,也需要滿足漏判率和誤判率的要求。系統漏判或者誤判關鍵在于機器視覺算法對防錯特征識別的準確性,系統防錯特征為圓的直徑。由于實際采集圖片時相機拍攝平面與待拍攝平面存在夾角,所以拍攝出的圖像中特征已變成橢圓,擬采用橢圓識別算法對防錯特征進行識別。橢圓識別算法可以準確地識別出圖像中橢圓的長軸長和短軸長。有理論可以證明長軸長即為實際圓的直徑。由于不同型號的零部件上作為防錯特征圓的直徑差距較大,已達到mm級,而系統所采用的相機的像元尺寸為2.2μm×2.2μm,理論上識別算法精度已達到μm級,實際中圖像處理算法精度達到0.05mm,可以滿足一定的漏判率和誤判率要求。
設計了一種基于嵌入式Linux、ARM微處理器和機器視覺系統的發動機混裝生產線防錯系統。系統地介紹了硬件構成與接口,闡述了軟件系統的設計,最后對系統的可靠性進行了分析,系統可以實現防錯功能。系統對于國內混裝生產線防錯系統的研究具有較大意義。