www.gusucode.com > mpc 案例源码 matlab代码程序 > mpc/LinearizationUsingMatlabCodeExample.m
%% Linearization Using MATLAB Code % This example shows how to obtain a linear model of a plant using a % MATLAB script. %% % For this example the CSTR model, |CSTR_OpenLoop|, is linearized. The model % inputs are the coolant temperature (manipulated variable of the MPC % controller), limiting reactant concentration in the feed stream, and % feed temperature. The model states are the temperature and concentration % of the limiting reactant in the product stream. Both states are measured % and used for feedback control. %% Obtain Steady-State Operating Point % The operating point defines the nominal conditions at which you linearize % a model. It is usually a steady-state condition. %% % Suppose that you plan to operate the CSTR with the output concentration, % |C_A|, at $2\;kmol/{m^3}$. The nominal feed concentration is % $10\;kmol/{m^3}$, and the nominal feed temperature is 300 K. Create an % operating point specification object to define the steady-state % conditions. opspec = operspec('CSTR_OpenLoop'); opspec = addoutputspec(opspec,'CSTR_OpenLoop/CSTR',2); opspec.Outputs(1).Known = true; opspec.Outputs(1).y = 2; op1 = findop('CSTR_OpenLoop',opspec); %% % The calculated operating point is |C_A| = $2\;kmol/{m^3}$ and |T_K| = 373 K. % Notice that the steady-state coolant temperature is also given as 299 K, % which is the nominal value of the manipulated variable of the MPC % controller. %% % To specify: %% % * Values of known inputs, use the |Input.Known| and |Input.u| fields of % |opspec| % * Initial guesses for state values, use the |State.x| field of |opspec| %% % For example, the following code specifies the coolant temperature as % 305 K and initial guess values of the |C_A| and |T_K| states before % calculating the steady-state operating point: opspec = operspec('CSTR_OpenLoop'); opspec.States(1).x = 1; opspec.States(2).x = 400; opspec.Inputs(1).Known = true; opspec.Inputs(1).u = 305; op2 = findop('CSTR_OpenLoop',opspec); %% Specify Linearization Inputs and Outputs %% % If the linearization input and output signals are already defined in % the model, as in |CSTR_OpenLoop|, then use the following to obtain the % signal set. io = getlinio('CSTR_OpenLoop'); %% % Otherwise, specify the input and output signals as shown here. io(1) = linio('CSTR_OpenLoop/Coolant Temperature',1,'input'); io(2) = linio('CSTR_OpenLoop/Feed Concentration',1,'input'); io(3) = linio('CSTR_OpenLoop/Feed Temperature',1,'input'); io(4) = linio('CSTR_OpenLoop/CSTR',1,'output'); io(5) = linio('CSTR_OpenLoop/CSTR',2,'output'); %% Linearize Model %% % Linearize the model using the specified operating point, |op1|, and input/output % signals, |io|. sys = linearize('CSTR_OpenLoop',op1,io)