亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于MFC的旋轉(zhuǎn)倒立擺上位機控制系統(tǒng)設(shè)計與實現(xiàn)

        2018-09-13 11:22:00陶翔翔范碩王志明
        電腦知識與技術(shù) 2018年17期
        關(guān)鍵詞:串口通信上位機

        陶翔翔 范碩 王志明

        摘要:該文主要介紹旋轉(zhuǎn)倒立擺系統(tǒng)上位機的設(shè)計方法,使用通信控件MSComm與下位機通信,實現(xiàn)對旋轉(zhuǎn)倒立擺的啟??刂?、狀態(tài)監(jiān)測以及PID參數(shù)設(shè)置。文章在Win10環(huán)境下基于VS2015進行MFC應(yīng)用程序開發(fā),詳細介紹了應(yīng)用程序的基本框架以及軟件的界面資源,闡釋了典型消息響應(yīng)函數(shù)的實現(xiàn)方法,最后顯示了上位機與串口調(diào)試助手的通信結(jié)果。

        關(guān)鍵詞:旋轉(zhuǎn)倒立擺;上位機;MFC;串口通信

        中圖分類號:TP31 文獻標(biāo)識碼:A 文章編號:1009-5039(2018)17-0269-04

        倒立擺系統(tǒng)是一個復(fù)雜的、不穩(wěn)定的非線性系統(tǒng),對倒立擺系統(tǒng)的研究能有效反映控制中的許多經(jīng)典問題:如非線性問題、魯棒性問題、鎮(zhèn)定問題、隨動問題以及跟蹤問題等。通過對倒立擺系統(tǒng)的研究,不僅可以解決控制中相關(guān)理論和技術(shù)實現(xiàn)問題,還能將控制理論所涉及的三個基礎(chǔ)學(xué)科:力學(xué)、數(shù)學(xué)和電學(xué)有機地結(jié)合起來,在倒立擺系統(tǒng)中進行綜合應(yīng)用[1]。

        本文主要介紹旋轉(zhuǎn)倒立擺系統(tǒng)上位機的設(shè)計方法,使用通信控件MSComm[2]與下位機通信,實現(xiàn)對旋轉(zhuǎn)倒立擺的啟??刂?、旋轉(zhuǎn)角度的監(jiān)測,同時對系統(tǒng)的PID參數(shù)進行設(shè)置。詳細介紹了應(yīng)用程序的基本框架以及軟件界面的資源組成,選取了典型的消息響應(yīng)函數(shù)進行介紹,還將上位機與串口調(diào)試助手的通信結(jié)果顯示出來。

        1 旋轉(zhuǎn)倒立擺系統(tǒng)結(jié)構(gòu)

        1.1 控制系統(tǒng)硬件結(jié)構(gòu)

        旋轉(zhuǎn)倒立擺的結(jié)構(gòu)如圖1所示。電動機A固定在支架B上,通過轉(zhuǎn)軸F驅(qū)動旋轉(zhuǎn)臂C旋轉(zhuǎn)。擺桿E通過轉(zhuǎn)軸D固定在旋轉(zhuǎn)臂C的一端,當(dāng)旋轉(zhuǎn)臂C在電動機A驅(qū)動下作往復(fù)旋轉(zhuǎn)運動時,帶動擺桿E在垂直于旋轉(zhuǎn)臂C的平面作自由旋轉(zhuǎn)。

        1.2 控制系統(tǒng)軟件結(jié)構(gòu)

        旋轉(zhuǎn)倒立擺上位機利用MFC進行應(yīng)用程序開發(fā),通過串口與下位機進行通信,實現(xiàn)系統(tǒng)啟??刂?、PID參數(shù)設(shè)置、角度數(shù)據(jù)顯示。下位機采用51單片機,由角位移傳感器測量得到擺桿旋轉(zhuǎn)角度送入到控制器中,計算PID控制律并轉(zhuǎn)化為電壓信號提供給驅(qū)動芯片,來驅(qū)動直流電機轉(zhuǎn)動,從而帶動旋臂在水平面內(nèi)旋轉(zhuǎn),最終實現(xiàn)控制擺桿直立的效果。

        2 旋轉(zhuǎn)倒立擺上位機控制系統(tǒng)設(shè)計

        2.1 基于MFC的控制軟件框架

        MFC是微軟公司提供的一個類庫,以C++類的形式封裝了Windows API,并且包含一個應(yīng)用程序框架,為軟件開發(fā)者完成了一些例行化的工作,比如各種窗口、工具欄、菜單的生成和管理等,極大的提升編程的效率。

        使用MFC開發(fā)向?qū)lassWizard創(chuàng)建基于對話框的應(yīng)用程序,項目生成后,即產(chǎn)生了屬于倒立擺系統(tǒng)的InvertedPendulum對象,生成CpendulumApp類和CpendulumDlg類,CpendulumApp類中包含CpendulumDlg類成員變量。

        最基本的應(yīng)用程序框架由此建立起來,應(yīng)用程序通過定義,初始化,由Winmain開始,注冊、創(chuàng)建、顯示窗口、消息響應(yīng),直到程序終止,結(jié)束運行周期。

        2.2 界面設(shè)計

        2.2.1 界面資源

        上位機界面包含控件類型有Combobox、Button、Radio-button、Edit Control,主要用作通信協(xié)議設(shè)置框,系統(tǒng)啟動及停止控制按鈕,PID參數(shù)設(shè)置按鈕,接收發(fā)送數(shù)據(jù)按鈕,接收發(fā)送數(shù)據(jù)顯示框以及波形顯示框。

        上位機設(shè)計中所涉及的主要的控件如下表,包括控件的用途、類型以及控件ID。

        接著在對話框中添加串行口通信控件MSComm[3],它封裝了許多實現(xiàn)串行口通信的函數(shù)。插入該控件,便可調(diào)用它提供的函數(shù),而無須直接對接口硬件進行操作,從而方便地實現(xiàn)計算機與外部設(shè)備的串行通信。

        采用事件驅(qū)動法,即每當(dāng)計算機俘獲新字符,或者端口狀態(tài)改變,或者接受到故障信息時,MSComm控件觸發(fā)OnComm事件,工作原理類似于中斷方式[4]。而應(yīng)用程序在捕獲該事件后,通過檢查MSComm控件的ComEvent屬性可以獲知事件或故障,從而采取相應(yīng)的操作。這種方法的特點是程序響應(yīng)及時可靠性高,適應(yīng)于中斷頻率不太高的串行口通信。

        2.2.2 界面消息響應(yīng)函數(shù)

        為對應(yīng)的控件添加消息響應(yīng)函數(shù),通過消息響應(yīng)機制同時響應(yīng)多個任務(wù)。當(dāng)用戶進行了輸入或是窗口的狀態(tài)發(fā)生改變時,系統(tǒng)發(fā)送消息到窗口,所有產(chǎn)生的消息被放入消息隊列中,根據(jù)優(yōu)先級執(zhí)行相應(yīng)程序。由此,為控件添加了消息響應(yīng)函數(shù)之后,就可以通過操作控件執(zhí)行目標(biāo)任務(wù)。

        下面詳細介紹下繪制坐標(biāo)軸、響應(yīng)接收事件并繪制擺桿角度波形的消息響應(yīng)函數(shù)。

        (1)OnPaint消息響應(yīng)函數(shù)

        在響應(yīng)WM_PAINT消息的函數(shù)OnPaint中繪制坐標(biāo)軸,由此在需要重繪波形時即可利用WM_PAINT消息重繪坐標(biāo)軸區(qū)域覆蓋之前的波形,在此基礎(chǔ)上更新角度數(shù)據(jù)波形。

        在OnPaint函數(shù)內(nèi),首先定義CPaintDC類的對象DCWave,通過這個對象就可以使用CDC類的成員函數(shù)完成波形區(qū)中的圖形繪制操作;接著定義CRect結(jié)構(gòu)rectWave,在后續(xù)的坐標(biāo)軸繪制中可以通過CRect類的方法,獲取區(qū)域的具體信息,如頂點、高和寬。

        用編輯框IDC_Wave的GetClientRect函數(shù)將矩形大小寫入rectWave中,然后獲取IDC_Wave的句柄,調(diào)用CDC的成員函數(shù)FillSolidRect填充rectWave坐標(biāo)區(qū);接著獲取rectWave的寬和高,利用DCWaved的成員函數(shù)MoveTo和LineTo繪制繪圖區(qū)外邊框以及坐標(biāo)軸邊框;通過計算得到坐標(biāo)軸線,同樣通過前面的劃線命令繪制坐標(biāo)軸;最后利用DCWave的成員函數(shù)TextOut把坐標(biāo)軸刻度寫在相應(yīng)的位置。

        繪成的坐標(biāo)區(qū)如上圖所示,縱坐標(biāo)為角度數(shù)值,范圍為0-360°,由于MSComm控件為事件驅(qū)動,接收到數(shù)據(jù)才會刷新波形,因此橫坐標(biāo)為在波形區(qū)顯示的角度數(shù)據(jù)的組數(shù),方便觀察。

        (2)OnComm消息響應(yīng)函數(shù)

        通過串行口通信控件MSComm,利用事件驅(qū)動方法與下位機進行通信。在串口接收緩沖區(qū)中有字符或一個字符到達,再或者是一個變化發(fā)生時,控件觸發(fā)OnComm事件。

        每當(dāng)接收事件發(fā)生時,首先利用InvalidateRect函數(shù)使坐標(biāo)軸區(qū)域rectWave無效,再使用UpDateWindow將WM_PAINT直接發(fā)送到繪圖區(qū),立即觸發(fā)OnPaint響應(yīng)函數(shù),重繪坐標(biāo)軸。

        接著通信控件的成員函數(shù)get_Input讀取緩沖區(qū),然后將緩沖區(qū)的字符每三個為一組的ASCII碼值拼成一個十進制整型的角度數(shù)值顯示在最新數(shù)據(jù)框IDC_RecLatest中,同時將這個角度數(shù)值轉(zhuǎn)換成字符型數(shù)據(jù)更新在接收歷史框IDC_Rec中。

        最后在波形區(qū)域rectWave,利用MoveTo和LineTo成員函數(shù)繪制角度數(shù)據(jù)的波形。為了動態(tài)顯示波形,每次更新波形時,將之前的波形左移,最新的數(shù)據(jù)更新在上一個數(shù)據(jù)的波形右側(cè),在不斷接收角度數(shù)據(jù)和更新波形時產(chǎn)生整個波形動態(tài)左移、新數(shù)據(jù)從右側(cè)補充進來的效果。

        2.3 串口通信

        串口是計算機上一種非常通用設(shè)備通信的協(xié)議。串口通信的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。本文中串口用于ASCII碼字符的傳輸。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗位[5]。對于兩個進行通行的端口,這些參數(shù)必須匹配。

        串口的通信協(xié)議由下位機規(guī)定,具體規(guī)則如下:

        (1)上位機發(fā)送給下位機的命令和下位機返回的數(shù)據(jù)必須以結(jié)尾,作為校驗位。

        (2)通信的波特率為11520bps,數(shù)據(jù)位為8位,無停止位,無奇偶校驗。

        3 通信結(jié)果

        控制界面實現(xiàn)以下人機交互功能[6]:

        (1)串口初始化

        利用MSComm控件初始化串口號、波特率,設(shè)置緩沖區(qū)一個字符引發(fā)事件,打開串口;

        (2)倒立擺的啟??刂?/p>

        通過點擊“啟動”和“停止”按鈕控制旋轉(zhuǎn)倒立擺系統(tǒng)啟動和停止工作;

        (3)PID參數(shù)設(shè)置

        在上位機界面中輸入想要設(shè)置的PID參數(shù),點擊“發(fā)送數(shù)據(jù)”按鈕,下位機接收并設(shè)置系統(tǒng)參數(shù),控制旋轉(zhuǎn)倒立擺;

        (4)倒立擺的角度數(shù)據(jù)顯示

        下位機采集旋轉(zhuǎn)倒立擺的角度數(shù)據(jù),發(fā)送給上位機,上位機將數(shù)據(jù)直接顯示在編輯框,同時以波形的形式顯示出來。

        將上位機與串口調(diào)試助手進行通信,通信結(jié)果如下:

        上位機點擊“啟動”,“停止”按鈕發(fā)送啟停命令,串口調(diào)試助手接收顯示如圖:

        在PID輸入框中輸入數(shù)值,點擊“發(fā)送數(shù)據(jù)”按鈕,串口調(diào)試助手接收顯示如圖:

        串口調(diào)試助手發(fā)送一組角度數(shù)值,上位機接收后顯示在接收歷史框和最新數(shù)據(jù)框中,同時在波形區(qū)繪制出角度數(shù)據(jù)的波形:

        4 總結(jié)

        本文主要介紹了旋轉(zhuǎn)倒立擺系統(tǒng)上位機的設(shè)計方法,實現(xiàn)了對旋轉(zhuǎn)倒立擺的啟動和停止控制、擺桿角度的監(jiān)測以及系統(tǒng)PID參數(shù)的設(shè)置。對于實現(xiàn)倒立擺控制系統(tǒng)的觀測有較大的實踐意義。

        參考文獻:

        [1] 張建海.單片機控制的二級倒立擺系統(tǒng)的研究[D].河北工業(yè)大學(xué),2005.

        [2] 龍灝,丁旭玲.基于Windows API函數(shù)的串口通訊程序設(shè)計[J].電子世界,2015(19).

        [3] 蔣萍花,張楠.數(shù)據(jù)采集系統(tǒng)串口通信的設(shè)計與實現(xiàn)[J].電子測量技術(shù),2015(6).

        [4] 陳曙光.利用ActiveX控件實現(xiàn)對計算機串口的通信管理[J].合肥工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2000,3.

        [5] 黃暉,柴劍勇,嚴(yán)興, 等.串口通信技術(shù)[J].科技創(chuàng)新導(dǎo)報,2010(27).

        [6] 王超.基于單片機的分布式果品貯藏遠程監(jiān)控系統(tǒng)[J].中國農(nóng)機化學(xué)報,2016(4).

        猜你喜歡
        串口通信上位機
        基于Qt和Flash的嵌入式Linux軟件架構(gòu)設(shè)計
        論網(wǎng)絡(luò)通信技術(shù)
        串口通信在智能家居監(jiān)控系統(tǒng)中的應(yīng)用
        基于云的短波發(fā)射機機房中央空調(diào)自動控制系統(tǒng)的設(shè)計與實現(xiàn)
        基于上位機、NRF多點無線溫度監(jiān)控系統(tǒng)
        景點智能導(dǎo)航系統(tǒng)
        全自動包裝及碼垛系統(tǒng)的發(fā)展與應(yīng)用
        基于OpenCV的室內(nèi)照明智能控制系統(tǒng)設(shè)計與實現(xiàn)
        科技視界(2016年13期)2016-06-13 22:01:19
        基于MSP430單片機的窄帶無線數(shù)據(jù)傳輸模塊的設(shè)計
        便攜式數(shù)傳電臺測試系統(tǒng)的設(shè)計與實現(xiàn)
        大陆一级毛片免费播放| 把女人弄爽特黄a大片| 成人国内精品久久久久一区| 91av手机在线观看| 国产传媒剧情久久久av| 亚洲国产系列一区二区| 欧美成人aaa片一区国产精品| 人人妻一区二区三区| 这里有精品可以观看| 日本一区二区国产高清在线播放 | 中文字幕有码无码人妻av蜜桃| 国产精品99无码一区二区| 亚洲av一宅男色影视| 国产精品麻豆A啊在线观看| 黄色潮片三级三级三级免费| (无码视频)在线观看| 天堂影院一区二区三区四区| 无码一区二区三区网站| 97成人精品在线视频| 亚洲国产aⅴ成人精品无吗| 丁香五月缴情综合网| 蜜桃在线观看免费高清完整版| 国产91在线播放九色快色| 中文字幕在线观看| 亚洲精品久久久久久| 国产精品白浆免费观看| 日韩人妻系列在线观看| 中国女人做爰视频| 国产成人精品午夜福利免费APP| 中文字幕人成乱码中文乱码| 国产激情自拍在线视频| 爆乳熟妇一区二区三区霸乳| 国产日韩欧美网站| 手机免费在线观看日韩av| 日韩人妻熟女中文字幕a美景之屋| 中文字幕精品久久久久人妻红杏ⅰ| 亚洲一区中文字幕在线电影网 | 天堂Av无码Av一区二区三区| 日韩av在线不卡一区二区 | 在线观看视频亚洲| 久久久免费精品国产色夜|