專利名稱::一種共軸式無人直升機的雙余度姿態控制系統及調試方法
技術領域:
:本發明涉及一種飛機姿態控制系統,尤其涉及一種共軸式無人直升機的雙余度姿態控制系統及調試方法,屬于無人機控制
技術領域:
。
背景技術:
:共軸式直升機的姿態控制系統主要用于改善飛行過程的穩定性和操作性,可由模擬控制或數字控制兩種方法實現。為了改善模擬控制中各部分電路耦合密切、調試復雜、參數不準確、控制模式固定等缺點,本發明采用全數字控制。同時,采用數字控制可以使系統具有良好的可繼承性,且利于系統升級,提高了控制的靈活性和功能模塊的可重用性。由于直升機的穩定性很差,而駕駛員無法針對短周期運動進行頻繁操作,所以姿態控制系統是保證共軸式無人直升機飛行穩定的核心組件,其自身可靠性的重要性可見一斑。為了降低飛行過程中的失控概率,本發明將雙余度控制的思想運用到共軸式無人直升機姿態控制系統的設計中,采用雙CPU進行數字化控制,且實現了兩者之間的相互備份和實時監控,以及系統異常情況下的控制切換和平穩過渡。
發明內容1、目的本發明的目的在于提供一種共軸式無人直升機的雙余度姿態控制系統及調試方法。它同時適合于飛機和舵機姿態控制,根據位置給定值,以及位置、速度的采集值,通過數字比例、積分、微分(PID)計算以脈寬調制(PWM)形式控制后級大功率管的工作狀態,實現飛機姿態控制。本發明采用全數字化控制,按照輸入和輸出要求,靈活多樣地確定控制模式;其采用的雙余度控制體制,大大提高了姿態控制系統的可靠性。同時,該參數調試方法可以方便地實現相關參數的調試和存儲;通過此方法,無需改變本發明的硬件和固件架構,即可根據控制需求確定多種陀螺、舵機的有效參數設計。2、技術方案(1)見圖1,本發明一種共軸式無人直升機雙余度姿態控制系統,它是由串口通信模塊、脈沖編碼調制(PCM)解碼模塊、AD采集模塊、PWM輸出模塊和CPU控制模塊等部分組成的。這些功能模塊全部由CPU調度,配合CPU的集成外設實現;它們之間的邏輯關系是串口通信模塊、PCM解碼模塊、AD采集模塊作為系統輸入,由CPU控制模塊進行改進的數字PID控制,以PWM脈沖的形式由PWM輸出模塊輸出,在簡單的外圍邏輯電路配合下,實現對后級大功率管的控制;同時,CPU控制模塊的主要功能還包括雙CPU的相互監測、備份和切換,從而實現“雙余度”控制;所述串口通信模塊是由軟件初始化并控制CPU的串口控制器(UART單元)實現,該UART單元繼承了傳統51單片機的串口發送和接收結構;本發明利用RS422電平標準的外圍串口轉換芯片實現CPU串口電平標準和外部傳輸電平標準的轉換;并利用其中斷服務程序對機載主控制計算機的數據進行處理;為了達到機載主控制計算機同時控制本發明的多個實體的目的,并且減小誤碼率的產生,本發明設計了一種能夠實現多機通信的協議,如表ι所示表1適用于多機通信的串口通信協議<table>tableseeoriginaldocumentpage6</column></row><table>其中,“幀頭”用于機載主控制計算機與本發明之間串口通信的同步;“地址”是為本發明的多個實體預先分配的地址,實體可根據地址確認執行自身的控制信息,而機載主控制計算機可根據地址確認各實體當前的工作狀態;“長度”是由幀頭到校驗和的字節數,發送端可根據此信息實現數據量不定的串口通信,接收端可通過長度信息和幀尾信息驗證接收數據是否正確;“校驗和”用來判斷此次通信是否出現無碼情況,其校驗方法是將幀頭至幀尾的全部字節依次進行位異或操作;“幀尾”是一幀數據的結束標志;其控制流程如圖2所示當串口接收中斷標志被置位時,串口中斷服務程序根據“幀頭”、“地址”分別進行幀同步和信息過濾,在接收到本機所需的控制信息后根據數據幀“長度”預測“幀尾”位置,并根據“校驗和”信息進行數據驗證,確定無誤后進行有效數據的存儲和處理;所述PCM解碼模塊是由CPU的外部中斷和定時器配合實現,用于對手持無線電遙控器(Futaba)發送的PCM脈沖的接收與解碼量化;其解碼流程如圖3所示本發明通過將定時器配置為外部中斷觸發計數的模式,在外部中斷的下降沿中斷服務程序中獲得PCM脈沖測量值,并設計了一種簡單易行的PCM解碼量化方法a)計算定時器對PCM脈沖計數值最值Vm與中心位置計數值Vtl之間的差值;b)計算AD采集值的最值Am與陀螺或舵機中立位置的AD采集值Atl之間的差值;c)根據兩差值的比例關系設計比例系數K;d)計算定時器對PCM脈沖計數值Vi與中心位置計數值Vtl之間的差值,可將此差值直接量化為后續PID計算所需的整型數據Pi,其量化公式為Pi=(Vi-V0)XK其中=々-J;。該PCM解碼模塊與串口通信模塊組成了本發明的給定值輸入模塊,為了提高控制靈活性,本發明為兩路輸入設置了優先級,且后者優先級高于前者后者在有效狀態下可以被前者搶占,且系統切換至PCM脈沖控制模式;而前者在有效狀態下系統忽略串口接收的有關定值部分的命令,系統工作在PCM脈沖控制模式;當且僅當系統判定PCM脈沖控制失效時,退出當前控制狀態,使能串口命令控制,系統進入串口命令控制模式;所述AD采集模塊是由CPU的集成模數轉化(ADC)單元配合外圍差分電路實現;該ADC單元的采集功能完全在CPU內部實現,量化數據直接被CPU的控制模塊使用,加快了數據傳輸的速率,提高了控制效率;本發明的AD采集模塊輸入方式可參照后列表2進行分類,它具有四通道和兩通道兩種模式;為了減小直流分量等干擾對采集值精度的影響,各通道均采用差分輸入的方式;所述PWM輸出模塊是由CPU的集成可編程的計數器陣列(PCA)單元組成,配合外圍協調電路,以電流驅動的形式控制后級大功率管系統;該PCA單元具有六路獨立的捕捉/比較模塊和輸出,并共用一個計數/定時器;本發明使用其中三路,并配置其工作在8位PWM輸出狀態下,輸出地PWM脈沖具有255位量化精度,最小分辨率由系統時鐘與量化精度共同決定;為了保護后級大功率管,本發明提供兩路控制電平與兩路PWM脈沖同步輸出,由外圍匹配電路將兩者耦合,用于控制后級大功率管的正轉、反轉和截止狀態,其流程如圖4所示判斷當前PID計算結果與前一次PID計算結果是否為異號,若為異號則需改變后級大功率管的轉向,此時需要400us延時輸出,兩路電平為高,控制其工作在截止狀態;在截止時期內繼續進行PID計算和判斷過程,如再異號則清零計數,繼續400us延時,以此反復直至延時結束,輸出PWM脈沖并改變電平狀態;此過程可以降低陀螺或舵機在穩定位置上由于給定值和采集值的誤差而產生的抖動現象的出現幾率;所述CPU控制模塊是由本發明新設計的軟件部分實現,其主要功能包括協調系統工作狀態和PID控制流程,進行改進的數字PID計算以及雙余度控制的實現等;為了實現上述功能并且提高系統軟件的邏輯性、可讀性和可移植性,本發明通過模塊化的方式加以區分與設計;此部分為本發明的主要創新點,包括系統工作狀態協調模塊、PID控制模塊、改進的數字PID計算模塊和雙余度控制模塊等;其間的相互關系為系統工作狀態協調模塊通過改變系統在飛行環境下的工作狀態,調整系統其他模塊的具體實施流程;在確定工作狀態的前提下,雙余度控制模塊根據實時監測信息改變CPU當前身份,從而重置PID控制流程;PID控制模塊受制于前面兩個模塊的輸出,用于在不同工作狀態下對當前PID計算的流程進行控制;改進的數字PID計算模塊被PID控制模塊調用,是本發明中核心控制理論,即PID算法的具體實現;該系統工作狀態協調模塊是本發明在飛行環境下確定和更改當前控制模式標識的唯一途徑;它根據當前給定值的獲得渠道確定當前系統的工作狀態,即等待PCM脈沖或串口控制命令狀態,PCM脈沖使能狀態和串口控制命令使能狀態;系統工作狀態還可由雙余度控制模塊進行自主切換,即當CPU檢測自身或備份CPU出現故障時,可改變自身的工作狀態;該PID控制模塊是通過改變一個雙向鏈表的當前節點來實現的,此雙向鏈表中的節點是由PID計算中涉及到的變量和參數組成的結構體;它主要用于協調PID控制流程;本發明為了提高控制精度和反應速度,詳細設計了一套PID控制流程,并對PID計算進行了C語言的代碼優化;本發明的PID控制流程可分為兩種情況,即接收到有效的PCM控制脈沖或串口命令獲得給定值初值時的及時響應過程;以及在完成上述過程后,PID流程進入的微調狀態;該改進的數字PID計算模塊是由當前給定值、采集值、比例系數和微分系數等變量,按照數字PID算法進行的運算,此模塊的輸入與輸出均被量化為整數行變量;它采取了多項措施提高PID計算的靈活性對當前給定值與采集值的差值進行分區,并據此采取協調P、D參數、設立“死區”等方法進行分段式的PID計算等;該雙余度控制模塊是由“檢測”、“判決”和“切換”三個階段組成;本發明的硬件板卡中包括兩片CPU,被初始化為主、從兩種身份;“檢測”是由主CPU的信號源檢測和CPU的實時互監測兩部分組成,其中主CPU通過對PCM脈沖和串口命令狀態進行具有優先級的信號源檢測,而CPU之間通過輸出信號進行互相監視,即實時互監測;“判決”根據檢測結果,結合CPU身份實時判別系統工作狀態;“切換”根據當前判決結果異常,以及雙CPU的當前身份進行自主切換,同時為避免兩者同主或同從的情況特別設計了切換方案;它主要用于CPU工作狀態備份和切換;兩者同步完成自身的輸入處理、流程協調和PID計算,為相互備份和切換時飛機姿態控制的平穩過渡做好準備;兩點主要區別在于主CPU負責最終PWM脈沖的輸出,而從CPU在此期間處于靜默狀態;根據CPU身份不同進行系統初始化,并選擇不同的實時監控信號以及異常情況下的身份變更和重初始化。(2)本發明一種共軸式無人直升機的雙余度姿態控制系統的調試方法,其主要目的在于降低PID控制中比例參數和微分參數的調試復雜程度,提高參數準確度,并實時保存有效的參數值。它所涉及的參數為各層PID計算的比例參數Kp和微分參數Kd,控制源為Futaba,需為四路AD采集通道提供外接設備,其中兩路外接可調電位器模擬Kp和Kd;另外兩路與飛行環境相同,分別與舵機的位置傳感器和速度傳感器相接;輸出端接舵機的大功率管控制器,通過PWM脈沖控制舵機位置;所采用的數字PID核心算法是y(k)=KpX{e(k)-KdX[e(k)_e(k_l)]}其中y(k)為時刻k的輸出量,e(k)為給定值與采集值在k時刻的差,Kp為比例系數,Kd為微分系數。試驗環境下的PID控制流程如圖5所示CPU上電后通過對特定I/O端口的檢測區分當前工作環境,即飛行環境和試驗環境。飛行環境是指各層PID參數均已確定的情況下,姿態控制器真正工作的環境,此時各層PID參數由閃存(FLASH)的“數據存儲區”讀取并在外部數據存儲單元(XRAM)中賦值;試驗環境是指PID參數調試環境,可分為“位置PID相關參數調試”和“轉速PID相關參數調試”兩個狀態。以“舵機位置相關參數調試”為例,試驗環境下所需的外圍設備和信號為a)為Futaba輸出的控制脈沖設定門限,在門限范圍內CPU把控制脈沖以舵機位置給定值形式處理;超出這個門限時,CPU接收到“寫FLASH使能”信號,把當前的Kp或Kd寫入預先分配的FLASH數據存儲單元中。b)提供四路AD采集通道,其中兩路外接電位器,通過調整電位器模擬Kp和Kd;另外兩路與飛行環境相同,分別與舵機的位置傳感器和速度傳感器相接。c)輸出端接舵機的大功率管控制器,通過PWM脈沖控制舵機位置。本發明一種共軸式無人直升機的雙余度姿態控制系統的調試方法,其具體步驟如下步驟一根據參數調試對象即“位置”或“速度”的K1^PKd,連接已定義的I/O端口至高或低電平端,用以系統上電后對實現環境的檢測;步驟二調節電位器為K1^PKd提供初始參數,通過Futaba以PCM脈沖的形式發送陀螺或舵機位置給定值,系統按照試驗環境下的PID控制流程對后級大功率管進行控制;步驟三保持Futaba的中立位置不變,按照每次試驗只調節一個電位器的原則,即固定其中一個,只調整另一個,使舵機達到自激抖動的臨界狀態;在當前參數的作用下PID控制的靈敏度和穩定度最佳,Kp和Kd為最優化參數;步驟四操作Futaba輸出超過脈沖門限的信號,CPU在解析出第一個“寫FLASH使能”信號后將當前Kp或Kd的采集值量化并寫入FLASH,并忽略之后連續到達的寫使能信號;步驟五操作Futaba返回中心位置,CPU復位當前狀態,繼續等待下一次有效的寫使能信號的到來,結束一次調試。3、優點及功效本發明通過全數字化的,雙余度的控制方式實現了對共軸式無人直升機的姿態控制,簡化了硬件結構,降低了干擾,提高了控制靈活性、系統穩定性和響應速度。本發明的架構體系便于后期的系統維護、升級和改造,為同類型姿態控制系統的設計提供了一種可實施方案。同時,本發明中所涉及到的參數調試方法操作簡單,大大提高了調試效率以及參數的精確度。圖1本發明總體架構示意圖圖2串口控制流程3PCM解碼及量化流程4PWM輸出控制流程5試驗環境下PID控制流程6系統初始化流程7(a)陀螺位置PID控制的邏輯關系7(b)舵機位置PID控制的邏輯關系8系統工作狀態協調模塊的狀態轉移9PID控制模塊控制流程10改進的數字PID計算模塊處理流程11雙余度控制模塊的CPU身份切換轉移中符號說明如下A串口通信模塊;BPCM解碼模塊;CAD采集模塊;DPWM輸出模塊;ECPU控制模塊;ViPCM脈沖計數值ΛPCM中心位置計數值力PID計算結果;KPCM給定值與AD采集值的比例系數;Al第一層PID計算(PIDΝ01);Bl第二層PID計算(PIDΝ02)Cl第三層PID計算(PIDΝ03);Dl第四層PID計算(PIDΝ04)Α2等待PCM脈沖或串口控制命令狀態;Β2PCM脈沖使能狀態;C2串口控制命令使能狀態;now雙向鏈表當前使能節點;head雙向鏈表頭;tail雙向鏈表尾;now->nextnow的順序下一節點;now—>prenow的逆序上一節點;e(k)給定值與采集值在k時刻的差;Kp比例系數;Kd微分系數;MpKp的分段比例系數;MdKd的分段比例系數;y(k)時刻k的PID計算輸出量;Effline(k)的最小值;具體實施例方式(1)見圖1,本發明一種共軸式無人直升機雙余度姿態控制系統,它是由串口通信模塊A、PCM解碼模塊B、AD采集模塊C、PWM輸出模塊D和CPU控制模塊E等部分組成的。它們之間的邏輯關系是串口通信模塊A、PCM解碼模塊B、AD采集模塊C作為系統輸入,由CPU控制模塊E進行改進的數字PID控制,以PWM脈沖的形式由PWM輸出模塊D輸出,在簡單的外圍邏輯電路配合下,實現對后級大功率管的控制;同時,CPU控制模塊E的主要功能還包括雙CPU的相互監測、備份和切換,從而實現“雙余度”控制。所述串口通信模塊是由軟件初始化并控制CPU的串口控制器(UART單元)實現,該UART單元繼承了傳統51單片機的串口發送和接收結構;本發明利用RS422電平標準的外圍串口轉換芯片實現CPU串口電平標準和外部傳輸電平標準的轉換;并利用其中斷服務程序對機載主控制計算機的數據進行處理;為了達到機載主控制計算機同時控制本發明的多個實體的目的,并且減小誤碼率的產生,本發明設計了一種能夠實現多機通信的協議,如下列表1所示,“幀頭”用于機載主控制計算機與本發明之間串口通信的同步;“地址”是為本發明的多個實體預先分配的地址,實體可根據地址確認執行自身的控制信息,而機載主控制計算機可根據地址確認各實體當前的工作狀態;“長度”是由幀頭到校驗和的字節數,發送端可根據此信息實現數據量不定的串口通信,接收端可通過長度信息和幀尾信息驗證接收數據是否正確;“校驗和”用來判斷此次通信是否出現無碼情況,其校驗方法是將幀頭至幀尾的全部字節依次進行位異或操作;“幀尾”是一幀數據的結束標志;其控制流程如圖2所示當串口接收中斷標志被置位時,串口中斷服務程序根據“幀頭”、“地址”分別進行幀同步和信息過濾,在接收到本機所需的控制信息后根據數據幀“長度”預測“幀尾”位置,并根據“校驗和”信息進行數據驗證,確定無誤后進行有效數據的存儲和處理;表1適用于多機通信的串口通信協議<table>tableseeoriginaldocumentpage10</column></row><table>所述PCM解碼模塊是由CPU的外部中斷和定時器配合實現,用于對Futaba發送的PCM脈沖的接收與解碼量化;其解碼流程如圖3所示本發明通過將定時器配置為外部中斷觸發計數的模式,在外部中斷的下降沿中斷服務程序中獲得PCM脈沖測量值,并設計了一種簡單易行的PCM解碼量化方法a)計算定時器對PCM脈沖計數值最值¥111與中心位置計數值Vtl之間的差值;b)計算AD采集值的最值Am與陀螺或舵機中立位置的AD采集值Atl之間的差值;c)根據兩差值的比例關系設計比例系數K;d)計算定時器對PCM脈沖計數值Vi與中心位置計數值Vtl之間的差值,可將此差值直接量化為后續PID計算所需的整型數據Pi,其量化公式為<formula>formulaseeoriginaldocumentpage10</formula>該PCM解碼模塊與串口通信模塊組成了本發明的給定值輸入模塊,為了提高控制靈活性,本發明為兩路輸入設置了優先級,且后者優先級高于前者后者在有效狀態下可以被前者搶占,且系統切換至PCM脈沖控制模式;而前者在有效狀態下系統忽略串口接收的有關定值部分的命令,系統工作在PCM脈沖控制模式;當且僅當系統判定PCM脈沖控制失效時,退出當前控制狀態,使能串口命令控制,系統進入串口命令控制模式;所述AD采集模塊是由CPU的集成ADC單元配合外圍差分電路實現;該ADC單元的采集功能完全在CPU內部實現,量化數據直接被CPU的控制模塊使用,加快了數據傳輸的速率,提高了控制效率;本發明的AD輸入方式可參照后列表2進行分類,它具有四通道和兩通道兩種模式,為了減小直流分量等干擾對采集值精度的影響,各通道均采用差分輸入的方式;所述PWM輸出模塊是由CPU的集成PCA單元組成,配合外圍協調電路,以電流驅動的形式控制后級大功率管系統;該PCA單元是一個可編程的計數器陣列,具有六路獨立的捕捉/比較模塊和輸出,并共用一個計數/定時器;本發明使用其中三路,并配置其工作在8位PWM輸出狀態下,輸出地PWM脈沖具有255位量化精度,最小分辨率由系統時鐘與量化精度共同決定;為了保護后級大功率管,本發明提供兩路控制電平與兩路PWM脈沖同步輸出,由外圍匹配電路將兩者耦合,用于控制后級大功率管的正轉、反轉和截止狀態,其流程如圖4所示判斷當前PID計算結果與前一次PID計算結果是否為異號,若為異號則需改變后級大功率管的轉向,此時需要400us延時輸出,兩路電平為高,控制其工作在截止狀態;在截止時期內繼續進行PID計算和判斷過程,如再異號則清零計數,繼續400us延時,以此反復直至延時結束,輸出PWM脈沖并改變電平狀態;此過程可以降低陀螺或舵機在穩定位置上由于給定值和采集值的誤差而產生的抖動現象的出現幾率;所述CPU控制模塊是由本發明新設計的軟件部分實現,其主要功能包括協調系統工作狀態和PID控制流程,進行改進的數字PID計算以及雙余度控制的實現等;為了實現上述功能并且提高系統軟件的邏輯性、可讀性和可移植性,本發明通過模塊化的方式加以區分與設計;此部分為本發明的主要創新點,包括系統工作狀態協調模塊、PID控制模塊、改進的數字PID計算模塊和雙余度控制模塊等;其間的相互關系為系統工作狀態協調模塊通過改變系統在飛行環境下的工作狀態,調整系統其他模塊的具體實施流程;在確定工作狀態的前提下,雙余度控制模塊根據實時監測信息改變CPU當前身份,從而重置PID控制流程;PID控制模塊受制于前面兩個模塊的輸出,用于在不同工作狀態下對當前PID計算的流程進行控制;改進的數字PID計算模塊被PID控制模塊調用,是本發明中核心控制理論,即PID算法的具體實現;該系統工作狀態協調模塊是本發明在飛行環境下確定和更改當前控制模式標識的唯一途徑;它根據當前給定值的獲得渠道確定當前系統的工作狀態,即等待PCM脈沖或串口控制命令狀態,PCM脈沖使能狀態和串口控制命令使能狀態;系統工作狀態還可由雙余度控制模塊進行自主切換,即當CPU檢測自身或備份CPU出現故障時,可改變自身的工作狀態;該PID控制模塊是通過改變一個雙向鏈表的當前節點來實現的,此雙向鏈表中的節點是由PID計算中涉及到的變量和參數組成的結構體;它主要用于協調PID控制流程;本發明為了提高控制精度和反應速度,詳細設計了一套PID控制流程,并對PID計算進行了C語言的代碼優化;本發明的PID控制流程可分為兩種情況,即接收到有效的PCM控制脈沖或串口命令獲得給定值初值時的及時響應過程;以及在完成上述過程后,PID流程進入的微調狀態;該改進的數字PID計算模塊是由當前給定值、采集值、比例系數和微分系數等變量,按照數字PID算法進行的運算,此模塊的輸入與輸出均被量化為整數行變量;它采取了多項措施提高PID計算的靈活性對當前給定值與采集值的差值進行分區,并據此采取協調P、D參數、設立“死區”等方法進行分段式的PID計算等;該雙余度控制模塊是由“檢測”、“判決”和“切換”三個階段組成;本發明的硬件板卡中包括兩片CPU,被初始化為主、從兩種身份;“檢測”是由主CPU的信號源檢測和CPU的實時互監測兩部分組成,其中主CPU通過對PCM脈沖和串口命令狀態進行具有優先級的信號源檢測,而CPU之間通過輸出信號進行互相監視,即實時互監測;“判決”根據檢測結果,結合CPU身份實時判別系統工作狀態;“切換”根據當前判決結果異常,以及雙CPU的當前身份進行自主切換,同時為避免兩者同主或同從的情況特別設計了切換方案;它主要用于CPU工作狀態備份和切換;兩者同步完成自身的輸入處理、流程協調和PID計算,為相互備份和切換時飛機姿態控制的平穩過渡做好準備;兩點主要區別在于主CPU負責最終PWM脈沖的輸出,而從CPU在此期間處于靜默狀態;根據CPU身份不同進行系統初始化,并選擇不同的實時監控信號以及異常情況下的身份變更和重初始化。為了提高系統的數字化程度,減少飛行狀態下系統硬件電路各部分的EMC影響,本發明選擇外設資源頗為豐富的SiliconLiboratories公司出品的C8051F121單片機,它把UART、外部中斷INT、定時器Timer、ADC模塊和PCA模塊等集成在片內。本發明將上述的五個邏輯模塊全部置于CPU內部實現,配置少量調理電路,即可實現由輸入、處理到輸出的完整功能。A由UART實現,B由INT和Timer實現,C由ADC模塊實現,D由PCA模塊實現。通過配置C8051F121單片機通用I/O的交叉編譯開關,可以按照優先級順序將所需資源配置在I/O端口上。串口通信模塊A、PCM解碼模塊B和AD采集模塊C組成輸入部分,PWM輸出模塊D是輸出部分。按照兩者物理意義的劃分,本發明的工作模式可以歸納為三種,如表2所示表2本發明的三種工作模式輸入物理量輸出物理量位置給定值AD采集值PWM脈沖陀螺位置--------------------用于舵機1陀螺轉速陀螺位置-----------轉速調整的舵機1位置------------------------------PWM脈沖舵機1轉速舵機1位置用于舵機1舵機1位置-----------------轉速調整的舵機1轉速pWM脈沖舵機2位置用于舵機2舵機2位置-轉速調整的舵機2轉速PWM脈沖“位置給定值”是指期望的陀螺或舵機的轉角位置,在本系統中所使用的有效范圍為相對預定的中立位置士45°之間。“AD采集值”是指由傳感器反饋回來的電壓信號,其中的“轉速”是指陀螺或舵機的旋轉速度。輸出量是一個連續的PWM脈沖序列,實際物理意義是期望的舵機轉速。結合后期測試情況,為了保證姿態控制的穩定性和準確性,必須協調各層PID計算時間和流程。同時,為了減小外部獨立晶振誤差,保證主、從CPU的同步,本發明由C8051F121的片內晶振驅動,并通過內部PLL倍頻,系統時鐘為73.5MHZ。根據CPU身份的不同,需要使能不同的集成硬件資源。本系統中所使用的硬件資源如表3所示表3系統硬件資源占用情況<table>tableseeoriginaldocumentpage13</column></row><table>PCM脈沖信號經過比較器CPO的整形,輸入至INTlJfTimerl配置為INTl觸發的計時方式,完成PCM脈沖寬度的測量,通過量化獲得給定值。UART被用來接收串口數據,采用適合于遠距離傳輸的RS422電平協議,1位起始位、1位停止位和8位數據位,無校驗位,波特率57600。脈沖控制周期約為14ms,串口控制周期約為20ms。AD采集具有四通道和兩通道兩種模式,且各通道均采用差分輸入的方式。差分輸入信號為電壓量,輸入范圍受C8051F120端口極限電壓的控制,為03.3V。本發明采用ADCO模塊,采樣頻率為2MHZ,量化精度為12bit,量化值左對齊輸出。配置ADCO使其工作在跟蹤模式,除了轉換期間之外ADCO輸入被連續跟蹤,每次轉換之前都有3個SAR時鐘的跟蹤周期。適合于本發明中ADCO所處的采集通道被連續頻繁切換的情況。集成的PCA模塊用來實現PWM脈沖的輸出。本發明提供三路PWM脈沖輸出,其中兩路與通用I/O電平配合,通過或非門4001協調輸出控制后級大功率管的工作狀態,另外一路作為從CPU監視主CPU工作狀態的監測信號。鑒于后級大功率管的反映速度,通過配置PCA時鐘源的方式獲得適當的PWM脈沖的輸出頻率。本發明采用TimerO的溢出作為PCA時鐘源,255位量化的PWM脈沖輸出頻率為8KHZ,最小分辨率為0.49us。本發明采用KeilC編程實現了姿態控制系統的全部流程,集成開發環境為KeiluVision3,代碼大小為10.Ik字節,使用片內RAM83字節,片上外部RAM124字節。為了保證本發明在飛行環境下的系統穩定性,采用看門狗復位和軟件復位兩種方式重新初始化系統軟硬資源。其中看門狗復位在處理超時情況使能,軟件復位在CPU在實時檢測過程中,發現系統異常情況下使能。CPU復位后初始化流程如圖6所示。根據CPU原始身份的不同,需要按照復位方式對集成硬件資源進行不同初始化。而主、從CPU復用的硬件資源需要按照當前CPU身份完成不同的功能。根據C8051F121的特性,其初始化過程應該符合一定的先后順序,在配置其他資源之前,首先應完成I/O端口和系統時鐘的初始化。系統工作狀態協調模塊的狀態轉移圖見圖8,其中Al為等待PCM脈沖或串口控制命令狀態,Bl為PCM脈沖使能狀態,Cl為串口控制命令使能狀態。按照當前給定值的獲得渠道,該系統的工作狀態協調模塊可確定和更改本發明在飛行環境下的系統的工作狀態。本發明采取PCM脈沖和串口命令兩種控制模式,且前者的控制優先級高于后者后者在有效狀態下可以被前者搶占,且系統切換至PCM脈沖使能模式;而前者在有效狀態下系統忽略串口接收的有關定值部分的命令,系統仍工作在PCM脈沖使能模式。系統工作狀態還可由雙余度控制模塊進行自主切換,即當CPU檢測自身或備份CPU出現故障時,可改變自身的工作狀態當系統判定PCM脈沖控制失效時,退出當前PCM使能狀態,切換至串口命令控制,系統進入串口命令使能模式;當系統判定串口故障時,退出當前串口命令使能模式,等待兩路信號源的再次使能。PID控制模塊的控制流程圖見圖9,在判定系統為飛行環境的前提下,根據當前系統的工作狀態,以及是否需要及時響應外部信號源的更新信息來控制PID計算流程。在對姿態控制系統進行軟件需求分析的基礎上,本發明清晰地進行了變量管理和控制流程設計主流程通過對特定I/O端口的檢測區分當前工作環境,即飛行環境和試驗環境。兩種環境下,主流程均圍繞協調各層PID計算順序展開,為了簡化其過程,針對每層PID所涉及到的數據資源建立了一個以“AD采集通道號”為索引的雙向鏈表結構,其成員變量包括當前AD通道采集次數、上一時刻給定值與采集值的差值、當前給定值、當前AD采集值、比例系數和采集系數。各板卡中的固件,按照其用途或輸入物理量的種類,通過預編譯的方法建立此鏈表結構,并初始化,鏈表順序如圖7(a)、圖7(b)所示。圖9中“now”為當前鏈表節點,“head”為鏈表頭,“tail”為鏈表尾。在保證當前PID計算完整的前提下,主流程可被各種中斷源中斷。按照功能模塊劃分,包括串口命令處理、PCM控制脈沖處理、ADC采集結束、復位檢測、CPU工作狀態監測、FLASH讀寫等。在所有中斷源中,串口中斷和INTl享有高優先級,滿足系統對控制命令的及時響應。按照鏈表結構定義,每次AD采集和PID計算流程可分為兩種情況當接收到有效的PCM控制脈沖或串口命令后,獲得給定值初值,根據中立位置和與AD采集值之間的比例關系量化獲得給定值,改變當前使能節點指針至鏈表頭,按照鏈表的順序依次進行AD采樣和PID計算,及時響應外界控制;在完成上述響應后,PID流程進入微調狀態,即由底層PID開始,按照如下規則進行計算對每層PID控制進行計數,滿足4次后,計數清零,并按照逆序改變當前使能節點指針,進行一次AD采集和PID計算;如計數次數小于4,且當前使能節點指針不指向鏈表尾,則按照順序依次進行一次AD采集和PID計算,且此次PID控制不被計數。通過試驗驗證,本發明所采取的PID計算策略具有響應速度快,控制穩定性強、精度高等優點。此外,在沒有接收到控制命令之前,以各通道的AD采集值作為對應PID計算的給定值,維護飛機姿態的穩定。圖9中“now->next”為“now”的順序下一節點,“now->pre"為“noW”的逆序上一節點,“count”為本層PID計算的次數,"count_max"為本層PID計算的最大次數。改進的數字PID計算模塊的處理流程見圖10。本發明采用改進的數字PID控制理論實現對飛機姿態的控制,以及自動調整,所采用的數字PID核心算法是y(k)=KpX{e(k)-KdX[e(k)_e(k_l)]}其中y(k)為時刻k的輸出量,e(k)為給定值與采集值在k時刻的差,Kp為比例系數,Kd為微分系數。根據直升機飛行過程中的運動特性的實際測試結果,提高控制系統的反應速度,本發明只進行比例運算和微分運算,省略積分運算。如表2中的分類所示,根據共軸式無人直升機機械部分的設計結構,本發明的PID計算分為四層和兩層兩種情況控制系統中有關陀螺位置的PID計算分為四層進行,邏輯關系如圖7(a)所示;而有關舵機位置的PID計算分為兩層,邏輯關系如圖7(b)所示。為了進一步提高PID控制的靈活性,且保證與脈沖控制序列的接收頻率和串口命令的速率相匹配,本發明針對不同層次PID計算的物理需求進行兩個方面的改進對陀螺和舵機位置的PID計算中的e(k)設定“死區”的概念,當e(k)落入死區后,下一層的PID計算給定值以“0”計算;同時,根據各層e(k)值的范圍進行分級,針對不同的分級,協調Kp與Kd。圖10中Mp和Md分別為Kp與Kd的比例系數。為了保證在新的PCM控制脈沖或串口命令到來之前,系統能夠最優地執行本次控制命令,實現飛機姿態的準確調整,需要將一次完整的PID控制流程限制在合理的時間范圍內。本發明對PID控制的要求為在系統時鐘為73.5MHZ的前提下,按照之前的PID流程設計,耗時最長的一次PID控制(陀螺位置PID控制)在控制信息間隔時長內必須被等間隔的執行三次以上。通過對軟件各模塊進行耗時統計與剖析,最為耗時的部分為PID計算。鑒于無人直升機在飛行中所處的動態平衡狀態,可減小PID計算的精度以提高速率。本發明采用的方法為通過原始數據的量化和匹配,將浮點數運算全部改變為整形運算,并利用C8051F121提供的硬件乘法累加器進行長整形的運算。通過以上優化,本發明中一次PID計算約62us,則一次最長PID控制過程約4.7ms,可以滿足需求。雙余度控制模塊的CPU身份切換轉移圖見圖11。本發明中的兩片CPU,在明確自身初始工作狀態后,通過實時的、周期的檢測自身或彼此之間用于工作狀態指示的信號來判別當前CPU的工作狀態。在異常情況下進行切換,并實現系統的平穩過渡。具體流程如下所述主CPU的檢測包括控制命令檢測和從CPU工作狀態檢測兩個部分a)對有效控制信號進行周期檢測。在外部中斷服務程序和串口中斷服務程序中復位、重置Timer4進行計時;一旦Timer4溢出,則說明接收到的信號間隔時長大于PCM控制脈沖或串口信息的速率規定,或者檢測到串口信息誤碼率連續偏高,則啟動軟件復位功能,改變自身當前的身份為從CPU,并進行重初始化,執行從CPU對主機信號的檢測;在Timer4的溢出中斷服務程序中還需結合控制輸入優先級的設置和當前CPU的工作狀態進行判斷,以避免由于沖突產生的虛假錯誤。b)對從CPU的工作狀態進行檢測。把從CPU的用于檢測工作狀態的一路PWM信號線與主CPU的比較器CPl鏈接,由于從CPU不應有PWM脈沖輸出,所以一旦CPl檢測到PWM脈沖出現,說明從CPU出現故障,或說明出現了兩片CPU同時為主的狀態。此時的CPU身份需改變為從CPU身份。從CPU的檢測只包含對主CPU工作狀態的檢測。把主CPU的用于檢測工作狀態的一路PWM信號線與從CPU的比較器CPl鏈接,同時在CPl中斷中復位、重啟Timer4,通過檢測Timer4來判斷主CPU是否有連續的、有效的PWM脈沖輸出,一旦超時則將當前CPU身份設置為主,并進行重初始化。為了避免由于串口數據源或PCM控制脈沖信號自身異常所導致的CPU身份頻繁切換的狀態,若此CPU原始身份為主,需在此時判斷上一次CPU復位的歷史記錄,若為軟件復則放棄對控制命令的檢測。通過以上流程可以實現兩CPU之間的切換和相互配合,并能夠自動解除由于時鐘失拍或切換延時等原因造成的“同主”或“同從”狀態,避免狀態機中的死鎖和死環情況的發生。同時,CPU每次切換為主的情況下,需要保證切換后飛機姿態的穩定性。本發明采用兩種方法參照初始狀態時,以各通道的AD采集值作為對應PID計算的給定值,等待控制命令的到來;利用單片機外存擴展技術將兩者聯系起來,在正常的PID控制流程中實時記錄相關數據,在CPU發生切換時,當前主CPU可通過I/O總線獲得原主CPU的控制信息,從而保證飛機姿態的平穩過渡。(2)根據之前參數調試方案中的設計,連接外圍設備,設置所需的中立位置。本發明一種共軸式無人直升機的雙余度姿態控制系統的調試方法,如圖5所示,具體的實現步驟如下步驟一根據參數調試對象即“位置”或“速度”的K1^PKd,連接已定義的I/O端口至高或低電平端,用以系統上電后對實現環境的檢測;步驟二調節電位器為K1^PKd提供初始參數,通過Futaba以PCM脈沖的形式發送陀螺或舵機位置給定值,系統按照試驗環境下的PID控制流程對后級大功率管進行控制;步驟三保持Futaba的中立位置不變,按照每次試驗只調節一個電位器的原則,即固定其中一個,只調整另一個,使舵機達到自激抖動的臨界狀態;在當前參數的作用下PID控制的靈敏度和穩定度最佳,Kp和Kd為最優化參數;步驟四操作Futaba輸出超過脈沖門限的信號,CPU在解析出第一個“寫FLASH使能”信號后將當前Kp或Kd的采集值量化并寫入FLASH,并忽略之后連續到達的寫使能信號;步驟五操作Futaba返回中心位置,CPU復位當前狀態,繼續等待下一次有效的寫使能信號的到來,結束一次調試。權利要求一種共軸式無人直升機雙余度姿態控制系統,其特征在于它是由串口通信模塊、PCM解碼模塊、AD采集模塊、PWM輸出模塊和CPU控制模塊等部分組成的;它們之間的邏輯關系是串口通信模塊、PCM解碼模塊、AD采集模塊作為系統輸入,由CPU控制模塊進行改進的數字PID控制,以PWM脈沖的形式由PWM輸出模塊輸出,在簡單的外圍邏輯電路配合下,實現對后級大功率管的控制;同時,CPU控制模塊的主要功能還包括雙CPU的相互監測、備份和切換,從而實現“雙余度”控制;所述串口通信模塊是由軟件初始化并控制CPU的串口控制器即UART單元實現,該UART單元繼承了傳統51單片機的串口發送和接收結構;本系統利用RS422電平標準的外圍串口轉換芯片實現CPU串口電平標準和外部傳輸電平標準的轉換;并利用其中斷服務程序對機載主控制計算機的數據進行處理;為了達到機載主控制計算機同時控制本系統的多個實體的目的,并且減小誤碼率的產生,設計了一種如下表所示的適用于多機通信的串口通信協議名稱幀頭地址長度數據校驗和幀尾字節(byte)211N11其中,“幀頭”用于機載主控制計算機與本系統之間串口通信的同步;“地址”是為本系統的多個實體預先分配的地址,實體可根據地址確認執行自身的控制信息,而機載主控制計算機可根據地址確認各實體當前的工作狀態;“長度”是由幀頭到校驗和的字節數,發送端可根據此信息實現數據量不定的串口通信,接收端可通過長度信息和幀尾信息驗證接收數據是否正確;“校驗和”用來判斷此次通信是否出現無碼情況,其校驗方法是將幀頭至幀尾的全部字節依次進行位異或操作;“幀尾”是一幀數據的結束標志;當串口接收中斷標志被置位時,串口中斷服務程序根據“幀頭”、“地址”分別進行幀同步和信息過濾,在接收到本機所需的控制信息后根據數據幀“長度”預測“幀尾”位置,并根據“校驗和”信息進行數據驗證,確定無誤后進行有效數據的存儲和處理;所述PCM解碼模塊是由CPU的外部中斷和定時器配合實現,用于對手持無線電遙控器即Futaba發送的PCM脈沖的接收與解碼量化;本系統通過將定時器配置為外部中斷觸發計數的模式,在外部中斷的下降沿中斷服務程序中獲得PCM脈沖測量值,并設計了一種簡單易行的PCM解碼量化方法a)計算定時器對PCM脈沖計數值最值Vm與中心位置計數值V0之間的差值;b)計算AD采集值的最值Am與陀螺或舵機中立位置的AD采集值A0之間的差值;c)根據兩差值的比例關系設計比例系數K;d)計算定時器對PCM脈沖計數值Vi與中心位置計數值V0之間的差值,可將此差值直接量化為后續PID計算所需的整型數據Pi,其量化公式為Pi=(Vi-V0)×K其中該PCM解碼模塊與串口通信模塊組成了本系統的給定值輸入模塊,為了提高控制靈活性,本系統為兩路輸入設置了優先級,且后者優先級高于前者后者在有效狀態下可以被前者搶占,且系統切換至PCM脈沖控制模式;而前者在有效狀態下系統忽略串口接收的有關定值部分的命令,系統工作在PCM脈沖控制模式;當且僅當系統判定PCM脈沖控制失效時,退出當前控制狀態,使能串口命令控制,系統進入串口命令控制模式;所述AD采集模塊是由CPU的集成模數轉化即ADC單元配合外圍差分電路實現;該ADC單元的采集功能完全在CPU內部實現,量化數據直接被CPU的控制模塊使用;該AD采集模塊輸入方式具有四通道和兩通道兩種模式,為了減小直流分量的干擾對采集值精度的影響,各通道均采用差分輸入的方式;所述PWM輸出模塊是由CPU的集成可編程的計數器陣列即PCA單元組成,配合外圍協調電路,以電流驅動的形式控制后級大功率管系統;該PCA單元具有六路獨立的捕捉/比較模塊和輸出,并共用一個計數/定時器;本系統使用其中三路,并配置其工作在8位PWM輸出狀態下,輸出地PWM脈沖具有255位量化精度,最小分辨率由系統時鐘與量化精度共同決定;為了保護后級大功率管,本系統提供兩路控制電平與兩路PWM脈沖同步輸出,由外圍匹配電路將兩者耦合,用于控制后級大功率管的正轉、反轉和截止狀態,判斷當前PID計算結果與前一次PID計算結果是否為異號,若為異號則需改變后級大功率管的轉向,此時需要400us延時輸出,兩路電平為高,控制其工作在截止狀態;在截止時期內繼續進行PID計算和判斷過程,如再異號則清零計數,繼續400us延時,以此反復直至延時結束,輸出PWM脈沖并改變電平狀態;所述CPU控制模塊其功能包括協調系統工作狀態和PID控制流程,進行改進的數字PID計算以及雙余度控制的實現;為了實現上述功能并且提高系統軟件的邏輯性、可讀性和可移植性,該CPU控制模塊是通過模塊化的方式加以區分與設計,它包括系統工作狀態協調模塊、PID控制模塊、改進的數字PID計算模塊和雙余度控制模塊;其間的相互關系為系統工作狀態協調模塊通過改變系統在飛行環境下的工作狀態,調整系統其他模塊的具體實施流程;在確定工作狀態的前提下,雙余度控制模塊根據實時監測信息改變CPU當前身份,從而重置PID控制流程;PID控制模塊受制于前面兩個模塊的輸出,用于在不同工作狀態下對當前PID計算的流程進行控制;改進的數字PID計算模塊被PID控制模塊調用,即PID算法的具體實現;該系統工作狀態協調模塊是本系統在飛行環境下確定和更改當前控制模式標識的唯一途徑;它根據當前給定值的獲得渠道確定當前系統的工作狀態,即等待PCM脈沖或串口控制命令狀態,PCM脈沖使能狀態和串口控制命令使能狀態;系統工作狀態還可由雙余度控制模塊進行自主切換,即當CPU檢測自身或備份CPU出現故障時,可改變自身的工作狀態;該PID控制模塊是通過改變一個雙向鏈表的當前節點來實現,此雙向鏈表中的節點是由PID計算中涉及到的變量和參數組成的結構體;它主要用于協調PID控制流程;設計一套PID控制流程,并對PID計算進行C語言的代碼優化;該PID控制流程分為兩種情況,即接收到有效的PCM控制脈沖或串口命令獲得給定值初值時的及時響應過程;以及在完成上述過程后,PID流程進入的微調狀態;該改進的數字PID計算模塊是由當前給定值、采集值、比例系數和微分系數變量,按照數字PID算法進行的運算,此模塊的輸入與輸出均被量化為整數行變量;它采取了下列措施提高PID計算的靈活性對當前給定值與采集值的差值進行分區,并據此采取協調P、D參數、設立“死區”進行分段式的PID計算;該雙余度控制模塊是由“檢測”、“判決”和“切換”三個階段組成;本系統的硬件板卡中包括兩片CPU,被初始化為主、從兩種身份;“檢測”是由主CPU的信號源檢測和CPU的實時互監測兩部分組成,其中主CPU通過對PCM脈沖和串口命令狀態進行具有優先級的信號源檢測,而CPU之間通過輸出信號進行互相監視,即實時互監測;“判決”根據檢測結果,結合CPU身份實時判別系統工作狀態;“切換”根據當前判決結果異常,以及雙CPU的當前身份進行自主切換,同時為避免兩者同主或同從的情況特別設計了切換方案;它用于CPU工作狀態備份和切換;兩者同步完成自身的輸入處理、流程協調和PID計算,為相互備份和切換時飛機姿態控制的平穩過渡做好準備。FSA00000111179900021.tif2.一種共軸式無人直升機的雙余度姿態控制系統的調試方法,它所涉及的參數為各層PID計算的比例參數Kp和微分參數Kd,控制源為Futaba,需為四路AD采集通道提供外接設備,其中兩路外接可調電位器模擬!^和&;另外兩路與飛行環境相同,分別與舵機的位置傳感器和速度傳感器相接;輸出端接舵機的大功率管控制器,通過PWM脈沖控制舵機位置;所采用的數字PID核心算法是y(k)=KpX{e(k)-KdX[e(k)_e(k_l)]}其中y(k)為時刻k的輸出量,e(k)為給定值與采集值在k時刻的差,Kp為比例系數,Kd為微分系數CPU上電后通過對特定I/O端口的檢測區分當前工作環境,即飛行環境和試驗環境;飛行環境是指各層PID參數均已確定的情況下,姿態控制器真正工作的環境,此時各層PID參數由閃存的“數據存儲區”讀取并在外部數據存儲單元中賦值;試驗環境是指PID參數調試環境,可分為“位置PID相關參數調試”和“轉速PID相關參數調試”兩個狀態;其特征在于該調試方法的具體步驟如下步驟一根據參數調試對象即“位置”或“速度”的~和Kd,連接已定義的I/O端口至高或低電平端,用以系統上電后對實現環境的檢測;步驟二調節電位器為~和Kd提供初始參數,通過Futaba以PCM脈沖的形式發送陀螺或舵機位置給定值,系統按照試驗環境下的PID控制流程對后級大功率管進行控制;步驟三保持Futaba的中立位置不變,按照每次試驗只調節一個電位器的原則,即固定其中一個,只調整另一個,使舵機達到自激抖動的臨界狀態;在當前參數的作用下PID控制的靈敏度和穩定度最佳,Kp和Kd為最優化參數;步驟四操作Futaba輸出超過脈沖門限的信號,CPU在解析出第一個“寫FLASH使能”信號后將當前Kp或Kd的采集值量化并寫入FLASH,并忽略之后連續到達的寫使能信號;步驟五操作Futaba返回中心位置,CPU復位當前狀態,繼續等待下一次有效的寫使能信號的到來,結束一次調試。全文摘要一種共軸式無人直升機雙余度姿態控制系統,它由串口通信模塊、PCM解碼模塊、AD采集模塊、PWM輸出模塊和CPU控制模塊組成,串口通信模塊、PCM解碼模塊、AD采集模塊作為系統輸入,由CPU控制模塊進行改進的數字PID控制,以PWM脈沖的形式由PWM輸出模塊輸出,實現對后級大功率管的控制;其調試方法有五個步驟,即(一)根據參數調試對象連接已定義的I/O端口至高或低電平端;(二)調節電位器為Kp和Kd提供初始參數,對后級大功率管進行控制;(三)保持Futaba的中立位置不變,調節電位器,使舵機達到自激抖動的臨界狀態;(四)操作Futaba輸出超過脈沖門限的信號;(五)操作Futaba返回中心位置。該方法實現了相關參數的調試和存儲,降低了干擾,提高了系統穩定性和響應速度。文檔編號G05D1/08GK101833336SQ201010162559公開日2010年9月15日申請日期2010年4月28日優先權日2010年4月28日發明者吳智杰,王修桐,胡繼忠,趙琦申請人:北京航空航天大學