1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 基于VC++串行通信的無刷直流電機監控系統

        時間:2023-03-29 13:49:22 自動化畢業論文 我要投稿
        • 相關推薦

        基于VC++串行通信的無刷直流電機監控系統

          摘要:本文重點介紹了基于PC機和MSP430單片機串行通信的具體實現過程。硬件部分解決了通信電平不一致的問題,軟件部分給出了PC機和單片機的通信程序,解決了通信過程中數據傳輸的格式問題。實驗結果表明,該方案操作性強,能成功運用于電機的監控系統。

          關鍵詞:無刷直流電機 VC++ MSP430 串行通信

          1、引言

          [1]無刷直流電機調速性能好,利用單片機MSP430專門的PWM功能、豐富的I/O口、快速運算等優點,實現對無刷直流電機的邏輯控制,由于作為下位機的人機交互性不強,難以對電機運行時的關鍵信息有效處理,本文通過編寫VC++上位機程序,采用PC機和單片機串行通信的主從式結構,實現了對電機的監控。

          2、電機原理及系統硬件組成

          2.1 無刷直流電機運行原理

          無刷直流電機的電力電子開關代替有刷電機的換向片,減少了機械磨損及因換向產生的一些危險,系統由電動機本體、位置檢測器、逆變器和控制器組成[2]。

          電機本體同軸上的位置傳感器,根據轉子的不同位置,發出邏輯信號,根據實驗所得的邏輯表,控制輸出回路發出的信號,經MOSFET驅動放大,控制電機電樞電流的導通,以實現“換向”。

          2.2 下位機控制系統硬件構成

          下位機以MSP430系列的F2274單片機為控制核心,通過檢測電機轉子信號,單片機I/O口發出相應邏輯信號,與控制轉速的PWM信號相“與”,經信號隔離,到電機專用驅動芯片IR2130中,繼而導通橋式電路,實現MOSFET的導通。

          同時, MSP430單片機的捕獲比較模塊,捕獲三相傳感器信號輸入的時間,本文試驗采用的無刷直流電機為一個機械周期(20個電周期),通過計算得到電機的轉速公式為[3]:

          ;

          表示檢測到第一次位置信號時的時鐘數,表示檢測到第二次位置信號時的時鐘數,為定時器的時鐘主頻,*3則表示轉過一個電周期所用的時間。通過串行通信,可將轉速、電壓、電流這些參數傳至上位機。

          2.3 串行通信的硬件實現

          本文采用異步通信模式[4],設定好波特率及數據位和停止位的個數;將PC機的RXD腳與下位機的TXD相連,并共地;利用MAX232芯片實現電壓轉換,即通過串口線連到PC機上,加上5個1的電容把RS232電平轉化為標準TTL電平,再用兩個電阻分壓,以達到MSP430單片機的電壓標準。

          3、串行通信軟件設計

          3.1 上位機串行通信設計

          [5]本文上位機通信模塊采用MFC的編程方式,界面如圖1所示。加入MSComm控件,自動生成CMSComm的類,訪問其內部函數,可對PC機串行通信進行控制。

          在上位機進行通信之前,在MSComm中,設置通信參數,程序在界面上采用可視化的串口設置方式,提高了軟件的通用性和移植性。[論文網]

          setting=m_botelv+",";

          if (m_testbit == "None")

          parity = "n";

          else if (m_testbit == "Odd")

          parity = "o";

          else if (m_testbit == "Even")

          parity = "e";

          else if (m_testbit == "Mark")

          parity = "m";

          else if (m_testbit == "Space")

          parity = "s";

          setting += parity + ",";

          setting += m_sbitbit + ",";

          setting += m_stopbit;

          if (m_comkou == "COM1")

          m_com.SetCommPort(1);

          else if (m_comkou == "COM2")

          m_com.SetCommPort(2);

          m_com.SetSettings(setting);

          m_com.SetInputMode(1); //1:表示以二進制方式檢取數據

          m_com.SetRThreshold(1); //為1表示有一個字符引發一個事件

          m_com.SetSThreshold(1); //參數1表示每當串口接收緩沖區中有

          //多于或等于1個字符時將引發一個接收數據的OnComm事件

          m_com.SetInputLen(0); //設置當前接收區數據長度為0

          在查詢到CommEvent的值等于2時,表明接收緩存里有了數據。數據是VARIANT型的,首先轉化為ColeSafeArray形式,然后再將數組元素分離轉化為BYTE型數組,最后再將BYTE里的字符轉化為數字。當上位機按下按鈕發送數據時,也應通過函數COleVariant()進行強制類型轉換,以VARINT的形式傳送出去。

          當下位機將電機轉速的數據上傳后,本軟件加入了圖形顯示和數據存儲功能。在繪圖子對話框中,首先通過GetParent函數調用父對話框指針,將父對話框中的數值傳進子對話框,然后通過定時器,以一定頻率繪制網格線并將傳進來的數據點在圖上顯示。再次更新時,則重新繪制新曲線,覆蓋原有圖形,并將新點和舊點以直線相連,從而實現圖2所示的速度曲線。

          在數據傳到子對話框時,基于VC++的操作,本文采取二進制格式存儲數據。首先定義一個fstream的類對象,該類支持從本流類所對應的磁盤文件中讀入和寫入數據的雙向操作。當主對話框設置為“采集數據”時,對定義的二進制文件進行“寫”操作;當設置“顯示數據”時,則不斷調用二進制文件里的數據,并傳遞給圖像控件,顯示存儲的數據。關鍵代碼如下:

          fstream iobin("ob.bin",ios::binary|ios::out |ios::in);//定義類對象,ob為目標數據文件

          …

          if(((CQuxian1Dlg*)GetParent())->showmode==0)//0表示采集1表示顯示已有數據

          {

          data=((CQuxian1Dlg*)GetParent())->data;//取得父對話框的速度數據

          iobin.write((char*)(&data),sizeof(data));//寫人二進制文件

          }

          else

          iobin.read((char*)(&data),sizeof(data));//顯示已有數據

          …

          iobin.close();//關閉二進制文件

          3.2 下位機串行通信設計

          在下位機控制系統中,采用MSP430系列單片機,其內置的USCI模塊通過UCAXRXD和UCAXTXD兩個外部引腳連到單片機外部,實現串行通信[5]。

          首先設定好系統時鐘,并進行UCAXRXD和UCAXTXD的引腳設置。然后通過UCA0CTL1選擇串行通信模塊的時鐘源,并通過UCA0BR0、UCA0BR1分頻,從而得到需要的波特率。串行模塊中的控制字UCMSB控制發送和接受移位寄存器從高位還是低位開始接受,應設置為低位,否則會出現數據錯誤。參數設置如下:

          UCA0CTL1 |= UCSSEL_2; // SMCLK

          UCA0BR0 = 104; // 1MHz 9600

          UCA0BR1 = 0; // 1MHz 9600

          UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1

          UCA0CTL1 &= ~UCSWRST;

          數據的發送和接收是通過中斷函數進行的。首先開接收中斷,對接收到的數據進行判斷,并根據相應指令對電機的啟動/停止和速度進行控制,當接收到啟動命令后,再開發送中斷,將每次計算得到的轉速數據傳到發送緩存中進行上傳,程序流程如圖3所示。

          3.3 通信數據的格式轉化

          單片機的接收和發送緩存是8位,本系統傳輸的數據是float型,在傳輸前需進行數據轉換。首先,限定傳輸的數據為0.0001~9999,取4位有效數字;然后將數據擴大10的“倍數”,轉化為整數;再將整數分為高二位和低二位,分別賦到數組的前兩位元素中,第三位元素賦以“倍數”;第四位元素賦以標識位,使每個目標數有唯一的標識符,方便傳輸。

          4、結語

          本文以MSP430單片機為核心,通過編制上位機可視化程序,采取主從式控制結構,使得無刷直流電機的控制和可觀性得到了明顯的改善,實驗結果表明,該方案能成功用于電機的監控系統。

          參考文獻

          [1]孫建忠,白鳳仙.特種電機及其控制[M].北京:中國水利水電出版社,2010.87-105.

          [2]李先詳,斯燕躍.無刷直流電機的單片機監控系統的研制[J].電氣傳動自動化,2002(3):3-5.

          [3]王宏華.新型交流電動機及控制技術系列講座(3)永磁無刷電動機[J].機械制造與自動化,2004(3):105-109.

          [4]徐洋.基于MSP430單片機的無刷直流電機實驗測試平臺設計[J].電氣技術與自動化,2010(4):168-171.

          [5]張筠,劉書智.Visual C+ +實踐與提高—串口通信與工程應用篇[M].北京:中國鐵道出版社,2006:179-182.

        【基于VC++串行通信的無刷直流電機監控系統】相關文章:

        探討基于多種通信方式并存的配網自動化通信系統06-01

        Openprocess在熱網監控系統中的應用06-04

        基于web的異地并行設計與制造系統研究06-02

        基于PLC的斷路器型式試驗系統設計03-10

        游戲軟件開發VC++05-13

        探析Openprocess在熱網監控系統中的應用05-29

        談Openprocess在熱網監控系統中的應用06-09

        衛星移動通信系統的論文(通用7篇)07-26

        操控系統無線通信論文(精選8篇)07-27

        基于J2EE的遠動系統Web實時曲線的研究05-11

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>