Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Описание внешних ударных воздействий на автомобиль

Annotation

The object of the development of this course work is a program that calculates the overload to a shock absorber of car, with different loads on its body.

As a result the program gives the center of gravity of the vehicle, with respect to which there is a calculation of the overload on each individual absorber. In this project used only 4-wheels cars. The results of the program can be kept in mind in the design of the body of the new model cars, for prediction strength in the place of fastening of shock absorbers.
This report contains 18 pages of written text. During preparation two sources of information were used, and the document contains 6 pictures.

 

 


СОДЕРЖАНИЕ

 

Оглавление

Введение. Актуальность работы.. 1

1. Специальная часть. 3

1.1. Описание внешних ударных воздействий на автомобиль. 3

1.1.2. Описание параметров ударных воздействий. 5

1.2. Характеристики амортизаторов и методы расчета системы виброудароизоляции. 7

1.3. Разработка технического задания на программу. 11

1.4. Разработка математического обеспечения. 12

1.5. Разработка алгоритма программы.. 15

1.6. Разработка лингвистического обеспечения. 16

Заключение. 18

Список использованных источников: 18

 

 

Введение. Актуальность работы

В наши дни все современные легковые автомобили имеют подвеску пружинного типа, они подразделяют на два типа: зависимая и независимая подвеска.

В подвеске с независимым устройством (рис. 1) нет связи между колесами, расположенными на одной оси. Отсюда и следует название. В такой конструкции достигается уменьшение неподрессоренных масс и увеличение плавности хода автомобиля. Поэтому такой тип подвески широко распространен. Существует 5 видов независимых подвесок: подвеска на двойных рычагах, макферсон, на продольных рычагах, торсионная и многорычажная. Все типы, кроме подвески на продольных рычагах, можно использовать как на задней, так и на передней оси. Самыми популярными являются подвески макферсон спереди и многорычажная сзади.

 

 

рис.1

Зависимая же подвеска (рис. 2) обычно представлена жесткой балкой и является мостом автомобиля. Её особенность в том, что перемещение одного из колес отражается на противоположном колесе, вызывая его смещение. Такую подвеску


 

можно увидеть на задней оси у классических моделей ВАЗа, где колеса сочленены задним мостом.

рис. 2

Также существуют полузависимые и пневматические подвески, которые используются на автомобилях повышенной проходимости и на моделях премиум класса.

Все эти типы подвесок имеют свой гасящий элемент и в 90 % случаев этим элементом является амортизатор.


Специальная часть

Разработка алгоритма программы

Чтобы воплотить сформулированный выше математическое обеспечение, упростить ввод данных и в конечном счете прийти к результату вычислений был создан следующий алгоритм программы

Главные этапы работы программы:

1. Старт программы.

2. Ввод данных пользователем

3. Производится расчет центра масс кузова автомобиля.

4. Вычисление моментов инерции блока.

5. Расчет координат амортизаторов относительно центра масс.

6. Вычисление импульса перемещений

7. Решение системы дифференцированных уравнений с помощью метода Рунге – Кутта. Расчет жесткости

8. Обработка полученных результатов, расчет перегрузки на центр масс по каждому интервалу времени.

9. Вывод результата расчета

10. Завершение программы.


 

Заключение

В конечном счете, получаем продукт, способный реалистично указать во сколько g превышает нагрузка на амортизаторы от их обычного состояния. Реалистичность обеспечивается алгоритмом, в который заложена система составленная на основе уравнений Лагранжа, качественной оценки параметров для настройки амортизаторов и точного определения габаритов автомобиля.

Список использованных источников:

1. «Основы динамики автомобиля». Демпфирование подвески. URL: http://dmilvdv.narod.ru/Translate/FVD/suspension_damping.html (дата обращения 03.05.2016).

2. Добромиров В.Н., Острецов А.В. Конструкции амортизаторов. М.:МГТУ «МАМИ», 2007. С. 30-32.


Приложение 1

Пример работы программы

В качестве реального прототипа берется автомобиль BMW 3er E90, со следующими техническими характеристиками.

Таблица 1

РАЗМЕРЫ В ММ
Длина
Ширина
Высота
 
МАССА кг
Снаряженная масса
Полная масса

Рис.7

Машина будет представлена в виде трех блоков.

 

 

Таблица 2

  Длина Ширина Высота Масса
1 блок
2 блок
3 блок

