姜闊勝, 侯佳淑, 范再川, 毛中元, 周遠(yuǎn)遠(yuǎn), 陳賽
(安徽理工大學(xué)機(jī)械工程學(xué)院, 淮南 232001)
“十四五”規(guī)劃中更加注重推動(dòng)人工智能平臺(tái)建設(shè),強(qiáng)化生產(chǎn)過(guò)程中的智能化[1]。機(jī)器視覺(jué)為智能化生產(chǎn)過(guò)程中最后一個(gè)環(huán)節(jié),對(duì)生產(chǎn)的零部件進(jìn)行質(zhì)量檢測(cè),扮演著十分重要的角色?,F(xiàn)有對(duì)生產(chǎn)的零部件檢測(cè)主要有人工檢測(cè)法和機(jī)器視覺(jué)檢測(cè)法。傳統(tǒng)的人工檢測(cè)存在誤檢率、漏檢率及成本高等問(wèn)題,現(xiàn)有的機(jī)器視覺(jué)檢測(cè)系統(tǒng)下位機(jī)大多以可編程邏輯控制器(programmable logic controller, PLC)為核心處理器,限制了零部件的檢測(cè)效率[2]。面向未來(lái)的視覺(jué)檢測(cè)高速并行的需求,對(duì)如何提高系統(tǒng)的運(yùn)行效率的研究具有重要的意義。
國(guó)外在視覺(jué)檢測(cè)上的研究相較中國(guó)起步早,早在20世紀(jì)70年代,視覺(jué)檢測(cè)技術(shù)已經(jīng)應(yīng)用于工業(yè)生產(chǎn)過(guò)程中[3]。Westinghous公司利用不同照明光路與電荷耦合元件(charge coupled device, CCD)線陣相機(jī)相結(jié)合,為鋼板表面的缺陷檢測(cè)提供了一種新的檢測(cè)方案[4]。Fang等[5]分析和對(duì)比表面缺陷檢測(cè)計(jì)數(shù)的各種方法,并對(duì)視覺(jué)缺陷檢測(cè)的剩余挑戰(zhàn)和未來(lái)的研究趨勢(shì)進(jìn)行了綜述性的討論和預(yù)測(cè)。胡藝等[6]提出了一種改進(jìn)的基于遺傳算法的二維最大類間方差法的快速迭代算法,解決印刷電路(printed circuit board, PCB)板缺陷檢測(cè)分割中存在分割效果差、運(yùn)行速度慢以及適用范圍小的問(wèn)題。董元發(fā)等[7]采用模糊自適應(yīng)的視覺(jué)檢測(cè)方法解決了手工裝配中微小金屬件容易漏裝的問(wèn)題,并在工業(yè)現(xiàn)場(chǎng)成功應(yīng)用。
隨著視覺(jué)檢測(cè)行業(yè)的發(fā)展,圖像、視頻等所需處理的數(shù)據(jù)量呈爆炸性增長(zhǎng),圖像處理系統(tǒng)的計(jì)算能力和傳輸能力需要不斷提高,現(xiàn)場(chǎng)可編程門陣列(field programmable gate array, FPGA)作為可編程的硬件,可以根據(jù)應(yīng)用需要實(shí)現(xiàn)硬件動(dòng)態(tài)重構(gòu),具備高度并行的流水處理能力[8]?,F(xiàn)提出一種基于LabVIEW for FPGA的高速并行視覺(jué)檢測(cè)系統(tǒng),以LabVIEW作為FPGA的開發(fā)平臺(tái),利用該軟件適應(yīng)內(nèi)、外部變化能力強(qiáng)的柔性特點(diǎn),將軟件高度開放,精簡(jiǎn)數(shù)據(jù)存儲(chǔ)系統(tǒng)[9],且基于LabVIEW語(yǔ)言開發(fā)FPGA,相比于利用VHDL語(yǔ)言或者Verilog語(yǔ)言進(jìn)行代碼編寫的FPGA開發(fā)模式更加簡(jiǎn)便,提高檢測(cè)系統(tǒng)的可行性、可移植性和通用性。相較于傳統(tǒng)視覺(jué)檢測(cè)系統(tǒng),本文設(shè)計(jì)的系統(tǒng)能夠滿足圖像處理應(yīng)用對(duì)高速數(shù)據(jù)傳輸和處理的需要,性能也更加的穩(wěn)定。
系統(tǒng)總體架構(gòu)主要包括電源模塊、自動(dòng)上料模塊、定位檢測(cè)模塊、視覺(jué)檢測(cè)模塊和自動(dòng)下料模塊,如圖1所示。
檢測(cè)系統(tǒng)通過(guò)電源降壓模塊將220 V交流電轉(zhuǎn)化為24 V和5 V直流電,供伺服控制系統(tǒng)、傳感器、相機(jī)等使用。為了實(shí)現(xiàn)自動(dòng)化檢測(cè),需要對(duì)系統(tǒng)進(jìn)行預(yù)處理設(shè)置,即拍照定位和吹氣定位,利用工件從光纖傳感器到相機(jī)(吹氣口)之間的相對(duì)脈沖值,對(duì)每個(gè)相機(jī)(吹氣口)進(jìn)行精確定位,并存儲(chǔ)定位脈沖數(shù)據(jù)。定位設(shè)置完成,系統(tǒng)開始運(yùn)行并檢測(cè),工件通過(guò)自動(dòng)上料模塊(振動(dòng)盤),均勻地分布在玻璃盤上,伺服電機(jī)控制玻璃盤勻速運(yùn)動(dòng),當(dāng)工件經(jīng)過(guò)光纖傳感器時(shí),觸發(fā)系統(tǒng)記錄此時(shí)工件的初始脈沖。當(dāng)實(shí)時(shí)脈沖值為初始脈沖值和定位脈沖值之和時(shí),即工件到達(dá)相機(jī)下方,此時(shí)觸發(fā)相機(jī)拍照。對(duì)采集的圖像進(jìn)行分析處理,得到被檢測(cè)工件是否符合預(yù)設(shè)要求的結(jié)果,將合格或者不合格的處理結(jié)果傳給FPGA,由FPGA根據(jù)不同的處理結(jié)果控制不同的電磁閥工作,將不同質(zhì)量的工件進(jìn)行分區(qū)。
硬件系統(tǒng)由上位機(jī)處理計(jì)算機(jī)、FPGA、伺服控制器和伺服電機(jī)、數(shù)字光纖傳感器、工業(yè)相機(jī)、電磁閥組成。硬件各功能之間的具體聯(lián)系如圖2所示。
圖2 系統(tǒng)硬件圖Fig.2 System hardware diagram
該系統(tǒng)軟件由初始化告警線程、以太網(wǎng)通信線程、電機(jī)正反轉(zhuǎn)線程、工件定位線程、數(shù)據(jù)存儲(chǔ)線程和拍照吹氣線程組成。FPGA下位機(jī)程序設(shè)計(jì)是整個(gè)系統(tǒng)的核心,初始化告警線程可以實(shí)現(xiàn)設(shè)備初始化和處理各類緊急情況;以太網(wǎng)通信線程保證了下位機(jī)和上位機(jī)的通信;電機(jī)正反轉(zhuǎn)線程控制伺服電機(jī)帶動(dòng)玻璃盤運(yùn)動(dòng);工件定位線程用來(lái)獲取脈沖數(shù)據(jù);數(shù)據(jù)存儲(chǔ)線程實(shí)現(xiàn)對(duì)大量采集到脈沖數(shù)據(jù)的存
圖1 檢測(cè)系統(tǒng)總體架構(gòu)Fig.1 Overall architecture of the detection system
儲(chǔ);拍照吹氣線程用于獲取工件圖像信息以及對(duì)工件進(jìn)行分類處理。各線程之間相互獨(dú)立、并行實(shí)現(xiàn),依托LabVIEW高移植性設(shè)置多相機(jī)、多電磁閥程序,根據(jù)具體應(yīng)用要求,對(duì)上位機(jī)指令進(jìn)行設(shè)置。
首先下位機(jī)上電復(fù)位、各設(shè)備初始化,系統(tǒng)運(yùn)行,在FPGA上進(jìn)行數(shù)據(jù)處理、存儲(chǔ),圖像信息通過(guò)以太網(wǎng)傳輸?shù)缴衔粰C(jī),再由上位機(jī)程序處理照片得到工件的處理結(jié)果返回到FPGA,實(shí)現(xiàn)對(duì)數(shù)據(jù)的分析處理從而達(dá)到對(duì)工件進(jìn)行處理的目的。程序流程如圖3所示。
圖3 程序流程圖Fig.3 Program flow chart
與傳統(tǒng)的控制器局域網(wǎng)絡(luò)(controller area network, CAN)、RS485、RS232等通信方式相比,以太網(wǎng)速度快、通用性更好,并且能接入Internet網(wǎng)絡(luò)實(shí)現(xiàn)更大范圍的遠(yuǎn)程訪問(wèn)[10],適用于數(shù)據(jù)傳輸量大的情況。FPGA的以太網(wǎng)數(shù)據(jù)傳輸是目前應(yīng)用較為廣泛的一種傳輸手段,但大多數(shù)支持千兆以太網(wǎng)的物理芯片并未集成傳輸協(xié)議棧以及接口轉(zhuǎn)換模塊,導(dǎo)致其無(wú)法直接進(jìn)行數(shù)據(jù)傳輸[11]。針對(duì)這一問(wèn)題,提出采用Socket calling line identification presentation (CLIP)技術(shù)將整個(gè)KSZ9031千兆以太網(wǎng)雙向收發(fā)用戶數(shù)據(jù)報(bào)協(xié)議(user datagram protocol, UDP)通信過(guò)程,封裝成CLIP使用,然后采用LabVIEW里面的Socket CLIP方法進(jìn)行整體封裝。這種方法不僅提高了時(shí)鐘約束能力,也進(jìn)一步加快了編譯速度。以太網(wǎng)通信的整體程序框圖如圖4所示。
本系統(tǒng)利用LabVIEW for FPGA生成頻率和占空比任意調(diào)節(jié)的脈沖寬度調(diào)制(pulse width modulation, PWM)信號(hào)來(lái)控制伺服電機(jī)的速度。PWM的頻
KSZ_Dataksz_1_lv_clip_rst_n為以太網(wǎng)芯片復(fù)位;KSZ_Dataksz_lv_clip_src_mac_addr為FPGA端的MAC地址;KSZ_Dataksz_lv_clip_dst_mac_addr為目標(biāo)端的MAC地址;KSZ_Dataksz_lv_clip_src_ip_addr為FPGA端的IP地址;KSZ_Dataksz_lv_clip_dst_ip_addr為目標(biāo)設(shè)備的IP地址;KSZ_Dataksz_lv_clip_dst_port為目標(biāo)設(shè)備的IP端口;KSZ_Dataksz_lv_clip_src_port為FPGA端的IP端口;KSZ_Dataksz_lv_clip_is_ip_updata為參數(shù)更新使能信號(hào);KSZ_Dataksz_lv_clip_tx_frame_len為FPGA發(fā)送UDP數(shù)據(jù)包長(zhǎng)度;KSZ_Dataksz_lv_clip_tx_data_rdy為FPGA通知CLIP準(zhǔn)備好接收FPGA發(fā)送的數(shù)據(jù);KSZ_Dataksz_lv_clip_tx_data_in為CLIP數(shù)據(jù)輸入端口;KSZ_Dataksz_lv_clip_tx_data_in_vld為CLIP數(shù)據(jù)輸入有效端口;KSZ_Dataksz_lv_clip_rx_data_rd_en為FPGA接收到PC下發(fā)的UDP包;KSZ_Dataksz_lv_clip_rx_data_rdy為FPGA接收的UDP包是否有效;KSZ_Dataksz_lv_clip_rx_frame_len為FPGA過(guò)濾出來(lái)的有效UDP包里面的真實(shí)數(shù)據(jù)長(zhǎng)度;KSZ_Dataksz_lv_clip_rx_data_out為FPGA過(guò)濾出來(lái)的有效UDP包里面的數(shù)據(jù)區(qū);KSZ_Dataksz_lv_clip_rx_data_out_vld為數(shù)據(jù)有效信號(hào);KSZ_Dataksz_lv_clip_tx_data_rd_en為CLIP是否能接收FIFO里面的數(shù)據(jù)使能信號(hào);FIFO_Ethernet_Write為以太網(wǎng)寫數(shù)據(jù)緩存;FIFO_Ethernet_Read為以太網(wǎng)讀數(shù)據(jù)緩存;FIFO_UART_Send為以太網(wǎng)讀數(shù)據(jù)緩存圖4 以太網(wǎng)通訊程序Fig.4 Ethernet communication program
率和占空比可由上位機(jī)自由設(shè)定。其中PWM的頻率對(duì)應(yīng)電機(jī)轉(zhuǎn)速,PWM的脈沖寬度對(duì)應(yīng)電機(jī)轉(zhuǎn)過(guò)的角度。上位機(jī)通過(guò)以太網(wǎng)通信發(fā)送相應(yīng)的指令來(lái)控制伺服電機(jī)的正反轉(zhuǎn)和速度。電機(jī)正反轉(zhuǎn)線程的設(shè)計(jì)如圖5所示。
圖5 電機(jī)正反轉(zhuǎn)線程Fig.5 Motor forward and reverse thread
系統(tǒng)的運(yùn)行過(guò)程中需要對(duì)大量數(shù)據(jù)進(jìn)行高速存取,在高速大容量的存儲(chǔ)系統(tǒng)中,傳輸通道為實(shí)時(shí)的雙向鏈路,需要采用面向存儲(chǔ)的高性能雙向串行外圍接口(serial peripheral interface, SPI)傳輸接口來(lái)實(shí)現(xiàn)[12]。為了滿足對(duì)存儲(chǔ)容量和速度的要求,系統(tǒng)選用Flash存儲(chǔ)數(shù)據(jù)。光纖傳感器產(chǎn)生信號(hào)觸發(fā)Flash執(zhí)行脈沖數(shù)據(jù)寫入操作;相機(jī)拍照觸發(fā)Flash執(zhí)行脈沖數(shù)據(jù)讀取操作。
在實(shí)際應(yīng)用中,由于Flash同一時(shí)刻只能允許有一個(gè)主控,為解決在數(shù)據(jù)存取過(guò)程中同時(shí)有多個(gè)數(shù)據(jù)讀取請(qǐng)求的問(wèn)題,設(shè)計(jì)讀取數(shù)據(jù)防沖突模塊,完成對(duì)Flash多通道實(shí)時(shí)讀取的需求。數(shù)據(jù)處理流程如圖6所示。
圖6 數(shù)據(jù)處理流程圖Fig.6 Data processing flowchart
讀取優(yōu)先級(jí)判斷模塊如圖7所示,相機(jī)的個(gè)數(shù)可根據(jù)實(shí)際情況由PC端設(shè)定。
為證明設(shè)計(jì)的基于LabVIEW for FPGA的高速并行視覺(jué)檢測(cè)系統(tǒng)的有效性、可靠性以及高效性,設(shè)置如下實(shí)驗(yàn),將原有的PLC視覺(jué)檢測(cè)系統(tǒng)作為實(shí)驗(yàn)中的對(duì)比系統(tǒng)進(jìn)行對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)中配置的設(shè)備具體如表1所示。本視覺(jué)檢測(cè)系統(tǒng)實(shí)物圖如圖8所示。
圖7 讀取優(yōu)先級(jí)判斷模塊Fig.7 Read priority judgment module
表1 實(shí)驗(yàn)臺(tái)配置Table 1 Test bench configuration
圖8 檢測(cè)系統(tǒng)實(shí)物圖Fig.8 Physical image of the detection system
利用上述實(shí)驗(yàn)參數(shù)和實(shí)驗(yàn)裝置進(jìn)行實(shí)驗(yàn)驗(yàn)證,實(shí)驗(yàn)結(jié)果如圖9所示??梢钥闯觯谡駝?dòng)盤上料速度較為緩慢時(shí),兩種系統(tǒng)有效處理工件數(shù)相近;當(dāng)振動(dòng)盤上料速度加快時(shí),基于LabVIEW for FPGA的高速并行視覺(jué)檢測(cè)系統(tǒng)處理工件數(shù)量明顯多于傳統(tǒng)基于PLC的視覺(jué)檢測(cè)系統(tǒng)。分析檢測(cè)準(zhǔn)確率可知隨著檢測(cè)時(shí)間的增加,基于LabVIEW for FPGA的高速并行視覺(jué)檢測(cè)系統(tǒng)和基于PLC的視覺(jué)檢測(cè)系統(tǒng)
圖9 實(shí)驗(yàn)數(shù)據(jù)對(duì)比Fig.9 Comparison of experimental data
的檢測(cè)準(zhǔn)確率都在變化,但本文系統(tǒng)的準(zhǔn)確性始終位于傳統(tǒng)系統(tǒng)的準(zhǔn)確性之上,證明本文系統(tǒng)的檢測(cè)準(zhǔn)確性更高。實(shí)驗(yàn)結(jié)果表明本系統(tǒng)的檢測(cè)用時(shí)較少,檢測(cè)效率和準(zhǔn)確率都高于傳統(tǒng)檢測(cè)系統(tǒng)。分析原因,F(xiàn)PGA執(zhí)行速度更快能夠更好的保證工件處于相機(jī)視野中心,因此易于獲得理想照片和分析處理結(jié)果。
設(shè)計(jì)了一種基于LabVIEW for FPGA的視覺(jué)檢測(cè)設(shè)備測(cè)控系統(tǒng),在設(shè)計(jì)的系統(tǒng)總體框架上搭建實(shí)驗(yàn)平臺(tái),并進(jìn)行硬件選型,用FPGA控制代替PLC控制有效地解決了PLC串行執(zhí)行限制系統(tǒng)運(yùn)行速度的問(wèn)題,提高了系統(tǒng)的穩(wěn)定性、運(yùn)行速度和檢測(cè)效率。使用圖形化語(yǔ)言在LabVIEW平臺(tái)上編寫軟件程序,增加了系統(tǒng)的柔性,降低了開發(fā)難度。實(shí)驗(yàn)證明,采用FPGA設(shè)計(jì)視覺(jué)檢測(cè)系統(tǒng),能滿足視覺(jué)檢測(cè)的實(shí)際需求。