Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работапо Инфе готовая.docx
Скачиваний:
4
Добавлен:
23.12.2018
Размер:
474.62 Кб
Скачать
  1. Алгоритм решения задачи

Вводим исходные данные : I0, Mo , Mc , φ p, n.

Элементарные участки при разгоне будут равны .

Для первого положения вводим φ1=0, ω1=0, t1=0, .

Для остальных положений при i=2,…,n+1 значение угла поворота будет равно : ;

Вычислим по формуле трапеций int

;

Угловая скорость будет равна:;

Вводим среднее значение скорости : ;

Значение времени найдём по формуле : ;

Вводим формулу для ускорения:.

Выводим параметры движения для разгона при i = 1,..., п + 1

Выводим φ i, ω i, ε i, ti

Выводим быстродействие для участка разгона

Для участка торможения алгоритм имеет следующий вид:

Элементарные участки торможения будут равны :;

Ускорение будет равно : ;

Далее алгоритм решения имеет вид, аналогичный участку разгона.

Элементарные участки при торможении будут равны .

Для первого положения вводим φ1=0, ω1=0, t1=0, .

Для остальных положений при i=2,…,n+1 значение угла поворота будет равно : ;

Вычислим по формуле трапеций int

;

Угловая скорость будет равна:;

Вводим среднее значение скорости : ;

Значение времени найдём по формуле : ;

Вводим формулу для ускорения:.

Выводим параметры движения для торможения при i = 1,..., п + 1

Выводим φ i, ω i, ε i, ti

  1. Схема алгоритма решения задачи

  1. Таблица идентификаторов

Таблица 2.1 – Таблица идентификаторов

Математическое

обозначение

Идентификатор

Описание

Jo

I0

Момент инерции

MД

Md

Движущий момент

MС

Mc

Момент сопротивления

Mо

M0

Начальный момент

С

c

Коэффициент

N

n

Количество участков

ω

w

Угловая скорость

ω1

W[1]

Начальное значение скорости

ωср

ws

Среднее значение скорости

t

t

Время

t1

t[1]

Начальное значение времени

ε

E

Ускорение

ε1

E[1]

Начальное ускорение

φ

f

Угол

φр

fp

Угол разгона

φ1

f[1]

Начальное значение угла поворота

Δφр

fpd

Элементарные участки при разгоне

φТ

ft

Угол торможения

ΔφТ

dft

Элементарные участки при торможении

Тр

Tp

Быстродействие на участке разгона

ТT

Tt

Быстродействие на участке торможения

I

i

Счетчик

Int

int

Интеграл

  1. Текст программы в средах Delphi и MathCad

var

Form1: TForm1;

// переменные объявленые глобально

Jo: double;

Mo: double;

Mc: double;

fip: double;

N: integer;

c: double;

//----------------

fi: array[1..100] of double; //угол поворота

w: array[1..100] of double; // угловая скорость

wcp: double; // средняя скорость на отрезке

t: array[1..100] of double; // время

e: array[1..100] of double; // ускорение

int: double; // значение интеграла

Tn: double; // быстродействие

dfi: double; // шаг угла

fit: double; // полный угол торможения

function M(fi:real):real;

begin

c:=0.4;

M := Mo+Exp(fi*ln(c))+sqrt(fi);

end;

procedure TForm1.Button1Click(Sender: TObject);

var i: integer;

tmp: double;

begin

Memo1.Clear;

Memo1.Lines.Add('Разгон');

// считывание переменныъ из едитов

Jo := StrToFloat(Edit1.Text);

Mo := StrToFloat(Edit2.Text);

Mc := StrToFloat(Edit3.Text);

fip := StrToFloat(Edit5.Text);

N := StrToInt(Edit6.Text);

// расчет шага

dfi := fip/N;

// первое положение

fi[1] := 0;

w[1] := 0;

t[1] := 0;

e[1] := (M(fi[1])- Mc)/Jo;

// положения со 2 и до N+1

for i:=2 to N+1 do

begin

fi[i] := fi[i-1] + dfi;

int := (M(fi[i])-Mc+M(fi[i-1])-Mc)/2*dfi;

w[i] := sqrt(2/Jo*(Jo*sqr(w[i-1])/2+int));

wcp := (w[i]+w[i-1])/2;

t[i] := t[i-1]+dfi/wcp;

e[i] := (w[i]-w[i-1])/(t[i]-t[i-1]);

end;

fit := Jo*sqr(w[N+1])/(2*Mc);

e[N+1] := -Mc/Jo;

dfi := fit/N;

for i:=1 to N do

Memo1.Lines.Add('i='+IntToStr(i)+' ф='+FloatToStrF(fi[i],ffFixed,5,2)

+' w='+FloatToStrF(w[i],ffFixed,5,2)+' e='+FloatToStrF(e[i],ffFixed,5,2)

+' t='+FloatToStrF(t[i],ffFixed,5,2));

Tn := t[N+1];

Memo1.Lines.Add('Tp=T[N+1]='+FloatToStrF(Tn,ffFixed,5,2));

// торможение

Memo1.Lines.Add('Торможение');

Memo1.Lines.Add('фт='+FloatToStrF(fit,ffFixed,5,2));

// шаги торможения с N+2 до 2N+1

for i:=N+2 to 2*N+1 do

begin

fi[i] := fi[i-1]+dfi;

tmp := 2/Jo*(Jo*sqr(w[i-1])/2-Mc*dfi);

if tmp<0 then tmp:=0;

w[i] := sqrt(tmp);

wcp := (w[i]+w[i-1])/2;

t[i] := t[i-1]+(fi[i]-fi[i-1])/wcp;

e[i] := (w[i]-w[i-1])/(t[i]-t[i-1]);

end;

for i:=N+1 to 2*N+1 do

Memo1.Lines.Add('i='+IntToStr(i)+' ф='+FloatToStrF(fi[i],ffFixed,5,2)

+' w='+FloatToStrF(w[i],ffFixed,5,2)+' e='+FloatToStrF(e[i],ffFixed,5,2)

+' t='+FloatToStrF(t[i],ffFixed,5,2));

Tn := t[2*N+1]-t[N+1];

Memo1.Lines.Add('Tт='+FloatToStrF(Tn,ffFixed,5,2));

Button3.Enabled := true;

end;

procedure TForm1.Button3Click(Sender: TObject);

var i: integer;

begin

Chart1.BottomAxis.Minimum := -0.1;

Chart1.BottomAxis.Maximum := fi[2*N+1]+0.1;

Chart1.LeftAxis.Minimum := e[2*N+1]-0.1;

Chart1.LeftAxis.Maximum := e[1] + 0.1;

for i:=1 to 2*N+1 do

begin

Series1.AddXY(fi[i],w[i],'',clTeeColor);

Series2.AddXY(fi[i],e[i],'',clTeeColor);

Series3.AddXY(fi[i],t[i],'',clTeeColor);

end;

end;

end.

MathCad