簡介
在一般的電機調速系統中都存在電流反饋和速度反饋,它們大多使用PI調節器,但是調節器參數的確定需要反覆調試。如果靠直接在控制程式中不斷地改變參數,則需要不斷地停機,修改參數,再開機。這樣效率低,得到的參數也不準確。
變PI參數的調節用於直流調速系統,不僅能消除大信號啟動時的轉速超調問題,而且在抗負載擾動方面具有極強的魯棒性,能最大限度地減少固負載突變造成的轉速波動。目前使用的雙閉環直流調逮系統,是按典型系統採用PI控制器串聯校正來設計轉速環和電流環的。其起動過程不可避免地要出現轉速退飽和超調聞題,同時在反饋方案的處理上也只強調無靜差的限流特性,沒有考慮動態速降(升)問題,雖然人們採用了各種改進方法,但都存在著不少問題。
控制器原理
定義
定義:
n=速差電壓閾值,正實數a1=速率a(t)的下限設定值,a2=速率a(t)的上限設定值
變參數PI控制器的表達式:
控制器的參數改變通過電子開關①、②、③、④及⑤的狀態組合來實現。其結構如圖。下面討論不同過程時該控制器的工作情況。
正向空載起動
突加階躍給定Uga,Ufa為初始值,e(t)>1,控制策略為u(t)=Emax且q(t)=0;開關①、②和③閉合,其餘斷開。電機以最大加速度起動。設定|a(t)|>a2。轉速建立後,當|a(t)|>a2,開關①和③斷開,⑤閉台,其餘不變,控制變為PI調節。切換瞬間,電容c兩端電壓近似為零,同時e(t)也很小,因而此時A點的電位很低,確保了轉速無超調地逼近給定值。穩定後,設定|a(t)|<a1如果系統是負載起動,過程與上類似,只是穩態時A點電位與負載電流大小相當。
突加負載
電機突加負載後,轉速會有一個降落,但可能還在閾值內,因而靠速差e(t)作切換條件就顯得遲緩。速率8(t)能立即感知負載變化的大小。開關⑧閉合,其餘斷開,變為u(t)=Emax控制。Id急劇上升,電機以最大加速度使轉速回升,Id又下調。一旦|a(t)|<a1,開關②和⑤閉合,系統又變為PI調節。開關①u(t)=Emax調節時不閉合,是為了保留電容C上的電荷,以便回到PI調節時電流調節器有一個不為零的初值,保證系統的快速性。
突減負載
情況與突加負載相類似。只是其在克服速升時控制策略為u(t)=0,即開關④閉台,其餘斷開。其間開關①不閉合,原因同前。
PI參數的編程調節
調節原因
對於電機調速系統來說,調節器PI參數的選擇是系統設計一個十分關鍵和複雜的過程,參數的選擇會極大的影響系統的性能。通常調節器的設計是通過對實際系統進行調試的方法進行的,這一過程十分繁瑣,參數選擇不合適,就容易出現系統振盪過流等非正常狀態。
MSCOMM控制項
MSCOMM控制項是Microsoft為簡化Windows下串列通信編程而提供的ActiveX控制項.用於實現了PC機之間的通信。它提供了一系列標準通信命令的使用接口,利用它可以建立與串口的連線,並可以通過串口連線到其它通信設備,發出命令,交換數據以及監視和回響串列連線中發生的事件和錯誤。
MSCOMM控制項提供了兩種處理通信的方式:
(1)事件驅動方式.當通信事件發生時,MSCOMM控制項會觸發OnComm事件,調用者可以捕獲該事件,通過檢查CommEvent屬性便可確認發生的是哪種事件或錯誤,從而進行回響的處理.這種方法的優點是回響及時、可靠性高.
(2)查詢方式.在程式的每個關鍵功能之後,可以通過檢查CommEvent屬性的值來查詢事件和錯誤.如果應用程式小,這種方法可能更可取.
MSCOMM可以兩種不同的形式接收數據,即以文本形式和以二進制形式.用MSCOMM控制項進行字元數據傳輸的文獻和資料可以找到很多,在Microsoft的MSDN(MicrosoftDeveIoperNetwork)中就可以找到這樣的例子,即VCTERM。可是幾乎所有以單片機為核心的測量系統所得到的原始數據都是二進制的,所以,以二進制傳輸數據將是最為直接而又簡潔的辦法。不僅如此,由於MSCOMM控制項在文本形式下,其傳輸的是寬字元格式的字元,要想得到有用信息,還要額外處理.在這裡我們使用二進制形式,因為TMS320F240DSP的數據格式是二進制形式。
編程實現
利用用
VC++6.0編寫的上位機程式可實現PI調節器參數的計算機線上調節.在兩個地方對控制項的屬性進行設定:
(1)對話框資源編輯器中.在對話框模板上,用右鍵單擊MSCOMM控制項,然後選擇Projects⋯選單項,最後便可設定各項屬性;
(2)對話框的OnInitDiaiog()函式中。
下面是以上設定的函式實現:
BOOlCPiReguiationDig::OnInitDiaiog()
{
CDiaiog::OnInitDiaiog();
//此處為套用框架自動生成代碼,不予列出
//TODO:addextrainitiiizationhere
mcomm.SetCommPort(1);//使用串口1
mcomm.SetSettings(“9600,N,8,1”);
//波特率為9600,無奇偶校驗,8位數據位,1位停止位
mcomm.SetRThreshoid(10);//每接收10個字元就觸發1次接收事件
mcomm.SetSThreshoid(0);//不觸發傳送事件
mcomm.SetInputlen(10);每次讀操作從緩衝區中讀10個字元
mcomm.SetInputMode(1);//二進制數據傳輸形式
mcomm.SetPortOpen(TRUE);//打開串口
returnTRUE;
}
本程式中利用兩個Siide控制項分別表示PI調節器的參數P和PI,把他們轉換成二進制數再傳送。
傳統PI控制問題
一般的PI控制有兩種常見的結構:
和
,兩種結構可以相互轉化,但後一種格式更好,便於參數的調試。實際上,後一種結構做到了“實際增益的分離”。我們一般意義上所說的比例增益實際上並不僅僅是k
p這一個參數決定的,它也取決於積分部分產生的放大增益。我們應該把控制器的比例增益理解為整個控制器提供的放大倍數。對於PI控制器來說,如果積分係數k
i提高,同樣也增大了整體增益,所以我們必須把積分的實際作用從系統中分離出來。
中t
i是一個在0和1之間的小數,它構成的比例微分環節對增益沒有太大影響。因為根據零極點對消的理論,實際這個微分環節是要和系統中的某個大慣性環節相抵消的,實際上如果積分常數調節好的話,這個比例微分環節基本上不起作用,那么剩下的k
p/t
i才是系統的真正增益。其中t
i已經被系統的最大慣性環節確定了,我們主要是確定這個k
p。這個這樣的結構把其作用的部分和不起作用的部分分開了。而k
p+k
i/s我們要考慮兩個“耦合”的參數,這兩個參數都可能對系統的總體增益產生作用,所以調試起來很麻煩。