萬偉鋒,許錦標(biāo),黃建杰
廣東工業(yè)大學(xué)自動(dòng)化學(xué)院
基于VC++的串口通信方案在智能炒菜機(jī)器人中的應(yīng)用
萬偉鋒,許錦標(biāo),黃建杰
廣東工業(yè)大學(xué)自動(dòng)化學(xué)院
針對智能炒菜機(jī)器人控制系統(tǒng)的上位機(jī)與下位機(jī)的通訊,擬以VC++為平臺開發(fā)出串口通信網(wǎng)關(guān),從而實(shí)現(xiàn)上位機(jī)對下位機(jī)的各種控制以及上位機(jī)對后臺數(shù)據(jù)庫的訪問與維護(hù)。
智能炒菜機(jī)人;串口通信;VC++
本項(xiàng)目的智能炒菜機(jī)器人是一臺可編程控的通用中式菜肴烹飪機(jī)器,用戶可以自己編寫菜譜程序、也可以直接調(diào)用炒菜機(jī)器人內(nèi)部數(shù)據(jù)庫己存的大量中式菜肴菜譜程序、或者通過網(wǎng)絡(luò)接受外部的菜譜程序1。本文針對的是當(dāng)前智能炒菜機(jī)器人的上位機(jī)程序進(jìn)行的改進(jìn),采用串口通信方案對下位機(jī)與上位機(jī)進(jìn)行通信。本文密切結(jié)合科研課題進(jìn)行研究與設(shè)計(jì),針對支持vmmda1.0通用菜譜指令的智能炒菜機(jī)器人的改進(jìn)采用EIA RS-232C標(biāo)準(zhǔn),在vc++6.0平臺開發(fā)出上位機(jī)與下位機(jī)進(jìn)行交互通信的設(shè)計(jì)方案。本文著重介紹其中的串口通信部分。
在Windows上開發(fā)串口通信軟件通常有兩種方案,一種是基于利用Microsoft的MSComm控件,另一種是采用Windows的通信函數(shù)AIP函數(shù)。相對比較簡單的是利用MSComm控件,MSComm控件不僅有豐富的與串口通信協(xié)議密切相關(guān)的屬性和事件,而且還提供了對串口的各種操作事件,不過它的靈活性比較差,其最不利的是最多只支持16個(gè)串口2。而對于利用Windows通信函數(shù)API編寫串口通信程序時(shí)就必須掌握大量關(guān)于通信的知識,對于沒有經(jīng)過學(xué)習(xí)通信方面知識的科學(xué)工作者而言較為復(fù)雜,它的優(yōu)點(diǎn)是應(yīng)用廣泛,可實(shí)現(xiàn)的功能更強(qiáng)大,非常適合編寫較為復(fù)雜的通信程序3。
表1 為MSComm控件與WINAPI函數(shù)的區(qū)別。
表1MSComm控件與W IN API函數(shù)的區(qū)別
本文設(shè)計(jì)的串口通信方案是用于在上位機(jī)選用WIN CE6.0的操作系統(tǒng)下位機(jī)選用PLC作為控制核心的通信4。由于智能炒菜機(jī)人的串口通信信息量比較小,不需要復(fù)雜的通訊控制,通過對比兩種方案,本文選擇Microsoft的MSComm控件的解決方案。
使用控件驚醒串口程序設(shè)計(jì),主要分為加載控件,初始化以及打開串口,串口處理以及關(guān)閉串口等。
2.1 加載以及使用控件
首先,在對話框中創(chuàng)建通信控件,拖動(dòng)控件圖標(biāo)到窗口上,創(chuàng)建控件ID,他的ID默認(rèn)為IDC_MSCOMM1,要查看或修改該ID值,可右擊MSComm控件圖標(biāo),彈出MSComm控件的快捷菜單,在屬性單擊【General】選項(xiàng)卡,在【ID】右側(cè)的文本框內(nèi)顯示控件ID為IDC_MSCOMM1,可在此處修改ID值,改為IDC_MSCOMM2。在對話框頭文件vccommDlog.h第一行中,加入引用該控件類代碼如下:
2.2 對串口初始化并打開串口
對串口的初始化是對串口的各種參數(shù)進(jìn)行設(shè)置,它包括使用的端口、奇偶校驗(yàn)、數(shù)據(jù)位數(shù)、通信波特率、停止位數(shù)等參數(shù)。
m_ctrl1Comm.Settings(“19200,N,8,1”);
m_ctrl1Comm.SetInBufferSise(4096);
m_ctrl1Comm.SetInBufferCount(0);
m_ctrl1Comm.SetInputLen(0);
m_ctrl1Comm.SetInputMode(1);
m_ctrl1Comm.SetRThreshold(20);
m_ctrl1Comm.SetPortOpen(1);
m_ctrl1Opencom.EnableWindow(FALSE);
m_ctrl1Closecom.EnableWindow(TRUE);
m_ctrl1Setupcom.EnableWindow(FALSE);
m_ctrl1Exit.EnableWindow(FALSE);
AfxMessageBox“(串口打開成功!”);
}
本文中串口號設(shè)置為COMM2,波特率設(shè)置為9600,緩沖區(qū)大小設(shè)置為4096。
2.3 對串口事件的處理和關(guān)閉串口
串口事件的處理包串行數(shù)據(jù)的接收、發(fā)送串行數(shù)據(jù)及對錯(cuò)誤通信進(jìn)行處理等操作。這部分程序通常是一個(gè)選擇分支結(jié)構(gòu),常常用switch語句。利用CommEvent的值來確定是執(zhí)行哪個(gè)case分支。
本文詳細(xì)介紹了VC++下用MSComm控件來編程串口通信的網(wǎng)關(guān),通過MSComm控件用戶十分便捷可以地寫出靈活性高,移植性強(qiáng)的串口通信程序,避免了去了解一些復(fù)雜的Windows API函數(shù)6。因此,在智能炒菜機(jī)器人的上位機(jī)與下位機(jī)通信中選用MSComm控件編程串口通信程序。而且在下位機(jī)為PLC的炒菜機(jī)內(nèi)部,有比較復(fù)雜的電磁環(huán)境、高溫、油煙和水汽等惡略環(huán)境下,系統(tǒng)的穩(wěn)定性也是一個(gè)考驗(yàn)。選用簡單,使用穩(wěn)定的串口通信就成為了一種必要。
[1]許錦標(biāo).可編程智能炒菜機(jī)[P].中國:201310064095.9, 2013.02.28.
[2]王華,岳麗全,岳志高.MSComm控件在VC++6.0串口通信中的應(yīng)用[J].長春工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2009,10(1):72-73
[3]陳常祥,王強(qiáng),佟樹成,張?zhí)鞓?MSComm與API函數(shù)實(shí)現(xiàn)PLC串口通信比較[J].工業(yè)控制計(jì)算機(jī),2006,19(10):9-10
[4]劉書智.VisualC++串口通信與工程應(yīng)用實(shí)踐[M].北京:中國鐵道出版社,2011.109-121
[5]張穎超,黃剛.基于VC++的PC機(jī)與Avantes光譜儀串口通信的實(shí)現(xiàn)與應(yīng)用[J].南京信息工程大學(xué)學(xué)報(bào),2013,5(5):421-425
表2 各評價(jià)因子對易發(fā)性程度的權(quán)重
4.1 單元信息的提取及數(shù)字化
利用MAPGIS軟件將研究區(qū)進(jìn)行剖分。將剖分的網(wǎng)格與已數(shù)字化地質(zhì)災(zāi)害圖件進(jìn)行單要素疊加,并將災(zāi)害劃為:地質(zhì)災(zāi)害高易發(fā)區(qū);地質(zhì)災(zāi)害中易發(fā)區(qū);地質(zhì)災(zāi)害低易發(fā)區(qū);地質(zhì)災(zāi)害不發(fā)育區(qū)。
4.2 隸屬度的確定
本文采用定量指標(biāo)賦值。評判結(jié)果是通過權(quán)重矩陣W和模糊關(guān)系矩陣R的復(fù)合運(yùn)算得到的。首先通過二級評判求出該單元格滑坡的穩(wěn)定性分級模糊向量,組成一個(gè)10×4階矩陣,作為一級評判的模糊關(guān)系矩陣;然后再通過一級評判,最后確定單元格滑坡的最終評價(jià)結(jié)果。通過計(jì)算機(jī)程序運(yùn)算,算出該單元格滑坡對評價(jià)等級的隸屬度,根據(jù)最大隸屬度原則,確定該單元的易發(fā)等級。
1)滑坡地質(zhì)災(zāi)害高易發(fā)區(qū):本區(qū)出露的地層巖性主要有三疊系上統(tǒng)涅如組(T3n)、修康群(T3x)、元古界念青唐古拉巖群(An∈Nq)和第四系(Q4)及軟硬相間巖層。
2)滑坡地質(zhì)災(zāi)害中易發(fā)區(qū):本區(qū)出露地層為南迦巴瓦組(Anε~PtN1)甲不拉組(K1j)。地區(qū)巖體多為破碎的頁巖、板巖等軟弱巖類工程地質(zhì)巖組,水系發(fā)育。且該區(qū)地形較陡峻,河流切割較深;受斷裂構(gòu)造影響,巖體結(jié)構(gòu)破壞較嚴(yán)重。
3)滑坡地質(zhì)災(zāi)害低易發(fā)區(qū):本區(qū)出露巖層為侏羅系日當(dāng)組(J1r)、白堊系甲不拉組(K1j)。巖性為鈣質(zhì)頁巖含硅質(zhì)結(jié)核、酸性凝灰?guī)r及頁巖、細(xì)砂巖、泥灰?guī)r等。人類工程活動(dòng)較輕微。
4)滑坡地質(zhì)災(zāi)害不易發(fā)區(qū):本區(qū)人煙稀少,生態(tài)壞境質(zhì)量良好,地表出露的巖體較堅(jiān)硬完整,滑坡地質(zhì)災(zāi)害不發(fā)育。
總體來說研究區(qū)的滑坡地質(zhì)災(zāi)害發(fā)育較集中,主要受地形地貌、地層巖性、地質(zhì)構(gòu)造等因素的控制。其中修康群、日當(dāng)組和念青唐古拉群是本區(qū)的“易滑地層”;6°—30°的坡度范圍是易發(fā)生滑坡;灌木林和天然草地滑坡發(fā)育率最高;滑坡易發(fā)區(qū)高程集中在2500—3000m。
參考文獻(xiàn):
[1]董立強(qiáng),祁生文,劉春玲.喜馬拉雅山東南地區(qū)地質(zhì)災(zāi)害發(fā)育規(guī)律初步研究,工程地質(zhì)學(xué)報(bào),2007,15(06).
[2]王哲,易發(fā)成.基于層次分析法的綿陽市地質(zhì)災(zāi)害易發(fā)性評價(jià)[J].自然災(zāi)害學(xué)報(bào),2009,18(01)