姜闊勝, 侯佳淑, 范再川, 毛中元, 周遠遠, 陳賽
(安徽理工大學機械工程學院, 淮南 232001)
“十四五”規劃中更加注重推動人工智能平臺建設,強化生產過程中的智能化[1]。機器視覺為智能化生產過程中最后一個環節,對生產的零部件進行質量檢測,扮演著十分重要的角色。現有對生產的零部件檢測主要有人工檢測法和機器視覺檢測法。傳統的人工檢測存在誤檢率、漏檢率及成本高等問題,現有的機器視覺檢測系統下位機大多以可編程邏輯控制器(programmable logic controller, PLC)為核心處理器,限制了零部件的檢測效率[2]。面向未來的視覺檢測高速并行的需求,對如何提高系統的運行效率的研究具有重要的意義。
國外在視覺檢測上的研究相較中國起步早,早在20世紀70年代,視覺檢測技術已經應用于工業生產過程中[3]。Westinghous公司利用不同照明光路與電荷耦合元件(charge coupled device, CCD)線陣相機相結合,為鋼板表面的缺陷檢測提供了一種新的檢測方案[4]。Fang等[5]分析和對比表面缺陷檢測計數的各種方法,并對視覺缺陷檢測的剩余挑戰和未來的研究趨勢進行了綜述性的討論和預測。胡藝等[6]提出了一種改進的基于遺傳算法的二維最大類間方差法的快速迭代算法,解決印刷電路(printed circuit board, PCB)板缺陷檢測分割中存在分割效果差、運行速度慢以及適用范圍小的問題。董元發等[7]采用模糊自適應的視覺檢測方法解決了手工裝配中微小金屬件容易漏裝的問題,并在工業現場成功應用。
隨著視覺檢測行業的發展,圖像、視頻等所需處理的數據量呈爆炸性增長,圖像處理系統的計算能力和傳輸能力需要不斷提高,現場可編程門陣列(field programmable gate array, FPGA)作為可編程的硬件,可以根據應用需要實現硬件動態重構,具備高度并行的流水處理能力[8]。現提出一種基于LabVIEW for FPGA的高速并行視覺檢測系統,以LabVIEW作為FPGA的開發平臺,利用該軟件適應內、外部變化能力強的柔性特點,將軟件高度開放,精簡數據存儲系統[9],且基于LabVIEW語言開發FPGA,相比于利用VHDL語言或者Verilog語言進行代碼編寫的FPGA開發模式更加簡便,提高檢測系統的可行性、可移植性和通用性。相較于傳統視覺檢測系統,本文設計的系統能夠滿足圖像處理應用對高速數據傳輸和處理的需要,性能也更加的穩定。
系統總體架構主要包括電源模塊、自動上料模塊、定位檢測模塊、視覺檢測模塊和自動下料模塊,如圖1所示。
檢測系統通過電源降壓模塊將220 V交流電轉化為24 V和5 V直流電,供伺服控制系統、傳感器、相機等使用。為了實現自動化檢測,需要對系統進行預處理設置,即拍照定位和吹氣定位,利用工件從光纖傳感器到相機(吹氣口)之間的相對脈沖值,對每個相機(吹氣口)進行精確定位,并存儲定位脈沖數據。定位設置完成,系統開始運行并檢測,工件通過自動上料模塊(振動盤),均勻地分布在玻璃盤上,伺服電機控制玻璃盤勻速運動,當工件經過光纖傳感器時,觸發系統記錄此時工件的初始脈沖。當實時脈沖值為初始脈沖值和定位脈沖值之和時,即工件到達相機下方,此時觸發相機拍照。對采集的圖像進行分析處理,得到被檢測工件是否符合預設要求的結果,將合格或者不合格的處理結果傳給FPGA,由FPGA根據不同的處理結果控制不同的電磁閥工作,將不同質量的工件進行分區。
硬件系統由上位機處理計算機、FPGA、伺服控制器和伺服電機、數字光纖傳感器、工業相機、電磁閥組成。硬件各功能之間的具體聯系如圖2所示。

