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

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

來源:互聯網

點擊:1472

A+ A-

所屬頻道:新聞中心

關鍵詞:VC++MATIAB 數控軟件


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

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

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

    1 VC和MATLAB集成方式

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

    2 混合編程的過程

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

    3 混編過程中的關鍵技術

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

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

      編譯過程有時會出現類似下面的錯誤,如:NAFXCW .LIB errprLNiC2Q0}x "void--叫ec,operdtt)J}delete (void*)”3@YAXF}IJC}乃alres}dY debuted } L1}3CTvfT比山}t}obj)其中NAF}CCW. LIB是M FC靜態連接庫,而LIBCM T.Iib靜態鏈接的C運行時庫。

      這種情況主要是C運行時庫和MFC的庫沖突造成的。由于第三方庫如MATLAB動態庫的加入,使得在MFC庫運行之前已經運行了C運行時庫,造成了重復定義,解決的辦法就是將那個提示出錯的庫放到另外一個庫的前面,這樣就可以避開這個鏈接錯誤,在VC萊單P rCfjeet>etti}tgx>L. inl>aitlgary選擇input在ObectllibraryModules欄中按順序添入庫的名字,且作為命令行中的前兩個庫,使各個庫按照設定的順序鏈接。

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

      VC工程中設置選項LT se rurYti'n e I ib } ry用來指定程序運行時使用的C運行時庫單線程或多線程,靜態或動態鏈接,Debug版本或Release版本),當有第三方庫(Third party library)存在時,很容易發生類似下面這樣的錯誤:errorLNK2005free already defined in LIBC0vIT lib這說明你的工程使用了不同類型的CRT L屯一般如果確定工程里其他的庫都是統一的,很可能問題出在MATLAB庫上,經調試判斷MATLhB庫調用的是MSVCRT fifa也就是動態C運行時庫,建議在User Runtine libraryy中選擇M u Iti-Tread.DLL。

      由于vc對重復定義的要求比較嚴格,用第三方庫時,如果用多種方法都不能解決,可以通過設置強制忽略重復定義。

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

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

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

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

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

    4 結束語

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


    (審核編輯: 智匯胡妮)

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

    主站蜘蛛池模板: 辽宁大卯新能源供热设备制造有限公司官方网站,大卯新能源,大卯新能源供热设备 | 芜湖藦卡机器人科技有限公司| 新颖科技 - 家电及汽车外饰面板供应商 | 绣花厂_电脑绣花厂_手工刺绣加工定制 - 北京丽绣坊工艺品有限公司 | 圆锯机-滚牙机-滚丝轮-滚丝机-滚牙轮-切断机-东莞市溪远泰五金机械有限公司 | 景观造雾_人造雾设备_雾森系统_冷雾降温_雾化消毒_喷雾除尘厂家-成都景程雾森 | 曙海培训-仿真培训Linux培训html5培单片机培训PCB培训python培训PLC培训C语言培训android培训物联网培训无线电培训欧姆龙培训工业机器人培训5G培训Hadoop培训CFD培训项目外包开发咨询 | 暖气片-工程暖气片厂家【专注工程暖气片30年】-北铸暖气片 | 烟台真空包装,烟台木包装,烟台熏蒸木箱-烟台福岭木制品有限公司 烟台通风管道,烟台风机风管,烟台风阀-烟台福莱通风设备有限公司 | 合肥年会策划-合肥开业庆典公司-合肥会务活动礼仪公司-合肥展台搭建/音响租赁公司 [七色海] | 久久91精品久久91综合_国产亚洲自拍一区_国产精品第1页_亚洲高清视频一区_91成人午夜在线精品_亚洲国产精品网站在线播放_亚洲国产成人久久综合区_国产精品亚洲专区在线观看_免费视频精品一区二区三区 | 耀美软瓷施工队-13638350103-专注于软瓷施工勾缝的贴软瓷施工队 - 软瓷,软瓷施工,软瓷勾缝,软瓷怎么施工,软瓷怎么勾缝,贴软瓷,软瓷施工队 | 石家庄团建公司|石家庄拓展训练|石家庄拓展培训|石家庄公司团建|石家庄拓展公司-石家庄启聚团建公司 | 净水器厂家_杭州净水器厂家_杭州拥政科技有限公司 | 直膨式空调机组_风冷恒温恒湿_转轮式热回收_屋顶式空调机组_德州瑞尼森环保科技有限公司 | 立式加工中心_龙门加工中心_卧式加工中心-山东威达重工股份有限公司 | 拉丝机_拔丝机_拉丝设备_丝网机械 - 安平县泰煌拉丝机厂家 | 慢直播摄像头厂家,监控直播摄像机厂家,景区慢直播设备,rtmp推流直播摄像头,实时摄像头监控直播-监控慢直播厂家:专注监控慢直播系统解决方案 | 耐磨陶瓷涂料_耐磨防腐涂料_KNM防腐陶瓷涂料-北京耐默 | 厦门公司注册-提供工商登记记账代理服务和营业执照代办地址与注册流程及费用 | 桥梁伸缩缝_桥梁伸缩缝厂家_桥梁伸缩缝价格-衡水淞皓路桥养护工程有限公司 | 气体检测仪,多功能气体检测仪,四合一检测仪,氯气检测仪,有机挥发气体检测仪,气体报警器-南京诺邦电子科技有限公司 | 武汉净化机-武汉全热新风换气机-武汉静音送风机-武汉东信新风节能设备有限公司 | 压滤机入料泵_渣浆泵_耐磨污水泵_保定森力克水泵制造有限公司 | 围挡厂家_施工围挡_PVC围挡_建筑工程围挡_深圳市旭东钢构技术开发有限公司【官网】 | 上海钧尚电器有限公司 - Faulhaber电机 AMETEK pittman电机 AMETEK ROTRON军用航空风机 Exlar电动缸 MAE电机 MCG电机 CP电动工具 马头工具 AMCI驱动器 直流电机 减速箱 直流伺服电机,无刷电机,直线电机 直流防爆电机 防爆电机 汽车助力转向电机 EPS电机 faulhaber motor faulhaber gearbox NANOTEC电机 ELWOOD电机 PHYTRON电机 EXLAR伺服电动缸 高力矩、高性能直流电机,音圈电机,风机,直流风机,航空风机 | 中华收藏网-中藏网-藏品拍卖|字画拍卖|艺术品拍卖|古玩城|收藏资讯|古玩交易|书画定制 | 液压提升设备,液压顶升装置,钢内筒提升设备,储罐液压顶升_沧州鼎恒液压机械制造有限公司 | 铜陵耐火砖|铜陵耐火浇注料|铜陵耐火材料|铜陵市金钟物资经营部【官网】 | 九江江菱电梯有限公司 | 云南亿华工贸有限公司-云南护栏网-云南锌钢护栏-昆明市政护栏-工地护栏-昆明护栏网厂家 | 智能访客系统 - 来访登记系统_微信预约系统_人员出入管理系统_访客机_人脸识别系统门禁闸机 | 环链电动葫芦_钢丝绳电动葫芦_电动葫芦厂家_上海沪工起重机械有限公司 | 智齿科技-智齿客服 | 在线客服_呼叫中心_客户联络中心方案 | 直膨式空调机组_风冷恒温恒湿_转轮式热回收_屋顶式空调机组_德州瑞尼森环保科技有限公司 | 铸造厂_铸造厂家_硅溶胶熔模铸造-盐城市春秋精密机械有限公司 | 专题秀_汇聚网络热门专题_实时报道各类新闻专题资讯 | 上海安防网-上海安全防范报警协会 | 长春网站优化,网络推广,seo快速排名,1.8元/词/天-同信长春网络公司 | 呼吸家官网|肺功能检测仪生产厂家|国产肺功能仪知名品牌|肺功能检测仪|肺功能测试仪|婴幼儿肺功能仪|弥散残气肺功能仪|肺功能测试系统|广州红象医疗科技有限公司|便携式肺功能仪|大肺功能仪|呼吸康复一体机|儿童肺功能仪|肺活量计|医用简易肺功能仪|呼吸康复系统|肺功能仪|弥散肺功能仪(大肺)|便携式肺功能检测仪|肺康复|呼吸肌力测定肺功能仪|肺功能测定仪|呼吸神经肌肉刺激仪|便携式肺功能 | 上海商标注册,上海注册商标,上海商标代理,国际商标注册,版权登记-上海律点知识产权代理有限公司 上海山田机械有限公司 |