【正文】
們通過訪問網(wǎng)絡(luò)服務(wù)器來迅速獲取所需要的信息并能及時做出反應(yīng),嵌進(jìn)式系統(tǒng)的發(fā)展就目前發(fā)展速度,會越來越迅速,越來越成熟,這項(xiàng)新技術(shù)早晚必將更廣泛的用于遠(yuǎn)程監(jiān)控系統(tǒng)上,是監(jiān)控系統(tǒng)未來發(fā)展主要方向之一?,F(xiàn)場可編程門陣列(FPGA,Field Programmable Gate Array)的出現(xiàn)是超大規(guī)模集成電路技術(shù)和計算機(jī)輔助設(shè)計(CAD)技術(shù)發(fā)展的結(jié)果。監(jiān)控技術(shù)的發(fā)展始終與最新技術(shù)的發(fā)展息息相關(guān),應(yīng)用者不斷對遠(yuǎn)程監(jiān)控的簡便性及實(shí)時性提出了更苛刻的要求。虛擬。本次我們的課題主體分為五個模塊來實(shí)施:直流電機(jī)測速模塊,直流電機(jī)PWM控制模塊,串口通信模塊,分頻模塊,為了對于中途對程序進(jìn)行準(zhǔn)確調(diào)試我們同時設(shè)計了數(shù)碼管顯示模塊兩個分別用來顯示直流電機(jī)的轉(zhuǎn)速和串口通信的調(diào)試數(shù)據(jù)顯示。市面上串口通信涉及到的方式比較多,具體的選擇還得細(xì)細(xì)研究串口通信跟實(shí)驗(yàn)結(jié)合起來才可以確定。2.電機(jī)監(jiān)控基礎(chǔ)理論及應(yīng)用工具簡介 基礎(chǔ)理論 計數(shù)器原理計數(shù)器廣泛被應(yīng)用到數(shù)字系統(tǒng)中,因?yàn)樗梢詫斎氲拿}沖進(jìn)行計數(shù),并且可以用于分頻器的制作,定時脈沖的輸出等。我們就下面的圖來說明直流電機(jī)的工作原理,將直流電源通過電刷接通電樞紐繞組,使電樞導(dǎo)體上有電流流過,由于電磁作用電樞就會產(chǎn)生磁場。模擬電路實(shí)現(xiàn)PWM的方法是采用比較器來實(shí)現(xiàn)的,將參考的電平與三角波或者鋸齒波信號進(jìn)行比較,就可以輸出一組脈沖寬度受到參考電平調(diào)制的PWM信號。 PC機(jī)的RS232接口 PC機(jī)異步I/ORS232信號線十分的簡單,一般是有9條信號線(DB9口),RS232 的9條信號線的名稱,信號方向以及簡要功能如下表22所示。信號線TXD和RXD為數(shù)據(jù)傳輸信號線,傳號表示二進(jìn)制1,空號表示二進(jìn)制0.DCE接收到遠(yuǎn)程載波,通信鏈路已經(jīng)連接,那么這時候可以進(jìn)行數(shù)據(jù)傳輸。TXD發(fā)送數(shù)據(jù)是DTE向DCE發(fā)送串行數(shù)據(jù)。數(shù)據(jù)設(shè)備就緒(DSR)表示DCE準(zhǔn)備就緒,可以接收數(shù)據(jù),它并不是指建立到端到端的連接,而只表明本地DCE的狀態(tài)。當(dāng)DTE要求發(fā)送數(shù)據(jù)或者接收模式切換到發(fā)送模式時,發(fā)送RTS信號用來通知DCE,DTE請求發(fā)送數(shù)據(jù)。振鈴指示(RI)的作用是當(dāng)DCE接收到線路上有振鈴信號時,發(fā)送信號以通知DTE有一個遠(yuǎn)程呼叫。位0位是最低有效位,而位7位是最高有效位。一個字符所使用的位數(shù)根據(jù)不同協(xié)議而定。為了更清楚起見,將構(gòu)成每個字符及伴隨的位作為一幀。在兩個RS232直接連接的時候,一個信號在任何時間里只能是兩種狀態(tài)的的一種,所以這個時候的波特率和位率是相同的概念。同步傳送和異步傳送:在串口通信中,異步通信方式是以字符為傳送單位的,傳送的字符之間是可以無規(guī)律的,這樣可能使得接收設(shè)備不能正確的接收數(shù)據(jù),因?yàn)槊拷邮胀暌粋€字符之后都不能確切的知道下一個被接收的字符會何時來到。他們不再需要在每一個字符的首尾附加開始和停止比特位,因?yàn)橐坏┦盏绞鬃址臅r候,接受的設(shè)備能夠很確切的預(yù)計出后續(xù)字符的位置,那么也就是說,接收的設(shè)備能夠自動與計算機(jī)同步。狀態(tài)機(jī)除了輸入信號、輸出信號、還包括一組記憶狀態(tài)機(jī)內(nèi)部狀態(tài)的寄存器。圖24狀態(tài)機(jī)有兩種基本的操作:(1)狀態(tài)機(jī)的內(nèi)部狀態(tài)轉(zhuǎn)換。大多數(shù)實(shí)用的狀態(tài)機(jī)都是同步時序電路,由時鐘信號觸發(fā)狀態(tài)轉(zhuǎn)換。 VHDL基本結(jié)構(gòu)一個完整的VHDL語言程序通常包含實(shí)體(Entity)、構(gòu)造體(Archiecture)、配置(Configuration)、包集合(Paekage)和庫(Library)5個部分。 Visual Basic VB是一種可視化的設(shè)計工具,是一種面向?qū)ο蟮脑O(shè)計方法,通過本章的學(xué)習(xí),讀者將了解到VB的發(fā)展歷程、VB的特點(diǎn)以及VB集成開發(fā)環(huán)境的構(gòu)成與使用。程序員不必再為界面的設(shè)計而編寫大量的程序代碼,只需按設(shè)計的要求,用系統(tǒng)提供的工具在屏幕上“畫出”各種對象,VB自動產(chǎn)生界面設(shè)計代碼,程序員所需要編寫的只是實(shí)現(xiàn)程序功能的那部分代碼,從而大大提高了編程的效率。(3)事件驅(qū)動機(jī)制 對于一個對象來說,它一般能夠響應(yīng)一些操作。同時它也具有較強(qiáng)的網(wǎng)絡(luò)支持,在應(yīng)用程序內(nèi)很容易通過Internet訪問文檔和應(yīng)用程序。(2)綜合設(shè)計 它將用戶的硬件描述語言(HDL)生成針對目標(biāo)器件的邏輯或物理表示,即將HDL語言翻譯成基本邏輯門、RAM以及觸發(fā)器等基本邏輯單元的連接關(guān)系,并根據(jù)約束條件優(yōu)化設(shè)計的門級連接,然后輸出網(wǎng)表文件供適配器應(yīng)用。將每一個邏輯功能分配給最佳邏輯單元位置進(jìn)行布線和時序分析,并選定相應(yīng)的互連路徑和引腳分配。(6)編程和配置,稱之為配置或者編程。3.具體論述課題實(shí)施方案、原理及分析和設(shè)計等我們?yōu)榱四軌虬驯敬蔚姆桨冈敿?xì)的進(jìn)行分析我們把此次的方案可以分為三大部分,第一大部分是直流電機(jī)的測速控制部分,第二大部分是通信部分,第三大部分是vb界面編程部分。為了簡單和得到穩(wěn)定的PWM波輸出我們決定采用斜波作為基準(zhǔn)波,用直線做為調(diào)制波,那么我們就會很方便的控制PWM的占空比,從而控制供給直流電機(jī)電壓的時間。最后的界面顯示我們能后從多方面下手,有C語言串口界面編程,有WinAPI串口編程,MSComm控件編程,我們選則最后一種,原因很簡單MSComm控件編程是一種專門且非常易于學(xué)習(xí)及應(yīng)用的串口界面開發(fā)控件,我們將借助于它實(shí)現(xiàn)一個數(shù)據(jù)接收顯示欄,和一個轉(zhuǎn)速控制數(shù)據(jù)輸入欄以達(dá)到最基本的監(jiān)控目的,為了能實(shí)現(xiàn)電機(jī)與PC端之間進(jìn)行溝通,我們設(shè)置了基本的通信協(xié)議,波特率選擇9600,一位起始位,8位數(shù)據(jù)位,1位停止位,00代表電機(jī)停止,ff代表電機(jī)的啟動。如果是每6秒殺心一次,那么相當(dāng)于只記錄了6秒內(nèi)的電機(jī)轉(zhuǎn)速,把記錄的數(shù)據(jù)乘上10即可得到一分鐘的轉(zhuǎn)速。由此可知,這個直流電機(jī)的誤差將在20以內(nèi)。同理fenpin的輸入是1Mhz經(jīng)過1000000分頻得到1hz,5000分頻得到200Mhz,2500分頻得到400hz。 直流電機(jī)控制模塊(1)鋸齒波生成此模塊將clk數(shù)據(jù)進(jìn)行輸入計數(shù),從00000000~11111111也即十進(jìn)制0~255,每進(jìn)來一個脈沖二進(jìn)制數(shù)加1直到255進(jìn)行清零。串口通信可以通過發(fā)送起始位開始一個字符的傳送,當(dāng)起始位使數(shù)據(jù)線處于狀態(tài)0時,預(yù)示接收接收器數(shù)據(jù)傳輸即將開始;我們此次的串口具有八位的數(shù)據(jù)位,在傳送起始位之后傳送數(shù)據(jù)位,數(shù)據(jù)位的低位在前,高位在后。圖33由此可以可看出來異步收發(fā)器主要由波特率發(fā)生器,串口接收器,串口發(fā)送器構(gòu)成,發(fā)送器主要的用途是將準(zhǔn)備輸出的并行數(shù)據(jù)按照基本的串行幀格式轉(zhuǎn)換位串行數(shù)據(jù)。(2)串口接收模塊串行接收模塊是將串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)的一個模塊,bclkr為波特率時鐘信號輸入信號,resetr為復(fù)位信號,rxdr則為串行數(shù)據(jù)輸入,我們將rxdr加載進(jìn)來的數(shù)據(jù)進(jìn)行并行輸出在rbuf輸出端。TextBox用來在運(yùn)行時候顯示用戶輸入的信息,或者在設(shè)計或者運(yùn)行時通過對控件的Text屬性賦值,作為信息輸出的對象。4.具體實(shí)施與驗(yàn)證 Quartus II功能仿真驗(yàn)證我們用vhdl語言編寫的代碼是否符合我們所想要的功能,我們就要借助于Quartus II仿真功能區(qū)實(shí)現(xiàn),對于特殊的驗(yàn)證我們將在遇到的時候我們將細(xì)細(xì)的介紹到。Vwf文件方式的仿真流程的詳細(xì)步驟如下:(1)打開波形編輯器在“文件”菜單下選擇“New”,選中“other files”標(biāo)簽頁,在彈出的窗口點(diǎn)擊“Vector Waveform File”點(diǎn)擊“OK” 打開波形編輯器。也可以按住鼠標(biāo)左鍵在波形編輯區(qū)拖動選擇某一段波形直接將其設(shè)置為0或者1。 模塊化仿真驗(yàn)證從仿真圖我們可以看出隨著時鐘的個數(shù)的增加CQ輸出也在增加,當(dāng)達(dá)到十個脈沖后進(jìn)行復(fù)位從0開始輸出,重新計數(shù)。(dispiay單元)首先我們從SEL的功能開始分析這個仿真文件,SEL是要從0到7的循環(huán)掃描的,表格中完美的體現(xiàn)了,in2與in1組合成高八位,in0與0000組合成第八位進(jìn)行數(shù)碼管動態(tài)顯示,通過分析組成的16位數(shù)為“0010 0000 1000 0000”,每四位分別對應(yīng)一個lou7值從左到右依次輸出是1011010111111111110111111,圖中完全對應(yīng),功能仿真成功。通過串口調(diào)試助手我們可以將今收到的數(shù)據(jù)進(jìn)行16進(jìn)制顯示,給予一個固定的并行輸入,看是否在串口調(diào)試端顯示正確的數(shù)字。圖42當(dāng)遇到復(fù)位信號的時候狀態(tài)機(jī)立刻進(jìn)入x_idle狀態(tài),在這個狀態(tài)下串口發(fā)送器一直在等待數(shù)據(jù)發(fā)送命令xmit_cmd_p。從圖43我們可以分析接收轉(zhuǎn)臺跳變,當(dāng)接收到復(fù)位信號狀態(tài)機(jī)處于開始狀態(tài)x_start,狀態(tài)機(jī)一直在等待RXD的電平從1到0的跳變,也即起始位,一旦起始位被確定狀態(tài)機(jī)轉(zhuǎn)到R_center狀態(tài),在程序中我們設(shè)定了一個rxd_sync信號作為rxd的同步信號,為了是檢測信號的穩(wěn)定性。圖42(發(fā)送模塊)圖43(接收模塊)在我們研究好久之后我才發(fā)現(xiàn)其中的一個數(shù)據(jù)位沒有掃描到這其中的原因就出在,狀態(tài)之間的轉(zhuǎn)換沒有銜接好,我總結(jié)出在調(diào)試串口模塊的時候要結(jié)合串口調(diào)試助手跟狀態(tài)轉(zhuǎn)換圖,將每一位的數(shù)據(jù)是如何傳遞的要搞清楚不然實(shí)驗(yàn)將無法繼續(xù)進(jìn)行,耗時耗力。單擊工具欄上的啟動按鈕,或者單擊運(yùn)行菜單下的啟動按鈕,即可進(jìn)入運(yùn)行狀態(tài),如果程序出現(xiàn)錯誤,可以單擊中斷按鈕進(jìn)行中斷調(diào)試,如果要在某一行設(shè)置斷點(diǎn)進(jìn)行調(diào)試,可以在一行代碼的左側(cè)進(jìn)行單擊,便會出現(xiàn)一個小圓點(diǎn),這樣便設(shè)置了斷點(diǎn),同樣的方法也可以取消斷點(diǎn),終止運(yùn)行可以點(diǎn)擊結(jié)束按鈕。要實(shí)現(xiàn)驗(yàn)證在這里我們必須明確的是我們此次設(shè)置的握手協(xié)議如表44基于FPGA電機(jī)遠(yuǎn)程監(jiān)控握手命令波特率9600奇偶校驗(yàn)無數(shù)據(jù)位8停止位1電機(jī)啟動55電機(jī)停止ff表44在這其中遇到的問題也有不少,在調(diào)試PC接收顯示的時候,總是出現(xiàn)亂碼,我一開始是分析是不是我的串口線跟程序有問題,我換了根串口線,同樣出現(xiàn)這樣的問題,由此數(shù)據(jù)線問題排除,在另一臺電腦上測試無亂碼出現(xiàn),排除程序錯誤。整個方案的構(gòu)造圖如下圖46所示。 論 課題研究內(nèi)容本次我所選擇的課題主要的研究內(nèi)容是實(shí)現(xiàn)直流電機(jī)的遠(yuǎn)程監(jiān)控,說的簡單明了點(diǎn)就是通過遠(yuǎn)程的客戶端例如PC端,通過通信功能對直流電機(jī)進(jìn)行數(shù)據(jù)的獲取跟控制,細(xì)化到具體的控制就是控制它的啟動,停止,速度的模擬控制,在實(shí)現(xiàn)這個目的的過程中我們需要研究的內(nèi)容還有:Quartus II開發(fā)流程,串口通信握手協(xié)議設(shè)置,PWM占空比跟戰(zhàn)速的關(guān)系等。在實(shí)驗(yàn)的真?zhèn)€過程中我們并對PWM波的產(chǎn)生進(jìn)行了研究,研究表明用鋸齒波與直線比較的原理能夠比較快速簡單的實(shí)現(xiàn)PWM脈沖調(diào)制的功能。2. 為了使方案較為簡單我們在測速與現(xiàn)實(shí)上我們采用了6s數(shù)據(jù)鎖存的原理這樣一來,只需在后面添加一個固定的0,就可以顯示為每分鐘的轉(zhuǎn)速,這樣一來就會使得轉(zhuǎn)速刷新的較慢。再就是我們本課題組的所有成員跟檢查我設(shè)計的所有老師,謝謝他們的寶貴意見,給我的方案增色改進(jìn)不少。曹軍義,[J]2001,6:17~21.[2]1997,17(l):l~6.[5][13] 王媛媛,劉寧莊,VHDL與FPGA應(yīng)用設(shè)計,西安科技大學(xué)。[17] 褚振勇,齊亮,田紅心,F(xiàn)PGA設(shè)計及應(yīng)用,西安電子科技大學(xué)出版社。[21] 陳學(xué)英,F(xiàn)PGA應(yīng)用實(shí)驗(yàn)教程,北京國防工業(yè)出版社。 計數(shù)時鐘信號 CLR:IN STD_LOGIC。 計數(shù)進(jìn)位END CNT10。 THEN CQI= 0。 THEN IF ENA= 39。 END IF。PROCESS (CQI) IS BEGIN IF CQI=9 THEN CARRY_OUT= 39。 END IF。library ieee。entity fenpin1 is port( clk : in std_logic。 begin IF clk=39。 ELSE IF ttemp25 THEN clk1Mhz=39。 END IF。 end process。use 。 clk400hz : out std_logic 。把999999改成了100 begin IF clk=39。 ELSE IF ttemp500000 THEN clk1hz=39。 END IF。 end process。 AND clk39。 ELSE clk400hz=39。 END IF。 begin IF clk=39。 ELSE IF t2500 THEN clk200hz=39。 END IF。 end process。use 。 允許計數(shù) clr : out std_logic。6秒計數(shù) signal clr1 :std_logic。計數(shù)數(shù)據(jù) begin process(Clk)6秒計數(shù) begin if(Clk39。 if count6 then ena1=39。clr1=39。ena1=39。 elsif count=7 then ena1=39。clr1=39。 ena=ena1。 end process。use 。 clk:in std_logic )。begin