]> Creatis software - CreaPhase.git/blob - octave_packages/control-2.3.52/BMWengine.m
Add a useful package (from Source forge) for octave
[CreaPhase.git] / octave_packages / control-2.3.52 / BMWengine.m
1 ## -*- texinfo -*-
2 ## @deftypefn{Function File} {@var{sys} =} BMWengine ()
3 ## @deftypefnx{Function File} {@var{sys} =} BMWengine (@var{"scaled"})
4 ## @deftypefnx{Function File} {@var{sys} =} BMWengine (@var{"unscaled"})
5 ## Model of the BMW 4-cylinder engine at ETH Zurich's control laboratory.
6 ## @example
7 ## @group
8 ## OPERATING POINT
9 ## Drosselklappenstellung     alpha_DK = 10.3 Grad
10 ## Saugrohrdruck              p_s = 0.48 bar
11 ## Motordrehzahl              n = 860 U/min
12 ## Lambda-Messwert            lambda = 1.000
13 ## Relativer Wandfilminhalt   nu = 1
14 ## @end group
15 ## @end example
16 ## @example
17 ## @group
18 ## INPUTS
19 ## U_1 Sollsignal Drosselklappenstellung   [Grad]
20 ## U_2 Relative Einspritzmenge             [-]
21 ## U_3 Zuendzeitpunkt                      [Grad KW]
22 ## M_L Lastdrehmoment                      [Nm]
23 ## @end group
24 ## @end example
25 ## @example
26 ## @group
27 ## STATES
28 ## X_1 Drosselklappenstellung     [Grad]
29 ## X_2 Saugrohrdruck              [bar]
30 ## X_3 Motordrehzahl              [U/min]
31 ## X_4 Messwert Lamba-Sonde       [-]
32 ## X_5 Relativer Wandfilminhalt   [-]
33 ## @end group
34 ## @end example
35 ## @example
36 ## @group
37 ## OUTPUTS
38 ## Y_1 Motordrehzahl              [U/min]    
39 ## Y_2 Messwert Lambda-Sonde      [-]
40 ## @end group
41 ## @end example
42 ## @example
43 ## @group
44 ## SCALING
45 ## U_1N, X_1N   1 Grad
46 ## U_2N, X_4N, X_5N, Y_2N   0.05
47 ## U_3N   1.6 Grad KW
48 ## X_2N   0.05 bar
49 ## X_3N, Y_1N   200 U/min
50 ## @end group
51 ## @end example
52 ## @end deftypefn
53
54 ## Author: Lukas Reichlin <lukas.reichlin@gmail.com>
55 ## Created: January 2010
56 ## Version: 0.1.1
57
58 ## TODO: translate German terminology 
59
60 function sys = BMWengine (flg = "scaled")
61
62   if (nargin > 1)
63     print_usage ();
64   endif
65
66   switch (tolower (flg))
67     case "unscaled"  ## Linearisiertes Modell, nicht skaliert
68
69       Apu = [ -40.0000     0          0          0          0
70                 0.1683    -2.9471    -0.0016     0          0
71                26.6088   920.3932    -0.1756     0        259.1700
72                -0.5852    14.1941     0.0061    -5.7000    -5.7000
73                 0.6600    -1.1732    -0.0052     0        -15.0000 ];
74
75       Bpu = [  40.0000     0          0
76                 0          0          0
77                 0        181.4190     1.5646
78                 0         -3.9900     0
79                 0          4.5000     0      ];
80
81       Bdpu = [  0
82                 0
83               -15.9000
84                 0
85                 0      ];
86
87       Cpu = [   0          0          1          0          0
88                 0          0          0          1          0 ];
89
90       sys = ss (Apu, [Bpu, Bdpu], Cpu);
91
92     case "scaled"  ## Skaliertes Zustandsraummodell
93
94       Ap = [  -40.0000     0          0          0          0
95                 3.3659    -2.9471    -6.5157     0          0
96                 0.1330     0.2301    -0.1756     0          0.0648
97               -11.7043    14.1941    24.3930    -5.7000    -5.7000
98                13.2003    -1.1732   -20.9844     0        -15.0000 ];
99
100       Bp = [   40.0000     0          0
101                 0          0          0
102                 0          0.0454     0.0125
103                 0         -3.9900     0
104                 0          4.5000     0      ];
105
106       Bdp = [   0
107                 0
108                -1.5900
109                 0
110                 0      ];
111
112       Cp = [    0          0          1          0          0
113                 0          0          0          1          0 ];
114
115       sys = ss (Ap, [Bp, Bdp], Cp, [], "scaled", true);
116
117     otherwise
118       print_usage ();
119
120   endswitch
121
122 endfunction