8 - 3 Технологический раздел (Программное средство исследования динамики движения автомобиля)

2018-02-16СтудИзба

Описание файла

Файл "8 - 3 Технологический раздел" внутри архива находится в папке "Программное средство исследования динамики движения автомобиля". Документ из архива "Программное средство исследования динамики движения автомобиля", который расположен в категории "". Всё это находится в предмете "дипломы и вкр" из 12 семестр (4 семестр магистратуры), которые можно найти в файловом архиве МПУ. Не смотря на прямую связь этого архива с МПУ, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "дипломы" в общих файлах.

Онлайн просмотр документа "8 - 3 Технологический раздел"

Текст из документа "8 - 3 Технологический раздел"

3 ТЕХНОЛОГИЧЕСКИЙ РАЗДЕЛ

3.1 Технология разработки программы

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

Программисту прежде, чем составлять программу на удобном для него языке программирования, приходится преодолевать большую подготовительную работу по уточнению постановки задачи, выбору метода её решения, выяснению специфики применения требуемой программы и др. Использование этой информации может существенно упростить задачу понимания программы человеком. Поэтому её весьма полезно фиксировать в виде отдельных документов. Обычно программы разрабатываются в расчете на обычного пользователя, поэтому для освоения программы пользователем помимо ее текста требуется определенная дополнительная документация.

Программа или логически связанная совокупность программ на носителе данных, снабженная программной документацией, называется программным средством (ПС)[10]. ПС позволяют осуществлять автоматическую обработку данных, а программная документация позволяет понять, какие функции выполняет та или иная программа программного средства, как подготовить исходные данные и запустить процесс их обработки, а также что означают полученные результаты.

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

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

Фрагмент программы модуля расчета построения заданной и реальной траектории движения :

procedure ProcMain();

var nsc,ns,i,si,ifi,id: integer;

xzn,yzn,sns,xi,yi,xli,yli,xri,yri,fi,r,dif,xcn,ycn,fivn,vxv: real;

begin

pi:=3.14159;

pi2:=pi/2;

xi:=0;yi:=0;

//считывание параметров из главного меню

with Fmain.SGmain do begin

//shp - ширина проезжей части, м

shp:=strtofloat(cells[2,2]);

//v - скорость продольного движения, м/с

v:=strtofloat(cells[2,3])/3.6;

//sck - коэф-т сцепления с дорогой

sck:=strtofloat(cells[2,4]);

//kboksm - коэф-т чувств-ти водителя к боковому смещению

kboksm:=strtofloat(cells[2,5]);

//kfit - коэф-т чувств-ти водителя к отклонению угла курса

kfit:=strtofloat(cells[2,6]);

end;

//считывание параметров из конструктивного меню

with Fmain.SGkonstr do begin

//am - масса автомобиля, кг

am:=strtofloat(cells[2,1]);

//baz - база автомобиля, м

baz:=strtofloat(cells[2,2])/1000;

//amf - масса на переднюю ось, кг

amf:=strtofloat(cells[2,3]);

//cf - коэф-т сопротивления уводу передней оси

cf:=strtofloat(cells[2,4]);

//cr - коэф-т сопротивления уводу задней оси

cr:=strtofloat(cells[2,5]);

//ri - передаточное отношение рулевого механизма

ri:=strtofloat(cells[2,6]);

//ds - масштаб детализации

ds:=strtofloat(cells[2,7]);

end;

//считывание параметров из участков цикла

with Fmain.SGroad do begin

//определение кол-ва участков цикла

nsc:=Fmain.SGroad.Rowcount - 1;

//ns - номер цикла

for ns:=1 to nsc do begin

sc[ns]:=strtofloat(cells[1,ns]);

fic[ns]:=strtofloat(cells[2,ns]);

fic[ns]:=fic[ns]*pi/180;

end;

end;

amr:=am-amf;

bf:=baz*amr/am;

br:=baz-bf;

rj:=amf*bf*bf+amr*br*br;

dsm:=0.02;

//начальные условия для дороги

xzn:=0;

yzn:=2.5;

//половина ширины полосы движения

shp:=shp/2;

for ns:=1 to (nsc-1) do begin

sns:=sc[ns+1]-sc[ns];

//начальное значение угла курса, его синус и косинус

fit:=fic[ns];

sifi:=sin(fit);

cofi:=cos(fit);

//проверка кривизны участка

if (fic[ns+1]=fic[ns])

then begin