圖2 系統硬件圖Fig.2 System hardware diagram
該系統軟件由初始化告警線程、以太網通信線程、電機正反轉線程、工件定位線程、數據存儲線程和拍照吹氣線程組成。FPGA下位機程序設計是整個系統的核心,初始化告警線程可以實現設備初始化和處理各類緊急情況;以太網通信線程保證了下位機和上位機的通信;電機正反轉線程控制伺服電機帶動玻璃盤運動;工件定位線程用來獲取脈沖數據;數據存儲線程實現對大量采集到脈沖數據的存

圖1 檢測系統總體架構Fig.1 Overall architecture of the detection system
儲;拍照吹氣線程用于獲取工件圖像信息以及對工件進行分類處理。各線程之間相互獨立、并行實現,依托LabVIEW高移植性設置多相機、多電磁閥程序,根據具體應用要求,對上位機指令進行設置。
首先下位機上電復位、各設備初始化,系統運行,在FPGA上進行數據處理、存儲,圖像信息通過以太網傳輸到上位機,再由上位機程序處理照片得到工件的處理結果返回到FPGA,實現對數據的分析處理從而達到對工件進行處理的目的。程序流程如圖3所示。

圖3 程序流程圖Fig.3 Program flow chart
與傳統的控制器局域網絡(controller area network, CAN)、RS485、RS232等通信方式相比,以太網速度快、通用性更好,并且能接入Internet網絡實現更大范圍的遠程訪問[10],適用于數據傳輸量大的情況。FPGA的以太網數據傳輸是目前應用較為廣泛的一種傳輸手段,但大多數支持千兆以太網的物理芯片并未集成傳輸協議棧以及接口轉換模塊,導致其無法直接進行數據傳輸[11]。針對這一問題,提出采用Socket calling line identification presentation (CLIP)技術將整個KSZ9031千兆以太網雙向收發用戶數據報協議(user datagram protocol, UDP)通信過程,封裝成CLIP使用,然后采用LabVIEW里面的Socket CLIP方法進行整體封裝。這種方法不僅提高了時鐘約束能力,也進一步加快了編譯速度。以太網通信的整體程序框圖如圖4所示。
本系統利用LabVIEW for FPGA生成頻率和占空比任意調節的脈沖寬度調制(pulse width modulation, PWM)信號來控制伺服電機的速度。PWM的頻

KSZ_Dataksz_1_lv_clip_rst_n為以太網芯片復位;KSZ_Dataksz_lv_clip_src_mac_addr為FPGA端的MAC地址;KSZ_Dataksz_lv_clip_dst_mac_addr為目標端的MAC地址;KSZ_Dataksz_lv_clip_src_ip_addr為FPGA端的IP地址;KSZ_Dataksz_lv_clip_dst_ip_addr為目標設備的IP地址;KSZ_Dataksz_lv_clip_dst_port為目標設備的IP端口;KSZ_Dataksz_lv_clip_src_port為FPGA端的IP端口;KSZ_Dataksz_lv_clip_is_ip_updata為參數更新使能信號;KSZ_Dataksz_lv_clip_tx_frame_len為FPGA發送UDP數據包長度;KSZ_Dataksz_lv_clip_tx_data_rdy為FPGA通知CLIP準備好接收FPGA發送的數據;KSZ_Dataksz_lv_clip_tx_data_in為CLIP數據輸入端口;KSZ_Dataksz_lv_clip_tx_data_in_vld為CLIP數據輸入有效端口;KSZ_Dataksz_lv_clip_rx_data_rd_en為FPGA接收到PC下發的UDP包;KSZ_Dataksz_lv_clip_rx_data_rdy為FPGA接收的UDP包是否有效;KSZ_Dataksz_lv_clip_rx_frame_len為FPGA過濾出來的有效UDP包里面的真實數據長度;KSZ_Dataksz_lv_clip_rx_data_out為FPGA過濾出來的有效UDP包里面的數據區;KSZ_Dataksz_lv_clip_rx_data_out_vld為數據有效信號;KSZ_Dataksz_lv_clip_tx_data_rd_en為CLIP是否能接收FIFO里面的數據使能信號;FIFO_Ethernet_Write為以太網寫數據緩存;FIFO_Ethernet_Read為以太網讀數據緩存;FIFO_UART_Send為以太網讀數據緩存圖4 以太網通訊程序Fig.4 Ethernet communication program
率和占空比可由上位機自由設定。其中PWM的頻率對應電機轉速,PWM的脈沖寬度對應電機轉過的角度。上位機通過以太網通信發送相應的指令來控制伺服電機的正反轉和速度。電機正反轉線程的設計如圖5所示。

