陳志佳 孫書鷹 張煒棟
(軍械工程學院光學與電子工程系1,河北 石家莊 050003;92151部隊2,山東 青島 276825)
2007年6月,意法半導體公司推出了一款基于Cortex-M3內核的新型32位 ARM處理器,即STM32F103嵌入式微處理器。該款處理器無論在數據處理速度方面還是控制性能方面,都能很好地滿足伺服控制系統的要求。STM32F103對片上外圍設備進行了改進,內嵌了適合三相無刷電機控制的定時器和ADC。其高級PWM定時器可提供6路帶死區的PWM輸出,PWM定時器可使用72 MHz時鐘輸入;其中任何一個GPIO均可映像到外部中斷,GPIO的最大翻轉頻率可達18 MHz[1]。該款處理器的指令執行速度非常快,每秒可執行1.25×106條指令,再結合其高速數據處理能力,STM32F103能夠很好地支持控制算法,實現實時、高精度控制。
在電機選型方面,采用帶有星型齒輪減速裝置的三相直流無刷電機,以霍爾元件作為換向傳感器,通過控制器實現換向。霍爾傳感器輸出信號除了起到換向作用外,還可用作位置和速度傳感器,從而簡化了位置和速度檢測電路,并在保證精度的前提下降低費用,從而提高性價比。
三相直流電機伺服系統主要由位置傳感器、STM32F103嵌入式微處理器及其外圍設備、電機驅動器、伺服和位置檢測電路組成,系統整體結構如圖1所示。

圖1 系統整體結構圖Fig.1 Overall structure of system
位置傳感器由PC機通過串口提供角度信號,模擬實際火控系統向被控火力系統提供射擊諸元(方位角或射角),并將該位置信息通過串行口發送到STM32F103微處理器。對微處理器綜合接收到的位置信息與從伺服電機反饋回來的位置信息進行相減運算,得到位置誤差信號e。ec為誤差的變化,在微處理器中作為e的差分信號。在火力系統跟蹤過程中,微處理器不斷檢測e和ec,根據e和ec,對比例系數Kp、微分系數Ki和積分系數Kd進行在線修改,同時根據增量PID控制的原理,利用參數Kp、Ki和Kd得到誤差控制量。隨后微處理器根據誤差控制量,計算得到PWM波形占空比控制信號,并控制輸出至直流電機驅動器的電壓,進而改變電機轉速和轉向等,從而達到火力系統實時跟蹤火控系統給定諸元的目的。
本設計采用ZHauto WS-2406三相無刷電機驅動器,驅動器及其端口連接如圖2所示。

圖2 驅動器及其端口連接示意圖Fig.2 Connections of the driver and its ports
除電源外,該驅動器端口共有三類信號,即三相電機動力驅動信號、三相霍爾換向信號和電機狀態控制信號。各端口信號的功能具體如下。
①三相電機驅動信號U、V和W為三相無刷電機提供相位互差120°的方波電流,產生電磁轉矩,驅動電機轉動。
②三相霍爾換向信號A、B和C是電機霍爾傳感器產生的三相換向輸出信號,三相之間各差120°。在本設計中,利用該信號檢測電機轉角和轉速。
③電機狀態控制信號分為轉向控制信號CW/CCW、轉速控制信號DA和電機制動信號BRK。其中,CW/CCW為數字信號,且低電平有效,由微處理器的PC5和PC6端口對其控制。DA為模擬信號,輸入電壓為0~+5 V,調節此處電壓即可調節電機轉速,由微處理器輸出的PWM信號經積分后產生0~+5 V模擬信號,用來控制電機轉速。BRK為數字信號,設計時將其與微處理器的PC7端口連接,實現制動控制。
三相無刷電機的三相霍爾傳感器輸出信號與電機的轉角之間具有嚴格的對應關系[2]。在一個周期(360°)內,霍爾傳感器輸出的三相方波電壓波形A、B、C三相換向信號可以分為六個區間,在每個區間對該三相信號進行編碼,可得到一個周期內的信號編碼為 010、011、001、101、100、110。該編碼為三位循環碼,由此可以判斷電機轉軸角度所在區間,角度分辨率為60°。如果電機是四個極對數,則角度分辨率為30°,這樣就可實現計數式測角。由于對角度量進行微分可以得到速度量,因此,微處理器將采集到的角度值進行差分處理就可得到電機的轉速。
由上述分析可以看出,三相霍爾傳感器輸出信號可以作為計數式角度傳感器,經數據處理后得到角度的變化率,實現測速發電機的功能。同時,由于霍爾傳感器與電機轉軸為剛性連接,因此不僅可以利用其替代角度傳感器和測速發電機,而且不存在機械傳動鏈的空回和延遲等問題。但是,由于角度分辨率較低,設計中采用的四個極對數電機的分辨率只能達到30°,因此,無論是測角還是測速必然會出現較大的階梯誤差。為解決這一問題,本系統選用較大的機械傳動比,使電機與被控對象之間存在較大轉速差,即電機通常工作在高速狀態,其對應的實際角度分辨率因此得以提高。設計中采用210∶1的星型機械傳動鏈,其實際角度分辨率的表達式為:

