李 芳, 王志臣, 鄧 媞
1(機科發(fā)展科技股份有限公司, 北京 100044)
2(機械科學研究總院, 北京 100044)
換擋轂是汽車動力總成雙離合變速器的核心零件,也是亟待實現(xiàn)國產(chǎn)化高質(zhì)量批量生產(chǎn)的關鍵件, 如圖1所示.其具有空間曲線換擋溝槽, 換擋轂溝槽線輪廓度是決定換擋性能的關鍵參數(shù)指標.此外, 線輪廓度是幾何公差中應用最廣泛而又難以測量和評定的項目.主要采用最小區(qū)域法對線輪廓度誤差值進行評定, 即被測量線輪廓度要素的提取要素相對于理想線輪廓度要素的最大距離為最小.主要采用有循環(huán)迭代法與分割逼近法[1]、遺傳算法[2,3]、粒子群搜索[4,5]、Fréchet距離[6]等多種算法實現(xiàn).
圖1 換擋轂工件
在換擋轂自動化檢測儀器系統(tǒng)項目的實際開發(fā)部署過程中, 使用虛擬儀器LabView平臺軟件實現(xiàn)儀器控制與數(shù)據(jù)采集系統(tǒng)的設計.由于LabView在算法開發(fā)方面能力較弱, 直接開發(fā)線輪廓度評價算法難度大,不利于工程技術人員快速實現(xiàn)系統(tǒng)部署.因此, 如何快速開發(fā)算法并搭建軟件是工程實踐中所面臨的一個重要問題.為了應對上述問題, 采用聯(lián)合編程開發(fā)的方式,集成LabView、Matlab、.NET多種軟件技術, 優(yōu)勢互補, 從而加速開發(fā)進程.
LabView是美國NI公司推出的創(chuàng)新軟件產(chǎn)品, 提供了一種圖形化編程方法, 可直觀顯示應用的各個方面, 包括硬件配置、測量數(shù)據(jù)和調(diào)試.這種可視化方法可讓用戶輕松集成測量硬件, 直觀地表示復雜的邏輯,以及設計自定義工程用戶界面.LabView以其數(shù)據(jù)采集和儀器控制兩大獨特的優(yōu)勢, 在測控、故障診斷、生產(chǎn)過程控制、自動化等領域得到了較為普遍的應用[7],但是LabView在處理大型數(shù)據(jù), 復雜模型分析的時候就存在有自身的缺陷, 并且算法開發(fā)效率低[8].
Matlab是MathWorks推出的世界領先的科學計算語言和工具, 將適合迭代分析和設計過程的桌面環(huán)境與直接表達矩陣和數(shù)組運算的編程語言相結合, 語法結構簡單、數(shù)學計算高效.Matlab包含有豐富并且經(jīng)過專業(yè)開發(fā)、嚴格測試的函數(shù)基礎和工具箱.其在數(shù)據(jù)分析、深度學習、信號處理、控制系統(tǒng)等領域發(fā)揮著重要作用[9-11].但其GUI涉及功能薄弱, 代碼運行效率低[12].
.NET Framework是Microsoft開發(fā)的完全面向?qū)ο蟮能浖蚣? 主要由框架類庫FCL (Framework Class Library)和公共語言運行時CLR (Common Language Runtime)兩個重要組件構成..NET Framework提供了一個新的面向?qū)ο缶幊探涌诩夹g, 為眾多高級語言的集成提供了一種可能, 極大地提高了軟件開發(fā)的能力.
LabView與Matlab的聯(lián)合編程將充分發(fā)揮兩種軟件獨特的優(yōu)勢, 提高開發(fā)效率[13,14].本文通過將Matlab所開發(fā)的Fréchet距離線輪廓度算法經(jīng).NET技術編譯成dll程序集, 并在LabView所開發(fā)的線輪廓平臺中進行調(diào)用, 最終完成線輪廓度評價軟件的開發(fā).借助各軟件的優(yōu)勢, 更加高效快速地實現(xiàn)了線輪廓度評價的工程應用目標, 并在所承擔項目中得到了驗證應用.
線輪廓度評價軟件是涉及多種傳感器于一體的測量分析軟件.LabView具有強大硬件接口能力, 負責與外圍設備的對接, 實現(xiàn)對伺服系統(tǒng)的運動控制、數(shù)據(jù)采集系統(tǒng)的信息采集以及搭建人機交互界面的目的.Matlab主要用于線輪廓度評價算法開發(fā)和測試, 編譯成.NET程序集.在LabView所設計的主體軟件結構中調(diào)用, 實現(xiàn)集成, 軟件結構如圖2所示.經(jīng)過快速原型模型的測試與驗證, 進而完成線輪廓度評價任務.
圖2 線輪廓度評價軟件結構
采用Matlab、LabView、.NET聯(lián)合編程的方式,將優(yōu)勢取長補短地融合集成, 極大地提高了編程效率,并使得軟件兼具有儀器控制、數(shù)據(jù)采集、數(shù)據(jù)分析、人機交互等特點.具體來說即利用LabView強大的儀器控制與界面開發(fā)能力加快軟件主體架構設計; 利用數(shù)學編程軟件Matlab強大的函數(shù)庫, 減少編程代碼量;兩種軟件通過.NET接口進行參數(shù)與指令傳遞, 使高級語言的集成成為可能, 在保證算法可靠性的情況下, 縮短了軟件開發(fā)的周期, 降低了故障概率.
線輪廓度評價軟件以LabView為主開發(fā)軟件進行人機界面設計以及系統(tǒng)的集成.狀態(tài)機模型是圖形化語言程序設計中主要的軟件結構, 通過對結構進行拓展和修改, 再嵌入系統(tǒng)測試的相關算法, 可以快速完成自動化系統(tǒng)測試, 縮短開發(fā)時間, 提高工作效率.
對于線輪廓度評價軟件的開發(fā), 考慮到軟件的功能實現(xiàn)與維護, 主要采用了2種狀態(tài)機結構.單線程采用JKI狀態(tài)機結構, 2個VI+while+case+事件結構+移位寄存器+數(shù)據(jù)簇, 如圖3所示.多線程采用生產(chǎn)者/消費者設計模式, while+條件結構+隊列, 如圖4所示.
圖3 JKI狀態(tài)機結構
圖4 生產(chǎn)者/消費者設計模式
采用快速原型模型[15]作為聯(lián)合編程算法開發(fā)模型, 根據(jù)線輪廓度的評價要求與相關算法的可行性進行需求分析, 構建線輪廓度評價算法原型并進行原型評估, 原型Matlab編程, LabView調(diào)用完成原型測試5個主要階段.
在線輪廓度的評定中需要解決兩個問題: 一是測量輪廓與理論輪廓的最佳對齊; 二是測量點與理論輪廓的最短距離.輪廓要素可以看作是一組點集, 對于點集的距離常用Hausdorff距離、Fréchet距離.但是由于Hausdorff距離沒有考慮點的順序, 局限性較大.因此選用Fréchet距離[6]作為線輪廓度評價方法.Fréchet距離在地圖匹配[16], 生物信息學[17], 相似性度量[18]具有廣泛應用.在計算輪廓度時, 采用離散Fréchet距離對輪廓度誤差進行度量, 兩輪廓線Fréchet距離如圖5所示.
圖5 兩曲線 Fréchet距離
線輪廓度的評價算法以Fréchet距離為基礎, 利用SIMENS NX從三維模型獲取關鍵點XY坐標信息, 形成關鍵點型線; 由于采用探針接觸式輪廓采集, 需進行探針半徑補償, 對關鍵點型線偏移, 形成關鍵點偏移型線; 由線輪廓度公差要求, 形成上下偏差線, 即理論邊界區(qū)域, 得到滿足公差要求的理論邊界區(qū)域, 如圖6所示: 計算整條輪廓線所有采樣點與理論偏移型線的Fréchet距離, 最終得出線輪廓度.
圖6 線輪廓度評價示意圖
使用Matlab完成評價方法的編程工作, 編寫主要函數(shù), 其評價流程及代碼如圖7所示.
圖7 線輪廓度評價流程與Matlab編程
線輪廓度評價主要函數(shù)的編寫完成后即可進行編譯工作..NET程序集的編譯主要使用Matlab的Library Compiler工具箱完成.
在Matlab打開Library Compiler.在工具欄TYPE選項中選擇.NET Assembly, 在EXPORTED FUNCTIONS選項中加載所要編譯的5個重要函數(shù), 在Library Name
欄中輸人名稱并選填其他內(nèi)容, 也可修改類庫名稱等信息.在保存路徑for_redistribution_files_only文件下的Profile.dll文件為在LabView中的調(diào)用的.NET程序集.
盡管生成的.NET程序集可以在未安裝Matlab的計算機上應用, 但是對于.NET程序集中的類仍然需要Matlab基礎函數(shù)的支持, 因此在計算機上需要安裝Matlab Runtime, Matlab Runtime是一個獨立的共享庫,可以避免安裝龐大的完整版Matlab應用程序, 降低計算機資源的浪費.
此外, 在Matlab中使用的數(shù)據(jù)格式為Matlab特有的MWArray類型, 這種類型在LabView中無法直接使用, 需要通過MWArray.dll文件進行數(shù)據(jù)格式的轉化.
MWArray類充當了LabView與Matlab (Runtime)之間數(shù)據(jù)傳遞的橋梁.其類層次結構提供了使用Matlab Runtime創(chuàng)建和訪問Matlab數(shù)據(jù)類型的接口.所有的類都派生自MWArray類, 每個派生類都映射到一個Matlab數(shù)據(jù)類型.數(shù)據(jù)轉換類層次結構主要包括MWNumericarArray、MWLogicalArray、MWChar-Array、MWStructArray和MWCellArray.每個類都有屬性和方法, 可用于查詢類的各種屬性, 如維度大小、元素大小和字段名等.通過MWArray的類屬性接口,LabView可以將Matlab計算的數(shù)據(jù)從內(nèi)存中解析顯示, 直觀地判斷結論的正確性, 類層次結構使用方法如圖8所示.
圖8 二維數(shù)組解析VI程序框圖
在LabView中使用.NET對象進行原型測試, 需要使用.NET CLR 4.0.使用CLR 4.0 LabView可以加載.NET CLR 4.0或較早版本的.NET程序集, 并且可以生成包含.NET函數(shù)的獨立共享庫、應用程序、打包項目庫與.NET程序集.調(diào)用接口如圖9所示.
圖9 LabView.NET調(diào)用接口
由Matlab開發(fā)的線輪廓度評價算法函數(shù)均有多個輸入和多個輸出, 以solve_key_point為例, solve_key_point函數(shù)有2個輸入, 8個輸出.
[curve_out_1, curve_out_2, curve_out_3, curve_out_4, curve_out_5, curve_out_6, curve_out_7,curve_out_8]=solve_key_point(path, file_name);
關鍵點參數(shù)存儲路徑與型號兩個輸入?yún)?shù)經(jīng)MWCharArray類構造器節(jié)點進行轉換, 傳遞至solve_key_point調(diào)用節(jié)點, numArgsOut設置輸出參數(shù)數(shù)量,solve_key_point函數(shù)計算結果可以通過調(diào)用子VI的方式進行二維數(shù)據(jù)解析, 其調(diào)用VI如圖10所示.在實際的計算應用過程中, 過渡數(shù)據(jù)不建議進行解析, 可以提高程序運算執(zhí)行效率.
圖10 solve_key_point函數(shù)調(diào)用子VI程序框圖
將線輪廓度聯(lián)合編程子VI嵌入到主程序中完成線輪廓度的評價, 聯(lián)合編程子VI如圖11所示.子VI采用平鋪式順序結構設計, 順序調(diào)用型線分類、曲線偏移、理論邊界區(qū)域計算、線輪廓度評價等函數(shù),根據(jù)實時采樣點坐標信息, 計算理論輪廓與測量輪廓Fréchet距離, 最終得出線輪廓度值.
圖11 線輪廓度聯(lián)合編程子VI程序框圖(局部)
線輪廓度評價軟件主要由3部分組成, 分別是運動控制、數(shù)據(jù)采集、數(shù)據(jù)分析.以 LabView 2019為軟件開發(fā)工具, 調(diào)用線輪廓度評價算法.NET程序集, 在Windows 環(huán)境下使用.運動控制與數(shù)據(jù)采集實現(xiàn)整個測量系統(tǒng)的信息輸入和輸出, 以及多傳感器的實時數(shù)據(jù)采集, 控制界面前面板與數(shù)據(jù)采集程序框圖如圖12與圖13所示.數(shù)據(jù)分析部分利用線輪廓度評價算法完成對測量數(shù)據(jù)的處理分析, 得到換擋轂換擋溝槽線輪廓度值.并在前面板中顯示出邊界區(qū)域, 理論輪廓, 采集輪廓, 清晰直觀地判斷出換擋轂工件輪廓加工的合格性, 并得出評價結果, 如圖14所示.目前, 線輪廓度評價軟件已在項目示范應用現(xiàn)場投入應用, 軟件運行良好.
圖12 控制界面(局部)
圖13 數(shù)據(jù)采集程序框圖(局部)
圖14 線輪廓度評價結果
本文采用聯(lián)合編程技術方式完成了換擋轂換擋溝槽輪廓的線輪廓度評價軟件的開發(fā)工作.其核心部分就是通過LabView搭建主體軟件, 并利用Matlab編寫線輪廓度評價算法由LabView進行調(diào)用, 完成線輪廓度評價.同時, 通過軟件驗證, 證明了該聯(lián)合編程方式的有效性和實際應用的可行性.Matlab和LabView都是主流的工程應用軟件, 兩者結合將會突破軟件自身的局限性, 加速系統(tǒng)的開發(fā)進程, 更加高效快速的解決工程應用難題.