S=180;
ba=5.3;
l=37.5;
Ix=1.6e6;
Iy=5.7e6;
Iz=6.1e6;
Cyalf=6.3;
Czbeta=-1.25;
mzwz=-1.17;
mzfi=-0.74;
mzCy=-0.1;
mxbeta=-0.24;
mxwx=-0.66;
mxwy0=-0.18;
zita=0.75;
mxwy=mxwy0+(zita^2)*(alf^2);
mxdelel=-0.08;
mxdeln=-0.025;
mybeta=-0.2;
mywy=-0.38;
mywx0=-0.04;
FI0=0.9;
mywx=mywx0+(FI0^2)*(alf^2);
mydeln= -0.09;
mydelel=0;
q=(ro.*(Vk.^2))./2;
D=(Iy-Ix)/Iz; B=(Ix-Iz)/Iy; C=(Iz-Iy)/Ix;
wxT=((mxbeta.*beta+mxdelel.*delel+mxdeln.*deln+mxwx.*wx+mxwy.*wy)...
.*q.*S.*l./Ix)-C.*wy.*wz;
wyT=((mybeta.*beta+mydelel.*delel+mydeln.*deln+mywx.*wx+mywy.*wy)...
.*q.*S*l./Iy)-B.*wx.*wz;
wzT=((mzCy.*Cyalf.*alf+mzfi.*fi+mzwz.*wz)...
.*q.*S*ba./Iz)-D.*wx.*wy;
y=[wxT wyT wzT];
28.2 Программа расчета Vk,q,y
function y=force_tu154(alf,beta,gammaA,tetaM,Vk,teta,psi,P,ro)
macc=94000;
S=180;
g=9.8;
Cyalf=6.3;
Czbeta=-1.25;
q=(ro.*(Vk.^2))./2;
Ya=Cyalf.*alf.*q.*S;
Za=(Czbeta.*beta).*q.*S;
Cx0=0.022;
A=0.048;
Cx=Cx0+A*(Cyalf.*alf)^2;
Xa=Cx.*q.*S;
sinalf=sin(alf);
cosalf=cos(alf);
sinbeta=sin(beta);
cosbeta=cos(beta);
singammaA=sin(gammaA);
cosgammaA=cos(gammaA);
Fx=P.*cosalf.*cosbeta-Xa-macc.*g.*sin(teta);
Fy=P.*(sinalf.*cosgammaA+cosalf.*sinbeta.*...
singammaA)+Ya.*cosgammaA-Za.*singammaA-macc.*g.*cos(teta);
Fz=P.*(sinalf.*singammaA-cosalf.*sinbeta.*...
cosgammaA)+Ya.*singammaA-Za.*cosgammaA;
dVk=Fx./macc;
dteta=Fy./(macc.*Vk);
dpsi=-Fz./(macc.*Vk.*cos(teta));
y=[dVk;dteta;dpsi];
28.3 Программа расчета Х,Y,Z
function y=traekt(Vk,teta,psi)
dx=Vk.*cos(teta).*cos(psi);
dy=Vk*sin(teta);
dz=-Vk.*cos(teta)*sin(psi);
y=[dx;dy;dz];
28.4 Программа расчета a,b,gа
function y=ugol_ckorost(tetaM,gamma,psiM,teta,psi)
beta=asin(sin(tetaM).*sin(gamma).*cos(psi-psiM)...
-cos(gamma).*sin(psi-psiM).*cos(teta)-sin(teta).*cos(tetaM).*sin(gamma));
alf=asin((sin(tetaM).*cos(gamma).*cos(psi-psiM)...
+sin(gamma).*sin(psi-psiM).*cos(teta)-sin(teta).*cos(tetaM).*cos(gamma))./cos(beta));
gammaA=asin((cos(alf).*sin(beta).*sin(tetaM)-cos(tetaM).*(sin(alf).*sin(beta).*cos(gamma)-cos(beta).*sin(gamma)))./cos(teta));
y=[alf beta gammaA];
29.1 Программа синхронизации времени можделирования
#define S_FUNCTION_NAME synchronizer
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"
#include "matlab.h"
#include <time.h>
#include <windows.h>
//=====================================================
static clock_t StartTime;
#define DISCRETE_STEP 0.1
#define SYNCHR_R_IDX 0
#define SYNCHR_R_PARAM(S) ssGetSFcnParam(S,SYNCHR_R_IDX)
//=====================================================
//Проверка правильности задания параметров блока S-function
//Должен быть указан 1 параметр - положительное число
static void mdlCheckParameters(SimStruct *S)
{ const mxArray *para = (const mxArray *) SYNCHR_R_PARAM(S);
real_T *N= mxGetPr(para);
if ((mxGetM(SYNCHR_R_PARAM(S)) > 1) ||
(mxGetN(SYNCHR_R_PARAM(S)) > 1)) {
ssSetErrorStatus(S,"Parameter to S-function must be a scalar.");
return;
}
if (N[0]<=0){ ssSetErrorStatus(S,"Parameter to S-function must be positive!"); return;
}
}
//=====================================================
//Инициализация блока S-function
static void mdlInitializeSizes(SimStruct *S)
{ ssSetNumSFcnParams(S, 1);
#if defined(MATLAB_MEX_FILE)
if (ssGetNumSFcnParams(S) == ssGetSFcnParamsCount(S)) {
mdlCheckParameters(S);
if (ssGetErrorStatus(S) != NULL) return;
} else return;
#endif
ssSetNumContStates( S, 0);
ssSetNumDiscStates( S, 0);
if (!ssSetNumInputPorts(S, 0)) return;
if (!ssSetNumOutputPorts(S, 0)) return;
ssSetNumSampleTimes( S, 1);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.