專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應用測試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導入到強大技術支援服務 全程貼心伴隨服務,創(chuàng)造無限潛能!
單片機開發(fā)商深圳英銳恩分享單片機技術在電氣傳動控制系統(tǒng)中的應用與研究。
摘 要:本文從單片機的技術應用角度出發(fā),提出了一種用80C196系列單片機實現(xiàn)數(shù)字調(diào)速的系統(tǒng)控制方案,并在實際中驗證了本方案的可行性,同時對80C196單片機的一些關鍵技術作了深入研究,以期開發(fā)出更高性能的單片機系統(tǒng)。
關鍵詞:80C196 單片機 RL196 PWM C96
0 引 言
單片機進入中國10余年以來,以其體積小、功能強、擴展靈活、使用方便等特點,逐漸應用到各行業(yè)的工程實際應用中。目前,大多數(shù)系統(tǒng)以51系列的8位單片機為首選,但是在一些比較復雜的、性能要求較高的系統(tǒng)中,它不得不讓位于16位單片機。本文采用的MCS-96系列的16位單片機特別適用于各類自動控制系統(tǒng)。如交直流調(diào)速機、工業(yè)過程控制系統(tǒng)、伺服系統(tǒng)等。本文以一直流伺服控制系統(tǒng)裝置為例,介紹了系統(tǒng)的結(jié)構(gòu),改進了有關算法,實驗證明,此系統(tǒng)可以良好地跟蹤給定速度曲線,響應時間可控制在10-3s的數(shù)量級以內(nèi)。
1 硬件系統(tǒng)的構(gòu)成
1.1 電氣主回路
主電路結(jié)構(gòu)圖如圖1所示,采用雙極性的H橋構(gòu)成,用大功率硅管整流橋?qū)⒔涣髡鞒芍绷?,采?br/>電壓型穩(wěn)壓方式(并入大容量電容)提供主電源,用IPM中的IGBT構(gòu)成H橋,采用PWM進行調(diào)速,其中富士通的IPM技術較為成熟,并具有多種保護功能。只需加入一定的周邊電路便可進行驅(qū)動。
1.2 單片機系統(tǒng)
本文采用MCS-96系列的80C196MC構(gòu)成16位總線的單片機系統(tǒng),與MCS-51系列相比,此類型的單片機至少在以下幾方面提高了系統(tǒng)的實時性。
?。?)CPU中的算術邏輯單元不采用常規(guī)的累加器結(jié)構(gòu),改用寄存器-寄存器結(jié)構(gòu),CPU的操作直接面向256字節(jié)的寄存器,消除了CPU結(jié)構(gòu)中存在的累加器瓶頸效應,提高了操作速度和數(shù)據(jù)吞吐能力。
(2)256字節(jié)寄存器中,24字節(jié)是專用寄存器,其余232字節(jié)均為通用寄存器。其通用寄
存器的數(shù)量遠比一般CPU的寄存器數(shù)量多。這樣可以為各中斷服務程序中的局部變量指定專門的寄存器,免除了中斷服務過程中保護和恢復現(xiàn)場所支付的軟件開銷,并大大方便了程序設計。
?。?)80C196MC具有波形發(fā)生器(WG),不用外圍元器件即可生成PWM波形,而波形發(fā)生器(WG)具有靈活的死區(qū)調(diào)節(jié)功能。這對實用
PWM功率放大器很關鍵,它能防止雙極H型主電路四個IGBT“共態(tài)穿通”。所謂“共態(tài)穿通”即橋臂中的一個IG-BT沒有退出飽和而另一個IGBT已導通而形成電源短路的現(xiàn)象。
?。?)有一套效率更高、執(zhí)行速度更快的指令系統(tǒng),可采用20M赫茲的時鐘,并新增加了EPA(事件處理器陣列),PTS(外設事務服務器),再加上其內(nèi)帶的10位A/D轉(zhuǎn)換器,從而可以快速完成電流和轉(zhuǎn)速的轉(zhuǎn)換過程,滿足對系統(tǒng)動態(tài)響應時間的要求。
其中,16位單片機的系統(tǒng)構(gòu)成如下:由于伺服系統(tǒng)電流控制調(diào)節(jié)器采樣周期短、計算量大,所以80C1
96MC系統(tǒng)采用16位系統(tǒng)總線以提高系統(tǒng)的吞吐能力。二片EPROM27C256地址分配為:2000H~7FFFH;二片RAM62256地址分配為:A000H~FFFFH;由于采用16位地址數(shù)據(jù)總線,二片存儲器共用同一地址,具體聯(lián)接如下:系統(tǒng)地址總線A0不用,A1與EPROM、RAM的
A0連接,A2與A1連接,……依此類推,A15與A14連接。當CPU讀存儲器高位地址時,同時選中高、低位的存儲器,高8位、低8位的數(shù)據(jù)同時讀入
CPU,由CPU正確選擇高8位的數(shù)據(jù)作為操作數(shù),舍去低8位的數(shù)據(jù);讀低8位時情況也一樣。RAM的片選信號由INST和A15通過與非門構(gòu)成(RAM
=INST+A15———),其中要注意的是INST在讀程序存儲器時為低電平,但要避開2000- 2080的地址,因為在讀取中斷向量時,INST引腳為高電平。其系統(tǒng)原理框圖如圖2所示。
2 軟件系統(tǒng)
采用C與ASM的混合編程模式,下面著重于其協(xié)同開發(fā)和算法的改進進行闡述。
2.1 C程序與匯編程序的協(xié)同開發(fā)
匯編語言的難點在于數(shù)據(jù)處理。由于匯編語言不直接支持單精度的浮點運算,而現(xiàn)在單片機開發(fā)日趨復雜,在許多地方必須應用高精度的復雜算法。C96直接支持單精度的浮點運算,對于大多數(shù)場合已經(jīng)夠用,并且可以方便的通過算法擴展到雙精度。算法的設計上已有大量的C程序可供選用,基本不用重新開發(fā)。在這些模塊中應用C96可以盡快地解決問題。然而,完成同樣的功能,C96程序經(jīng)編譯連接生成的代碼比匯編生成的代碼稍長。在需要實時響應的場合,開發(fā)者往往從執(zhí)行速度的角度出發(fā),把這些模塊用匯編代碼實現(xiàn)。其實,筆者認為凡是匯編實現(xiàn)的功能用C96都能實現(xiàn),只是一個熟練程度的問題,而且據(jù)最新資料,新版的
C96編譯器的效率可以達到1.1。在單片機項目中應用C96,更重要的是開發(fā)周期可以大大縮短,一般來說,一個資深的C96程序員,他只要花費匯編程序員的一半不到的時間就可以完成開發(fā)任務,而兩者的執(zhí)行速度相差無幾,如果不是有特別苛刻的要求,用C96開發(fā)程序?qū)⑹鞘掳牍Ρ丁?br/> 例如:
Timer1=0x33f8;
而在匯編中則需要寫成:
LD1CH,33F8H
ST1CH,1F7A[00H]
顯然,C96寫出來的程序具有良好的可讀性,并方便日后的修改和維護,而匯編大多數(shù)則要靠注釋來解讀,而且個人注釋風格不同,會帶來調(diào)試工作和日后的軟件升級的困難,加長了開發(fā)時間和人力投入。
在開發(fā)單片機的項目時,經(jīng)常會遇到關于匯編模塊和C模塊相互調(diào)用的問題,下面從兩個方
面加以闡述:
?。?)如果不涉及參數(shù)傳遞,則可以采用在程序中嵌入ASM{…}偽指令實現(xiàn)(適用于C96和C51 ) 。
?。?)當涉及參數(shù)傳遞的時候,下面以C語言作主程序為例,說明一個相互調(diào)用的實例;(只適用于C51)。
主程序:
但在A-FUNC.A51文件中則需按照C51與匯編語言的接口規(guī)則進行書寫,完成相應的功能。
NAMEA-FUNC
;聲明函數(shù)名稱
;聲明外部函數(shù)代碼段名
PUBLICA-FUNC
;外部公共符號
RSEG?DT?-a-func?A-FUNC
?-a-func?BYTE:
;可覆蓋局部數(shù)據(jù)段
x?00: DS 2;定義傳遞參數(shù)字節(jié)
RSEG?DT?A-FUNC?A-FUNC
-A-FUNC:
…;程序代碼體
END
;A-FUNC函數(shù)結(jié)束
因此,我們可以很方便地在程序代碼體處加入所期望的匯編程序。
最后,全部程序編譯鏈接通過后,應仔細查看生成的M96或M51文件,有無溢出或沖突的情況,數(shù)
據(jù)存儲區(qū)與程序存儲區(qū)是否定位恰當。對于C196來說,C96程序的代碼段、參數(shù)段可以設成是浮動定
位還是絕對定位的,當C96代碼段、參數(shù)段與匯編程序沖突時,應用RL196的編譯控制選項ram(…),rom(…),romcode(…),romdata(…)來精確定位代碼數(shù)據(jù)段解決沖突。
例如:
以上定義了模塊MOD2的代碼的常量數(shù)據(jù),MOD3的代碼放在ROM1中,即(2000-3FFFH)處。main、mod1、mod3的代碼和常量放在第二段ROM(4000-FFFFH)中,MOD1的常量數(shù)據(jù)放在(4000-5FFFH)的ROM中。STACK堆棧段的值應根據(jù)最后的
M96文件顯示的總共占用的內(nèi)存RAM,設為最大可用的堆棧段(用STACKSIZE控制項),C96的子程序調(diào)用最好不要超過三級,以免堆棧溢出。經(jīng)實踐證明,這些C96程序與匯編語言作到了真正意義上的“無縫鏈接”。
2.2 算法的改進
2.2.1 波形發(fā)生器工作原理簡介
波形發(fā)生器WG是80C196MC單片機最具特色的外設,在PWM伺服系統(tǒng)中起到關鍵的作用。80C196MC的WG可產(chǎn)生三相(三路)正弦PWM
(SP-WM)波形用于三相交流同步電機的變頻調(diào)速,這種情況的WG工作方式稱為中心對準方式;也可產(chǎn)生斬波調(diào)壓的PWM用于直流電機調(diào)壓調(diào)速,這種工作方式稱為邊沿對準方式。下面對PWM伺服系統(tǒng)采用的邊沿對準方式給予簡要介紹。
工作于邊沿對準方式,不考慮死區(qū)時間的影響的工作波形見圖3。有關的幾個寄存器意義如下:
(1)WG-RELOAD:重裝載寄存器,決定載波周期。
?。?)WG-COMPX(X=1,2,3):相位比較寄存器,決定波形占空比。
?。?)WG-COUNT:雙向計數(shù)器,為WG的時基(邊沿對準時,只向上計數(shù))。
當WG-COUNT的值一直與WG-RELOAD的值比較,當?shù)扔赪G-RELOAD的值時,WG復位到1,又重新開始計數(shù)。同時WG-COUNT的值也一直與WG-COMPX的值比較,當WG-COUTN的值等于WG-COMPX的值時改變輸出引腳(WGX)的電平,輸出PWM波形。當WG-COUNT復位為1時,引發(fā)一次WG中斷,CPU響應WG中斷時,根據(jù)電流環(huán)運算得出的新的WG-COMPX的值,改寫WG-COMPX的值,改變輸出波形的占空比,實現(xiàn)調(diào)節(jié)電機轉(zhuǎn)速的目的。
(4)WG-CON:控制、死區(qū)時間寄存器,決定WG的工作方式和死區(qū)時間。
前文已談到H型PWM電路中的一個橋臂,當其中的一個IGBT沒有退出飽和時,另一個IGBT又開始導通,會造成電源直接短路的“共態(tài)導通”現(xiàn)象,這是絕對不能出現(xiàn)的故障。要避免這一現(xiàn)象的發(fā)生
就是設置合適的死區(qū)時間,即當一個IGBT關斷后,經(jīng)歷一個死區(qū)時間,另一個IGBT接著導通,這樣就
可避免“共態(tài)導通”現(xiàn)象出現(xiàn)。
2.2.2 算法改進的思路
實際上,在轉(zhuǎn)速和電流環(huán)的計算中并不是全部計算都需要用到浮點運算的方式,為簡單起見,下面論述只考慮轉(zhuǎn)速環(huán)(電流環(huán)當成一比例環(huán)節(jié)):
因為采用的是轉(zhuǎn)速編碼器采樣轉(zhuǎn)速信號,而80C196MC系列的單片機用相移計數(shù)器的方式即可
以獲得時間T內(nèi)的轉(zhuǎn)速值,而這個值一定是整數(shù),因此轉(zhuǎn)速的跟蹤精度實際上取決于轉(zhuǎn)速編碼的精度,當T時間取一較小的時間間隔,我們完全可以用時間T內(nèi)獲得的脈沖數(shù)PL作為轉(zhuǎn)速值,實際上此時的轉(zhuǎn)速為:PL/T,我們以時間T作為速度環(huán)控制回路采樣周期,當給定速度同樣在整數(shù)值給出時,如圖4所示,由于輸出PWM周期一定(WG-RELOAD取為100μs),輸出比較寄存器WG-COMP1也只能在整數(shù)范圍變化,PI控制器的輸入為整數(shù)SP-GIVEN-SP-NOW,輸出同樣為整數(shù),所以只需調(diào)整PI的參數(shù)就可達到對轉(zhuǎn)速環(huán)的控制。
實際上,我們不難證明給定轉(zhuǎn)速如果換算成在T時間內(nèi)脈沖數(shù)不是整數(shù)的話,其控制作用同整數(shù)值的效果是一樣的。但是PI參數(shù)經(jīng)常以浮點數(shù)的方式出現(xiàn),我們在調(diào)試過程中先用浮點數(shù)計算定下P、I參數(shù)的值之后,再利用C96的賦值運算符賦予一整型變量,這樣即充分利用了C96的浮點運算庫,又精簡了代碼,提高了運算速度。對于電流環(huán)同樣可以依照以上方法確定電流環(huán)的P、I參數(shù)并進行電流控制。
2.2.3 程序框圖和實驗結(jié)果
在以上思路的指引下,我們設計了如下程序框圖并對轉(zhuǎn)速環(huán)進行了驗證,可以控制轉(zhuǎn)速環(huán)的調(diào)節(jié)時間在數(shù)量級以內(nèi)。
(文源網(wǎng)絡,侵刪)