李麗嬌,石 然,嚴(yán) 丹,馬吉雨,張 俊
太陽(yáng)翼,即太陽(yáng)能帆板,主要應(yīng)用于衛(wèi)星、宇宙飛船的供能.衛(wèi)星發(fā)射時(shí)太陽(yáng)翼處于折疊轉(zhuǎn)態(tài),星箭分離后打開并在衛(wèi)星飛行過程中不斷調(diào)整方向,使太陽(yáng)能板對(duì)準(zhǔn)太陽(yáng),為整星工作提供能量[1].由于擔(dān)負(fù)著為衛(wèi)星提供能源的重要任務(wù),太陽(yáng)翼在發(fā)射后能否正常工作直接影響著衛(wèi)星發(fā)射的成敗.其中,驅(qū)動(dòng)控制器作為太陽(yáng)翼機(jī)構(gòu)系統(tǒng)的關(guān)鍵技術(shù),對(duì)機(jī)構(gòu)的穩(wěn)定、高精度運(yùn)行起著關(guān)鍵性的作用.
相關(guān)文獻(xiàn)針對(duì)星載太陽(yáng)翼驅(qū)動(dòng)控制進(jìn)行了研究,其中任守志給出了星載太陽(yáng)翼研制體系、部件技術(shù)和搭載驗(yàn)證等方面的建議[2];黃洪鐘對(duì)太陽(yáng)翼驅(qū)動(dòng)結(jié)構(gòu)建模并進(jìn)行故障分析[3];劉強(qiáng)通過增大系統(tǒng)振動(dòng)阻尼,控制太陽(yáng)翼姿態(tài)調(diào)整后的殘余振動(dòng)衰減[4].經(jīng)研究發(fā)現(xiàn),現(xiàn)有文獻(xiàn)大多是對(duì)太陽(yáng)翼的展開或驅(qū)動(dòng)結(jié)構(gòu)進(jìn)行可靠性評(píng)估、故障分析[5],缺乏完整的驅(qū)動(dòng)設(shè)計(jì),這是因?yàn)橐环矫婧教炱骷L(zhǎng)壽命、高可靠、高精度的方向發(fā)展,可靠性評(píng)估和故障分析有著非?,F(xiàn)實(shí)的意義,另一方面由于航天技術(shù)的保密性,驅(qū)動(dòng)控制相關(guān)論文的獲取受限.
本文設(shè)計(jì)并實(shí)現(xiàn)了一種適用于太陽(yáng)翼的綜合驅(qū)動(dòng)控制器,以現(xiàn)場(chǎng)可編程邏輯器件FPGA為核心,使用硬件描述語(yǔ)言VHDL編寫其邏輯功能,通過RS-422異步通信串口接收上位機(jī)指令,結(jié)合采集到的位置信息和電流信息實(shí)現(xiàn)對(duì)太陽(yáng)翼進(jìn)行高可靠、高精度的運(yùn)動(dòng)控制.設(shè)計(jì)在Modlesim中進(jìn)行仿真,并在FPGA開發(fā)板、步進(jìn)電機(jī)及相關(guān)外圍電路上進(jìn)行實(shí)物驗(yàn)證.
由于太空中電磁、輻射環(huán)境比較惡劣,當(dāng)高能粒子進(jìn)入半導(dǎo)體器件靈敏區(qū)時(shí)會(huì)使器件邏輯反轉(zhuǎn),從而導(dǎo)致計(jì)算結(jié)果錯(cuò)誤、工作異常,嚴(yán)重時(shí)會(huì)發(fā)生災(zāi)難性事故.因此本文選用航天級(jí)反熔絲FPGA器件,可有效避免單粒子反轉(zhuǎn)效應(yīng).
太陽(yáng)翼在工作時(shí)由于展開面積大,質(zhì)心離衛(wèi)星本體遠(yuǎn),大角度快速姿態(tài)機(jī)動(dòng)會(huì)對(duì)衛(wèi)星產(chǎn)生動(dòng)態(tài)激勵(lì),從而影響衛(wèi)星平臺(tái)的穩(wěn)定性[6-7],造成高分辨率成像質(zhì)量下降,因此對(duì)太陽(yáng)翼的控制必須緩慢、平穩(wěn).電機(jī)作為一種運(yùn)動(dòng)驅(qū)動(dòng)設(shè)備,是太陽(yáng)翼運(yùn)動(dòng)控制的關(guān)鍵部件.步進(jìn)電機(jī)每接收到一個(gè)電脈沖信號(hào)就轉(zhuǎn)動(dòng)一個(gè)步距角,具有開環(huán)控制、精度高、停轉(zhuǎn)可保持力矩、抗干擾能力強(qiáng)等特點(diǎn)[8].本文選用兩相混合式步進(jìn)電機(jī),步距角為1.8°,帶有起跳功能.
按照設(shè)計(jì)要求,機(jī)構(gòu)轉(zhuǎn)速(機(jī)構(gòu)轉(zhuǎn)速即電機(jī)經(jīng)減速器后輸出的速度值)小于1.2(°)/s,在0~0.1(°)/s速度段時(shí)差值須小于0.01(°)/s,0.1~1.2(°)/s速度段時(shí)誤差須小于10%.此外,步進(jìn)電機(jī)單步運(yùn)行時(shí),可能會(huì)存在失步、過沖、轉(zhuǎn)矩波動(dòng)大和低頻震蕩嚴(yán)重等問題[9].為此,控制器內(nèi)部將采用自主梯形速度規(guī)劃及加速度、啟動(dòng)制動(dòng)速度可設(shè)置的方案,便于后期實(shí)際負(fù)載實(shí)驗(yàn)時(shí)獲取最佳速度曲線,降低失步及過沖的風(fēng)險(xiǎn).且對(duì)步進(jìn)電機(jī)進(jìn)行64細(xì)分驅(qū)動(dòng),不僅可提高歸零時(shí)的位置精度,且可減緩震動(dòng),降低運(yùn)轉(zhuǎn)噪音[10].在控制器外部,則采用100:1減速比的減速器提高輸出扭矩.
綜合驅(qū)動(dòng)控制器主要包括指令單字節(jié)和多字節(jié)收發(fā)、指令解析、零位信號(hào)采集、電流采集、內(nèi)部信息采集、AD控制、位置控制、速度控制、步進(jìn)控制、PWM細(xì)分控制和PWM脈沖控制等模塊,其系統(tǒng)框圖如圖1所示.
該驅(qū)動(dòng)控制器的主要功能是:通過RS-422異步傳輸接口接收上位機(jī)發(fā)送的單字節(jié),通過指令多字節(jié)接收模塊進(jìn)行指令的拼接,由指令解析模塊解析后獲得完整的遙控指令或遙測(cè)指令,發(fā)送到對(duì)應(yīng)模塊進(jìn)行控制;位置控制模塊接收PWM脈沖輸出模塊的步進(jìn)信號(hào)與零位信號(hào)采集模塊的零位信號(hào),對(duì)內(nèi)部位置計(jì)數(shù)器進(jìn)行更新;速度控制模塊根據(jù)位置控制模塊的零位信號(hào)和指令解碼發(fā)送的歸零指令或調(diào)速指令,規(guī)劃速度曲線,并計(jì)算每一步的時(shí)間間隔;步進(jìn)控制模塊根據(jù)時(shí)間間隔輸出脈沖信號(hào);PWM細(xì)分模塊使用查找表獲取兩相繞組的占空比值,并計(jì)算高低電平對(duì)應(yīng)的周期數(shù);PWM脈沖控制模塊控制PWM脈沖的輸出;通過驅(qū)動(dòng)芯片驅(qū)動(dòng)步進(jìn)電機(jī)運(yùn)動(dòng),經(jīng)減速器后連接至太陽(yáng)翼,最終實(shí)現(xiàn)對(duì)太陽(yáng)翼的控制.
指令收發(fā)模塊包括單字節(jié)收發(fā)和多字節(jié)收發(fā),其中單字節(jié)收發(fā)模塊按照RS422串口通信協(xié)議收發(fā)數(shù)據(jù),傳輸速率為115200bps,通信方式為兩收一發(fā).數(shù)據(jù)格式如圖2所示,包括1位起始位、8位數(shù)據(jù)位、1位奇偶校驗(yàn)位和1位終止位.其中起始位為0;校驗(yàn)位采用奇校驗(yàn)法得到,當(dāng)數(shù)據(jù)中1的個(gè)數(shù)為奇數(shù)時(shí)校驗(yàn)位為0,1的個(gè)數(shù)為偶數(shù)時(shí)為1;停止位為1.
接收指令時(shí),從RS422異步傳輸接口接收單字節(jié)數(shù)據(jù),然后將其組裝為多字節(jié)數(shù)據(jù)包,當(dāng)校驗(yàn)碼錯(cuò)誤或字節(jié)長(zhǎng)時(shí)間未發(fā)送時(shí)重新傳輸,組裝成功后將數(shù)據(jù)包發(fā)送到指令解析模塊.當(dāng)多字節(jié)數(shù)據(jù)包輸出有效時(shí),指令解析模塊無(wú)條件接受.新指令可以覆蓋未執(zhí)行完成的舊指令.一旦輸出有效,必須連續(xù)傳送一個(gè)數(shù)據(jù)包對(duì)應(yīng)的完整數(shù)據(jù)域,不可以中斷.
指令發(fā)送過程與之相反,內(nèi)部信息采集模塊根據(jù)指令對(duì)相應(yīng)模塊進(jìn)行遙測(cè)信息或調(diào)試信息的采集,經(jīng)校驗(yàn)數(shù)據(jù)無(wú)誤后發(fā)送到RS-422串口,根據(jù)傳輸數(shù)據(jù)格式打包后按位依次輸出.
接收到指令后,指令解析模塊根據(jù)指令格式進(jìn)行解析,指令格式為8位指令類別碼、4位子指令碼和4位指令對(duì)象碼,有參數(shù)時(shí)還包括32位參數(shù)數(shù)據(jù),指令格式及詳細(xì)說明如表1所示.
圖1 驅(qū)動(dòng)控制器系統(tǒng)框圖Fig.1 System block diagram of the drive controller
圖2基于RS-422的數(shù)據(jù)傳輸格式Fig.2 Data transmission format based on RS-422
指令主要分為控制指令和調(diào)試指令,其中控制指令包括調(diào)速指令、歸零指令、停止指令和遙測(cè)指令.指令解析時(shí),如果是調(diào)速指令,則提取目標(biāo)速度,更新參數(shù)寄存器并輸出至速度控制模塊,進(jìn)行速度規(guī)劃并驅(qū)動(dòng)電機(jī)使得速度達(dá)到目標(biāo)值;歸零指令用于太陽(yáng)翼位置初始化,當(dāng)接受到歸零指令時(shí),速度控制模塊則持續(xù)監(jiān)測(cè)零位信號(hào).當(dāng)零位信號(hào)出現(xiàn)上升脈沖時(shí),表示機(jī)構(gòu)接近零位位置,則控制電機(jī)減速至制動(dòng)速度,當(dāng)零位信號(hào)再降為低電平時(shí),表示機(jī)構(gòu)到達(dá)零位位置,則停轉(zhuǎn)鎖定電機(jī).如果是停止指令,速度控制模塊則減速至制動(dòng)速度,停轉(zhuǎn)鎖定電機(jī).如果是遙測(cè)指令,則對(duì)信息收集模塊發(fā)起信息收集請(qǐng)求.指令中參數(shù)為32位數(shù)據(jù),包括1位符號(hào)位,15位整數(shù)位和16位小數(shù)位.
表1 指令格式及詳細(xì)說明Tab.1 Instruction format and detailed descriptions
除上述控制指令外,本文還提供了調(diào)試時(shí)使用的內(nèi)部調(diào)試指令,包括調(diào)試信息采集指令、軟件復(fù)位指令、加速度參數(shù)設(shè)置指令、機(jī)構(gòu)歸零時(shí)勻速段速度設(shè)置指令、機(jī)構(gòu)起跳制動(dòng)速度設(shè)置指令、安全電流參數(shù)設(shè)置指令、占空比比例參數(shù)設(shè)置指令和電流開環(huán)設(shè)置指令等,用來(lái)調(diào)試加速度、初始累加量、累加量和安全電流等參數(shù).內(nèi)部調(diào)試指令在調(diào)試階段使用,以獲得最優(yōu)參數(shù),使系統(tǒng)運(yùn)轉(zhuǎn)時(shí)達(dá)到最佳性能.
2.3.1 速度曲線規(guī)劃
速度控制模塊的主要功能是根據(jù)接收到的目標(biāo)速度、歸零信號(hào)或停止信號(hào),對(duì)速度進(jìn)行規(guī)劃,并根據(jù)速度曲線計(jì)算每一步的時(shí)間間隔.其中,速度規(guī)劃是依據(jù)步進(jìn)電機(jī)的梯形速度曲線來(lái)控制的.但由于太陽(yáng)翼運(yùn)轉(zhuǎn)過程中會(huì)對(duì)機(jī)構(gòu)執(zhí)行調(diào)速、歸零或停止控制,實(shí)際的速度曲線不一定是標(biāo)準(zhǔn)的梯形曲線,可能是梯形曲線的一部分,也有可能是兩個(gè)或多個(gè)梯形曲線的組合,具體曲線視指令情況而定.圖3列舉了部分可能的曲線.
圖3 速度曲線Fig.3 Speed curve
圖3中給了3種狀況的速度曲線,說明如下:
(1) 0a段:初始是停止?fàn)顟B(tài),依次執(zhí)行高速正向調(diào)速和歸零指令.執(zhí)行第一條調(diào)速指令時(shí),由于目標(biāo)速度大于起跳速度,先直接跳至起跳速度,再經(jīng)正向加速達(dá)到目標(biāo)速度,并保持勻速;當(dāng)接收到第二條歸零指令時(shí),由于當(dāng)前速度大于制動(dòng)速度,進(jìn)入正向減速狀態(tài),當(dāng)接收到預(yù)零位信號(hào)時(shí),速度仍大于起跳速度,進(jìn)入零位間減速狀態(tài),減速至制動(dòng)速度后接收到真零位信號(hào),速度跳至0實(shí)現(xiàn)歸零.
(2) ab段:初始是停止?fàn)顟B(tài),依次執(zhí)行高速反向調(diào)速、低速正向調(diào)速和停止指令.執(zhí)行第一條調(diào)速指令時(shí),由于目標(biāo)速度大于起跳速度,先直接跳至起跳速度,再經(jīng)反向加速達(dá)到目標(biāo)速度,并保持勻速;當(dāng)接收到第二條調(diào)速指令時(shí),由于方向發(fā)生了改變,先進(jìn)行反向減速,減至制動(dòng)速度時(shí)速度跳至0,由于正向目標(biāo)速度小于起跳速度,直接跳至目標(biāo)速度并保持勻速;接收到第3條停止指令時(shí),由于當(dāng)前速度小于制動(dòng)速度,速度直接跳至0實(shí)現(xiàn)停止.
(3) bc段:初始是停止?fàn)顟B(tài),依次執(zhí)行低速反轉(zhuǎn)調(diào)速和歸零指令.執(zhí)行第一條調(diào)速指令時(shí),由于目標(biāo)速度小于起跳速度,直接跳至目標(biāo)速度并保持勻速;當(dāng)接收到第二條歸零指令時(shí),由于速度小于起跳速度,直接跳至0,再跳至正向起跳速度,進(jìn)入正向加速狀態(tài),當(dāng)接收到預(yù)零位信號(hào)時(shí),速度大于起跳速度,進(jìn)入零位間減速狀態(tài),減速至制動(dòng)速度時(shí)保持勻速,直到接收到真零位信號(hào),速度跳至0實(shí)現(xiàn)歸零.
以上列舉了3種可能的速度曲線,但由于步進(jìn)電機(jī)可以正轉(zhuǎn)、反轉(zhuǎn),接收的指令有調(diào)速、歸零和停止,新指令可以覆蓋舊指令等多種原因,速度曲線的可能性有很多,在此不盡詳述.
2.3.2 速度規(guī)劃狀態(tài)機(jī)設(shè)計(jì)
速度曲線規(guī)劃通過狀態(tài)機(jī)來(lái)實(shí)現(xiàn),該狀態(tài)機(jī)設(shè)計(jì)了12種狀態(tài),分別為正向加速、正向勻速、正向減速、零位間正向加速、起跳速度勻速、零位間正向減速、反向加速、反向勻速、反向減速、鎖定停止、零位鎖定和空閑狀態(tài),狀態(tài)機(jī)及其轉(zhuǎn)換如圖4所示.
由于狀態(tài)機(jī)較為復(fù)雜,只給出了設(shè)計(jì)的12種狀態(tài)以及狀態(tài)之間的轉(zhuǎn)換,轉(zhuǎn)換條件省略,雙向箭頭表示狀態(tài)間能相互轉(zhuǎn)換.對(duì)于太陽(yáng)翼的控制主要有調(diào)速、歸零和停止,其中停止指令實(shí)質(zhì)是目標(biāo)速度為0的調(diào)速,下面給出調(diào)速和歸零兩種情況下部分狀態(tài)轉(zhuǎn)換的分析.
1) 空閑狀態(tài):如果接收到調(diào)速指令,如果目標(biāo)速度不為0,方向信號(hào)為0時(shí)進(jìn)入正向加速,方向?yàn)?則進(jìn)入反向加速;目標(biāo)速度為0則進(jìn)入鎖定停止?fàn)顟B(tài).如果接收到歸零指令,則開始正向加速.
2) 正向加速狀態(tài):如果接收到反向調(diào)速指令,當(dāng)前速度不為0時(shí)進(jìn)入正向減速狀態(tài);當(dāng)前速度為0且目標(biāo)轉(zhuǎn)速也為0時(shí)進(jìn)入鎖定停止?fàn)顟B(tài);當(dāng)前速度為0目標(biāo)速度不為0時(shí)進(jìn)入反向加速狀態(tài).如果接收到正向調(diào)試指令,當(dāng)前速度大于目標(biāo)速度時(shí)進(jìn)入正向減速狀態(tài);當(dāng)前速度等于目標(biāo)速度,且當(dāng)前速度為0時(shí)鎖定停止,否則保持勻速;當(dāng)前速度小于目標(biāo)速度時(shí)正向加速.如果接收到歸零指令,當(dāng)前速度大于預(yù)零位前勻速速度時(shí)進(jìn)入正向減速狀態(tài);當(dāng)前速度等于預(yù)零位前勻速速度,且接收到預(yù)零位信號(hào)時(shí)進(jìn)入零位間減速,否則保持勻速;當(dāng)前速度大于起跳速度,且接收到預(yù)零位信號(hào)時(shí)進(jìn)入零位間減速狀態(tài),否則進(jìn)入正向加速狀態(tài);當(dāng)前速度等于起跳速度,且接收到預(yù)零位信號(hào)時(shí)進(jìn)入起跳速度勻速狀態(tài),接收到真零位信號(hào)則進(jìn)入鎖定零位狀態(tài),否則進(jìn)入正向加速狀態(tài);當(dāng)前速度小于起跳速度,且接收到預(yù)零位信號(hào)時(shí)進(jìn)入零位間正向加速狀態(tài),接收到真零位信號(hào)則進(jìn)入鎖定零位狀態(tài),否則進(jìn)入正向加速狀態(tài).
圖4 速度規(guī)劃狀態(tài)機(jī)及其轉(zhuǎn)換Fig.4 Speed planning state machine and conversion
3) 反向加速狀態(tài):如果接收到正向調(diào)速指令,當(dāng)前速度不為0時(shí)進(jìn)入反向減速狀態(tài);當(dāng)前速度為0且目標(biāo)轉(zhuǎn)速也為0時(shí)則進(jìn)入鎖定停止?fàn)顟B(tài);當(dāng)前速度為0目標(biāo)速度不為0則進(jìn)入正向加速狀態(tài);如果接收到反向調(diào)速指令,當(dāng)前速度大于目標(biāo)速度時(shí)進(jìn)入反向減速狀態(tài);當(dāng)前速度等于目標(biāo)速度,且當(dāng)前速度為0時(shí)鎖定停止,否則保持勻速;當(dāng)前速度小于目標(biāo)速度時(shí)反向加速.如果接收到歸零指令,當(dāng)前速度為0時(shí)進(jìn)入正向加速狀態(tài),否則進(jìn)入反向減速狀態(tài).
4) 零位間正向加速狀態(tài):如果接收到反向調(diào)速指令,當(dāng)前速度不為0時(shí)進(jìn)入正向減速狀態(tài);當(dāng)前速度為0且目標(biāo)轉(zhuǎn)速也為0時(shí)則進(jìn)入鎖定停止?fàn)顟B(tài);當(dāng)前速度為0目標(biāo)速度不為0則進(jìn)入反向加速狀態(tài).如果接收到正向調(diào)速指令,當(dāng)前速度大于目標(biāo)速度時(shí)進(jìn)入正向減速狀態(tài);當(dāng)前速度等于目標(biāo)速度,且當(dāng)前速度為0時(shí)鎖定停止,否則保持勻速;當(dāng)前速度小于目標(biāo)速度時(shí)正向加速.如果接收到歸零指令,當(dāng)前速度大于起跳速度時(shí)進(jìn)入零位間正向減速狀態(tài);當(dāng)前速度等于起跳速度,且接收到真零位信號(hào)時(shí)進(jìn)入鎖定零位狀態(tài),否則進(jìn)入起跳速度勻速狀態(tài);當(dāng)前速度小于起跳速度,且接收到真零位信號(hào)則進(jìn)入鎖定零位狀態(tài),否則進(jìn)入零位間正向加速狀態(tài).
2.3.3 步進(jìn)間隔計(jì)算
完成速度曲線規(guī)劃后,模塊根據(jù)速度曲線計(jì)算每一步的時(shí)間間隔.速度曲線可能包含的有勻加速、勻速和勻減速3種情況,勻速時(shí)取速度的倒數(shù)便可得到時(shí)間間隔,勻加速時(shí)根據(jù)運(yùn)動(dòng)學(xué)方程
(1)
進(jìn)行推導(dǎo),得到時(shí)間計(jì)算公式
(2)
那么時(shí)間間隔的計(jì)算方式如下:
(3)
根據(jù)式(3)進(jìn)行硬件設(shè)計(jì),包括速度、初始速度累加值、速度累加值、速度累加和、速度累加和開方值等寄存器.每次計(jì)算時(shí)間間隔時(shí),只需計(jì)算速度累加值及其開方值,與上一次的計(jì)算結(jié)果相減便可得到時(shí)間間隔.
位置控制模塊主要接收來(lái)自位置采集模塊的零位信號(hào)和PWM脈沖輸出模塊的步進(jìn)信號(hào).其中,零位信號(hào)由零位傳感器檢測(cè)得到,為標(biāo)準(zhǔn)的TTL電平,一般為低電平,當(dāng)驅(qū)動(dòng)機(jī)構(gòu)達(dá)到零位的上升沿時(shí),轉(zhuǎn)為高電平,即出現(xiàn)一個(gè)脈沖上升沿,高電平維持,驅(qū)動(dòng)機(jī)構(gòu)繼續(xù)轉(zhuǎn)過掃描脈沖寬度4.5°后,該信號(hào)又從高電平轉(zhuǎn)為低電平,即出現(xiàn)一個(gè)脈沖下降沿.零位信號(hào)采用三高三低的方式除毛刺,保證信號(hào)可靠性.即當(dāng)零位信號(hào)在3個(gè)連續(xù)的低電平狀態(tài)后變?yōu)?個(gè)連續(xù)的高電平,則判斷為預(yù)零位信號(hào);在3個(gè)連續(xù)的高電平狀態(tài)后變?yōu)?個(gè)連續(xù)的低電平,則判斷為真零位信號(hào).
位置控制模塊如果接收的是零位信號(hào),則將內(nèi)部位置計(jì)數(shù)器清零,如果是步進(jìn)信號(hào),則根據(jù)方向信號(hào)對(duì)內(nèi)部位置計(jì)數(shù)器進(jìn)行累加或遞減.同時(shí),該模塊設(shè)置了失步標(biāo)志寄存器,用來(lái)記錄最近一次到零位時(shí)的失步情況.具體實(shí)現(xiàn)方法為,當(dāng)接收到零位信號(hào)時(shí),如果當(dāng)前位置計(jì)數(shù)器不為0,則判斷為失步.
為了實(shí)現(xiàn)太陽(yáng)翼的高精度控制,需要對(duì)步進(jìn)電機(jī)進(jìn)行細(xì)分控制,其實(shí)質(zhì)是將步進(jìn)電機(jī)相線圈中的方波電流改為階梯狀正弦波,使得合成磁場(chǎng)以微步的步距角旋轉(zhuǎn),帶動(dòng)轉(zhuǎn)子以微步轉(zhuǎn)動(dòng).
由于正弦波的對(duì)稱性,計(jì)算占空比時(shí)只需計(jì)算前1/4周期,使用時(shí)加上相位控制和方向控制,就能得到正向遞增、正向遞減、反向遞增和反向遞減四種情況的占空比變化.本文對(duì)四分之一周期的正弦波進(jìn)行64等分,再采用SPWM等效面積法計(jì)算各個(gè)等分對(duì)應(yīng)的占空比,并將結(jié)果參數(shù)保存到ROM表中供細(xì)分驅(qū)動(dòng)時(shí)使用.
PWM脈沖使用LMD18200芯片驅(qū)動(dòng),根據(jù)其數(shù)據(jù)手冊(cè)接口時(shí)序可知,BRK、PWM及DIR3種輸出信號(hào)的脈沖寬度必須大于1 us,而且3個(gè)信號(hào)的切換不能同時(shí)發(fā)生,需要至少間隔1 us.因此,設(shè)置及全局狀態(tài)機(jī)對(duì)其進(jìn)行控制,以滿足時(shí)序要求.此狀態(tài)機(jī)設(shè)計(jì)了7種狀態(tài),IDLE為空閑狀態(tài),RUN為運(yùn)行狀態(tài),BRAKE0為BRK、PWM、DIR信號(hào)為低的剎車狀態(tài),BRAKE1為BRK為高、PWM、DIR信號(hào)為高的剎車狀態(tài),BRAKE2為BRK、PWM為高、DIR信號(hào)為低的剎車狀態(tài),BRAKE3為BRK位高、PWM、DIR信號(hào)為低的剎車狀態(tài),BRAKE4為BRK、PWM、DIR信號(hào)為低的剎車狀態(tài).狀態(tài)機(jī)及其轉(zhuǎn)換圖見圖5.
圖5 PWM時(shí)序控制狀態(tài)機(jī)Fig.5 PWM timing control state machine
狀態(tài)之間的轉(zhuǎn)換條件為:初始狀態(tài)為IDLE,接收到剎車信號(hào)則進(jìn)入到BRAKE0狀態(tài),否則接收到PWM細(xì)分有效信號(hào)則進(jìn)入到RUN狀態(tài),進(jìn)行PWM波輸出,否則保持空閑狀態(tài);RUN狀態(tài)時(shí),接收到剎車信號(hào)則進(jìn)入到BRAKE0狀態(tài),否則接收到PWM細(xì)分有效信號(hào)則保持RUN狀態(tài),進(jìn)行PWM波輸出;BRAKE狀態(tài)等待時(shí)間達(dá)到后向下一BRAKE狀態(tài)轉(zhuǎn)換,否則維持原態(tài).
電流環(huán)使用AD574模數(shù)轉(zhuǎn)換器對(duì)步進(jìn)電機(jī)進(jìn)行電流采集,提供限流保護(hù),當(dāng)采集到的電流值大于安全電流值時(shí),輸出電流異常信號(hào)到PWM脈沖控制模塊,從而控制步進(jìn)電機(jī)進(jìn)行剎車.根據(jù)AD574的接口協(xié)議進(jìn)行狀態(tài)機(jī)設(shè)計(jì),包括空閑,模擬開關(guān)切換,轉(zhuǎn)換指令0,轉(zhuǎn)換指令1,轉(zhuǎn)換等待,讀指令0,讀指令1,讀指令2和返回?cái)?shù)據(jù)9種狀態(tài),狀態(tài)機(jī)的轉(zhuǎn)換邏輯為:初始狀態(tài)為空閑狀態(tài)IDEL,依次向下一狀態(tài)轉(zhuǎn)換,轉(zhuǎn)換條件類似,當(dāng)前狀態(tài)周期計(jì)數(shù)器滿即可.
為了提高本設(shè)計(jì)的可靠性,滿足航天設(shè)備的要求,采取多重冗余設(shè)計(jì)技術(shù):1) 接收上位機(jī)指令時(shí)采用兩收技術(shù),若收到的兩條指令都是正確的則任取一條,若一條指令錯(cuò)誤一條正確則取正確指令,若兩條都錯(cuò)誤則要求重發(fā);2) 指令容錯(cuò)設(shè)計(jì),包括設(shè)計(jì)奇偶校驗(yàn)位來(lái)檢測(cè)指令的正確性,以及設(shè)置指令、指令參數(shù)錯(cuò)誤標(biāo)志位來(lái)檢測(cè)指令錯(cuò)誤;3) 對(duì)步進(jìn)電機(jī)設(shè)置雙繞組主備份,正常情況下由主機(jī)工作,當(dāng)主機(jī)出現(xiàn)故障無(wú)法工作時(shí),備機(jī)啟動(dòng)工作;4) 設(shè)計(jì)硬件時(shí)采用異步復(fù)位同步釋放,避免了亞穩(wěn)態(tài);5) 五是設(shè)計(jì)了軟件復(fù)位.
為了對(duì)設(shè)計(jì)的驅(qū)動(dòng)控制器進(jìn)行調(diào)試和測(cè)試,編寫系統(tǒng)測(cè)試平臺(tái),該平臺(tái)模擬RS422接口進(jìn)行指令的發(fā)送,同時(shí)對(duì)電流信息進(jìn)行實(shí)時(shí)監(jiān)測(cè).該驅(qū)動(dòng)器可以對(duì)兩路太陽(yáng)翼進(jìn)行獨(dú)立或同步控制,但為了驗(yàn)證功能的完整性,仿真都是對(duì)兩路太陽(yáng)翼進(jìn)行同步控制,仿真在Modelsim軟件中進(jìn)行.
在仿真圖中,speedenable為速度使能信號(hào),當(dāng)接收到調(diào)速指令時(shí)由低電平變?yōu)楦唠娖剑籫o_zero為歸零信號(hào),接收到歸零指令時(shí)由低電平變高電平;rotatedir信號(hào)為旋轉(zhuǎn)方向寄存器,為0時(shí)表示正轉(zhuǎn),為1時(shí)表示反轉(zhuǎn);zero信號(hào)為零位信號(hào),接受到預(yù)零位信號(hào)時(shí)由低電平變高電平,接受到真零位信號(hào)則由高電平變?yōu)榈碗娖?;c_state_reg為當(dāng)前速度狀態(tài)寄存器,表示當(dāng)前速度所處的狀態(tài);currentspeed_reg為當(dāng)前速度寄存器,保存當(dāng)前速度值;finish_inst為指令完成標(biāo)志寄存器,為高電平時(shí)表示指令完成.
3.1.1 高速正轉(zhuǎn)的調(diào)速指令
設(shè)置調(diào)速指令1103,對(duì)兩個(gè)電機(jī)同時(shí)進(jìn)行調(diào)速控制,目標(biāo)速度設(shè)為8100(十六進(jìn)制數(shù),大于起跳速度8000).根據(jù)1位符號(hào)位、15位整數(shù)位、16位小數(shù)位的數(shù)據(jù)格式將8100換算成實(shí)際轉(zhuǎn)速,為0.503 906 25(°)/s,以下給出的速度值均為寄存器中存儲(chǔ)的速度值,并非實(shí)際速度值.仿真波形如圖6所示.
由仿真波形可以看出,兩路控制器的速度控制狀態(tài)機(jī)初始狀態(tài)均為空閑狀態(tài),接收到調(diào)速指令后speedenable由低電平變?yōu)楦唠娖剑_始速度規(guī)劃,由于目標(biāo)速度大于起跳速度,先直接跳至起跳速度8000,再進(jìn)入正向加速狀態(tài),加速達(dá)到目標(biāo)速度,并以目標(biāo)速度8100保持正向勻速狀態(tài),finish_inst變?yōu)楦唠娖?,完成調(diào)速指令.
3.1.2 低速正轉(zhuǎn)到高速反轉(zhuǎn)的調(diào)速指令
設(shè)置調(diào)速指令1103,對(duì)兩個(gè)電機(jī)同時(shí)進(jìn)行調(diào)速控制,先設(shè)置低于起跳速度的較小目標(biāo)速度4000正向運(yùn)轉(zhuǎn),再改為大于起跳速度的較大目標(biāo)值8100反向運(yùn)轉(zhuǎn),仿真波形圖如圖7所示.
由波形圖可以看出,兩路控制器的速度控制狀態(tài)機(jī)初始狀態(tài)均為空閑狀態(tài),當(dāng)收到第一條正向調(diào)速指令時(shí),rotatedir為低電平,由于此時(shí)目標(biāo)速度小于起跳速度,直接跳至目標(biāo)速度4000,以該速度保持正向勻速,finish_inst變?yōu)?,完成第一次調(diào)速指令;再次接收到調(diào)速指令時(shí),由于此時(shí)方向發(fā)生了變化,rotatedir信號(hào)由低電平變?yōu)楦唠娖?,且目?biāo)速度大于起跳速度,先把正向速度歸零,再起跳至起跳速度,然后進(jìn)入反向加速狀態(tài)通過加速達(dá)到目標(biāo)速度,并以目標(biāo)速度8100保持反向勻速狀態(tài),完成調(diào)速.
圖6 正向高速調(diào)速波形Fig.6 Forward high speed regulation waveform
圖7 低速正轉(zhuǎn)到高速反轉(zhuǎn)調(diào)速波形Fig.7 Forward low speed to reverse highspeed regulation waveform
3.1.3 高速正轉(zhuǎn)后的歸零指令
對(duì)兩個(gè)電機(jī)同時(shí)進(jìn)行控制,設(shè)置調(diào)速指令1103,目標(biāo)速度為10100,待調(diào)速完成后給出歸零指令3303,仿真波形圖如圖8所示.
由波形圖可以看出,兩路控制器的速度控制狀態(tài)機(jī)初始狀態(tài)均為空閑狀態(tài),當(dāng)收到調(diào)速指令時(shí),speedenable由低電平變?yōu)楦唠娖?,開始速度規(guī)劃,由于此時(shí)目標(biāo)速度大于起跳速度,先跳至起跳速度8000,再加速至目標(biāo)速度10100,隨后保持勻速,此時(shí)調(diào)速指令完成,finish_inst信號(hào)變?yōu)楦唠娖剑划?dāng)收到歸零指令時(shí),gozero信號(hào)變?yōu)?,speedenable信號(hào)變?yōu)?,速度進(jìn)入減速狀態(tài),當(dāng)接收到預(yù)零位信號(hào),即zero由0變?yōu)?時(shí),進(jìn)入零位間減速狀態(tài),減速至制動(dòng)速度8000后保持勻速,當(dāng)接收到真零位信號(hào),即zero由1變0時(shí),速度直接跳至0,進(jìn)入鎖定零位狀態(tài),完成歸零.
圖8 高速正轉(zhuǎn)后歸零波形Fig.8 Forward high speed regulation to go zero waveform
3.1.4 低速正轉(zhuǎn)后的停止指令
對(duì)兩個(gè)電機(jī)同時(shí)進(jìn)行控制,設(shè)置調(diào)速指令1103,目標(biāo)速度4000,等調(diào)速完成后給出停止指令4403,仿真波形如圖9所示.
圖9 低速反轉(zhuǎn)后停止波形Fig.9 Reverse high speed regulation to stop waveform
由波形圖可以看出,兩路控制器的速度控制狀態(tài)機(jī)初始狀態(tài)均為空閑狀態(tài),當(dāng)收到調(diào)速指令時(shí),speedenable由低電平變?yōu)楦唠娖剑捎诖藭r(shí)目標(biāo)速度小于起跳速度,直接跳至目標(biāo)速度,并以該速度保持勻速,此時(shí)調(diào)速指令完成,finish_inst信號(hào)變?yōu)楦唠娖?;接收到停止指令時(shí),此時(shí)速度小于制動(dòng)速度,則速度直接降為0實(shí)現(xiàn)停止.
為了對(duì)本文設(shè)計(jì)的綜合驅(qū)動(dòng)器進(jìn)行驗(yàn)證,搭建硬件電路系統(tǒng),包括FPGA主控板、電流采集電路、電機(jī)驅(qū)動(dòng)板和步進(jìn)電機(jī)等,并將代碼下載至FPGA中進(jìn)行實(shí)驗(yàn).圖10為電機(jī)驅(qū)動(dòng)板實(shí)物,圖11、12為示波器所測(cè)波形圖.
經(jīng)實(shí)驗(yàn)測(cè)試,該驅(qū)動(dòng)控制器可以根據(jù)指令準(zhǔn)確的進(jìn)行調(diào)速、歸零和停止控制.圖11為歸零時(shí)信號(hào)變化圖,圖中信號(hào)分別為步進(jìn)電機(jī)的電流信號(hào)和零位信號(hào),預(yù)零位信號(hào)來(lái)臨時(shí)進(jìn)行減速,電流信號(hào)發(fā)生變化,真零位信號(hào)到來(lái)時(shí)實(shí)現(xiàn)歸零鎖定,電流信號(hào)變?yōu)楹愣ㄖ?圖12為調(diào)速過程中步進(jìn)電機(jī)的兩相電流變化,由于驅(qū)動(dòng)芯片的特性,波形只有正向部分.從圖中可以看出兩相電流相位相差90°,波形接近標(biāo)準(zhǔn)正向正弦波,說明細(xì)分后的PWM其占空比按照正弦波規(guī)律變化.
圖10 步進(jìn)電機(jī)驅(qū)動(dòng)板Fig.10 The stepping motor drive board
圖11 歸零時(shí)的電流及零位信號(hào)變化圖Fig.11 The wave of current and zero signalwhen going zero
圖12 調(diào)速過程中步進(jìn)電機(jī)的兩相電流Fig.12 Two phase current of stepping motorduring speed regulation
由于本設(shè)計(jì)所采用的32位運(yùn)算器存在一定計(jì)算誤差,為了驗(yàn)證設(shè)計(jì)精度,在工作頻率為22.118 4 MHz,起跳速度為0.5(°)/s,加速度為0.05(°)/s2的條件下,進(jìn)行調(diào)速測(cè)試.低速段對(duì)0.01~0.1(°)/s以0.01(°)/s的間隔進(jìn)行測(cè)試,高速段對(duì)0.1~1.2(°)/s以0.1(°)/s的間隔進(jìn)行測(cè)試.測(cè)試方式為:通過串口發(fā)送調(diào)速指令,待機(jī)構(gòu)達(dá)到目標(biāo)速度后,發(fā)送遙測(cè)指令獲取當(dāng)前一個(gè)脈沖輸出周期數(shù),從而計(jì)算實(shí)際速度和速度誤差.實(shí)際速度計(jì)算公式為:
(4)
其中,θ為步距角1.8°,d為細(xì)分?jǐn)?shù)64,a為減速比100,n為脈沖輸出周期數(shù),T為系統(tǒng)周期.低速段的速度相對(duì)誤差計(jì)算公式為實(shí)際速度-目標(biāo)速度;高速段的速度誤差計(jì)算公式為(實(shí)際速度-目標(biāo)速度)/目標(biāo)速度.
表2 低速段速段速度誤差Tab.2 Relative speed errors of low speed
表3 高速段速度誤差Tab.3 Speed errors of high speed
低速段的速度相對(duì)誤差均小于0.006(°)/s,滿足系統(tǒng)0.01(°)/s的設(shè)計(jì)需求;高速段的速度誤差在±0.13%之間,優(yōu)于系統(tǒng)10%的設(shè)計(jì)需求.
本文從航天應(yīng)用的角度出發(fā),設(shè)計(jì)并實(shí)現(xiàn)了一種適用于星載太陽(yáng)翼的綜合驅(qū)動(dòng)控制器.首先給出了綜合驅(qū)動(dòng)控制器的總體框架,然后詳細(xì)介紹了指令收發(fā)、指令解析、速度控制、位置控制、PWM細(xì)分控制、PWM時(shí)序要求以及電流采集等模塊,同時(shí)根據(jù)航天器件可靠性設(shè)計(jì)給出了幾種冗余設(shè)計(jì)的具體措施.經(jīng)實(shí)驗(yàn)仿真和實(shí)物驗(yàn)證,結(jié)果證明了該驅(qū)動(dòng)控制器滿足預(yù)期設(shè)計(jì)需求,可以很好的實(shí)現(xiàn)太陽(yáng)翼的運(yùn)動(dòng)控制.