王 鑫,馬 丁
1.91245部隊,遼寧葫蘆島 125001
2.91851部隊,遼寧葫蘆島 125001
vc++與MATLAB開發(fā)駕駛模擬控制系統(tǒng)
王 鑫1,馬 丁2
1.91245部隊,遼寧葫蘆島 125001
2.91851部隊,遼寧葫蘆島 125001
本文在介紹了VC++與MATLAB編程方法的基礎(chǔ)上,開發(fā)了駕駛模擬控制系統(tǒng)仿真實例,詳細(xì)描述了其具體的實現(xiàn)過程。
VC++;MATLAB;駕駛模擬;控制系統(tǒng)
MATLAB是比較流行的三大數(shù)學(xué)軟件之一。它在數(shù)學(xué)應(yīng)用類軟件中數(shù)值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界面、連接其它編程語言的程序等,主要應(yīng)用于工程計算、控制設(shè)計、信號處理與通訊、圖像處理、信號檢測、金融建模設(shè)計與分析等領(lǐng)域。
MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完成相同的事情簡捷得多,并且mathwork也吸收了像Maple等軟件的優(yōu)點,使MATLAB成為一個強大的數(shù)學(xué)軟件。在新的版本中也加入了對C,F(xiàn)ORTRAN,C++ ,JAVA的支持??梢灾苯诱{(diào)用,用戶也可以將自己編寫的實用程序?qū)氲組ATLAB函數(shù)庫中方便自己以后調(diào)用。本文主要闡述MATLAB結(jié)合vc++可視化編程軟件開發(fā)駕駛模擬控制系統(tǒng)。
在VC環(huán)境中編寫應(yīng)用程序界面調(diào)用加載MATLAB動態(tài)鏈接庫,實現(xiàn)兩者合作開發(fā)應(yīng)用程序。該種方法的配置步驟:
1)首先在MATLAB命令提示符下輸入mbuild-setup 命令,選擇visual C++6.0編譯器完成編譯器設(shè)置;
2)設(shè)定頭文件和庫文件路徑。在VC++環(huán)境設(shè)置包含文件,將MATLAB6.5中的msvc++6.0添加進去。然后以同樣的方法添加MATLAB6.5的包含文件;
3)設(shè)置編譯連接選項。在VC++環(huán)境菜單欄中選擇Project->setting,然后選擇link選項卡,在object/library modules欄中添加mclmcrrt.lib libtest.lib;選擇General選項卡,在Microsoft Foundation Classes欄中選擇Use MFC in a Shared Library。
模擬控制系統(tǒng)是以仿真的方法實現(xiàn)各種功能,這也是目前國內(nèi)汽車生產(chǎn)研究的普遍方法,同時仿真的結(jié)果也為駕駛員提供十分接近于現(xiàn)實中的訓(xùn)練效果。模擬控制系統(tǒng)利用計算機的計算功能和可視化手段模擬駕駛的動態(tài)特性,從而解決駕駛員直接操作實體可能造成的事故和不必要的損失
完成MATLAB與VC++接口環(huán)境配置后,就可以按照以上步驟實現(xiàn)駕駛類功能函數(shù)的實現(xiàn)。
1)在MATLAB環(huán)境下編寫油門控制函數(shù),假定該M文件為increase.m,作用是控制油門的大小。程序如下:double CDriveMode::Youmen(void)∥油門轉(zhuǎn)換檢測函數(shù)
2)利用mcc-t-W lib: increaseDLL-T link: lib increaselibmmfile.mlib編譯命令將increase.m文件編譯成C代碼。將生成后的increaseDLL. dl,l increaseDLL. h, increaseDLL. lib 文 件 拷 貝 到VC++ 6. 0所在的工程目錄下。
3)對increaseDLL. h進行一些修改,在#ifdef __cplusplus與#endif之間加入‘extern "C" {’,在#ifdef __cplusplus與#en-dif之間加入‘}’。
4)在VC++ 6. 0工程中引入頭文件: #include " in-creaseDLL.h"。
5)在工程→添加工程→Files中添加increaseDLL. h和increaseDLL. cpp。
6)在工程→Project Settings→Link→General→對象/庫模塊中添加increaseDLL. lib。
7)在構(gòu)造函數(shù)中加入increaseDLLInitialize();初始化由M文件編譯過來的動態(tài)鏈接庫。在析構(gòu)函數(shù)中加入increaseDLLTerminate();釋放系統(tǒng)資源。
本文在軟件開發(fā)過程中,采用基于MCC接口編程方法實現(xiàn)vc++與MATLAB結(jié)合,具有實現(xiàn)簡單、執(zhí)行效率高的特點,是開發(fā)接口程序的有效方法??梢詾楣こ坛绦虻拈_發(fā)提供很好的技術(shù)支持。
[1] 孫鑫.精通VisualC++深入詳解[M].北京:電子工業(yè)出版社,2006.
[2] 蘇金明. MATLAB高級編程[M].北京:電子工業(yè)出版社,2005:215-220.
TP272,TP31
A
1674-6708(2010)18-0126-01