圖5 電機正反轉線程Fig.5 Motor forward and reverse thread
系統的運行過程中需要對大量數據進行高速存取,在高速大容量的存儲系統中,傳輸通道為實時的雙向鏈路,需要采用面向存儲的高性能雙向串行外圍接口(serial peripheral interface, SPI)傳輸接口來實現[12]。為了滿足對存儲容量和速度的要求,系統選用Flash存儲數據。光纖傳感器產生信號觸發Flash執行脈沖數據寫入操作;相機拍照觸發Flash執行脈沖數據讀取操作。
在實際應用中,由于Flash同一時刻只能允許有一個主控,為解決在數據存取過程中同時有多個數據讀取請求的問題,設計讀取數據防沖突模塊,完成對Flash多通道實時讀取的需求。數據處理流程如圖6所示。

圖6 數據處理流程圖Fig.6 Data processing flowchart
讀取優先級判斷模塊如圖7所示,相機的個數可根據實際情況由PC端設定。
為證明設計的基于LabVIEW for FPGA的高速并行視覺檢測系統的有效性、可靠性以及高效性,設置如下實驗,將原有的PLC視覺檢測系統作為實驗中的對比系統進行對比實驗。實驗中配置的設備具體如表1所示。本視覺檢測系統實物圖如圖8所示。

圖7 讀取優先級判斷模塊Fig.7 Read priority judgment module

表1 實驗臺配置Table 1 Test bench configuration

圖8 檢測系統實物圖Fig.8 Physical image of the detection system
利用上述實驗參數和實驗裝置進行實驗驗證,實驗結果如圖9所示。可以看出,在振動盤上料速度較為緩慢時,兩種系統有效處理工件數相近;當振動盤上料速度加快時,基于LabVIEW for FPGA的高速并行視覺檢測系統處理工件數量明顯多于傳統基于PLC的視覺檢測系統。分析檢測準確率可知隨著檢測時間的增加,基于LabVIEW for FPGA的高速并行視覺檢測系統和基于PLC的視覺檢測系統

圖9 實驗數據對比Fig.9 Comparison of experimental data
的檢測準確率都在變化,但本文系統的準確性始終位于傳統系統的準確性之上,證明本文系統的檢測準確性更高。實驗結果表明本系統的檢測用時較少,檢測效率和準確率都高于傳統檢測系統。分析原因,FPGA執行速度更快能夠更好的保證工件處于相機視野中心,因此易于獲得理想照片和分析處理結果。
設計了一種基于LabVIEW for FPGA的視覺檢測設備測控系統,在設計的系統總體框架上搭建實驗平臺,并進行硬件選型,用FPGA控制代替PLC控制有效地解決了PLC串行執行限制系統運行速度的問題,提高了系統的穩定性、運行速度和檢測效率。使用圖形化語言在LabVIEW平臺上編寫軟件程序,增加了系統的柔性,降低了開發難度。實驗證明,采用FPGA設計視覺檢測系統,能滿足視覺檢測的實際需求。