呂德乾 李自成 李 奧 郝文杰 王國晶
(成都理工大學工程技術學院,四川 成都 614000)
汽車上坡受力分析具體如圖1 所示。

圖1 汽車上坡受力分析
1.根據牛頓第二定律,汽車受力公式為:

2.m 假定為汽車質量,我們取200。
3.Fi 為引擎動力,最大驅動力是2000,最大制動力是-3000,如下:

4.Fb 為空氣阻力,它與汽車運動時的速度成正比,可得如下表達式:

“30sin(0.02a)”估算可能為“陣風”引起的,v 為汽車在水平路上的正常速度。
5.Fy 為重力向下分力,可得表達式:

表達式中的正弦項是因為坡和水平路之間有夾角α 變化所以引入的。
根據上述數學模型,我們可以建立汽車上坡時的Simulink 模型,如圖2,圖中參數模塊的配置解釋如下:
1.Int 模塊:汽車驅動力Fx 的輸入端口。
2.Snout 模塊:汽車真實速度Sn 的輸出端口。
3.Min模塊:驅動力最小值,Constant value欄填:-3000。
4.LowLm 模塊(MinMax 模塊):在其參數設置中,在Function 欄填:max(缺省設置),Number of input ports欄填:2(缺省設置),這樣的話,模塊輸出欄就是兩個輸入模塊中的最大值,模塊的圖標可以命名為:max。
5.Max 模塊:驅動力最大值,Constant value 欄填:2000。
6.UpLm 模塊:在其參數設置中,在Function 欄填:min,這樣,輸出模塊就是兩個輸入模塊中的最小值,模塊圖標命名為:min。
7.ClockInt 模塊:仿真時間a 的輸入端口。
8.Fy 模塊(Fcn 模塊):在其參數設置中,完成重力向下的分量Fy,公式(1)-(4),這個模塊的位移標量x,輸出是重力分力:Fy,在Expression 欄中填:
40*sin(0.0002*u)
9.Fb 模塊:完成空氣的阻力Fb,公式(1)-(3)。這個模塊的輸入是由[v,a]構成的向量,因為Fcn 模塊必須要遵循第一個原則,在參數設置中Expression 欄中填:
0.002*(u(1)+30*sin(0.02*u(2)))^2
比例控制器的工作原理:利用假設速度和真實速度的差值作為“指令”驅動力Fx,可以構建數學模型:

K 是比例系數,可取K=60,v1 是汽車的假設速度,v 是汽車的真實速度?!爸噶睢彬寗恿x 和真實驅動力K 的區別就是,第一個只是理論上的驅動力,第二個則是經過物理限制后才能使用的力。
根據公式(1)-(5),我們可以得出下面的Simu link 模型,如圖3:
SnInt-是假設速度的輸入端口,SnInt+是真實速度的輸入端口。FnOut 是驅動力Fx 的輸出端口模塊。
將圖2 和圖3 組合連接放在一個新的模型窗口中,就能得到圖4 汽車上坡的完整模型,模型命名為Mod el_1.del。

圖2 汽車上坡的Simulink 模型

圖3 汽車速度的比例控制器Simulink 模型
在圖4 中,SG 模塊的功能可以完成我們想要的假設速度,打開它的操作窗口,調整里面的數據。Low(下限)填0。High(上限)填200,滑動鍵代表可以調整的增益值(圖中是:70,即:假設中汽車的速度)。這個模塊還需要“恒值”輸入信號Ct 的激勵。
因為我們需要更好地觀察和比較,所以速度量需要被送到Dp(數值顯示器)和Sc。這樣,在仿真過程中我們就能在數值顯示器上看到汽車的真實速度。
將圖4 模型窗口的仿真結束時間設置為8000,在仿真前先分別打開SG 操作窗口和示波器窗口,開始仿真,仿真結果如圖5,在仿真過程中,凡是在SG 操作窗口移動滑鍵,我們都能在SG 上看到相對應假設的速度。根據圖形,我們能知道Dp 上的真實速度正在不斷向假設的速度靠近[4]。

圖4 汽車上坡的完整Simulink 模型

圖5 仿真結果
打開Model_1.del 模型,在模型窗口中用鼠標左鍵選中整個汽車上坡仿真,然后鼠標右鍵選擇“Create Subsystem”,將選中部分包裝在一個名為Subsystem 的模塊中,改名為Sub1,采用類似的操作,將比例控制器整理后改名為:Sub2,打開Sub2 子系統模塊的模型窗口,將其兩個輸入端模塊和一個輸出端模塊的缺省名改為In-,In+和Out,然后仿照更改Sub1 子系統輸入模塊和輸出模塊的缺省名分別為In,ClockIn1 和Out。
最后整理一下圖中的信號線和圖形,得到圖6 生成子系統的完整仿真模型。

圖6 生成子系統的完整仿真圖
1.打開Sub1 子系統模塊的模型窗口。
2.打開Max 模塊參數設置對話框,在Constant value欄填Fmax(驅動力上限)。
3.打開Max Brake 模塊參數對話框,在Constant 欄填Fmin(制動力下限)。
4.打開FB 模塊參數對話框,在Expression 欄填:
0.02*(u(1)+wn*sin(0.02*u(2)))^2
wn 是“陣風”系數。
5.打開FY 模塊參數對話框,在Expression 欄填:
fn*(0.0002*u)
fn 是路面起伏系數。
打開Sub1 模塊,用鼠標左鍵單擊Parameters 中的Spinbox,然后在Dialog parameters 區域依次增加4 個設計提示和設置的變量,參數更改如下:分別在它們的4 個Prompt 欄中填:largest driving force;largest braking force;road rough coefficient;flurry intensity coefficient。在所有Variable 欄中分別填相關聯變量名:Fmax;Fmin;wn;fn。Type 欄中全部選取缺?。篹dit 類型,以方便使Fmax,Fmin,wn,fn4 個變量分別通過編輯框輸入;最后選中Evaluate 和Tunable 欄。然后就完成了我們需要的設計提示和變量設置。如果想解開封裝操作,就先選中該模塊,鼠標左鍵雙擊選中“Mask...”,然后單擊“Unmask”就行。
3.4.1 汽車封裝子系統的參數設置對話框及其賦值
打開Sub1 子系統模塊參數設置對話框,在Param eter 區域中按照下面參數所示完成賦值。
largest driving force 欄:填2000;
largest braking force 欄:填-3000;
road rough coefficient 欄:填40;
flurry intensity coefficient 欄:填30;
3.4.2 參數傳播途徑
MATLAB 命令窗口中的已經賦值好了的變量或直接給定的數值經過參數設置對話框直接傳遞給封裝子系統,然后通過子系統中各模塊的對話窗口傳遞給各個模塊,在這里,封裝子系統參數設置對話框是該系統從外界獲得參數的唯一途徑。
采用封裝子系統,可以把Simulink 子系統封裝成一個模塊,這樣便于我們清晰的觀看到系統中每一個子系統模塊的功能,這樣很方便我們直接輸入想要的數據,而系統也能夠將結果以圖形的形式給我們以更直觀和簡潔的形式表達出來。