式中:r為實際角度分辨率;R為電機角度分辨率;Ω為電機轉速;ω為被控對象轉速。
被控對象角度分辨率為:

該角度值換算成角密位為0.143×16.6666=2.38密位,可以滿足火控系統跟蹤系統對角度分辨率的要求。
A、B、C三相信號編碼為循環碼,每次只有一相信號發生翻轉。微處理器對此翻轉信號產生的中斷進行計數,實現角度檢測功能。為統一觸發中斷信號形式,將所有跳變統一變換為窄脈沖。在此采用可重觸發的雙單穩態集成芯片74LS123予以實現。該芯片的觸發方式有上升沿觸發和下降沿觸發兩種。由于每個74LS123芯片有兩個觸發器單元,每相用一片,一個檢測低變高跳變,另一個檢測高變低跳變。三相共用三片74LS123,其6個觸發器單元由Q端輸出并接OC門反相器,各OC門的反相輸出連接在一起進行上拉形成線或。位置檢測電路及脈沖信號示意圖如圖3所示。

圖3 位置檢測電路與脈沖信號示意圖Fig.3 Pulse signal schematic and circuit of position detection
PID控制具有原理簡單、魯棒性強等優點,但也存在著非線性、時變以及參數在線調整困難等問題,在實際應用中有其局限性;而模糊控制則可以很好地解決上述問題,因而被廣泛應用于模型不確定、非線性和參數時變的控制過程中[3],但普通的模糊控制穩態精度較低。因此,考慮采用模糊PID控制,充分發揮二者優點,從而達到較好的控制效果[4]。
模糊控制器主要包括模糊化接口、知識庫、模糊推理機和解模糊接口四部分[5]。本模型采用二輸入三輸出結構,其組成如圖4所示。控制器的輸入經過模糊化接口后,由精確量轉變為模糊量;由數據庫和規則庫構成的知識庫為模糊推理提供數據和推理規則;經過模糊推理后,解模糊即可輸出精確數字量。

圖4 模糊控制器組成框圖Fig.4 Composition of fuzzy controller
3.1.1 輸入輸出變量的模糊化
模糊控制器以誤差e和誤差變化率ec作為輸入,以Kp、Ki和 Kd作為輸出,其中 e和 ec都是連續變量。試驗得到e的基本論域為[-5,5],ec的基本論域為[-6,6]。將 e、ec 以及 Kp、Ki和 Kd變換到模糊論域E={-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6}上,對應子集為{NB,NM,NS,ZO,PS,PM,PB},其表示的含義為{負大,負中,負小,零,正小,正中,正大}。
3.1.2 模糊控制規則的建立
根據對已有直流伺服系統設計經驗的總結,可以得出以下三條 PID控制器參數 Kp、Ki和 Kd的規律[6-7]。①當|e|較大時,為迅速減小誤差,應選取較大的Kp。同時為避免誤差瞬間變大可能引起的微分過飽和,應取取較小的Kd。為防止出現較大的超調,需要限制積分作用,通常選取較小的Ki。②當|e|和|ec|處于中等大小時,為使系統響應具有較小超調,應選取較小的Kp,而Ki和Kd取值要適中。③當|e|較小時,為使系統提高精度,不產生振蕩,應該選取較小的Kp和較大的Ki。Kd的值根據ec大小決定,當ec較大時,Kd取較小值。根據上述基本原則和試驗中的經驗得到模糊控制規則表如表1所示。

