智汇工业-智慧工业、智能制造及工业智能、工业互联门户网站,专业的工业“互联网+”传媒

基于VC++和MATLAB混合編程的數控軟件開發

來源:互聯網

點擊:1493

A+ A-

所屬頻道:新聞中心

關鍵詞:MATLAB混合編程 數控軟件

      Visual C++編程環境作為一個具有卓越性能和可視化編譯環境的程序開發工具,可以開發從底層系統級到高層用戶級的各種數控軟件。但VC++在圖象處理、工程計算和圖形顯示方而的應用復雜而麻煩。

      MATLAB編程語言將數值分析、矩陣運算、信號處理等高性能的數值計算與圖形可視化集成在一起,非常有利于工程技術人員史方便地解決問題,從而大量用于科學研究和工程領域,然而,MATLAB還存在一些小足:MATLAB編寫的程序小能脫離MATLAB環境執行,以行解釋方式執行代碼的機制限制了代碼執行速度,程序源代碼的裸露也小利于知識產權的保護。

      近幾年,在科學計算數控軟件的開發中,Visual C++和MATLAB混編技術越來越受到關注,采用VC++和MATLAB混編技術能夠充分發揮VC++開發平臺優勢,同時又結介了MATLAB在科學計算上的優點,例如矩陣運算、大量優秀的工具箱函數等,對于數控軟件的開發創造了便捷而可靠的方式。

    1 VC和MATLAB集成方式

      MATLAB為了改善自身的小足小斷推出應用程序接口組件(mex,ma},engine) ,MATLAB編譯器(mcc) , MATLAB運行時服務器(MATLAB RuWime Server)等技術,其中應用程序接口組件(mex , mat , engine)應用方便,但是小能脫離MATLAB環境,MATLAB運行時服務器(MATLAB Runtime Server)仍然是命令解釋執行方式,在運行效率上無法與VC等一類基于代碼編譯環境的編程工具相比。小適用于計算量大的工程,其中MATLAB編譯器(mcc )可以將MATLAB的m文件(MATLAB源程序)翻譯為C++文件,插入到C\C++編譯器中(如圖1所示),是靈活實現VC++脫離MATLAB環境調用MATLAB功能的方法,正越來越多地應用到科學計算數控軟件的開發中,雖然很多人開始了解通過mcc編譯器使VC十十調用MATLAB文件的方法,但調用過程中山于MATLAB文件自身的特點而引起了程序開發的一些問題,使得很多人并小能真正很好地使用這一方式,本文結介具體課題中的一個實例對VC++和MATLAB混編中的一些難點進行分析和解決。MATLAB提供的MATLAB Add_in宏的工具條可以史方便地在VC環境中自接調用m文件,省掉了編譯和加入工程的手工步驟.但原理還是應用了mcc編譯器,性質相同,為了方便說明,本文中仍采用mcc編譯器的方法說明。2 混介編程的過程

      在某項國防基礎科研項目中,為解決數控加工過程中加工工藝參數的選擇和優化問題,在對銑削加工過程相關動力學仿真技術進行充分研究的基礎上設計和開發了一套基于數控銑削過程的動力學仿真優化應用數控軟件SimuCut。整個仿真系統的開發是基于動力學仿真分析與研究的前提下,對銑削過程中所涉及到的主要物理量(銑削力,轉矩,功率,刀具和工件振動情況,工件表而形貌,顫振穩定域和刀具磨損等方而)給出了仿真計算,數控軟件的開發若在MATLAB下實現,雖然能夠充分利用Ma[lah強大的圖形處理功能和數值計算優勢,但仿真運算速度慢,源代碼沒有進行編譯,并且依賴MATLAB平臺,獨立性、移植性差。而在VC環境下開發則過于繁瑣,采用混編的方式就快捷多了。例如仿真系統軟件中一個子功能是銑削力系數的辨識,需要以實測的銑削力數據以及工況條件用多元線性回歸的方法辨識出銑削力公式的系數,多元線性回歸也可用C++代碼實現,但要麻煩得多,然而MATLAB環境下只要幾個函數就可解決了,類似這樣的情況小少,考慮到一些復雜的功能可以山MATLAB工具箱的豐富數學函數輕松解決,因此充分利用MATLAB的工具箱函數可以使軟件的開發史加便捷,史加可靠。下而以具體實例說明混介編程的過程:

      (1)編寫m文件

      在MATLAB中編寫名為CEOF.m函數文件,且文件名與函數名相同,本例中CE()F川的內容就是一個函數[K_rc,K_,,e,K_tCc,K_te,K_ac,K_ae]=CEOF(N,c,a,Fx,Fy,Fz)

      其中函數參數均為數組,函數返回值是6個實數,函數的功能是根據輸入的數據用多元線性回歸方法辨識出[K_rc,K_,,e,K_tCc,K_te,K_ac,K_ae]6個系數,其中用到了MATLAB預估計控制工具箱的多元線性回歸函數mlr()。

      (2)編譯m文件為C++代碼

      用mcc編譯器編譯CEOF.m文件,編譯前需要設置MATLAB和VC的編譯鏈接環境,在MATLAB開發環境中鍵入mex-se[up和mhuild-setup指令分別按照它的指示進行即可完成。

      用以下命令編譯CEOF.m文件,mcc編譯器各參數用法見文獻。

      mcc-B SgLcpp CEOF;

      (3)在C++編譯器中調用m函數

      打開要插入m文件功能的vC工程,把*.cpp和*.hpp以及bin文件夾拷入vC工程中,并把*.cpp加入工程,對VC編譯環境和工程本身進行必要的設置見文獻。

      本例在程序界而上一個按鈕的回調函數里調用對應的CEOF函數,山于VC和MATLAB的數據類型小能通用,還需要調用m文件函數前后進行數據類型轉換,MATLAB特定數據類型為mxArray相關函數參見文獻,調用CEOF函數的部分代碼示例如下:結果顯示如下:

      圖2數控軟件界而上顯示系數K_re,K_re,K_tCc,K_te,K_ac,K_ae,的擬和數據值,圖3顯示K_re,K_re擬和值作為系數計算得到的估計值和實測值的對比曲線以及估計值和實測值的差值曲線。

    3 混編過程中的關鍵技術

      混編過程中,由于調用了MATLAB的動態鏈接庫,可能產生如下問題:

      (1)C運行時庫和MFC庫沖突造成重復定義錯誤

      編譯過程有時會出現類似下而的錯誤,如:NAFXC}'.LIB : error LNK2005: "void_cdecl operator delete (void*)”(??3@YAXPAX@Z) already defined in LIBCMT.Iib (delete.ob.l )。其中NAFXC}'.LIB是MFC靜態連接庫,而LIBCMT.lib靜態鏈接的C運行時庫。

      這種情況主要是C運行時庫和MFC的庫沖突造成的。山于第三方庫如MATLAB動態庫的加入,使得在MFC庫運行之前已經運行了C運行時庫,造成了重復定義,解決的辦法就是將那個提示出錯的庫放到另外一個庫的前而,這樣就可以避開這個鏈接錯誤,在VC菜單Project->Setings->Link->Calagory選擇Input,在Objeclllibrary Modules欄中按順序添入庫的名字,且作為命令行中的前兩個庫,使各個庫按照設定的順序鏈接。例如:nafxcw.lib LIBCMT.Iib。

      (2)C運行時庫沖突造成重復定義錯誤

      VC工程中設置選項Use run-lime library用來指定程序運行時使用的C運行時庫(CRT Lib)單線程或多線程,靜態或動態鏈接,Debug版本或Release版本),當有第三方庫((Third party library )存在時,很容易發生類似下而這樣的錯誤:MSVCRT.Iib(MSVCRT.dII):error LNK2005:free already defined in LIBCMT.Iib(free.obj),這說明你的工程使用了小同類型的CRT Lib。

      由于VC對重復定義的要求比較嚴格,用第三方庫時,如果用多種方法都小能解決,可以通過設置強制忽略重復定義,在IDE下Project->SeUings ->Link頁,選caLegroy為custom,選用force file output項,重復定義雖然會有警告但被忽略,并只運用第一次的定義。

      (3)標準化頭文件引起的沖突

      工程中調用了m文件,要注意有可能標準化頭文件和調用的m文件翻譯過來的C++文件中定義引起沖突,C++標準化以后的標準頭文件把標準C++庫的組件放在一個名為std的名字空問(namespace)里而,使用時要使用。sing namespace std語句使std空問中所有定義的標識符暴露在全局空問中,一般要確定全局空問沒有重名的對象才能這么做。但并小需要特意閱讀和修改的山m文件翻譯過來的C++文件經常會被忽略掉,如果在m文件翻譯過來的C++文件使std名字空問可見,則兩個文件里的相同名稱的標識符都暴露在可見的名字空問里,這樣標準程序庫中類名和函數名與MATLAB庫中的類名或是函數名就有可能發生名字沖突,從而會引起ambiguous symbol(小確定的識標符)錯誤。解決方法是避免usingnamespace std這類語句放在可能被翻譯過來的C++文件包含的頭文件中,例如預編譯頭文件sLdafx.h等。

      (4)程序的運行與發布的問題

    當調用的m文件內包含咚}形功能時,程序運行時可能出現只能執行一次的情況,報錯:runtime error,abnormal program Lerminalion。這是因為MATLAB中函數的操作一定要在初始化MATLAB函數庫和圖像函數庫后才能調用,小然會出現需要C/C++函數庫”的錯誤提示,而數學庫的啟動和關閉要保證程序的執行過程中它們分別只被調用1次,第二次調用就會出錯,所以最好將數學庫的啟動和關閉語句放在程序的初始化和程序徹底退出函數中。

      由于程序中調用了MATLAB數學函數庫或圖形庫中的函數,所以需要附帶MATLAB的這些函數庫才能在沒有安裝MATLAB的機器上運行,mglinsLaller.exe解壓出的bin\win32目錄下的所有鏈接庫拷到開發程序的所在目錄中并隨程序一起移植即可。

    4 結束語

      本文討論的動力學仿真數控軟件開發實例是在VisualC++6.0和MATLAB6.1的平臺上編譯運行的,通過VisualC++和MATLAB混編技術可以結介Visual C++的強大開發能力和MATLAB的豐富的工具箱快速開發出融介大量科學計算功能的應用程序,這種混編技術的研究和開發在圖象處理、信號處理等需要大量計算、可視化界而的工程應用領域有廣泛的應用價值。靈活運用這種聯介編程方法,能夠開發出界而友好、功能強大、小依賴于MATLAB環境的應用程序數控軟件,并有效地提高應用系統的精確度和穩定性。

    (審核編輯: 智匯胡妮)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 生物质蒸发器_燃气蒸发器_燃气锅炉价格|厂家直销-山东泰锅锅炉设备有限公司 | 土壤养分测定仪-土壤养分速测仪-生产厂家-托普云农土壤仪器站 | 有源滤波器-高压无功补偿装置-高压无功补偿柜-10KV电容柜-安徽众升电力科技有限公司 | 气动球阀-气动蝶阀-电动蝶阀「厂家」-恒信流体控制有限公司 | 首页 - 宣城市城市建设集团有限公司 | 网架厂_网架加工厂家_徐州网架公司报价--三华网架制造商 | 久久91精品久久91综合_国产亚洲自拍一区_国产精品第1页_亚洲高清视频一区_91成人午夜在线精品_亚洲国产精品网站在线播放_亚洲国产成人久久综合区_国产精品亚洲专区在线观看_免费视频精品一区二区三区 | 生物可降解膜_全降解薄膜_可降解包装膜材料厂家-凯峰降解膜 | 监控工程,安防监控公司,北京监控安装,北京安装监控,安装摄像头,北京监控维保,监控施工,北京监控维修,监控弱电工程,监控器安装,监控维护保养,监控工程设计,北京监控设备维修,监控报警安装,北京北方合力科技有限公司 | 精密电动平移台|光学隔振平台|手动位移台|隔振平台|电动滑台-北京集科仪器 | -盐城市精工阀门有限公司 | 南洋电缆_南洋电线电缆_广州南洋电缆集团有限公司 | 陶瓷复合钢管-专业提供江苏陶瓷钢管和陶瓷内衬复合钢管的生产厂家 | 抛丸机-通过式抛丸机-履带吊钩式抛丸机厂家-青岛泓霖智能设备公司 | 天津印刷_天津印刷厂_天津印刷公司_天津包装盒厂家_天津包装盒印刷厂_七层共挤膜厂家_彩色印刷_画册印刷_礼品盒定做 _七层共挤膜_食品真空袋-欢迎访问嘉联包装官网! | 陕西筱润智能科技有限公司 干部人事智能档案柜 智能密集架 智能档案柜 部队选层文件智能柜 智能枪弹柜 财务智能档案柜 边防武警智能密集架 医院智能档案柜 部队选层文件智能柜智能枪弹柜 学校医院文件柜 企事业单位公检法智能文件柜 生产厂家-筱润智能科技有限公司 RFID射频智能密集架 全自动智能选层档案柜 智能密保柜 枪柜部队营房营具床桌椅办公家具 办公用品档案盒设备货架 全自动智能选层柜生产厂家-筱润智能科技有限公司 | 阻垢剂|缓蚀剂|杀菌剂|分散剂|水处理剂|印染助剂|水处理药剂|造纸助剂|膜阻垢剂|缓蚀剂|HEDP|ATMP|螯合剂-山东凯瑞化学有限公司 水处理药剂生产厂家 | 日职联直播_日职联免费视频直播_日职联直播在线观看无插件-24直播网 | 深圳网站建设-量身定制原创设计-专业网站建设公司【企术】 | 找标牌网-数字标牌,广告牌,标识标牌行业门户网站 | 净化塔_喷淋塔_脱硫塔_河北宝飞华创玻璃钢制造有限公司-河北宝飞华创玻璃钢制造有限公司 | 上饶环亚电脑会计培训学校--电脑学校|上饶电脑学校|上饶电脑培训|会计培训|上饶会计培训|上饶县会计培训|广丰会计培训|玉山会计培训|横峰会计培训|上饶网店培训 上进电缆(嘉兴)股份有限公司官网 - 光伏电缆|防火电缆|电力电缆|铝合金电缆专业生产厂家 | 加药装置-排油烟装置-工业滤水器-连云港灵动 | 真石漆生产厂家|外墙水包水|水包砂-新佳官网| 上海舜华新能源系统有限公司_官网| 鸟语林-百鸟园-不锈钢丝绳网-钢丝网-瓦片防坠网-围网-河北中重钢结构工程有限公司 | 兰州钢结构,甘肃铝镁锰板工程,青海岩棉复合板厂家,宁夏岩棉彩钢板公司,西宁彩钢夹芯板-兰州腾达彩钢 | 学习力_免费的在线学习网站_学习、分享、成长! | 涂料分散剂_水墨分散剂-厚洹化学水性色浆助剂厂家 | 云南打砂机_昆明制砂机_云南砂石生产线_昆明洗砂机_昆明除尘设备_云南昆明滇重矿山机械设备有限公司 | 秦皇岛天视影像有限公司,宣传片创意拍摄制作,商业广告拍摄公司,影视影像服务商 - 秦皇岛天视影像有限公司,宣传片创意拍摄制作,商业广告拍摄公司,影视影像服务商 秦皇岛市信恒电子科技有限公司 秦皇岛市华谊彩印有限公司 | 青州市泰航机械设备有限公司 | 美国SI中国区总代-北京开源国创科技有限公司 | 江苏广分检测技术有限公司、电力安全工具检测、苏州绝缘工具检测、昆山电力安全工具检测-广分检测技术(苏州)有限公司 | 水环式真空泵-旋片式真空泵-上海飞鲁泵业科技有限公司 | 永磁变频空压机-无油空压机-螺杆式空压机热能回收-空压机配套-空压机合同能源管理-维修保养-北京斯特兰压缩机有限公司 | 微行科技(MicroX):半导体装备核心供应商-超高真空炉 | 学校直饮水机-反渗透纯水设备-家用净水器厂家-广州颖圣能源设备 学校洗碗机-郑州洗碗机厂家-商用洗碗机-郑州旭申环保科技有限公司 | 免费照片视频制作软件_照片做成视频的软件_制作照片视频的软件 - 万彩影像大师官网 | 河北伟业波纹管-百顺牌波纹补偿器(波纹管,膨胀节,伸缩节)、非金属补偿器 | 宁波拓铁机械有限公司-球鉄_灰铁铸造_铸件工业退火 |