楊 鑫,羅付強,劉宏巖,楊 健,何鎧鋒
(重慶紅江機械有限責任公司,重慶 402162)
近年來,機器視覺系統(tǒng)以其高效率、高可靠和低成本的特點在國內(nèi)外取得了廣泛的應用。機器視覺是一門涉及圖形圖像、計算機軟件、自動化、機械設計和人工智能等諸多領域的交叉學科。目前業(yè)內(nèi)關注較多的是機器視覺系統(tǒng)的硬件部分或軟件部分,然而,在視覺軟件得出數(shù)據(jù)后,往往需要將數(shù)據(jù)傳輸至 PLC 及上位機,PLC 根據(jù)數(shù)據(jù)結(jié)果做出分析判定,并控制相關設備進行相應動作,上位機對數(shù)據(jù)進行整理存檔、集成展示等。例如工廠中常見的物料分揀視覺系統(tǒng)、立體倉庫視覺管理系統(tǒng)、零件質(zhì)量視覺檢測系統(tǒng)、以及本項目涉及的零件自動測量定位視覺系統(tǒng)等。
通過視覺系統(tǒng)對零件進行直徑測量和位置矯正,零件隨機放置,其位置并不一致,通過視覺軟件獲取零件圖像并進行處理,得出直徑和零件位置數(shù)據(jù),將位置數(shù)據(jù)傳至PLC,PLC 根據(jù)零件實際位置控制伺服電機將其矯正至固定位置,以供機器人等自動裝置夾持零件進行加工裝夾或裝配,保證零件順利裝入。項目采用的視覺軟件是 Cognex公司的 VisionPro,PLC 為 Siemens 公司的 S7-1200,電機為 Siemens 公司的 V90 伺服電機。通過 VisionPro 創(chuàng)建 QuickBuild 視覺項目,利用 C# 在 VS 環(huán)境下調(diào)用QuickBuild 項目開發(fā)上位機軟件,通過類庫 S7.NET 與 S7-1200 通信,實現(xiàn)上位機軟件與 PLC 的數(shù)據(jù)交互,PLC 獲取零件位置數(shù)據(jù)后,控制 V90 伺服電機動作,實現(xiàn)零件的矯向功能。系統(tǒng)組成如圖1所示。
圖1 視覺定位系統(tǒng)組成
項目選用 Basler acA1300-30gm 相機、Computar M2514-MP 鏡頭、日本 CCS LDR2-70RD 環(huán)形 LED 光源。通過軟件觸發(fā)拍照指令,通過 GigE 千兆以太網(wǎng)接口協(xié)議將圖像反饋至 VisionPro。VisionPro 提供了一個交互式的開發(fā)環(huán)境,可以利用 VisionPro 來獲取圖像,集成視覺工具來處理圖像,生成 QuickBuild 應用項目,在 QuickBuild 項目中,先后應用工具見下表。
表 QuickBuild 工具
?
視覺系統(tǒng)校準標定是補償相機的線性和非線性誤差必不可少的環(huán)節(jié),另一方面,機器視覺系統(tǒng)的數(shù)字圖像處理是以像素為單位來表示的,而工程應用的長度單位采用的是毫米、厘米或英寸等作為物理尺寸單位。因此,要想獲得常規(guī)的測量結(jié)果數(shù)值,需要建立像素與實際尺寸的對應關系,標定實際上就是確定每個像素所表示的實際物理尺寸。標定的準確與否,將直接影響視覺測量系統(tǒng)的測量準確性,標定工作的頻密程度與具體測量項目的準確度要求相關,一般情況下視覺系統(tǒng)每次開機都應做一次標定,或每天做一次標定;準確度要求高的則應考慮標定工作做得頻密,QuickBuild 中采用 CogCalibCheckerboardTool 工具進行標定,在 CogCalibCheckerboardTool 標定工具中,輸入的參數(shù)包括校準點陣模板兩點之間在X
方向和Y
方向的實際距離,這是標定的依據(jù)。標定工具根據(jù)X
和Y
的值,用優(yōu)化的算法將復雜的標定信息與圖像信息結(jié)合,實現(xiàn)圖像像素坐標到實際坐標的轉(zhuǎn)換,值得注意的是,標定板一定要與零件特征平面等高,這樣標定的數(shù)據(jù)才能真實反映特征數(shù)據(jù)。項目采用9×9點陣式標定板,圓點直徑為 1 mm,圓心距為2 mm,在標定工具中設置如圖2所示。得到標定圖像后,需要在圖像中尋找模板特征來定位圖像,模板是圖像(或其子圖)的一種表達方式,其本身仍然是一幅圖像。一般情況下,模板在目標圖像中來回移動,直到找到使某個匹配函數(shù)值達到最大的位置為止,可以比較模板T
和子圖f
的內(nèi)容,若兩者一致,則T
和子圖f
之差為零,所以可以用下列的函數(shù)來衡量T
和f
的相似程度:K
×K
,式 (1) 對模板T
與子圖f
在坐標處圖像之間匹配程度提供了度量。在模板匹配中,一個基本問題就是對模板尺寸大小的選擇問題,如果模板選擇過小,就難以估計圖像的變化,以至于無法做出準確的估計,如果模板太大,則窗口中覆蓋的面積太大,就無法實現(xiàn)匹配。標定和模板匹配是項目關鍵工具,通過這兩個工具獲取并匹配到標準物理尺寸的目標圖像,然后通過尋圓擬合、構(gòu)建線、擬合線和求夾角等工具組合求出零件外徑及方位角。將 CogPMAlignTool 匹配的特征數(shù)量(定位結(jié)果)、CogFindCircleTool 擬合的外圓直徑值(測量直徑)、CogAngleLineLineTool 計算的角度(矯向角度)添加到 CogResultsAnalysisTool 進行處理運算,并添加到QuickBuild 發(fā)送項,通過高級語言調(diào)用 QuickBuild API 來獲取發(fā)送項,開發(fā)高級應用功能。
圖 2 CogCalibCheckerboardTool 工具和標定板
上位機軟件采用 C# 在 Visual Studio 2019 環(huán)境中開發(fā),主要是調(diào)用 QuickBuild 項目、獲取測量直徑及矯向角度、PLC 通信及控制、獲取 PLC 執(zhí)行狀態(tài)等。
VisionPro 可以為相機分配離散 IO,利用應用程序向?qū)Э梢詣?chuàng)建完善的 QuickBuild 應用程序,直接用于終端機。但是這種方式不方便與外界進行交互,而且要配備 Cognex 的離散 IO 硬件,限制了應用程序的靈活性。項目采用“QuickBuild+高級語言”開發(fā)模式,VisionPro與高級語言的聯(lián)合開發(fā)支持三種形式:高級語言調(diào)用VisionPro 控件、高級語言調(diào)用 VisionProToolGroup、高級語言調(diào)用 VisionProQuickBuild。第一種方式完全脫離VisionPro 開發(fā)環(huán)境,直接在高級語言環(huán)境中調(diào)用 VisionPro控件 dll 進行編譯,這種開發(fā)方式足夠靈活,但開發(fā)難度相對較大,且不利于后期調(diào)試維護;高級語言調(diào)用VisionProToolGroup 是在 QuickBuild 中將所有的視覺工具集成到一個 ToolGroup 中,然后將其單獨保存成 vpp 文件,高級語言調(diào)用這個 vpp 文件進行集成開發(fā),其優(yōu)點是不必定義線程來檢測外部信號,可以采用外部 I/O 信號觸發(fā)的方式,適合用在一些高頻率取像的項目中;高級語言調(diào)用 VisionProQuickBuild 是將 QuickBuild 保存為一個完整的項目,高級語言直接調(diào)用該項目,其優(yōu)點是視覺項目與高級語言完全脫離,只需更改 QuickBuild 即可完成視覺的大多數(shù)修改工作,利于后期重新標定、維護修改。
項目采用 C# 調(diào)用 VisionProQuickBuild 的開發(fā)模式,在VS環(huán)境中創(chuàng)建窗體應用程序,調(diào)用 VisionPro 開發(fā)的QuickBuild 項目。VisionPro 程序集是針對 .NET Framework 4.0 開發(fā)的,因此開發(fā)環(huán)境 Framework 要配置為4.0以上版本。在窗體上添加一個 VisionPro 的 CogRecordDisplay 控件,用于顯示圖像,然后引用以下程序集:
隨后調(diào)用 QuickBuild 項目及運行結(jié)果,關鍵代碼如下:
上位機與 S7-1200PLC 有多種通信方式,采用 S7.NET實現(xiàn) PLC 的通信,S7.NET 是一個 PLC 驅(qū)動程序,要求PLC 必須具有 Profinet 功能,上位機通過以太網(wǎng)連接西門子 PLC。S7.NET 是完全基于 C# 開發(fā)編寫的開源類庫,因此在 C# 項目開發(fā)中可以輕松地調(diào)用調(diào)試,實現(xiàn)上位機軟件與西門子 PLC 的通信控制功能。
在 C# 窗體應用程序中,引用“S7.Net”程序集,添加 Timer 控件定時掃描 PLC 并讀寫 PLC 狀態(tài),關鍵代碼如下:
上位機軟件與 PLC 協(xié)同配合完成視覺定位矯向功能,上位機獲取零件位置數(shù)據(jù),PLC 執(zhí)行位置矯正并反饋執(zhí)行結(jié)果,兩者必須配合得當。其控制過程是: PLC 首先發(fā)出視覺請求信號,上位機執(zhí)行視覺取像及處理,隨后向 PLC發(fā)送零件位置數(shù)據(jù),PLC 得到數(shù)據(jù)后,執(zhí)行矯向動作,并反饋完成信號,上位機再次進行視覺處理,判定矯向結(jié)果是否正確,若不正確,重復上一過程直至正確,然后發(fā)出“OK”信號,結(jié)束視覺處理;另一種情況是如果獲取圖像模板匹配不成功,則直接輸出“NG”信號結(jié)束視覺處理。
由于 PLC 的信號采用脈沖輸出,上位機軟件是通過定時器的方式掃描 PLC 狀態(tài),并非實時采集。對于上位機而言,PLC 輸出只有“0”或“1”兩種情況,無法檢測上升沿或下降沿。在實際應用中,如果定時器時間長度與PLC 信號脈沖設置不當,上位機有可能會重復讀取或漏掉一些 PLC 信號。比如,當 PLC 視覺請求信號脈沖寬度大于上位機軟件掃描周期時,上位機在連續(xù)兩個掃描周期內(nèi)獲取的信號是一樣的,就會作出兩次視覺處理;當 PLC 視覺請求脈沖寬度小于上位機掃描周期時,則上位機很有可能會錯過這個信號而不執(zhí)行任何動作,這種情況是絕對不允許的。因此,首先必須保證 PLC 信號脈沖長度大于上位機掃描周期,然后在上位機軟件通過程序?qū)?PLC 信號構(gòu)造為 “上升沿”信號,在上位機程序中,定義一個 Bool 變量,當?shù)谝淮螜z測到 PLC 矯向請求為“1”時,將該變量置為“1”,直到 PLC 矯向請求為“0”時,將該變量置為“0”。運行流程如圖3所示。
圖 3 視覺處理流程
S7-1200 在運動控制中使用了軸的概念,通過對軸的組態(tài),包括硬件接口、位置定義、動態(tài)特征和機械特性等,與相關的指令塊組合使用,可以實現(xiàn)絕對位置、相對位置、點動、轉(zhuǎn)速控制和自動尋找參考點的功能。項目用1200PLC 通過 PROFINET 通信方式連接西門子的 V90 PN驅(qū)動裝置,驅(qū)動裝置用于控制軸的運動,通過 PROFIdrive報文3進行數(shù)據(jù)傳輸,使用 V90 PN 的 GSD 文件,將 V90 PN 組態(tài)為 S7-1200 的 IO device,作為從站集成到硬件組態(tài)中,在 S7-1200 中以工藝對象的方式來實現(xiàn)伺服電機的零件定位矯向控制功能。
V90 伺服驅(qū)動組態(tài)完成后,使用工藝中的“Motion control”指令塊進行運動控制編程,這里使用了“使能軸”和“點動軸”兩個指令塊,如圖4所示。
圖 4 PLC Motion control 控制程序
“PLC 矯向請求”由“機器人矯向請求”和“電機旋轉(zhuǎn)完成”共同觸發(fā),PLC 接收到機器人矯向請求后,首次向上位機發(fā)出矯向請求,上位機執(zhí)行視覺處理并將零件旋轉(zhuǎn)角度傳輸至 PLC 的 MD94,隨后啟動伺服電機旋轉(zhuǎn),電機旋轉(zhuǎn)完成后,PLC 再次發(fā)出矯向請求,上位機重新取像,驗證矯向結(jié)果是否正確,若正確則返回“OK”信號,若不正確則再次傳輸新的零件位置數(shù)據(jù),直至零件矯向合格為止。
工業(yè)視覺項目往往涉及到視覺軟件、上位機和 PLC運動控制等多學科的交叉,作為機器視覺是否能得到有效應用,不僅在于圖像的識別處理,還在于得出數(shù)據(jù)后的系列操作,這種集成在工業(yè)應用項目中尤為突出,一個完善的工業(yè)視覺項目應該包括“視覺處理—執(zhí)行控制—結(jié)果驗證”,形成閉環(huán)控制。項目從 VisionPro 視覺處理、上位機集成展示及數(shù)據(jù)傳輸、PLC 運動控制和結(jié)果判定各方面進行集成,形成了一套較為完整的工業(yè)視覺測量定位系統(tǒng),對工業(yè)視覺應用有一定推廣及借鑒意義。