摘 要:從COM的基本原理出發,分析了其在數控磨削中的應用優勢,并結合實際案例分析了利用COM實現混合編程的過程,說明其在數控領域的應用是具有較大優勢的。
關鍵詞:COM組件 接口功能 磨削加工 應用實例
中圖分類號:TP311 文獻標志碼:A 文章編號:1672-3791(2013)02(c)-0039-02
1 COM組件概述
所謂的COM組件技術是微軟公司在20個世紀90年代創建的,現在已經成為微軟公司、數據設備公司等支持的軟件組件結構標準。開發COM的最初目的就是讓應用程序方便定制,為對象鏈接的嵌入提供支持。COM技術提供了創建兼容對象的技術規范,以及其在windows系統下的通信規范。COM組件從根本上看是一套為組件架構而設置的文檔,提供了一種編寫與語言無關組件方法,COM具有一個特定的COM庫,即API,這就給用戶提供了組件管理服務。這個API的大多數的代碼都可以支持分布式或者網絡化的組件。Windows系統上的分布式COM在實現過程中提供了網絡上其他組件通信所需要的代碼。COM組件是利用Win32動態鏈接庫或者可執行文件的形式來發布代碼執行指令,這就使得COM規范編寫的組件可以滿足系統程序的編輯需求。
COM接口在應用中定義了接口的功能,COM組件負責完成具體的功能。一個COM組件通過定義接口對象基類或者嵌套類等方式完成多個接口的對接,這樣就可通過定義接口的類別來實現功能。COM組件作為COM接口的具體實現,設計為二進制的單元,并以動態庫和可執行程序的形式表達。COM在執行時可以在主進程內也可在其外部,但是可執行程序形式存在的COM組件只能在主進程外。
在COM組件技術中,其也看做是服務器,根據組件與客戶之間的關系,可以對其進行分類,即進程內、本地、遠程。而后兩種進程也就是外服務器形式。進程內服務器就是指服務器和客戶在同一個進程空間內完成運行,進程內COM組件是以DLL形式封裝的組件。當服務器與客戶在同一臺計算機上,但運行的空間是相對獨立的,這個服務器為本地服務器,而其封裝形式為EXE。當COM組件與客戶不在同一臺計算機上時,這個進程就是遠程服務,其封裝文件可以是EXE也可是DLL。如果是DLL封裝,遠程服務器的計算機就需要一個代理進程來實現互動。
2 COM組件技術在數控磨削中的應用
2.1 總體思路
計算機技術的不斷發展,數控的智能化與精細化也隨之提高,而其控制系統也從專用系統轉變為靈活的開放式可編輯系統,即可以針對不同的加工流程進行靈活的調適。這種體系的轉變是的機床的生產商可以從分的利用計算機的資源,來提高數控的靈活性,以此實現一機多用的目標。系統的開放也為用戶帶來了極大的便利與成本節約,如磨床用戶可以開發適應自身生產需要的數控系統以及人機交互界面。此時利用二次開發的方式,突出VB和MATLAB的優勢就可極大的提高編程效率。具體思路是借助COM組件來實現程序的開發,從編輯與設計輸出接口—— 創建COM組件工程—— 編譯生成COM組件—— DLL文件—— 用戶設計VB開發,經過這個流程就可實現對數據磨削的程序開發,以適應生產需求。
2.2 COM組件建立與調用
2.2.1 組件建立過程
通常在VB與MATLAB之間實現調用有以下措施:動態數據交互、ActiveX自動化、中間文件傳遞、Matrix VB措施、COM組件技術。以上多種措施中前三個不能與MATLAB相配合,不能實現軟件一直,而第四種已經停止發布,最佳的方式就是COM組件生成器,以保證MATLAB接口的需求。這個組件技術可以將MATLAB開發的算法程序與相關的支撐函數數據庫進行一并打包,形成一個組件,從而構建一個獨立的COM對象,并對其進行集成融入到應用程序中。這樣的方式可以脫離對MATLAB環境的依賴,靈活性較大。所以數控磨削中可以采用此方式實現混合編程。在編程過程中采用的步驟如下:在MATLAB的M文件編輯器中編寫函數形式的文件,并設計其輸出的參數;然后在MATLAB中執行相關com tool指令,進入到COM界面;隨后建立一個COM Builder的文件,完成對磨削參數的設定,如名稱、類別等;完成后載入M文件,執行后生成COM組件;最后在VB環境中載入相關COM組件,并對接口調用,實現整個程序的設計。
2.2.2 設計過程分析
文件的編寫。在程序設計中,本文以凸輪的磨削為例,按照凸輪加工需要的數據來實現程序的編制,在凸輪的加工中通常都會有一個進程表,生程表數據數據可以直接導出凸輪磨削的數學模型。凸輪磨削的數學模型所描述的是在凸輪零件的幾何數據,計算獲得的相關與零件各個軸向之間的關系,數控系統利用這個數據來控制零件的相對運動模式,在凸輪轉動的同時加工設備產生進給,從而完成對毛坯的加工,最終獲得凸輪。通常加工工藝的指令給出凸輪的基本數據是一系列的具有離散性的數據點,直接利用這些離散數據是不能實現對凸輪磨削的數學建模的,尤其是在數據模型中存在導出問題時無法滿足計算的需求,所以應將離散數據擬合起來,才能體現數據的整體性,并保證加工的精度。MATLAB中可以對三次樣條曲線進行擬合的命令,可以非常方便的對離散數據進行計算,用戶不需要利用額外的軟件來完成對其算法的開發。將凸輪數學模型的算法編寫成M文件也就相對容易。只要在MATLAB下運行相關代碼即可實現。在代碼運行中,需要定義的函數包括:rl、R、ang、h、Epuxiron等輸入參數,rl表示的是凸輪滾子半徑,R則代表砂輪的半徑,ang、h則表示升程表中轉角和升程的基本數值,而Epixiron則代表加工余量。X和angelphy則是代表輸出值,分別表示砂輪機床的位移值和轉軸的轉角值,獲得上述數據后,就可在MATLAB內生成一個M文件。
2.2.3 COM組件的建立
編寫完M函數文件后,設計中可以利用MATLAB所提供的打包工具來生成一個COM組件,在MATLAB中的指令行上輸入一個指令“com tool”就可看到一個工程編輯器,即“MATLAB LAB Builder”窗口。在此窗口上進行操作,點擊“file”—— New Project“,就可生成一個新的工程文件,并在此實現參數的設置,審核后將前面的M文件添加到工程中,點擊“Build”—— “COM Object”就可完成對相應組件文件的建立。生成組件會自動的在計算機中完成注冊,如果這個組件在設計中要移動到其他計算機中,如從計算機中移植到PC數控平臺上的時候,可以在對應的數控系統上運行相關的命令,即DLL文件進行注冊,就可完成移植。到這里用戶所編寫的M函數就已經成為一個COM組件對象了。
2.2.4 COM組件的調試
完成COM組件對象的生成后,還需要在VB中對其進行調用,才能實現二次開發的目的。在VB開發工程中點擊“工程”——“引用”菜單,選擇相關的MATLAB所生成的dll文件,將其添加到一個對應的創建工程中,以此完成對其的調用。VB程序中對需要調用的dll進行計算時,可調用相應的接口函數,而在使用接口函數前必須創建相關的類別,其方法如下:
Dim mydll As New mytestcom2. Mytestcom2//mydll為類別的實例名稱
接口函數通常是將M文件作為名稱,其中第一個參數表示輸出參數的個數,在接口函數參數中,其輸入參數必須是double類型,而輸出則為variant類型。
Dim X As Variant//定義X軸砂輪架位置
Dim angelphy As Variant//定義C 軸轉角
Dim r1val As Double//定義滾子半徑
Dim Rval As Double//定義砂輪半徑
……
Call mydll.mytestcom2(2,X,angelphy, rlval,Penal,vb_ang,vb_h,vb_ Epuxiron)//括號內為函數參數,2代表函數有兩個輸出值,分別為X和angelphy,剩下的r1val,Rval等5個輸入參數值,分別和所編寫的M文件中的函數相對應,實現了函數的傳遞。而X值和angelphy值則是最終寫入到數控程序內的x軸軌跡和c軸轉角值,這樣就可生成最終的數控文件。
值得注意的是,MATLAB軟件在計算中會將所有的數據都看做是一個矩陣,所以在處理接口函數的變量時應將其看做是二維數據組,否則就會造成數據的混亂。設計完成的軟件通過程序可以載入凸輪升程表的數據,經過調用dll計算相關的凸輪轉角和砂輪架之間的位置關系,進而實現對其加工的數控,加工程序在實際的應用中也獲得了較好的效果。
3 結語
在數控磨削中需要編寫程序為數控計算機提供連貫的指令,在程序編寫中利用COM組件技術可以實現MATLAB與VB的結合,從而實現混合編程,并將其應用在數控磨削的二次開發中,從而實現了高校靈活的編程過程,也可更換的適應客戶需求。
參考文獻
[1] 趙海春.COM組件的設計與使用[J].邵陽學院學報:自然科學版,2009(1):69.
[2] 張盛,盧建華,盧欣華.COM組件技術研究[J].科技信息,2008(26).
[3] 劉玉利,左勇,唐翠榮.基于Matlab與VB混合編程的壓痕直徑測量軟件設計[J].計測技術,2009(2):21.
[4]曾浩然,張琳娜,趙鳳霞.VB和Matlab混合編程在圓度誤差評定中的應用研究[J].制造技術與機床,2011(8):34.
[5]張龍斌,袁瑤.基于EXE的VB與Matlab混合編程在電力系統計算中的應用[J].黑龍江電力,2010(5):29.