defines a simple 1st order linear model with cross talk for the microprulsion feep thrusters ONLY THE CONSTRUCTOR SHOULD CALL THIS PRIVATE FUNCTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DESCRIPTION: model_MPS defines a simple 1st order linear model with cross talk for the microprulsion feep thrusters CALL: [sys, VERSION] = model_MPS ***** There are no parameters ***** VERSION: $Id: $ HISTORY: 01-04-2008 M Weyrich 23-04-2008 A Grynagier Parametric model of micropropulsion system TODO : this is a dummy, simply a PT1 system,->takes DFACS command and produces delayed(PT1) output forces, here it is assumed that six thrusters can produce forces commanded in B matrix cross coupling terms model imperfections of geometric attachements of thrusters, could also stand for distribution errors normally DFACS input should be distributed to the 12 thruster axes, then every thruster is a PT1 system with noise, output of these ones should be transformed back to SC body system and summed up to get the force produced by all 12 thrusters main problem is the distribution, cause it is impossible to produce negative thrust->nonlinearities %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0001 function [sys, VERSION] = model_MPS 0002 % defines a simple 1st order linear model with cross talk for the 0003 % microprulsion feep thrusters 0004 % ONLY THE CONSTRUCTOR SHOULD CALL THIS PRIVATE FUNCTION 0005 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0006 % 0007 % DESCRIPTION: model_MPS defines a simple 1st order linear model with cross 0008 % talk for the microprulsion feep thrusters 0009 % 0010 % CALL: [sys, VERSION] = model_MPS 0011 % 0012 % ***** There are no parameters ***** 0013 % 0014 % VERSION: $Id: $ 0015 % 0016 % HISTORY: 01-04-2008 M Weyrich 0017 % 23-04-2008 A Grynagier 0018 % 0019 %Parametric model of micropropulsion system 0020 %TODO : 0021 % this is a dummy, simply a PT1 system,->takes DFACS command and produces delayed(PT1) 0022 % output forces, here it is assumed that six thrusters can produce 0023 % forces commanded 0024 % in B matrix cross coupling terms model imperfections 0025 % of geometric attachements of thrusters, could also stand for 0026 % distribution errors 0027 % 0028 % normally DFACS input should be distributed to the 12 thruster axes, 0029 % then every thruster is a PT1 system with noise, output of these 0030 % ones should be transformed back to SC body system and summed up to 0031 % get the force produced by all 12 thrusters 0032 % main problem is the distribution, cause it is impossible to produce 0033 % negative thrust->nonlinearities 0034 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0035 VERSION ='$Id:$'; 0036 utils.helper.msg(utils.const.msg.MNAME, ['running ', mfilename]); 0037 0038 %% creating ssm 0039 sys =ssm ; 0040 0041 % parameters in subsystem 0042 sys.paramnames = ... 0043 {...% time constants 0044 'p_T_fx' 'p_T_fy' 'p_T_fz' 'p_T_tx' 'p_T_ty' 'p_T_tz' ... 0045 ...% cross coupling (assuming geometric imperfections) 0046 'p_mps11' 'p_mps12' 'p_mps13' 'p_mps14' 'p_mps15' 'p_mps16' ... 0047 'p_mps21' 'p_mps22' 'p_mps23' 'p_mps24' 'p_mps25' 'p_mps26' ... 0048 'p_mps31' 'p_mps32' 'p_mps33' 'p_mps34' 'p_mps35' 'p_mps36' ... 0049 'p_mps41' 'p_mps42' 'p_mps43' 'p_mps44' 'p_mps45' 'p_mps46' ... 0050 'p_mps51' 'p_mps52' 'p_mps53' 'p_mps54' 'p_mps55' 'p_mps56' ... 0051 'p_mps61' 'p_mps62' 'p_mps63' 'p_mps64' 'p_mps65' 'p_mps66' ... 0052 }; 0053 sys.paramvalues = ... 0054 [ 0 0 0 0 0 0 ... 0055 ...% cross coupling (assuming geometric imperfections) 0056 0 0 0 0 0 0 ... 0057 0 0 0 0 0 0 ... 0058 0 0 0 0 0 0 ... 0059 0 0 0 0 0 0 ... 0060 0 0 0 0 0 0 ... 0061 0 0 0 0 0 0 ... 0062 ]; 0063 sys.paramsigmas = ... 0064 [ 0 0 0 0 0 0 ... 0065 ...% cross coupling (assuming geometric imperfections) 0066 0 0 0 0 0 0 ... 0067 0 0 0 0 0 0 ... 0068 0 0 0 0 0 0 ... 0069 0 0 0 0 0 0 ... 0070 0 0 0 0 0 0 ... 0071 0 0 0 0 0 0 ... 0072 ]; 0073 0074 %% declaring symbolic parameters 0075 for i_params=1:length(sys.paramnames) 0076 cmd = [sys.paramnames{i_params}, '=sym(''', sys.paramnames{i_params},''');']; 0077 eval(cmd); 0078 end 0079 0080 0081 %%%%%%%%%%%%%%%%%%%%%%%%%% START BUILDING PARAMETRIC SUBSYTEM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0082 % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 0083 0084 T_fx = 0.038 + p_T_fx; % time constant 0.038 in DFACS ICD : 0,190 for 95% resp time 0085 T_fy = 0.038 + p_T_fy; 0086 T_fz = 0.038 + p_T_fz; 0087 T_tx = 0.038 + p_T_tx; 0088 T_ty = 0.038 + p_T_ty; 0089 T_tz = 0.038 + p_T_tz; 0090 0091 A = [ -1/T_fx 0 0 0 0 0 ;... 0092 0 -1/T_fy 0 0 0 0 ;... 0093 0 0 -1/T_fz 0 0 0 ;... 0094 0 0 0 -1/T_tx 0 0 ;... 0095 0 0 0 0 -1/T_ty 0 ;... 0096 0 0 0 0 0 -1/T_tz ]; 0097 0098 0099 B = [ (1+p_mps11)/T_fx p_mps12/T_fx p_mps13/T_fx p_mps14/T_fx p_mps15/T_fx p_mps16/T_fx ;... 0100 p_mps21/T_fy (1+p_mps22)/T_fy p_mps23/T_fy p_mps24/T_fy p_mps25/T_fy p_mps26/T_fy ;... 0101 p_mps31/T_fz p_mps32/T_fz (1+p_mps33)/T_fz p_mps34/T_fz p_mps35/T_fz p_mps36/T_fz ;... 0102 p_mps41/T_tx p_mps42/T_tx p_mps43/T_tx (1+p_mps44)/T_tx p_mps45/T_tx p_mps46/T_tx ;... 0103 p_mps51/T_ty p_mps52/T_ty p_mps53/T_ty p_mps54/T_ty (1+p_mps55)/T_ty p_mps56/T_ty ;... 0104 p_mps61/T_tz p_mps62/T_tz p_mps63/T_tz p_mps64/T_tz p_mps65/T_tz (1+p_mps66)/T_tz ]; 0105 0106 % F_mps_c F_susp_c 0107 B_DFACS = [ B zeros(6,12)]; 0108 0109 C = eye(6); 0110 0111 D_DFACS = [ zeros(6) zeros(6,12)]; 0112 0113 %%%%%%%%%%%%%%%%%%%%%%%%%% END BUILDING PARAMETRIC SUBSYTEM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0114 % +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 0115 0116 % 1_ADDING MATRICES TO SUBSYSTEM SAVING STRUCTURE 0117 %= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 0118 0119 0120 sys.name = 'MPS'; 0121 0122 sys.amats = {A}; 0123 sys.bmats = {B_DFACS}; 0124 sys.cmats = {C}; 0125 sys.dmats = {D_DFACS}; 0126 sys.timestep = 0; 0127 0128 sys.ssnames = {'MPS'}; 0129 sys.ssvarnames = {{'fx_mps' 'fy_mps' 'fz_mps' 'tx_mps' 'ty_mps' 'tz_mps'}}; 0130 0131 sys.inputnames = {'DFACS_command'}; 0132 sys.inputvarnames = {... 0133 {'fx_mps_c' 'fy_mps_c' 'fz_mps_c' 'tx_mps_c' 'ty_mps_c' 'tz_mps_c'... 0134 'fx1_TMAct_c' 'fy1_TMAct_c' 'fz1_TMAct_c' 'tx1_TMAct_c' 'ty1_TMAct_c' 'tz1_TMAct_c'... 0135 'fx2_TMAct_c' 'fy2_TMAct_c' 'fz2_TMAct_c' 'tx2_TMAct_c' 'ty2_TMAct_c' 'tz2_TMAct_c'}... 0136 }; 0137 0138 sys.outputnames = {'F_mps'}; 0139 sys.outputvarnames = {{'fx_mps' 'fy_mps' 'fz_mps' 'tx_mps' 'ty_mps' 'tz_mps'}}; 0140 end