Смекни!
smekni.com

Математическое моделирование управления движения поезда (стр. 3 из 4)

Вершины данного графа 1, 2, 3, 4, 5, 6 есть остановки; ребра-ветви железной дороги; e, r,t,y,x,w,1u,2u..- длина пути ветвей; ответвления от замкнутого кольца – тупики, вместе ответвления расположена стрелка. В данном курсовом проекте рассмотрена упрощенная схема пути, но на ее основе можно будет рассмотреть модернизацию в сторону усложнения пути и добавления поездов.

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

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

· совокупность входных воздействий - задача начальной и конечной точки отправления;

· совокупность воздействий внешней среды;

· совокупность внутренних параметров - длины путей(скорость, свободна или занята ветвь по которой собирается двигаться поезд);

· совокупность выходных характеристик – длина всего пройденного пути (время его прохождения, и вывод кратчайшего пути).

1) Задаем длины отдельных ветвей графа, они могут быть представлены вектором:

P[ e, r,t,y,x,w], все элементы больше нуля.

2) Задаем начальную координату или вершину отправления, она должна быть истинной для заданного графа: номер вершины – nach, где 1<=nach<=6 т.е. для нашего графа число натуральное целое не более числа вершин.

3) Задаем конечную координату или вершину прибытия: номер вершины – kon, где 1<=kon<=6, натуральное и целое.

4) Задаем длину до тупика: u, где u=1u=2u=…=6u, u>0.

5) Выбери направление обхода: по часовой стрелки или против часовой.

6) Ищем длину пути: алгоритм – по очередное суммирование всех длин пройденных ветвей, т.е.элементов вектора Р

S=[nach]+[nach+1]+…+[nach+n], где nach+n=kon.

7) Задаем уйдет ли поезд в тупик. Если уходит то к общему полученному пути прибавляем длину ветви тупика. Skon=S+u, где u элемент из вектора U[1u,2u,3u,4u,5u,6u]

8) Задаем среднюю скорость прохождения маршрута поездом: V=v.

9) Вычисляем время, затраченное на весь маршрут: T= Skon/v


4. Второй этап моделирования. Реализация машинной модели

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

4.1 Блок схема

Основная схема




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

program u;uses crt;label m1,m2,m3;const n=5;typeuk=^zap;zap=records:integer;zn:boolean;Lln:uk;Rln:uk;end;varzn:char;perv,tek,pred,perv1:uk;met:boolean;i,nash,kon,znash,dl:integer; Блок описаний: Задание названия программы, задание существующих меток, констант (n=5) – задание точного числа остановок на пути, задание типов переменных: целочисленных данных, логических переменных, логические метки, символьные переменные.
procedure poisk1;begintek:=perv1;znash:=0;while tek^.zn=false dobeginznash:=tek^.s+znash;tek:=tek^.rln;end;writeln(' ');znash:=znash+dl;end; Процедура поиска и задания начальной координаты, и нахождения суммарного пути по часовой стрелке.
procedure poisk2;varcx:integer;begintek:=perv1;znash:=0;cx:=0;tek:=perv1;while tek^.zn=false dobegincx:=cx+1;znash:=tek^.lln^.s+znash;tek:=tek^.lln;end;znash:=znash+dl;end; Процедура поиска и задания начальной координаты, и нахождения суммарного пути против часовой стрелки.
beginclrscr;m1:writeln('Vvedite nomer nashalnoi koordinati');readln(nash);if nash>n thenbeginwriteln('Nevernii vvod');goto m1;end;m2:writeln('Vvedite nomer koneshnoi koordinati');readln(kon);if kon>n thenbeginwriteln('Nevernii vvod');goto m2;end;writeln('Vvedite put do tupika');readln(dl); Вводим начальные координатыЕсли начальная координата больше общего числа возможных остановок на пути, выводится ошибка.Ввод конечной координатыЕсли конечная координата больше общего числа возможных остановок на пути, выводится ошибка.Ввод расстояния до тупика
new(tek);perv:=tek;if kon=1 then perv^.zn:=true else perv^.zn:=false;writeln('Vvedite put 1');readln(tek^.s);tek^.Rln:=nil;tek^.Lln:=nil;pred:=perv;perv1:=perv;for i:=2 to n dobeginnew(tek);pred^.Rln:=tek;tek^.lln:=pred;writeln('Vvedite put ',i);readln(tek^.s);tek^.Rln:=nil;pred:=tek;if i=nash then perv1:=tek;if i=kon then tek^.zn:=true else tek^.zn:=false;end;tek^.Rln:=perv;perv^.Lln:=tek; Здесь задается вопрос о величине каждой в отдельности ветви.Задание величины длины пути до тупика при переходе по стрелке
m3:writeln('Vvedite napravlenie:');writeln(' Y- Po shasovoi strelke');writeln(' N- Protiv shasovoi strelki');zn:=readkey;case zn of'Y','y':poisk1;'N','n':poisk2;elsebeginwriteln('Nevernii vvod,povtorite ese ras');goto m3;end;end;writeln('Proidennii put: ',znash);readkey;end. Вводится направления движения которое считается более оптимальным, то есть задается движение поезда по часовой стрелки или против часовой.Y-по часовойX-против часовойПри ошибки ввода неправильного значения выдается просьба ввода еще раз.Вывод длины пройденного пути

(Рис.2)

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


5. Модель движения поезда рассмотренная в MatLab

Для того чтоб знать расположение в данный момент поезда на маршруте, используем пакет Simulink в программе MatLab. Рассмотрим граф с переходящей меткой, стоящей в той вершине, в которой находиться поезд в конкретный момент времени. Данная модель является динамическим объектом. Динамический объект – это объект, поведение (выход) которого зависит не только от текущего значения входных воздействий (сигналов), но и от их значений в предыдущие моменты времени. Модель находит кратчайший путь и идет по нему. То есть в данную модель включено цифровое устройство – счетчик времени.

Модель обнаружения поезда на путях (логическая схема).

Данная логическая схема обеспечивает удобный и наглядный визуальный контроль за поведением виртуальной модели железной дороги. Достаточно лишь запустить Simulink в режиме симуляции созданной модели системы. После запуска программа определяет начальную и конечную станцию, находит кратчайший маршрут движения, запускается счетчик времени, и производиться перемещения метки поезда по вершинам до конечной станции. Для изменения конечной и начальной станции достаточно редактировать лишь два блока: DataStoreRead – начальная вершина, DataStoreRead1- конечная вершина

Входные данные к логической схеме:

е1 — конечнная станция 1

е2 — конечнная станция 2

е3 — конечнная станция 3

е4 — конечнная станция 4

е5 — конечнная станция 5

с1 — текущая станция 1

с2 — текущая станция 2

с3 — текущая станция 3

с4 — текущая станция 4

с5 — текущая станция 5

s — конечная станция.

Поступают на входы в виде двоичного сигнала

Логическая функция реализованной модели

с1 = е1

( c2 v c5 ) v e2
c5 v e5
c2

с2 = е2

( c1 v c3 ) v e1
c3 v e3
c1

с3 = е3

( c2 v c4 ) v e2
c4 v e4
c2

с4 = е4

( c3 v c5 ) v e3
c5 v e5
c3

с5 = е5

( c4 v c1 ) v e4
c1 v e1
c4

s = c1

e1 v c2
e2 v c3
e3 v c4
e4 v c5
e5