//движение по прямой

//вычисляем кол-во точек

si:=trunc(sns/dsm);

for i:=1 to si do begin

//координаты текущей точки заданной траектории

xi:=xzn+si*dsm*cofi;

yi:=yzn+si*dsm*sifi;

//координаты левой границы

xli:=((xi-shp*sifi)/dsm)+0.5;

yli:=((yi+shp*cofi)/dsm)+0.5;

//координаты правой границы

xri:=((xi+shp*sifi)/dsm)+0.5;

yri:=((yi-shp*cofi)/dsm)+0.5;

end;

xzn:=xi;

yzn:=yi;

end

else begin

//движение по криволинейному участку

fi:=fic[ns+1]-fic[ns];

r:=sns/fi;

dif:=sns/dsm;

ifi:=trunc(dif);

//координаты центра поворота

xcn:=xzn-r*sin(fit);

ycn:=yzn+r*cos(fit);

xi:=(xcn/dsm)+0.5;

yi:=(ycn/dsm)+0.5;

for i:=1 to ifi do begin

//текущее значение угла курса, его синус и косинус

sifi:=sin(fit);

cofi:=cos(fit);

//координаты текущей точки заданной траектории

xli:=((xcn+(r-shp)*sifi)/dsm)+0.5;

yli:=((ycn-(r-shp)*cofi)/dsm)+0.5;

FResult.SerRoadLeft.AddXY(yli,xli);

xri:=((xcn+(r+shp)*sifi)/dsm)+0.5;

yri:=((ycn-(r+shp)*cofi)/dsm)+0.5;

FResult.SerRoadRight.AddXY(yri,xri);

fit:=fit+(fi/dif);

end;

//начало отсчета следующего участка

xzn:=xcn+r*sifi;

yzn:=ycn-r*cofi;

end;

end;

Фрагмент программы модуля расчета характеристик двигателя:

procedure PROCAvto();

begin

// om1 - угловая скорость вращения первичного вала коробки передач

om1:=(oms+omys+v/rks)*rit;

// amh - суммарный крутящий момент на шинах ведущих колес

amh:=am1*rit*tetta-4.*amf-2.*rjv*omkp-torm ;

if ( abs(am1*rit*tetta) <= abs (4.*amf) )

and(v < 0.000001)

then amh:=0;

// момент на колесе < мом. сопр.

// pz - суммарная вертикальная реакция на ведущих колесах

pz:=pz0+akkf*(h0*am*vp*0.5/al);

// po - предельно возможная горизонт. реакция вед.колес без потерь

po:=pz*f0;

// d- запас тяги на ведущих колесах

d:=po-(abs(amh)/(rks*2));

if(d<=0)

then eps:=abs(amh)/(ce*2)

else begin

// te- к-т, отражающий эластичные св-ва шины в прод. движении

te:=rks*po/ce;

// eps- тангенциальная деформация шины

eps:=abs(-te*(ln(d)-ln(po)));

end;

// tx- расчетная горизонтальная реакция ведущих колес с учетом потерь

tx:= pz*(f0*(1-exp(-eps/te))-b*(1-exp(-v/tv))*(1-exp(-s/ts))*(1.-exp(-eps/(te*2)))*(1.-exp(-eps/(te*2)))*

(1-exp(-eps/(te*2)))*(1-exp(-eps/(te*2)))*(1-exp(-eps/(te*2)))*(1-exp(-eps/(te*2))));

if(amh < 0)

then tx:=-tx;

f1:=tx/pz;

// omsp- угловое ускорение при фрикционном проскальзывании

//showmessage('amh: '+floattostr(amh)+', tx:'+floattostr(tx)+', rks'+floattostr(rks)+', rjv'+floattostr(rjv));

omsp:=(amh-2*tx*rks)/(rjv*2);

// vp- продольное ускорение автомобиля

vp:=(2*tx - f*akw*v*v)/am;

// v- продольная скорость автомобиля

v:=v+vp*dt;

// расчет по методу эйлера

if(v < 0)

then v:=0;

vkm:=v*3.6;

// oms- угловая скорость фрикционного проскальзывания колеса

oms:=oms+omsp*dt;

// расчет по методу эйлера

// omkp- угловое ускорение виртуального колеса

omkp:=vp/rks;

// omabp- угловое ускорение реального колеса

omabp:=omsp+omkp ;

// omys- угловая скорость упругого проскальзывания колеса