表1 Kp、Ki和Kd的模糊控制規則表Tab.1 Fuzzy control rules of Kp、Kiand Kd
3.1.3 解模糊
由模糊控制規則得到的推理結果為模糊值,不能直接用作被控對象的控制量,而是需要將其轉換為微處理器可以識別的精確量。這里輸入輸出量均采用三角形隸屬度函數,利用查表法解模糊即可得出精確的、適合微處理器運算所需的數字量[8]。

根據PID控制的定義,輸入與輸出的關系為:式中:Kp、Ki和Kd均由模糊推理得到。要計算P(k),不僅需要得到本次偏差信號e(k)與上次的偏差信號e(k-1),還需要對以前的歷次偏差信號e(j)作累加。這將增大微處理器計算量,在實際應用中是不合適的。
為解決上述問題,可假設P(k-1)的表達式為:

將式(3)與式(4)相減,可得增量型 PID算式為[9]:

由式(5)可知,ΔP(k)僅與 e(k)、e(k-1)和 e(k-2)有關。
在PID控制過程中,當誤差e較大時,由于積分的作用會產生超調量,嚴重時甚至會導致系統振蕩。因此,需采取積分分離的措施。在偏差量較大時,將積分系數Ki置為0,只有當偏差降低到一定值后,才將積分作用引入[10]。
本設計中的臨界值取5,表達式如式(6)所示:

根據上述計算,得到模糊PID控制流程圖如圖5所示。

圖5 模糊PID控制流程圖Fig.5 Process of fuzzy PID control
在測試試驗中,由PC機代替位置傳感器,根據模擬飛行航路,計算并輸出火力系統射擊諸元(“射擊諸元”是指火炮射擊時裝定的數據的總稱,包括高低角、方位角等信息),并將這些值通過串口發送至微處理器STM32F103。微處理器控制伺服電機轉動,實現模擬跟蹤,在此期間不斷向PC機發送當前伺服系統的位置信息,并最終在PC機號加以顯示,用于測試跟蹤精度和速度。
模擬航路跟蹤及其誤差曲線如圖6所示。

圖6 模擬航路跟蹤與誤差曲線Fig.6 Simulated route tracking and error curve
由以上分析可知,跟蹤誤差主要由角度傳感器產生。如果需要提高系統精度,可以通過提高傳動比或采用單獨的高精度角度傳感器加以實現。
本設計的直流電機伺服系統以新型ARM處理器STM32F103為核心構建。在軟件設計方面充分利用了該款微處理器指令和數據處理速度快的優勢,采用增量型積分分離式數字PID控制與模糊控制結合的控制策略,提高了跟蹤精度;在硬件電路設計方面,處理器的PWM輸出并沒有直接用于電機控制,而是經過積分后輸入到三相直流電機驅動器,實現對電機的控制。經調試試驗,系統基本達到了硬件電路所能達到的最小誤差,具有較好的實時性,基本達到了火控系統某實驗演示系統的要求。
[1]李寧.基于MDK的STM32處理器開發應用[M].北京:北京航空航天大學出版社,2008.
[2]欒亞群,程婷,趙一潔.基于ATmega48的三相無刷電機控制方法[J].國外電子元器件,2008,16(11):38 -42.
[3]諸靜.模糊控制理論與系統原理[M].北京:機械工業出版社,2005.
[4]呂礦生,周杏鵬,陶連斌,等.基于模糊PID的雷蒙磨控制系統的設計與實現[J].自動化儀表,2009,30(2):27 -29.
[5]席愛民.模糊控制技術[M].西安:西安電子科技出版社,2008.
[6]王祥好.模糊PID控制算法在智能小車中的研究與應用[D].合肥:合肥工業大學,2009.
[7]南新元,陳志軍,程志江.基于模糊PID控制的電鍋爐溫度過程控制系統[J].自動化儀表,2008,29(5):5 -8.
[8]尹曉落.模糊PID控制在直流調速系統中的應用[D].合肥:合肥工業大學,2008.
[9]徐大誠,鄒麗新,丁建強.微型計算機控制技術及應用[M].北京:高等教育出版社,2003.
[10]賴壽宏.微型計算機控制技術[M].北京:機械工業出版社,2010.