萬偉鋒,許錦標,黃建杰
廣東工業大學自動化學院
基于VC++的串口通信方案在智能炒菜機器人中的應用
萬偉鋒,許錦標,黃建杰
廣東工業大學自動化學院
針對智能炒菜機器人控制系統的上位機與下位機的通訊,擬以VC++為平臺開發出串口通信網關,從而實現上位機對下位機的各種控制以及上位機對后臺數據庫的訪問與維護。
智能炒菜機人;串口通信;VC++
本項目的智能炒菜機器人是一臺可編程控的通用中式菜肴烹飪機器,用戶可以自己編寫菜譜程序、也可以直接調用炒菜機器人內部數據庫己存的大量中式菜肴菜譜程序、或者通過網絡接受外部的菜譜程序1。本文針對的是當前智能炒菜機器人的上位機程序進行的改進,采用串口通信方案對下位機與上位機進行通信。本文密切結合科研課題進行研究與設計,針對支持vmmda1.0通用菜譜指令的智能炒菜機器人的改進采用EIA RS-232C標準,在vc++6.0平臺開發出上位機與下位機進行交互通信的設計方案。本文著重介紹其中的串口通信部分。
在Windows上開發串口通信軟件通常有兩種方案,一種是基于利用Microsoft的MSComm控件,另一種是采用Windows的通信函數AIP函數。相對比較簡單的是利用MSComm控件,MSComm控件不僅有豐富的與串口通信協議密切相關的屬性和事件,而且還提供了對串口的各種操作事件,不過它的靈活性比較差,其最不利的是最多只支持16個串口2。而對于利用Windows通信函數API編寫串口通信程序時就必須掌握大量關于通信的知識,對于沒有經過學習通信方面知識的科學工作者而言較為復雜,它的優點是應用廣泛,可實現的功能更強大,非常適合編寫較為復雜的通信程序3。

表1 為MSComm控件與WINAPI函數的區別。
表1MSComm控件與W IN API函數的區別
本文設計的串口通信方案是用于在上位機選用WIN CE6.0的操作系統下位機選用PLC作為控制核心的通信4。由于智能炒菜機人的串口通信信息量比較小,不需要復雜的通訊控制,通過對比兩種方案,本文選擇Microsoft的MSComm控件的解決方案。
使用控件驚醒串口程序設計,主要分為加載控件,初始化以及打開串口,串口處理以及關閉串口等。
2.1 加載以及使用控件
首先,在對話框中創建通信控件,拖動控件圖標到窗口上,創建控件ID,他的ID默認為IDC_MSCOMM1,要查看或修改該ID值,可右擊MSComm控件圖標,彈出MSComm控件的快捷菜單,在屬性單擊【General】選項卡,在【ID】右側的文本框內顯示控件ID為IDC_MSCOMM1,可在此處修改ID值,改為IDC_MSCOMM2。在對話框頭文件vccommDlog.h第一行中,加入引用該控件類代碼如下:
2.2 對串口初始化并打開串口
對串口的初始化是對串口的各種參數進行設置,它包括使用的端口、奇偶校驗、數據位數、通信波特率、停止位數等參數。
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“(串口打開成功!”);
}
本文中串口號設置為COMM2,波特率設置為9600,緩沖區大小設置為4096。
2.3 對串口事件的處理和關閉串口
串口事件的處理包串行數據的接收、發送串行數據及對錯誤通信進行處理等操作。這部分程序通常是一個選擇分支結構,常常用switch語句。利用CommEvent的值來確定是執行哪個case分支。

本文詳細介紹了VC++下用MSComm控件來編程串口通信的網關,通過MSComm控件用戶十分便捷可以地寫出靈活性高,移植性強的串口通信程序,避免了去了解一些復雜的Windows API函數6。因此,在智能炒菜機器人的上位機與下位機通信中選用MSComm控件編程串口通信程序。而且在下位機為PLC的炒菜機內部,有比較復雜的電磁環境、高溫、油煙和水汽等惡略環境下,系統的穩定性也是一個考驗。選用簡單,使用穩定的串口通信就成為了一種必要。
[1]許錦標.可編程智能炒菜機[P].中國:201310064095.9, 2013.02.28.
[2]王華,岳麗全,岳志高.MSComm控件在VC++6.0串口通信中的應用[J].長春工程學院學報(自然科學版),2009,10(1):72-73
[3]陳常祥,王強,佟樹成,張天橋.MSComm與API函數實現PLC串口通信比較[J].工業控制計算機,2006,19(10):9-10
[4]劉書智.VisualC++串口通信與工程應用實踐[M].北京:中國鐵道出版社,2011.109-121
[5]張穎超,黃剛.基于VC++的PC機與Avantes光譜儀串口通信的實現與應用[J].南京信息工程大學學報,2013,5(5):421-425

表2 各評價因子對易發性程度的權重
4.1 單元信息的提取及數字化
利用MAPGIS軟件將研究區進行剖分。將剖分的網格與已數字化地質災害圖件進行單要素疊加,并將災害劃為:地質災害高易發區;地質災害中易發區;地質災害低易發區;地質災害不發育區。
4.2 隸屬度的確定
本文采用定量指標賦值。評判結果是通過權重矩陣W和模糊關系矩陣R的復合運算得到的。首先通過二級評判求出該單元格滑坡的穩定性分級模糊向量,組成一個10×4階矩陣,作為一級評判的模糊關系矩陣;然后再通過一級評判,最后確定單元格滑坡的最終評價結果。通過計算機程序運算,算出該單元格滑坡對評價等級的隸屬度,根據最大隸屬度原則,確定該單元的易發等級。
1)滑坡地質災害高易發區:本區出露的地層巖性主要有三疊系上統涅如組(T3n)、修康群(T3x)、元古界念青唐古拉巖群(An∈Nq)和第四系(Q4)及軟硬相間巖層。
2)滑坡地質災害中易發區:本區出露地層為南迦巴瓦組(Anε~PtN1)甲不拉組(K1j)。地區巖體多為破碎的頁巖、板巖等軟弱巖類工程地質巖組,水系發育。且該區地形較陡峻,河流切割較深;受斷裂構造影響,巖體結構破壞較嚴重。
3)滑坡地質災害低易發區:本區出露巖層為侏羅系日當組(J1r)、白堊系甲不拉組(K1j)。巖性為鈣質頁巖含硅質結核、酸性凝灰巖及頁巖、細砂巖、泥灰巖等。人類工程活動較輕微。
4)滑坡地質災害不易發區:本區人煙稀少,生態壞境質量良好,地表出露的巖體較堅硬完整,滑坡地質災害不發育。
總體來說研究區的滑坡地質災害發育較集中,主要受地形地貌、地層巖性、地質構造等因素的控制。其中修康群、日當組和念青唐古拉群是本區的“易滑地層”;6°—30°的坡度范圍是易發生滑坡;灌木林和天然草地滑坡發育率最高;滑坡易發區高程集中在2500—3000m。
參考文獻:
[1]董立強,祁生文,劉春玲.喜馬拉雅山東南地區地質災害發育規律初步研究,工程地質學報,2007,15(06).
[2]王哲,易發成.基于層次分析法的綿陽市地質災害易發性評價[J].自然災害學報,2009,18(01)