omys:=tteps*ce*v*eps/rks;

if(amh < 0)

then omys:=-omys;

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

// s- суммарное проскальзывание ведущего колеса

if(v>0.5)

then s:=abs((oms+omys)*rks/v);

x:=x+v*dt;//x- пройденный путь

end;

3.1.1 Технология модульного программирования

Приступая к разработке каждой программы ПС, следует иметь в виду, что она, как правило, является большой системой, поэтому мы должны принять меры для ее упрощения. Для этого такую программу разрабатывают по частям, которые называются программными модулями. А сам такой метод разработки программ называют модульным программированием. Программный модуль - это любой фрагмент описания процесса, оформляемый как самостоятельный программный продукт, пригодный для использования в описаниях процесса. Это означает, что каждый программный модуль программируется, компилируется и отлаживается отдельно от других модулей программы, и тем самым, физически разделен с другими модулями программы. Более того, каждый разработанный программный модуль может включаться в состав разных программ, если выполнены условия его использования, декларированные в документации по этому модулю. Таким образом, программный модуль может рассматриваться и как средство борьбы со сложностью программ, и как средство борьбы с дублированием в программировании.

Модульное программирование является воплощением общих методов борьбы со сложностью и обеспечение независимости компонент системы, и использование иерархических структур[10]. Для воплощения первого метода формулируются определенные требования, которым должен удовлетворять программный модуль, т.е. выявляются основные характеристики «хорошего» программного модуля. Для воплощения второго метода используют древовидные модульные структуры программ (включая деревья со сросшимися ветвями).

Не всякий программный модуль способствует упрощению программы. Выделить хороший с этой точки зрения модуль является серьезной творческой задачей. Для оценки приемлемости выделенного модуля используются некоторые критерии. Так, Хольт [19] предложил следующие два общих таких критерия:

    • хороший модуль снаружи проще, чем внутри;

    • хороший модуль проще использовать, чем построить.

Майерс [19] предлагает для оценки приемлемости программного модуля использовать более конструктивные его характеристики :

    • размер модуля;

    • прочность модуля;

    • сцепление с другими модулями;

    • рутинность модуля (независимость от предыстории обращений к нему).

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

При разработке программного модуля обычно придерживаются следующего порядка действий:

    • изучение и проверка спецификации модуля, выбор языка программирования;

    • выбор алгоритма и структуры данных;

    • программирование (кодирование) модуля;

    • шлифовка текста модуля;

    • проверка модуля;

    • компиляция модуля.

3.2 Технология разработки графического интерфейса пользователя

Интерфейс – это, определенная стандартами, граница между взаимодействующими независимыми объектами [10]. Он объединяет устройства ввода, вывода и программное обеспечение, которое обслуживает их. В более широком смысле интерфейс включает в себя всё, что помогает пользователю взаимодействовать с компьютером, в том числе документацию, обучение и техническую поддержку.

В дипломном проекте пользовательский интерфейс разработан в соответствии с принципами, сформулированными в [10]:

- контроль пользователем интерфейса;

- уменьшение загрузки памяти пользователя;

- последовательность пользовательского интерфейса.

Основное правило проектирования – необходим контроль пользователя над системой.

Принципы, которые дают пользователю контроль над системой:

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

Первый тип – режим приложения. Он позволяет работать только в определённом месте программы, либо устанавливает конкретный режим работы.

Второй тип режима – системный. Пока пользователь находится в этом режиме, ему не разрешено работать нигде, кроме текущей программы;

2) пользователь должен иметь возможность выбора: работать либо мышью, либо клавиатурой, либо их комбинацией (гибкость);

3) пользователь должен иметь возможность сфокусировать внимание (прерываемость). Программный интерфейс спроектирован так, чтобы пользователь мог в любую минуту прерваться или сохранить результаты работы на данной стадии;

4) демонстрация сообщений, для помощи в работе (полезность). Данный принцип применен не только для сообщений, но и для всех текстов на экране: приглашение, инструкция, заголовок или надпись на кнопке. Сообщение – ключ к диалогу программы с пользователем;

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

6) создание наиболее понятного пользовательского интерфейса (облегчённость в пользовании).

Принципы создания совместимого интерфейса:

1) проектирование последовательного интерфейса (последовательность). Пользователи должны иметь опорные точки при перемещении в интерфейсе;

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5192
Авторов
на СтудИзбе
433
Средний доход
с одного платного файла
Обучение Подробнее