В самой программе параметры блоков задаются относительно концов предыдущего блока, поэтому промежуточные точки длины блоков 0-755-3515-4520. Координаты высоты и ширины соответствуют виду, приведенном в таблице.

Результат работы программы полученное значение перегрузки 1.6677 g, которую ощущают пассажиры.


Приложение 2

Листинг программы

Код программы, написанной на языке разработки Java в средстве разработке Eclipse Java EE IDE for Web Developers (Version: Mars Release (4.5.0))

Программы содержит один класс «console», в ней учтены возможные ошибки при неправильном вводе пользователем числовых параметров. В таком случае предоставляется возможность заново напечатать последнее число.

 

 

package yoyo;

 

import java.util.Scanner;

 

public class console {

 

 

static boolean tryParseInt(String value) {

try {

Integer.parseInt(value);

return true;

} catch (NumberFormatException e) {

return false;

}

}

 

static boolean tryParseDouble(String value){

try {

Double.parseDouble(value);

return true;

} catch (NumberFormatException e) {

return false;

}

}

 

 

static int nta=0,nxa=0,km=0,NumberofAbsorber=0;// переменныедляпервыхпятипараметров

static double[] xa = new double[11];static double[] ya = new double[11];static double[] za = new double[11];

static int[][] tx =new int[11][4];//Номератиповхарактеристиквиброизоляторовпоосям X,Y,Z

static double[][] xar =new double[5][20];//Типовыехарактеристикивиброизоляторов

static double[] dx = new double[21];static double[] dy = new double[21];static double[] dz = new double[21];

 

//Силы "сухого" трения в виброизоляторах[Н] пооси

static double[] gx = new double[10];static double[] gy = new double[10];static double[] gz = new double[10];

//Координатыграней [мм],ограничивающих "прямоугольную" массупооси

static double[] mass =new double[10];// Массыблока [кг] (в порядкеномеров)

static int nt=0;//количествоточекударногоимпульса

static double tk,dt/*шагповремени уд.импульса*/;static int kds;

static double[] tt/*времяточекударногоимпульса */ = new double[51];static double[] yy = new double[51];//Введитезначенияперегрузокточекударногоимпульса

 

public static void input(){

 

int km2;

System.out.println("Введите исходные данные");

 

s = new Scanner(System.in);

String s1,s2,s3,s4;

 

do

{

System.out.print("Количество типов характеристик амортизаторов ");

s2 = s.next();

System.out.print("Количество точек характеристики амортизатора ");

s3 = s.next();

System.out.print("Количество блоков на которые будет разделен автомобиль ");

s4 = s.next();

if(tryParseInt(s2) && tryParseInt(s3) && tryParseInt(s4) ){

nta = Integer.parseInt(s2);

nxa = Integer.parseInt(s3);

km = Integer.parseInt(s4);;

}

Else

System.out.println("Повторите ввод ");

}

while(!tryParseInt(s2) || !tryParseInt(s3) || !tryParseInt(s4) );

 

 

do{

System.out.print("Количество амортизаторов ");

s1 = s.next();

if(tryParseInt(s1) )

{

NumberofAbsorber= Integer.parseInt(s1);

if(NumberofAbsorber<1 || NumberofAbsorber>15)

{System.out.println("Такое число не подходит ");

System.out.println("Повторите ввод ");}

}

Else

System.out.println("Так нельзя,Повторите ввод ");

}while(!tryParseInt(s1) || NumberofAbsorber<1 || NumberofAbsorber>15);

km2=km*2;

 

System.out.println("Типовые характеристики амортизаторов");

System.out.println("в порядке номеров характеристик:точки деформация-сила [м/н] построчно");

System.out.print("для каждого типа характеристики ");

 

for(int i=1;i<=nta;i++)

for(int j=1;j<=2*nxa;j++){

do

{

 

s1 = s.next();

if(tryParseDouble(s1))

{xar[i][j] = Double.parseDouble(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseDouble(s1) );

}

System.out.println("Номера типов характеристик амортизаторов по осям Z-построчно");

 

 

for(int i=1;i<=nxa;i++)

// for(int j=1;j<=3;j++){

{int j=3;

do

{

s1 = s.next();

if(tryParseInt(s1))

{tx[i][j] = Integer.parseInt(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) );

//}

}

System.out.println("Масса отдельных частей автомобиля (сумма частей должна равняться полной массе авто) ");

 

for(int i=1;i<=km;i++){

do

{

s1 = s.next();

if(tryParseInt(s1))

{mass[i] = Integer.parseInt(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) );

}

System.out.print(" Длина блоков автомобиля,координата X началa и концa в мм ");

 

for(int i=1;i<=km2;i++){

do

{

s1 = s.next();

if(tryParseInt(s1))

{gx[i] = Integer.parseInt(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) );

}

System.out.print(" Ширина блоков автомобиля,координата Y началa и концa в мм ");

for(int i=1;i<=km2;i++){

do

{

s1 = s.next();

if(tryParseInt(s1))

{gy[i] = Integer.parseInt(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) );

}

System.out.print(" Высота блоков автомобиля,координата Z началa и концa в мм ");

for(int i=1;i<=km2;i++){

do

{

s1 = s.next();

if(tryParseInt(s1))

{gz[i] = Integer.parseInt(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) );

}

double[] dx = new double[21]; double[] dy = new double[21]; double[] dz = new double[21];

System.out.println("Коэффициенты вязкого демпфирования для "+NumberofAbsorber + " амортизаторов ");

for(int i=1;i<=NumberofAbsorber;i++){

do

{

 

System.out.print(i +"-й "); s3 = s.next();

if( tryParseInt(s3) ) //tryParseInt(s1) && tryParseInt(s2) && tryParseInt(s3)

{dx[i] =0;//Integer.parseInt(s1)

dy[i] = 0;

dz[i] = Integer.parseInt(s3);

}

Else

System.out.println("Повторите ввод ");

}

while( !tryParseInt(s3) ); //!tryParseInt(s1) || !tryParseInt(s2) || !tryParseInt(s3)

}

 

 

System.out.print("Координаты установки амортизаторов[мм] по оси ");

for(int i=1;i<=NumberofAbsorber;i++){

do

{

System.out.print("X ");

s1 = s.next();

System.out.print("Y ");

s2 = s.next();

System.out.print("Z ");

s3 = s.next();

if(tryParseInt(s1) && tryParseInt(s2) && tryParseInt(s3) )

{xa[i] = Integer.parseInt(s1);

ya[i] = Integer.parseInt(s2);

za[i] = Integer.parseInt(s3);

}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) || !tryParseInt(s2) || !tryParseInt(s3) );

}

 

System.out.print(" Введите количество точек ударного импульса ");

do

{

s1 = s.next();

if(tryParseInt(s1))

{nt = Integer.parseInt(s1);}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseInt(s1) );

 

for(int i=1;i<=nt;i++){

do

{

System.out.print("Введите время точек ударного импульса [мс] ");

s1 = s.next();

System.out.print("Введите значения перегрузок точек ударного импульса ");

s2 = s.next();

if(tryParseDouble(s1) && tryParseDouble(s2))

{tt[i] = Double.parseDouble(s1)*0.001;

yy[i] = Double.parseDouble(s2)*9.81;

}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseDouble(s1) || !tryParseDouble(s2) );

}

 

 

do

{

System.out.print("Введите конечное время анализа воздействия [мс] ");

s1 = s.next();

System.out.print("Введите шаг по времени уд.импульса [мс] ");

s2 = s.next();

System.out.print("Введите коэффициент уменьшения шага по времени ");

s3 = s.next();

if(tryParseDouble(s1) && tryParseDouble(s2) && tryParseInt(s3) )

{

tk = Double.parseDouble(s1)*0.001;

dt = Double.parseDouble(s2)*0.001;

kds = Integer.parseInt(s3);

}

Else

System.out.print("Повторите ввод ");

}

while( !tryParseDouble(s1) || !tryParseDouble(s2) || !tryParseInt(s3) );

 

System.out.println("Ввод окончен,данные переведены в систему СИ[Н,м,с,кг] ");

 

}

 

static double[][] de = new double[11][4];

static double[] gex = new double[11];static double[] gey = new double[11];static double[] gez = new double[11];

 

public static void stat(double de[][],double gex[],double gey[],double gez[],int NumberofAbsorber){

 

 

//{вычислениенагpузокнаамоpтизатоpы}

double[] px = new double[41]; double[] py = new double[41]; double[] pz = new double[41];

 

for(int i=1;i<=NumberofAbsorber;i++){

px[i]=de[i][1]*gex[i];

py[i]=de[i][2]*gey[i];

pz[i]=de[i][3]*gez[i];

}

System.out.println("Нагpузка на амоpтизатоpы [H] ");

System.out.println(" по x по y по z ");

for(int i=1;i<=NumberofAbsorber;i++){

System.out.println("на"+(i)+"-ый амортизатор"+px[i]+" "+py[i]+" "+pz[i]);

}

}

static double[] y = new double[13];static double[] ff = new double[13];

static double xos=0,yos,zos;

 

 

static double fr=0,cr,ro,ger,br,gr,sm = 0,vx = 0,vy=0,vz=0,jx=0,jy=0,jz=0;

static double ge,cx=0,cy=0,cz=0,a=0,b=0,c=0,d1=0,t=0,rf=0,q1=0,q2=0;

static double i1=0,i2=0,n=0,w1=0,g=0,bx=0,by=0;

static double ss1=0,ss2=0;

 

 

public static void Model(double de[][],double y[],double xa[],double ya[],double za[],double xos,double yos,double zos,double ge,int tx[][],

int nxa,double xar[][],double gex[],double gey[],double gez[],int NumberofAbsorber,double cx,double cy,double cz,double a,double b,

double c,double t,double rf,double d1,double i1,double i2,double q1,double q2,double ss1,double ss2,double n,double g,double w1,

double fr,double cr,double ger,double br,double gr,double ff[])

{

int jjj,nxar;

double L=0,q=0,ss,z,bz,kx,ky,kz,fsx=0,fsy=0,fsz=0,fzy=0,fyz=0,fzx=0,fxz=0,fxy=0,fyx=0;

double[] nx = new double[11];double[] ny = new double[11];double[] nz = new double[11];

 

for(int j=1;j<=NumberofAbsorber;j++){

de[j][1]=y[1]-ya[j]*y[11]+za[j]*y[9]-xos;

de[j][2]=y[3]-za[j]*y[7]+xa[j]*y[11]-yos;

de[j][3]=y[5]-xa[j]*y[9]+ya[j]*y[7]-zos;

for(int k=1;k<=3;k++){

jjj=1;nxar=tx[j][k];

while(jjj<=nxa-1 && de[j][k]<=xar[nxar][2*jjj+1]){

if(xar[nxar][2*jjj-1]>de[j][k]){

ge=(xar[nxar][2*(jjj+1)]-xar[nxar][2*jjj])/(xar[nxar][2*(jjj+1)-1]-xar[nxar][2*jjj-1]);

switch(k){

case 1:gex[j]=ge;

break;

case 2:gey[j]=ge;

break;

case 3:gez[j]=ge;

break;

}

}

jjj++;

}

}

cx+=gex[j];

cy+=gey[j];

cz+=gez[j];

a=a-gex[j]*ya[j];

b=b+gex[j]*za[j];

c=c-gey[j]*za[j];

d1=d1+gey[j]*xa[j];

t=t-gez[j]*xa[j];

rf=rf+gez[j]*ya[j];

i1=i1+gex[j]*za[j]*za[j];

i2=i2+gez[j]*xa[j]*xa[j];

q1=q1+gez[j]*ya[j]*ya[j];

q2=q2+gey[j]*za[j]*za[j];

ss1=ss1+gey[j]*xa[j]*xa[j];

ss2=ss2+gex[j]*ya[j]*ya[j];

n=n-gex[j]*ya[j]*za[j];

g=g+gey[j]*za[j]*xa[j];

w1=w1-gez[j]*xa[j]*ya[j];

}

L=i1+i2; //обозначаетсячерез L маленькое

q=q1+q2;

ss=ss1+ss2; //s заменяетсянаss, s1 и s2 на ss1 ss2 соотвественно

bx=0;fsx=0;by=0;fsy=0;bz=0;fsz=0;kx=0;fzy=0;fyx=0;ky=0;fyz=0;fzx=0;kz=0;fxz=0;fxy=0;

for(int j=1;j<=NumberofAbsorber;j++){

fr=0;

cr=0;

ger=dz[j];

br=xa[j];

gr=ya[j];

z=za[j];

bz+=ger;

kx+=ger*gr;

ky+=ger*br;

 

fsx+=nx[j];

fsy+=ny[j];

fsz+=nz[j];

fzy+=nz[j]*gr;

fyz+=ny[j]*z;

fzx+=nz[j]*br;

fxz+=nx[j]*z;

fxy+=nx[j]*gr;

fyx+=ny[j]*br;

}

 

ff[1]=y[2];

ff[2]=(cx*(xos-y[1])-a*y[11]-b*y[9]+bx*(vx-y[2])-fsx)/sm;

ff[3]=y[4];

ff[4]=(cy*(yos-y[3])-c*y[7]-d1*y[11]+by*(vy-y[4])-fsy)/sm;

ff[5]=y[6];

ff[6]=(cz*(zos-y[5])-t*y[9]-rf*y[7]+bz*(vz-y[6])-fsz)/sm;

ff[7]=y[8];

ff[8]=(-c*y[3]-rf*y[5]-q*y[7]-g*y[11]-w1*y[9]-kx*y[8]+c*yos+rf*zos-fzy-fyz)/jx;

ff[9]=y[10];

ff[10]=(-b*y[1]-t*y[5]-L*y[9]-w1*y[7]-n*y[11]-ky*y[10]+b*xos+t*zos-fzx-fxz)/jy;

ff[11]=y[12];

ff[12]=(-a*y[1]-d1*y[3]-ss*y[11]-n*y[9]-c*y[7]-kz*y[12]+a*xos+d1*yos-fxy-fyx)/jz;

 

}

 

static double ctx=0,cty=0,ctz=0,ctx1=0,cty1=0,ctz1=0,dt1;

static int nt1,nr;

private static Scanner s;

static double[] vv = new double[52];static double[] pp = new double[52];

static double[] yy1 = new double[52];static double[] tt1 = new double[52];static double[] sss = new double[52];// ssзаменaнаsss, s наss

static double[] ww= new double[13];static double[] v = new double[52];static double[] kr = new double[13];

 

public static void main(String[] args){

 

input();

sm=0; ctx=0; cty=0; ctz=0; jx=0; jy=0; jz=0;

cx=0; cy=0; cz=0; a=0; b=0; c=0; t=0;rf=0;

i1=0; i2=0; q1=0; q2=0; ss1=0; ss2=0; n=0; g=0;

w1=0; d1=0;

System.out.println("Идет расчет");

int ir;

 

 

ir=2*km;

//вычислениекооpдинат ц.т.

for(int j=1;j<=ir;j++){

gx[j]=gx[j]*0.001;

gy[j]=gy[j]*0.001;

gz[j]=gz[j]*0.001;

}

for(int j=1;j<=km;j++){

sm+=mass[j];

ctx+=(gx[2*j]+gx[2*j-1])/2*mass[j];

cty+=(gy[2*j]+gy[2*j-1])/2*mass[j];

ctz+=(gz[2*j]+gz[2*j-1])/2*mass[j];

}

ctx=ctx/sm;

cty=cty/sm;

ctz=ctz/sm;

ctx1=ctx*1000;

cty1=cty*1000;

ctz1=ctz*1000;

 

System.out.println(" кооpдинаты ц.м.[мм] X "+ctx1+" Y "+cty1+" Z "+ctz1);

String s1=null;

s1=" кооpдинаты ц.м.[мм] X "+ctx1+" Y "+cty1+" Z "+ctz1;

 

int ish;double dr,w,rr,ur,ar,er,yr;

//pасчетмоментовинеpцииблокаотносительно ц.т.

for(int j=1;j<=km;j++){

int i;

i=2*j;

ish=i-1;

br=gx[i];

gr=gy[i];

dr=gz[i];

ger=gx[ish];

cr=gy[ish];

w=gz[ish];

rr=(br+ger)/2;

fr=(dr+w)/2;

ur=(gr+cr)/2;

ar=Math.abs(br-ger);

er=Math.abs(dr-w);

yr=Math.abs(gr-cr);

ro=mass[j]/ar/er/yr;

jx+=((ar*Math.pow(yr,3)/12+Math.pow((ur-cty),2)*ar*yr)*er+(ar*Math.pow(er,3)/12+Math.pow((fr-ctz),2)*er*ar)*yr)*ro;

jy+=((yr*Math.pow(ar,3)/12+Math.pow((rr-ctx),2)*yr*ar)*er+(yr*Math.pow(er,3)/12+Math.pow((fr-ctz),2)*er*yr)*ar)*ro;

jz+=((er*Math.pow(ar,3)/12+Math.pow((fr-ctx),2)*er*ar)*yr+(er*Math.pow(yr,3)/12+Math.pow((ur-ctz),2)*er*yr)*ar)*ro;

}

//{вычислениекооpдинатточеккpепленияамоpтизатоpов в системе с началомотсчета в ц.m.}

for(int j=1;j<=NumberofAbsorber;j++){

xa[j]=xa[j]*0.001-ctx;

ya[j]=ya[j]*0.001-cty;

za[j]=za[j]*0.001-ctz;

}

vv[1]=0;pp[1]=0;nr=1;nt1=nt;dt1=dt;

for(int i=1;i<=nt;i++){

yy1[i]=yy[i];

tt1[i]=tt[i];

}

if(nr==1){

nt=9;dt=1;

 

for(int i=2;i<=nt;i++){

tt[i]=i;yy[i]=9.81;

}}

for(int i=1;i<=NumberofAbsorber;i++)

for(int j=1;j<=3;j++){ de[i][j]=0;}

 

 

if(nr==2){

nt=nt1;dt=dt1;

for(int i=1;i<=nt1;i++){

tt[i]=tt1[i];yy[i]=yy1[i];

}

}

 

for(int i=2;i<=nt;i++){

vv[i]=vv[i-1]+(yy[i]+yy[i-1])*(tt[i]-tt[i-1])/2;

pp[i]=pp[i-1]+(vv[i]+vv[i-1])*(tt[i]-tt[i-1])/2;

}

cx=0; cy=0; cz=0; a=0; b=0; c=0; t=0;rf=0;

i1=0; i2=0; q1=0; q2=0; ss1=0; ss2=0; n=0; g=0;

w1=0; d1=0;

//{началоRunge-Kutta}

int ii=1,jj=1;

xos=0;yos=0;zos=0;

vx=0;vy=0;vz=0;dt=dt/kds;

 

for(int i=1;i<=12;i++) {ww[i]=0;}

do{

jj=1;

do{

for(int j=1;j<=12;j++) { y[j]=ww[j];}

 

zos=pp[ii]+(pp[ii+1]-pp[ii])*(jj-1)/kds;

vz=vv[ii]+(vv[ii+1]-vv[ii])*(jj-1)/kds;

 

 

Model( de, y, xa, ya, za, xos, yos, zos, ge, tx,nxa, xar, gex, gey, gez,

NumberofAbsorber, cx, cy, cz, a, b, c, t, rf, d1, i1, i2, q1, q2, ss1, ss2, n, g, w1,fr, cr, ger,

br, gr, ff);

for(int j=1;j<=12;j++){v[j]=dt*ff[j];kr[j]=v[j];y[j]=ww[j]+v[j]/2;}

 

zos=pp[ii]+(pp[ii+1]-pp[ii])*(jj-1)/kds/2;

vz=vv[ii]+(vv[ii+1]-vv[ii])*(jj-1)/kds/2;

 

for(int i=1;i<=2;i++){

Model(de, y, xa, ya, za, xos, yos, zos, ge, tx,nxa, xar, gex, gey, gez,

NumberofAbsorber, cx, cy, cz, a, b, c, t, rf, d1, i1, i2, q1, q2, ss1, ss2, n, g, w1,fr, cr, ger,

br, gr, ff);

for(int j=1;j<=12;j++){

v[j]=dt*ff[j];kr[j]=kr[j]+2*v[j];y[j]=ww[j]+v[j]/2;

}

}

for(int j=1;j<=12;j++) y[j]=ww[j]+v[j];

zos=pp[ii]+(pp[ii+1]-pp[ii])*(jj-1)/kds;

vz=vv[ii]+(vv[ii+1]-vv[ii])*(jj-1)/kds;

 

Model(de, y, xa, ya, za, xos, yos, zos, ge, tx,nxa, xar, gex, gey, gez,

NumberofAbsorber, cx, cy, cz, a, b, c, t, rf, d1, i1, i2, q1, q2, ss1, ss2, n, g, w1,fr, cr, ger,

br, gr, ff);

for(int j=1;j<=12;j++){

y[j]=ww[j]+(kr[j]+dt*ff[j])/6;ww[j]=y[j];

}

jj++;

}while( jj<kds);

sss[ii+1]=y[5];

ii++;

}while( ii<nt-1 );

 

if(nr==1){ //M1 goto в конце

nr=2;

 

 

nt=nt1;dt=dt1;

for(int i=1;i<=nt1;i++){

tt[i]=tt1[i];yy[i]=yy1[i];

}

 

 

for(int i=2;i<=nt;i++){

vv[i]=vv[i-1]+(yy[i]+yy[i-1])*(tt[i]-tt[i-1])/2;

pp[i]=pp[i-1]+(vv[i]+vv[i-1])*(tt[i]-tt[i-1])/2;

}

cx=0; cy=0; cz=0; a=0; b=0; c=0; t=0;rf=0;

i1=0; i2=0; q1=0; q2=0; ss1=0; ss2=0; n=0; g=0;

w1=0; d1=0;

//{началоRunge-Kutta}

xos=0;yos=0;zos=0;

vx=0;vy=0;vz=0;dt=dt/kds;

ii=1;

for(int i=1;i<=12;i++) {ww[i]=0;}

do{

jj=1;

do{

for(int j=1;j<=12;j++) { y[j]=ww[j];}

zos=pp[ii]+(pp[ii+1]-pp[ii])*(jj-1)/kds;

vz=vv[ii]+(vv[ii+1]-vv[ii])*(jj-1)/kds;

 

Model(de, y, xa, ya, za, xos, yos, zos, ge, tx,nxa, xar, gex, gey, gez,

NumberofAbsorber, cx, cy, cz, a, b, c, t, rf, d1, i1, i2, q1, q2, ss1, ss2, n, g, w1,fr, cr, ger,

br, gr, ff);

for(int j=1;j<=12;j++){v[j]=dt*ff[j];kr[j]=v[j];y[j]=ww[j]+v[j]/2;}

zos=pp[ii]+(pp[ii+1]-pp[ii])*(jj-1)/kds/2;

vz=vv[ii]+(vv[ii+1]-vv[ii])*(jj-1)/kds/2;

 

for(int i=1;i<=2;i++){

Model(de, y, xa, ya, za, xos, yos, zos, ge, tx,nxa, xar, gex, gey, gez,

NumberofAbsorber, cx, cy, cz, a, b, c, t, rf, d1, i1, i2, q1, q2, ss1, ss2, n, g, w1,fr, cr, ger,

br, gr, ff);

for(int j=1;j<=12;j++){

v[j]=dt*ff[j];kr[j]=kr[j]+2*v[j];y[j]=ww[j]+v[j]/2;

}

}

for(int j=1;j<=12;j++) {y[j]=ww[j]+v[j];}

zos=pp[ii]+(pp[ii+1]-pp[ii])*(jj-1)/kds;

vz=vv[ii]+(vv[ii+1]-vv[ii])*(jj-1)/kds;

 

Model(de, y, xa, ya, za, xos, yos, zos, ge, tx,nxa, xar, gex, gey, gez,

NumberofAbsorber, cx, cy, cz, a, b, c, t, rf, d1, i1, i2, q1, q2, ss1, ss2, n, g, w1,fr, cr, ger,

br, gr, ff);

for(int j=1;j<=12;j++){

y[j]=ww[j]+(kr[j]+dt*ff[j])/6;

ww[j]=y[j];

}

jj++;

}while( jj<kds);

sss[ii+1]=y[5];

ii++;

}while( ii<nt-1 );

}

 

 

sss[1]=0; // sss == ss, ss == s

for(int i=2;i<=nt;i++){

vv[i]=(sss[i]-sss[i-1])/(tt[i]-tt[i-1]);

yy[i]=(vv[i]-vv[i-1])/(tt[i]-tt[i-1])/9.81;

}

 

//for(int i=1;i<=NumberofAbsorber;i++)

//{

// System.out.println("деформацияамортизатора № "+i);

// System.out.println("деформацияамортизаторапо X "+de[i][1]);

// System.out.println("деформацияамортизаторапо Y "+de[i][2]);

// System.out.println("деформацияамортизаторапо Z "+de[i][3]);

//}

for(int i=1;i<=NumberofAbsorber;i++){System.out.println("Перемещение штока амортизатора № "+i+" равно "+pp[i]);}

 

System.out.println(" Временные точки ударного импульса [мс] Перегрузка[g] \n");

s1+=" Временные точки ударного импульса [мс] Перегрузка[g] \n";

 

 

for(int i=1;i<=nt;i++){

tt[i]=tt[i]*1000;

 

System.out.println(" "+ tt[i]+ " "+yy[i]/10+" \n");

s1+=" "+ tt[i]+ " "+yy[i]+" \n";

 

}

//stat(de, gex, gey, gez, NumberofAbsorber);

}

 

 

}

 

Annotation

The object of the development of this course work is a program that calculates the overload to a shock absorber of car, with different loads on its body.

As a result the program gives the center of gravity of the vehicle, with respect to which there is a calculation of the overload on each individual absorber. In this project used only 4-wheels cars. The results of the program can be kept in mind in the design of the body of the new model cars, for prediction strength in the place of fastening of shock absorbers.
This report contains 18 pages of written text. During preparation two sources of information were used, and the document contains 6 pictures.

 

 


СОДЕРЖАНИЕ

 

Оглавление

Введение. Актуальность работы.. 1

1. Специальная часть. 3

1.1. Описание внешних ударных воздействий на автомобиль. 3

1.1.2. Описание параметров ударных воздействий. 5

1.2. Характеристики амортизаторов и методы расчета системы виброудароизоляции. 7

1.3. Разработка технического задания на программу. 11

1.4. Разработка математического обеспечения. 12

1.5. Разработка алгоритма программы.. 15

1.6. Разработка лингвистического обеспечения. 16

Заключение. 18

Список использованных источников: 18

 

 

Введение. Актуальность работы

В наши дни все современные легковые автомобили имеют подвеску пружинного типа, они подразделяют на два типа: зависимая и независимая подвеска.

В подвеске с независимым устройством (рис. 1) нет связи между колесами, расположенными на одной оси. Отсюда и следует название. В такой конструкции достигается уменьшение неподрессоренных масс и увеличение плавности хода автомобиля. Поэтому такой тип подвески широко распространен. Существует 5 видов независимых подвесок: подвеска на двойных рычагах, макферсон, на продольных рычагах, торсионная и многорычажная. Все типы, кроме подвески на продольных рычагах, можно использовать как на задней, так и на передней оси. Самыми популярными являются подвески макферсон спереди и многорычажная сзади.

 

 

рис.1

Зависимая же подвеска (рис. 2) обычно представлена жесткой балкой и является мостом автомобиля. Её особенность в том, что перемещение одного из колес отражается на противоположном колесе, вызывая его смещение. Такую подвеску


 

можно увидеть на задней оси у классических моделей ВАЗа, где колеса сочленены задним мостом.

рис. 2

Также существуют полузависимые и пневматические подвески, которые используются на автомобилях повышенной проходимости и на моделях премиум класса.

Все эти типы подвесок имеют свой гасящий элемент и в 90 % случаев этим элементом является амортизатор.


Специальная часть

Описание внешних ударных воздействий на автомобиль

Степень свободы механической системы - это параметр, описывающий минимальное количество координат, которые используются в определении положения всех точек механической системы в пространстве. Например, если тело может перемещаться в трех осях X, Y, Z, то оно имеет 3 степени свободы. Таким образом, амортизатор является механической системой с одной степенью свободы, а следовательно, для описания его положения в пространстве в любой момент времени требуется только одна координата.
Внешние силы, возникающие при нагрузках на амортизатор, - это возмущающие силы, которые зависят от времени и продуцируют вынужденное смещение кузова автомобиля.

Также механическая система подвергается восстанавливающим силам, которые проявляются при выводе амортизатора из его первоначального состояния и которые направлены на то, чтобы вернуть устройство в это положение. Такие силы линейно зависят от перемещения объекта, оказывают воздействие на движение системы и сами зависят от движения.
Коэффициент жесткости амортизатора k является количественным показателем, обусловливающим восстанавливающие свойства виброизолирующего устройства, он связывает восстанавливающую силу и величину деформации амортизатора:

k = G/dст (Н/м)

Коэффициент жесткости равен отношению силы тяжести автомобиля и статической деформации dст виброудароизоляции.

Еще один вид сил, задействованный в работе автомобильных амортизаторов, - это силы трения. Они имеют зависимость от знака скорости колебаний системы, направлены в обратную сторону по отношению к направлению движения. Силы трения гасят колебания, они распределяются на внутренние и внешние.

Распределение энергии в процессе трения называется демпфированием. Если сделать демпфирование больше, то произойдет ослабление амплитуды вынужденных колебаний системы. Демпфирование обозначается символом h. Существует 2 типа демпфирования: «сухое» и «вязкое».

Вязкое рассеивание энергии характерно в случаях, когда система оказывает сопротивление движению с силой, пропорциональной скорости деформации, и имеет направление в противоположную сторону от направления деформации.

Для автомобильных амортизаторов характерен именно «вязкий» тип демпфирования.


 

Последнее изменение этой страницы: 2016-06-10

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...