matlab電路仿真.doc
《matlab電路仿真.doc》由會員分享,可在線閱讀,更多相關《matlab電路仿真.doc(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、Matlab電路仿真軟件包-simpowersystems 1. 入門 1.1. SymPowerSystem是什么 1.1.1. 介紹 在Matlab提供的simulink仿真環(huán)境下,與其他建模產(chǎn)品結(jié)合在一起,用于對電子、機械系統(tǒng)進行建模。要學會使用SymPowerSystem,應首先學會使用Simulink仿真。 1.1.2. 設計中的仿真的作用(略) 1.1.3. SymPowerSystem仿真庫 你可迅速將SymPowerSystem投入使用。該庫包含了許多典型的功率設備模型,例如,變壓器、導線、機械、能源電子等。這些仿真模型來源于產(chǎn)品手冊,基于工程實際。 SymPo
2、werSystem包含一個主要的庫:powerlib。powerlib庫顯示了所有包含的模塊和模塊名稱。 1.1.4. SymPowerSystem中的非線性模塊(略) 1.1.5. 仿真時需要的環(huán)境: Maltab 和Simulink 1.2. 如何使用該指南 1.2.1. 對于新用戶 將學會如下知識和技能: (1) 使用該庫創(chuàng)建和仿真電子電路模型 (2) 將一個電子電路于simulink模塊連接在一起 (3) 分析電子電路的穩(wěn)定狀態(tài)和頻率響應 (4) 離散化模型,以便加快仿真速度 (5) 使用矢量圖仿真方法 (6) 構(gòu)建自定義的非線性仿真模型 1.2.2. 對于經(jīng)
3、驗豐富的模塊用戶(略) 1.2.3. 所有用戶(略) 1.3. 創(chuàng)建和仿真簡單的電路 1.3.1. 介紹 SymPowerSystem允許你對包含線性或非線性的電子電路進行建模和仿真。在本章節(jié)中,您將學習到: (1) 瀏覽SymPowerSystems的powerlib庫 (2) 如何利用SymPowerSystem創(chuàng)建一個簡單的電路 (3) 如何將電路與simulink模塊互聯(lián)。 下述電路是即將創(chuàng)建的電路: 圖1 要建模和仿真的電路 1.3.2. 使用powerlib創(chuàng)建電路 (1) 使用如下命令打開powerlib: powerlib (2) 從powerl
4、ib的文件菜單下,允許“新建”菜單命令,新建一個空白電路穩(wěn)定,存為:circurt1 (3) 打開Electrical Sources庫,復制其中的AC Voltage Source模塊到circuit1中 (4) 雙擊AC Voltage Source,打開其屬性設置對話框,按圖1所示進行設置 (5) 改模塊的名稱為“Vs” (6) 將elements庫中的Parallel RLC Branch模塊復制到circuit1中,按圖1進行參數(shù)設置 (7) 用同樣的方法加入其他模塊到電路中 (8) 注意加入的傳輸線模塊:傳輸線模塊模型圖如下(這是一段模型,一條導線通常有若干段,每一段參
5、數(shù)都一樣,如圖1所示): 該模型是對參數(shù)分布一致的傳輸線的模擬。它能傳輸?shù)碾娦盘栕畲箢l率近似為: fmax=Nv/(8l) 其中,N---PI節(jié)數(shù), v---導線傳輸速度,v=1/(sqrt(L*C)) l----導線長度。 關于Series RLC Load模塊: 描述該模塊的有如下參數(shù): normal voltage Vn(Vms):額定電壓(有效值) normal frequency(Hz):額定頻率 active power(w):有效功率(有功功率) 電阻消耗的功率 Inductive reactive power QL:感性無功功率 Cap
6、acitive reactive power QC:容性無功功率 (9)加一個電壓測量模塊(Voltage mesure block)到電路中,該模塊位于mesurements庫中 然后將simulink中的scope模塊添加到電路中,并將其與電壓測量模塊互聯(lián)。 1.3.3. 將電子電路與simulink連接起來 電壓測量模塊(Voltage mesure block)是SymPowerSystem模塊與simulink模塊直接的接口。對于上面的例子,你實現(xiàn)了一種從電路到simulink信號的接口。電壓測量模塊將電壓轉(zhuǎn)換成simulink信號。 類似的,電流測量模塊(current
7、mesure block)能將電流轉(zhuǎn)換為simulink信號。 你也可以將simulink信號連接到電路中,例如,你也可以將受控電壓源加入到電路中。如圖2所示。 圖2 1.3.4. 測量電壓和電流 電壓測量模塊和電流測量模塊有方向規(guī)定,標+為正向,規(guī)定的方向是從正到負,若電壓值或電流值為+,則表示他們的方向與規(guī)定方向相同,否則,相反。 萬用表模塊(multimeter)則沒有事先規(guī)定的方向,它是根據(jù)仿真結(jié)果仿真后才顯示方向的。可以通過如下命令了解方向: get_param(gcb,Orientation) 1.3.5. 連接電容和電感的基本原則 (1) 理想電壓源不能與純
8、電容并聯(lián) (2) 理想電流源不能與純電感串聯(lián)。 違反上述原則,電路將無法仿真。必須修正。方法是在電容旁串聯(lián)一個小電阻或在純電感兩端并聯(lián)一個大電阻。 1.3.6. 使用powergui模塊仿真simpowersystem模型 powergui模塊對于任何包含simpowersystems模塊的simulink模型的仿真是必須的。他用于存儲等價的simulink電路,這些電路用來表示simpowersystem模塊的狀態(tài)方程。當您在仿真中使用該模型,應遵循以下原則: l 將powergui模塊置于仿真圖的頂層用以優(yōu)化性能。然而,你也可以把它置于任何需要的地方。例如,在一個子系統(tǒng)中。這不會
9、影響系統(tǒng)功能; l 其他(略) 1.4. 簡單電路分析 1.4.1. 介紹 本節(jié)你將學習: l 使用power_analyze命令獲取模型的狀態(tài)空間描述 l 使用powergui的圖形用戶接口計算電路的穩(wěn)態(tài)電壓和電流 l 電路的頻域分析 1.4.2. 電路狀態(tài)變量 電路狀態(tài)變量是與電路中的電感和電容元件有關的狀態(tài)變量。許多模塊中包含了電感或電容,如并聯(lián)RLC模塊,PI SectionLine模塊,等等。 電路的狀態(tài)變量有電路中各電容的兩端電壓和流經(jīng)各電感的電流組成。電路狀態(tài)變量的名稱由系統(tǒng)自動產(chǎn)生,其命名規(guī)則如下: l 變量名由兩部分組成:前導符_后綴。前導符和后綴之間用
10、下劃線隔開; l 前導符為Il或Uc(Il表示流經(jīng)電感的電路,Uc表示電容器兩端的電壓)‘ l 后綴為模塊名稱。 1.4.3. 使用power_analyze進行狀態(tài)空間描述 你可以使用power_analyze獲取一個電路模型的狀態(tài)空間描述,例如輸入下面的命令,可以獲取上面創(chuàng)建的簡單電路的狀態(tài)空間描述信息: [A,B,C,D,x0,electrical_states,inputs,outputs]=power_analyze(circuit1) x’=Ax+Bu y=Cx+Du 要判定電路是否穩(wěn)定,只要求A的特征值,看看A的特征值的實部是否都小于0,只有滿足此條件,電路才是穩(wěn)
11、定的。 1.4.4. 穩(wěn)態(tài)分析 使用powergui的圖形用戶接口命令可以進行電路的穩(wěn)態(tài)分析。 菜單命令:Analysis tools-->Steady-State Voltages and Currents 1.4.5. 頻率分析 powerlib包含了一個阻抗測量模塊(Impedance Measurement),可以用于測量電路中任意兩點間的阻抗。接下來,你將使用兩種方法,利用該模塊測量節(jié)點B2點的阻抗: l 基于狀態(tài)空間模型進行計算 l 使用阻抗測量模塊和powergui模塊進行測量 (1) 利用狀態(tài)空間模型獲取阻抗-頻率之間的關系 注:下面已經(jīng)假定你的電腦上已經(jīng)安裝
12、了控制系統(tǒng)工具箱 要測量B2點的阻抗與頻率間的關系,需要在B2處加入另一個電流源,打開前面繪制的仿真模型圖,將AC Current Source復制到電路中,最終如圖3所示。 圖3 接著,計算該電路的狀態(tài)空間方程: sys1 = power_analyze(circuit1,ss) 該方程描述的是電路的連續(xù)狀態(tài)空間方程。 在laplace域,B2點的阻抗定義為:由交流電流源注入的電流與U2測量的電壓間的傳遞函數(shù)。 利用下面的命令獲取狀態(tài)空間方程中的輸入輸出變量的名稱: sys1.InputName ans = U_Vs I_AC Current
13、Source sys1.OutputName ans = U_U2 U_U1 節(jié)點B2處的阻抗與該狀態(tài)空間模型的輸出2和輸入1間的傳遞函數(shù)相關,對于0~1500Hz頻率范圍,阻抗可由下式計算并顯示出來: freq=0:1500; w=2*pi*freq; bode(sys1(1,2),w); (2)利用阻抗測量模塊(impedance mesurement)和powergui模塊求阻抗與頻率關系 打開powerlib的mesurement庫,將阻抗測量模塊(impedance mesurement)復制到你的模型中,重命名為ZB2,將ZB2的兩個輸入分別連
14、接到B2點和地(這樣便可以測量B2點對地的阻抗)。 現(xiàn)在打開powergui對話框,窗口中顯示只有一個阻抗在測,命名為(ZB2,與模塊名相同),設置頻率范圍為0:2:1500,Z幅度顯示請選擇對數(shù)刻度(logarithmic),選中“Save data when updated”復選框,并輸入zData作為變量名用來保持阻抗-頻率數(shù)據(jù)。單擊“update”按鈕,可以看到改變參數(shù)后的阻抗幅值-頻率圖、阻抗相位-頻率圖。 注:ZData的第1列是頻率,第2列是阻抗(復數(shù)表示)。 1.5. 指定電路初始狀態(tài) 1.5.1. 介紹 在這一節(jié)中,你將學習: l 包含有simpowers
15、ystems模塊的simulink模型圖的狀態(tài)變量有哪些? l 設定狀態(tài)變量的初始值 1.5.2. 狀態(tài)變量 包含有simpowersystems模塊的simulink模型圖的狀態(tài)變量由以下組成: l 與simpowersystems中的RLC支路模塊類型有關的電路狀態(tài)。他們在模型的狀態(tài)空間描述中被定義。 l SimPowerSystems的電氣simulink模型的simulink狀態(tài),例如同步機械模塊,飽和變壓器模塊和三相動態(tài)負載模塊 l 你的模型中的其他模塊的simulink狀態(tài) 下圖給出了包含上述三種模塊的一個實例。 1.5.3. 初始狀態(tài) 所謂初始條件,是指仿真
16、前應用在整個系統(tǒng)上的各狀態(tài)變量的初始值,也稱作初始狀態(tài)。初始狀態(tài)可以在模塊中設定。大多數(shù)模塊允許用戶在設計時指定初始狀態(tài)。對于電路模型,simpowersystems可自動設置模型的初始狀態(tài),并保證開始仿真時直接進入穩(wěn)態(tài)。 然而,你可以自行設定電路中的電容和電感的初始狀態(tài)。 使用power_init函數(shù)也可以設定初始狀態(tài) 1.5.4. 使用powergui設定電路初始狀態(tài) 第1步:在Matlab命令行中鍵入power_transient,打開標題為Transient Analysis of a Linear Circuits的SimPowerSystems實例。重命名其中RLC支路模
17、塊 第2步:從powergui模塊的分析工具菜單下,選擇“初始狀態(tài)設定”選項,5個電路狀態(tài)變量的初始值已經(jīng)設定,這些初始設定能使電路一開始仿真,就為穩(wěn)態(tài)。 第3步:打開scope模塊,并開始仿真。 第4步:返回到第2步,試著改變某些變量的初始值,再仿真,看看結(jié)果是否發(fā)生變化。若不懂,請看在線幫助。 1.6. 仿真暫態(tài)過程 1.6.1. 介紹 本節(jié)你將學習到: l 怎樣創(chuàng)建電路子系統(tǒng)(subsystem) l 使用斷路器進行電路的暫態(tài)過程仿真 l 比較不同傳輸線模型下的時域仿真結(jié)果 l 如何離散化電路并將其仿真結(jié)果與相應的連續(xù)的可變步長算法的仿真結(jié)果相比較 1.6.2. 使
18、用開關仿真暫態(tài)過程 simpowersystems的一個重要功能是對電路的暫態(tài)過程進行仿真??梢栽陔娐分屑尤霗C械開關或使用功率電子開關來完成暫態(tài)過程的仿真。 首先,打開前面創(chuàng)建的circuit1仿真模型,刪除連接到B2節(jié)點上的電流源,將新的系統(tǒng)另存為circuit2。在接入開關前,最好修改一下電路,simpowersystems允許用戶將多個元器件組合在一起形成一個電路子系統(tǒng)。這一特點能使復雜電路大大簡化。 使用這一特點,將源阻抗轉(zhuǎn)換到一個子系統(tǒng)中: (1) 框選標識為Rs_eq和Z_eq的兩個模塊,選擇“Edit-->create subsystem”菜單命令,這兩個模塊變成了一個子
19、系統(tǒng)模塊(subsystem) (2) 選擇“Edit > Mask subsystem”菜單命令,改變子系統(tǒng)圖標,在封裝編輯器中的icon選項中,輸入下列命令: disp(Equivalent\nCircuit) subsystem上就會顯示相應文字。 (3) 選擇“Format > Show drop shadow”菜單命令,給子系統(tǒng)模塊設置陰影。 (4) 雙擊子系統(tǒng)模塊,可以查看其組成。 (5) 插入電路斷路器(a circuit braker) 斷路器是理想開關與一個小電阻串聯(lián)組成的模型。關于斷路器的模型說明,請參考matlab相關幫助。 按如下設置斷路器的參數(shù):
20、 (1) 打開braker模塊對話框,將其參數(shù)作如下設置: Ron 0.001 Ω Initial state 0 (open) Rs inf Cs 0 Switching times [(1/60)/4] (2) 按前面的圖形連接各模塊 (3) 打開scope U2,單擊參數(shù)圖標,選擇“Data History”選項卡,單擊“Save data to workspace”按鈕,指定變量名為U2來保存仿真結(jié)果,然后將U2的格式(format)選項設為“array”,同時,去除“L
21、imit rows to last”選項,以便顯示整個波形。 接著,便可以仿真系統(tǒng)了。 1.6.3. 連續(xù)、變步長積分算法Continuous, Variable Time Step Integration Algorithms 打開“PI section Line”對話框,確認sections的數(shù)目設為1,打開“Simulation > Simulation parameters”對話框,由于你的系統(tǒng)包含開關,故需要一個剛性的積分算法(a stiff integration algorithm)進行仿真。在“solver”面板,選擇變步長剛性積分算法(a stiff integrat
22、ion algorithm)ode23t。 保留其他默認參數(shù)值(如相對誤差1e-3),設置仿真結(jié)束時間(stop time)為0.02秒,打開示波器(scope),開始仿真。觀察示波器U1和示波器U2上的波形。 一旦仿真結(jié)束,將U2的值保存給變量U2_1,即在工作空間中執(zhí)行如下命令: U2_1 = U2; 打開PI section Line對話框,將sections的數(shù)目設為10,再次仿真,仿真結(jié)束,把U2的值保存給變量U2_2。 在將電路修改為分布參數(shù)模型之前,將系統(tǒng)另存為circuit2_10pi,以便以后重復使用。 用分布參數(shù)線(distributed parameter l
23、ine)模塊替換圖中的pi段線模塊,設置其相(phase)數(shù)為1。將該系統(tǒng)保存為circuit2_dist. 重新仿真,將U2賦給變量U2_d。 現(xiàn)在可比較上面三種不同模型的仿真結(jié)果了。每一個變量U2_1,U2_10,U2_d是一個兩列的矩陣,第1列是時間,第2列是對應的電壓值。使用下列命令在同一幅圖上打印出三個波形(如圖5所示)。 plot(U2_1(:,1), U2_1(:,2), U2_10(:,1),U2_10(:,2),U2_d(:,1),U2_d(:,2)); 1.6.4. 離散化電路系統(tǒng) simpowersystems的一個重要特征是,他不僅能用連續(xù)或變步長積分算法
24、進行仿真,而且可以使用離散化電路系統(tǒng)的算法進行仿真。對于小系統(tǒng),變步長算法一般要比固定步長算法快,因為它需要的積分的步長的數(shù)目較少;而對于包含了許多狀態(tài)和非線性模塊(如功率電子開關)的大型電路系統(tǒng),離散化電路系統(tǒng)則具有較大的優(yōu)勢。 當你離散化系統(tǒng)時,仿真的精度由時間步長控制。若使用太大的時間步長,精度可能不夠。確定時間步長是否合適的唯一方法是通過改變時間步長,反復仿真,比較仿真結(jié)果。通常,對于在50Hz或60Hz的功率系統(tǒng)上或使用了線性整流功率電子(line-commutated power enectronic)元件(如二極管、可控硅等)的系統(tǒng)上進行暫態(tài)仿真,取20us-50us的時間步長
25、一般能取得較好的仿真效果。對于使用了強制整流功率電子開關的系統(tǒng),必須減小時間步長。絕緣柵極雙極性晶體管(insulated-gate bipolar transistor (IGBT)),場效應管(field-effect transistor,FET),門極關斷晶閘管(gate-turnoff thyristor)等工作在很高的開關頻率狀態(tài)下。 例如,要仿真一個工作在8Hz的脈寬調(diào)制(pulse-width-modulated ,PWM)轉(zhuǎn)換器,需要設置步長大約為8us。 現(xiàn)在學習怎樣離散化你的系統(tǒng)并將仿真結(jié)果同連續(xù)和離散系統(tǒng)做比較。打開你在前面保存的circuit2_10pi系統(tǒng),該系
26、統(tǒng)包含24個電路狀態(tài)和一個開關。打開powergui然后選擇離散化電路模型(discretize electrical model)。設置采樣周期25e-6s。重新開始仿真,功率系統(tǒng)將使用Tustin方法(相應于梯形積分)并以25us采樣周期進行離散化。 打開“Simulation > Simulation parameters > Solver”對話框,設置仿真時間為0.2s。啟動仿真。 注:一旦系統(tǒng)被離散化,電路系統(tǒng)再無連續(xù)狀態(tài)了。因此,如果你不需要變步長積分方法進行仿真,在“Simulation > Simulation parameters > Solver”對話框中,可選
27、擇Fixed-step 和 discrete選項,并設定固定步長為25us (no continuous states) 為測量仿真時間,可運行下面的命令重新仿真: tic; sim(gcs); toc 當仿真完成后,其間所經(jīng)歷的時間會顯示在Matlab命令行窗口。 要返回連續(xù)仿真狀態(tài),打開powergui模塊,選擇“continuous”選項。如果比較一下連續(xù)仿真和離散仿真,你會發(fā)現(xiàn)離散仿真比連續(xù)仿真將近快3.5倍。 要比較兩種仿真方法的精度,請完成下列三個仿真: (1) 仿真連續(xù)系統(tǒng),Ts=0 (2) 仿真離散系統(tǒng),Ts=25us (3) 仿真離散系統(tǒng),Ts=50us
28、 對于每一個仿真,將U2值保存到不同的變量中,相應的為U2c,U2d25,U2d50,使用下列命令繪制U2波形: plot(U2c(:,1), U2c(:,2), U2d25(:,1),U2d25(:,2), U2d50(:,1),U2d50(:,2)) 從上圖中,可以看出,25us的離散化系統(tǒng)已經(jīng)非常接近連續(xù)系統(tǒng)了,50us有較大誤差。 1.7. 矢量仿真方法簡介 1.7.1. 介紹 本節(jié)你將學會: l 將矢量仿真方法用于簡單的線性電路中 l 了解該方法的優(yōu)點和局限性 到目前為止,你已經(jīng)學會了兩種仿真電路的方法: l 使用連續(xù)simulink求解器及變步長進行仿真
29、 l 用離散化方法及固定步長進行仿真 本節(jié)介紹的是第三種方法-矢量求解法進行仿真 1.7.2. 何時使用矢量求解法 矢量求解法主要用于研究功率系統(tǒng)的電子機械振蕩,這類系統(tǒng)一般由大型的發(fā)電機和電動機組成。例如,可以使用這種方法對三相系統(tǒng)和機械類的多機械系統(tǒng)進行仿真。然而,該不方法不僅僅局限在機械的暫態(tài)穩(wěn)定性研究領域,完全可以拓展應用到任何線性系統(tǒng)上。 在一個線性電路中,如果你所感興趣的僅僅是當開關處于關或開的狀態(tài)下所有電壓和電流的幅值和相位,那么,就沒有必要求解由電阻、電容和電感交互作用而帶來的差分方程(也即狀態(tài)空間模型)。你僅僅需要求解相對而言簡單得多的與電壓和電流相位有關的代數(shù)方程組
30、,這正是矢量求解法所要解決的問題。顧名思義,該方法以矢量描述電壓和電流。矢量是一個復數(shù),可以用來表示特定頻率下的正弦電壓和電流。矢量既可以用笛卡爾坐標(Cartesian coordinates)表示(復數(shù)的實部與虛部),也可以用極坐標(polar coordinates)表示。在忽略電路狀態(tài)的情況下,矢量求解法無需特定的求解器用于求解系統(tǒng)的電路部分。因此仿真速度要快得多。但應始終記住,這種快速求解技術(shù)只能給出某個特定頻率下的結(jié)果。 1.7.3. 電路暫態(tài)過程的矢量仿真 下面你將會把矢量求解法應用到一個簡單的線性電路上。打開powerlib的演示實例庫,打開通用演示庫(General De
31、mos library),選擇名稱為“暫態(tài)分析”的示例,一個名為power_transient的系統(tǒng)打開了,如下圖所示: 可以通過各模塊參數(shù)設置對話框,看看各模塊設置的參數(shù)。 (1)激活powergui中的矢量求解法 現(xiàn)在,你將使用矢量求解法仿真同樣的電路。這種選項可以通過打開powergui來設定,具體設置請參考在線幫助。設定該選項后,continues變?yōu)閜hasors,在啟動仿真前,還需指定輸出到示波器上的信號的格式。 (2) 選擇矢量信號測量的格式 雙擊“Voltage Measurement”模塊或“Current Measurement”模塊,可以看到有一個菜單,通過
32、該菜單可設置矢量信號的四種輸出格式:complex(復數(shù),默認),real-imag(實部-虛部),magnitude-angle(幅度-角度),magnitude(幅度)。當你要處理的信號為復數(shù)信號時,由于示波器(scope)只能觀察信號幅度,因此,這里選擇“magnitude”。 重新啟動仿真,60Hz的電壓和電流的幅度顯示在示波器(scope)上。從連續(xù)仿真和矢量仿真得到的波形上,可以看出他們的波形是有區(qū)別的。但他們反映了統(tǒng)一規(guī)律。 注意到:連續(xù)仿真情況下,電路波形狀態(tài)改變出現(xiàn)在斷路器打開時電流的下一個0點位置。而對于矢量仿真,電路波形狀態(tài)改變與斷路器開關時刻是同步的。 (3) 處
33、理電壓和電流矢量 “complex”格式允許運用復數(shù)運算和矢量處理,無需將實部和虛部分離。例如,假設你要計算負載的功耗(有功功率P和無功功率Q),而復數(shù)功率s可通過下式計算: 這里的I*是電流矢量的共軛復數(shù)。1/2用于將電壓和電流的幅度從峰值轉(zhuǎn)換為有效值。 設置電壓和電流的輸出值均為“complex”格式,利用來自Simulink Math庫的模塊,實現(xiàn)功率的測量,如下圖所示: 2. 高級組件和技術(shù) 2.1. 功率電子簡介 2.2. 仿真變速發(fā)動機的控制 2.3. 三相系統(tǒng)和機械 2.4. 構(gòu)建和定制非線性模型 2.4.1. 介紹 SimPowerSystems
34、提供了大量非線性元器件模型。然而,有時,你可能需要定制自己的模型并將其與SimPowerSystems提供的標準器件模型相連。定制的模型可能是一種用來模擬一段電弧或變阻器的非線性電阻,也可能是可飽和的電感,一種新的類型的發(fā)電機或電動機等等。 在本節(jié)中,你將學習如何在simulink中定制自己的非線性模型。這里以一個簡單的可飽和的非線性電感和非線性電阻為例來說明。 2.4.2. 一個非線性電感的建模 考慮一個工作在額定頻率為fnom=60Hz、額定電壓Vnom=120V RMS的2H的電感。從0-120V RMS范圍內(nèi),電感值為一個常數(shù):2H,當電壓超過其額定電壓時,電感飽和,將為0.5H
35、,下圖繪制的是該電感的非線性特征曲線,電流量(current)和磁通量(flux)的刻度為每單位(per unit),額定電壓和電流被選為每單位的基準值。 流經(jīng)電感的電流是磁通量的非線性函數(shù),依次,磁通量是電感兩端電壓的非線性函數(shù),該關系可用下列方程描述: 或 因此,該電感的非線性模型可以用一個受控電流源來描述,電流i是電壓v的非線性函數(shù),如下圖所示: “非線性電感的實現(xiàn)”一節(jié)給出了一個包含2H非線性電感的電路,該非線性電感與兩個電壓源(1個120V、60Hz的交流電壓源和一個直流電壓源)和一個5歐的電阻串聯(lián)。 所有用于構(gòu)建非線性電感的元件都被組合在一個名為非線性
36、電感的子系統(tǒng)中,電感的兩端標有“in”和“out”。注意,第2個輸出返回的是磁通量,也被加到子系統(tǒng)中,將該輸出連接到scope模塊,可以觀察磁通量的變化。 該非線性模型使用了兩個powerlib模塊和兩個simulink模塊。這兩個powerlib模塊分別是電壓測量模塊(用于讀取電感兩端的電壓)和控制電流源模塊(controled current source),根據(jù)模型上的標示,該電流的箭頭方向是從輸入到輸出。如上圖所示。 兩個simulink模塊分別是積分模塊(用來計算來源于電壓輸入的得到的磁通量),和一個查表模塊(look_up table)(用來描述i和的關系特征) powe
37、rl_extra的兩個Fourier(傅里葉)模塊用于分析電流的基本成分和直流成分。按上圖建立仿真模型,為實現(xiàn)i=f(),在查表模塊中指定下列兩個向量。 Vector of input values (flux) [-1.25 -1 1 1.25 ] *(120*sqrt(2)/(2π*60)) Vector of output values (current) [-2 -1 1 2]*(120*sqrt(2)/(4π*60)) 將你的電路保存為circuit7,為兩個電源設置下面的參數(shù): AC source l Peak amplitude 120*sqr
38、t(2) l Phase 90 degrees l Frequency 60 Hz DC source l Amplitude0 V 調(diào)整仿真時間為1.5s,選擇ode33tb積分算法作為默認參數(shù),并開始仿真。仿真結(jié)果與計算一致。 2.4.3. 定制自己的非線性模型 simulink提供了一種面板(mask)工具,來為你自定的模型創(chuàng)建對話框,你可以一個指定下列幾個提示和變量: Nominal voltage (Volts rms):Vnom Nominal frequency (Hz):Fnom Unsaturated inductance (H):L Saturatio
39、n characteristic [i1(pu) phi1(pu); i2 phi2; ...]:sat 最終的結(jié)果如下圖所示: 下列代碼在模板初始化時準備了兩個向量,Current_vect 和 Flux_vect,以用于look_up table模塊。 % Define base current and Flux for pu system I_base = Vnom*sqrt(2)/(L*2*pi*fnom); Phi_base = Vnom*sqrt(2)/(2*pi*fnom); % Check first two points of the saturatio
40、n characteristic if ~all(all(sat(1:2,:)==[0 0; 1 1])), h=errordlg(The first two points of the characteristic must be [0 0; 1 1],Error); uiwait(h); end % Complete negative part of saturation characteristic [npoints,ncol]=size(sat); sat1=[sat ; -sat(2:npoints,:)]; sat1=sort(sat1);
41、 % Current vector (A) and flux vector (V.s) Current_vect=sat1(:,1)*I_base; Flux_vect=sat1(:,2)*Phi_base; 打開查表模塊對話框,輸入如下兩個變量名: Vector of input values (flux) Flux_vect Vector of output values (current) Current_vect 關閉對話框,重新開始仿真,可得到同樣的系統(tǒng)。 2.4.4. 非線性電阻的建模 非線性電阻的建模與非
42、線性電感的建模類似。 一個典型的例子是金屬氧化物電阻器具有下列伏安特征: 這里 v, i =瞬時電壓和電流 Vo =保護電壓 Io =參考電流 α =非線性特征指數(shù) (典型值在10-50之間) 下圖顯示了非線性電阻的應用。 上面的方程是一個代數(shù)方程,其在狀態(tài)空間中是一個代數(shù)循環(huán),盡管simulink也能完成循環(huán)運算,但是會減低仿真速度,為此,通常在不改變原始非線性特征的前提下在中間加入一個一階傳遞函數(shù)環(huán)節(jié)1/(1+Ts),通常取T為較小的值,如(T=0.01us)。使用工具封裝該非線性電阻模塊的參數(shù)。 2.4.5. 創(chuàng)建自己的庫 simpowersystems允
43、許用戶創(chuàng)建自己的模塊庫,要創(chuàng)建自己的模塊庫,選擇“file >new library”,一個新的simulink:Untitled的窗口打開了。將你創(chuàng)建的非線性電感模塊和非線性電阻模塊拷貝到該窗口中,保持該庫就可用了。 2.4.6. 將你的模型與別的非線性模型連接起來 應當考慮電流源不能與電流源串聯(lián),電流源不能與純電感串聯(lián),若遇到此種情況,可用考慮在電流源旁邊并聯(lián)一個極大的電阻。 2.4.7. 使用模型構(gòu)建命令創(chuàng)建模型 通常,不建議這樣做,有興趣的,可以參考Matlab相關幫助,下面給出一個例子: add_block(powerlib/Elements/Pi Section Line
44、,Mymodel/Block1); add_block(powerlib/Measurements/Voltage Measurement, Mymodel/Block2); set_param(Mymodel/Block1,position,[340,84,420,106]); set_param(Mymodel/Block2,position,[520,183,545,207]); Block1PortHandles = get_param(Mymodel/Block1,PortHandles); Block2PortHandles = get_param(Mymod
45、el/Block2,PortHandles); add_line(Mymodel,Block1PortHandles.LConn(1), Block2PortHandles.LConn(1)); add_line(Mymodel,Block1PortHandles.RConn(1), Block2PortHandles.LConn(2)); writeDocFeedbackSurveyLink(); 3. 附錄 3.1. 常用模塊 3.1.1. 阻抗測量模塊(impedance mesurement block) (1) 描述 阻抗測量模塊用于測量線性電
46、路中的兩個節(jié)點間的阻抗,兩節(jié)點間阻抗是頻率的函數(shù)。將其輸入分別接到電路上的兩個節(jié)點,便可以使用powergui的分析工具計算兩節(jié)點間的阻抗了。該模塊不改變電路的特性。 3.1.2. 斷路器(breaker) (1) 描述 斷路器實現(xiàn)了一種可以通過外部或內(nèi)部控制電路開、關時刻的電路。該模型包含了一個串聯(lián)RC緩沖器電路,可以把它連接到電路斷路器上。如果斷路器剛好與感性電路、開路電路或電流源串聯(lián),就必須使RC緩沖器電路連到其中。 當斷路器被設為外部控制模式(external control mode),一個simulink輸入就會出現(xiàn)在斷路器的圖標上,控制信號必須為0或1(0表示開關斷開
47、,1表示開關閉合)。 當斷路器設為內(nèi)部控制模式(internal control mode),開關時刻由其參數(shù)設置對話框設定。 當斷路器處于閉合狀態(tài),其等效于一個電阻Ron。Ron可以被設為很小的值(典型值為10m歐),從而與外電阻比較而言可以忽略。當斷路器處于斷開狀態(tài),其等效于一個無窮大的電阻。 滅弧過程是通過在控制信號由1變?yōu)?后的第一個電流為0的時刻斷開斷路器來模擬的。條件如下表所示。 操作 條件 斷路器閉合 控制信號變?yōu)?(對離散系統(tǒng),控制信號保持為1的時間應至少為采樣周期的3倍) 斷路器斷開 控制信號變?yōu)? 流過斷路器的電流為0 注:斷路器模塊對直流電路可能不合
48、適。對于直流電路,推薦使用理想開關作為開關元器件。 (2) 對話框和參數(shù) Breaker resistance Ron(斷路器電阻Ron) 該參數(shù)不能設為0 Initial state(初始狀態(tài)) 斷路器的初始狀態(tài),設為1表示閉合,設為0表示斷開。 當設為1時,SimPowerSystems自動初始化電路的所有狀態(tài)和斷路器電流,以確保仿真開始時電路就進入穩(wěn)態(tài)。 Snubber resistance Rs(緩沖器電阻Rs) 單位,歐姆,若將此值設為inf(無窮大),則相當于電路中不包含緩沖器。 Snubber capacitance Cs(緩沖器電容Cs) 單位:法拉,若
49、將此值設為0,則相當于不包含緩沖器,設為inf則為一個純阻性緩沖器 Switching times(開關切換時刻) 這是一個向量,用于指定開關切換狀態(tài)的時刻,各時刻的開關狀態(tài)取決于初始開關狀態(tài)。例如,若初始狀態(tài)為閉合,則向量的第1個元素對應的時刻斷路器將斷開,第2個元素對應的時刻斷路器將閉合,等等。若選中“External control of switching times”選項,則開關時刻由外部控制,此處沒必要設置。 External control of switching times(外部控制開關時刻) 若選中了此選項,請加入一個外部simulink輸入,來控制斷路器的開關。開
50、關時刻由連接到此斷路器上的外部邏輯輸入信號定義(0或1) mesurements(測量) 選定“branch voltage”用于測量斷路器上的壓降; 選定“branch current”用于測量流經(jīng)斷路器的電流; 選定“Branch voltage and current”用于測量壓降和電流 將Multimeter模塊加入電路,便可以顯示上面選定的參數(shù)。 (3) 使用注意事項 當該模塊與電感或電流源串聯(lián)時,必須在其中加入緩沖器電路。在大多數(shù)情況下,可使用純電感緩沖器(此時將“Snubber capacitance Cs”設為inf),而緩沖器電阻設為高阻值的電阻(1e6等)。由
51、于模型限制,開關電阻不能設為0。 必須使用剛性積分算法仿真這種帶有斷路器的電路。ode23t且以默認參數(shù)通常可以得到較高的仿真速度。 對于離散化的模型,控制信號保持為1的時間應至少為采樣周期的3倍,否則,電路相當于開路。 (4) 應用舉例 3.1.3. 二極管(Diode) 3.1.4. 被控電流源(controled current source) 被控電流源模塊將simulink輸入轉(zhuǎn)換為等效的電流源,產(chǎn)生的電流受模塊的輸入信號控制。正向電流方向與該模塊中的箭頭方向一致。可用指定的交流和直流初始化被控電流源,若想在穩(wěn)態(tài)下仿真,模塊的輸入必須連接到與初始值相應的正弦或直流
52、信號上。 注:在矢量仿真中,連接到該模塊的輸入必須為復數(shù)值,此時需要手工設置。 (1) 對話框與參數(shù) Initialize 若選定該選項,則將用指定的Initial current, Initial phase, 和Initial frequency parameters初始化該模塊。 Source type 設置電流源類型是直流電流源還是交流電流源 Initial current 初始峰值電流(A) Initial phase 初始相位(度數(shù)),對直流電源來說,不存在初始相位。 Initial frequency 初始頻率 mesurements 選定電流選項
53、使得可用mutimeter測其電流 3.1.5. if模塊 if模塊,連同包含action port模塊的action子系統(tǒng),用于實現(xiàn)標準的類似于C語言的if-else邏輯。下圖顯示了一個完整的if-else控制流: 3.1.6. Merge模塊 3.2. 創(chuàng)建模塊封裝(block mask) 3.2.1. 關于封裝(mask) (1)何謂封裝 封裝是一種定制的用戶接口,利用該接口,模塊用戶可以對模塊的內(nèi)部參數(shù)進行設置。 (2)封裝特點 封裝包含如下特征: l 封裝圖標(icon) l 封裝參數(shù) simulink允許為一個封裝的模塊定義一組可調(diào)的參數(shù),并將這
54、些參數(shù)存儲在封裝工作空間中(mask workspace)。 l 封裝參數(shù)對話框 simulink允許封裝參數(shù)設置對話框以取代默認的標準子系統(tǒng)對話框。 l 封裝初始化代碼 l 封裝工作空間 3.2.2. 一個封裝子系統(tǒng)的例子 (1) 介紹 要封裝的模型用如下表達式表示: y=mx+b 如圖所示 通常情況下,當你雙擊一個子系統(tǒng),就會出現(xiàn)一個新窗口,顯示該子系統(tǒng)的內(nèi)部組成。本例將自定義一個封裝對話框和封裝圖標,如下圖所示: (2) 創(chuàng)建封裝對話框提示 l 選定要封裝的subsystem模塊,Edit>mask subsystem,按下圖所示輸入: 不懂,請看在
55、線幫助。若系統(tǒng)不支持中文字符提示,請在命令行中運行下列命令: set_param(circuit4, SavedCharacterEncoding, windows-1252) (3) 創(chuàng)建封裝描述和幫助文本 (4) 創(chuàng)建block圖標 可使用繪圖命令改變子系統(tǒng)上的默認圖標。 3.2.3. 封裝一個模塊 (1) 關于模塊封裝 可以利用模型編輯器(model editor)封裝子系統(tǒng),模型,S函數(shù)模塊,以及利用set_param命令封裝內(nèi)建模塊 simulink不支持封裝端口模塊(port block),如Inport,Outport,Trigger等 確保封裝的參數(shù)名稱
56、與已知模塊參數(shù)名稱不同。 。 (2) 封裝一個子系統(tǒng) 3.2.2節(jié)已經(jīng)做了介紹。此處略。 (3) 封裝內(nèi)置模塊 通過直接封裝內(nèi)置模塊而不是將他們放到一個子系統(tǒng)中,可以減小你的模型的大小。要封裝一個內(nèi)置模塊: l 選擇模型中的模塊 l 鍵入下列Matlab命令: set_param(gcb,Mask,on) l 在模塊的快捷菜單中選擇“Edit Mask”命令,就可用它編輯該模塊的封裝了。 3.2.4. 封裝編輯器(mask editor) (1) 創(chuàng)建子模塊(略) (2) icon面板(略) (3) 參數(shù)面板(略) (4) 控件類型(control types)
57、通過下圖所示對話框進行設置: (5) 初始化面板(initialization pane) 初始化面板允許你輸入matlab命令初始化封裝的子系統(tǒng)。 在下列情況下,simulink將執(zhí)行初始化命令: l 裝入模型 l 封裝模塊的圖形外觀發(fā)生變化,如旋轉(zhuǎn)。 l 在同一模型內(nèi)或不同模型間復制封裝模塊時 l 開始仿真或更新模塊圖時 l 對模塊對話框作出任何參數(shù)改變時 初始化面板包含下列控件: l 對話框變量 列出了所有與模塊封裝參數(shù)有關的變量 l 初始化命令 輸入任意合法的Matlab命令。 l 允許庫模塊改變其內(nèi)容 初始化命令的局限性: l 不要在初始化命令中創(chuàng)
58、建動態(tài)對話框 l 避免使用以L_和M_開頭的變量名 l 避免使用set_param命令 (6) 文檔面板(document pane) 在上一節(jié)已經(jīng)做了介紹,現(xiàn)在僅介紹新的內(nèi)容:也就是,在定義在線幫助內(nèi)容時,不僅可以直接輸入幫助文本內(nèi)容,也可以使用下列幫助文本: URL 說明 (以 http:, www, file:, ftp:, or mailto:開始) web 命令(launches a browser) eval 命令(evaluates a MATLAB string) html文本 舉例: file:///c:/mydir/helpdoc.html web
59、([docroot /My Blockset Doc/ get_param(gcb,MaskType)... .html]) eval(!Word My_Spec.doc) 3.2.5. 將封裝參數(shù)與模塊參數(shù)鏈接起來 3.2.6. 創(chuàng)建動態(tài)封裝參數(shù)對話框 3.2.7. 封裝庫模塊 3.3. 仿真動態(tài)系統(tǒng) 3.3.1. 模型編譯(model compilation) 當你選擇“開始仿真”命令時,仿真便進入第1階段,在此階段,simulink引擎將啟動模型編譯器,模型編譯器將模型轉(zhuǎn)換為可執(zhí)行的形式,此過程就稱為編譯。具體地講,編譯器將完成以下工作: l 模型參數(shù)值的計算
60、l 確定那些沒有明確指定的信號屬性,如名稱,數(shù)據(jù)類型、數(shù)值類型、維數(shù)等,并檢查每個模塊是否接受連接到其輸入端的信號。 l simulink使用所謂的“屬性傳播”來確定那些未指定的屬性。這個過程是將源信號的屬性遺傳給目標信號的屬性的過程。 l 執(zhí)行模塊優(yōu)化。 l 扁平化模型結(jié)構(gòu),即以子模塊實際保護的模塊替代子模塊; l 確定模塊的排序 l 確定那些沒有明確指明采樣間隔的模塊的采樣間隔 3.3.2. 鏈接階段(link phase) 這個階段,simulink引擎將為模塊圖的執(zhí)行分配內(nèi)存空間(信號、狀態(tài)和運行時參數(shù)),同時也分配運行時為保持每個模塊中間信息的內(nèi)存。對于內(nèi)置模塊,模塊的
61、主要數(shù)據(jù)結(jié)構(gòu)被稱為SimBlock,它存儲的是模塊的輸入與輸出緩沖區(qū)、狀態(tài)、工作向量的指針。 (1) method excution lists(方法執(zhí)行列表) 在鏈接階段,simulink也負責創(chuàng)建方法執(zhí)行列表,該表列出效率最高的模塊次序,以便按這個次序激活模型的模塊方法,計算模塊的輸出。 (2) 模塊屬性 simulink允許你為模塊分配更新屬性。simulink按優(yōu)先級高低來決定執(zhí)行順序。 3.3.3. 仿真循環(huán)階段(simulation loop phase) 鏈接階段結(jié)束后,進入仿真循環(huán)階段。simulink引擎從仿真開始到結(jié)束時間內(nèi),利用模型提供的信息,每隔一個間隔
62、,計算一次系統(tǒng)的狀態(tài)和輸出。那些狀態(tài)和輸出計算的連續(xù)時間點,稱為時間步(time step)。相鄰兩個時間步的時間長度稱為步長。步長取決于求解器的類型,系統(tǒng)的連續(xù)狀態(tài)、連續(xù)系統(tǒng)是否有不連續(xù)點。 循環(huán)階段又分為兩個子階段:循環(huán)初始化階段和循環(huán)往復階段。初始化階段過后,便進入循環(huán)往復。每隔一個時間步長循環(huán)一次。 在仿真開始后,模型指定初始狀態(tài)和系統(tǒng)輸出。在每一步,simulink計算新的值、新的輸出。simulink提供了數(shù)據(jù)顯示和記錄模塊,可以在仿真過程中顯示和記錄過程數(shù)據(jù)。 3.3.4. 求解器(solvers) simulink在仿真過程中要反復計算狀態(tài)和輸出,這就需要用到一序列的算
63、法,simulink已經(jīng)編制了這些算法的程序,稱為求解器。 Configuration Parameters對話框允許你選擇合適的求解器。 (1) 定步長求解器和變不長求解器 (2) 連續(xù)與離散求解器 對于連續(xù)和離散混合模型,只能使用連續(xù)求解器。 離散求解器也包含定步長和變步長兩種。 3.3.5. 零交點探測器(zero-crossing detectors) 3.3.6. 代數(shù)循環(huán)(algebraic loop) 一些simulink模塊擁有直接注入的輸入端,這意味著若不知道這些輸入端口的信號值,就無法計算模塊的輸出值。具有直接注入輸入端口的模塊有: l Math Func
64、tion block l Gain block l Integrator blocks initial condition ports l Product blockState-Space block when there is a nonzero D matrix l Sum block l Transfer Fcn block when the numerator and denominator l are of the same order l Zero-Pole block when there are as many zeros as poles 當一個帶有直接注入的
65、輸入端口由同一模塊的輸出驅(qū)動時(要么直接驅(qū)動,要么由別的帶有直接注入端口的反饋間接驅(qū)動),通常就會出現(xiàn)代數(shù)循環(huán)。代數(shù)循環(huán)的例子就是如下所示的簡單的標量循環(huán): 從數(shù)學角度來講,該循環(huán)暗示z=u-z,即,這就是求解表達式。但大多數(shù)代數(shù)循環(huán)就無法通過這種檢查自動計算。 創(chuàng)建帶多個代數(shù)狀態(tài)變量(如z1,z2等)的向量代數(shù)循環(huán)是非常容易的。如下圖所示。 使用Algebraic Constraint模塊是建模代數(shù)方程和指定初始化估值的一個方便的方法。該模塊將它的輸入信號f(z)限制到0,并輸出代數(shù)狀態(tài)z。該模塊輸出一個值,該值對于在模塊的輸入端產(chǎn)生一個零點是必須的。輸出必須通過反饋直接影響到
66、輸入,例如,該反饋通道單獨包含帶有直接注入的模塊。在代數(shù)限制模塊對話框中,你可以提供一個初始的代數(shù)狀態(tài)值以改善代數(shù)循環(huán)求解器的效率。 一個標量代數(shù)循環(huán)表示的是一個代數(shù)方程或形如F(z)=0的限制方程,這里的z是循環(huán)中的一個模塊的輸出,而函數(shù)F由從循環(huán)中別的模塊到該模塊的輸入間的反饋通道組成。在上上一個例子中F(z)=z-(u-z)。在本例中,代數(shù)方程為: z1+z2-1=0 -z1+z2-1=0 當一個模型中包含F(xiàn)(z)=0的限制時就會出現(xiàn)代數(shù)循環(huán)。這種限制可能是作為一個你所創(chuàng)建的系統(tǒng)的物理內(nèi)部連接的因果關系而出現(xiàn)的,或者你建立的正是一個代數(shù)/差分系統(tǒng)(DAE)。 當一個模型包含代數(shù)循環(huán)時,simlink將在每一個時間步中調(diào)用循環(huán)求解子程序,以求得其結(jié)果。包含代數(shù)循環(huán)的模型求解過程比不包含代數(shù)循環(huán)的模型要耗時。 為求解F(z)=0,simulink循環(huán)求解器使用牛頓法求解偏導數(shù)方程。盡管該方
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。