Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Кафедра геологии

Коли приходить поїзд виводиться інформація про його маршрут, кількість пасажирів,кількість вагонів, тривалість маршруту. Вокзал має дві колії (в два напрямки) тому одночасно завантажуватися можуть лише два потяги, інші чекають своєї черги на додаткових тупикових коліях(по 3 штуки на кожну колію). Семафори(10 штуки): два - на в’їзді до вокзалу, два - на виїзді, шість – на додаткових коліях. В програмі існує 4 потяги, які курсують різними маршрутами і зупиняються на вокзалі, семафори повинні просигналізувати їм, коли треба зупинитися, поїхати або стати на додаткову колію. Також у потягів існують пріоритети, які можуть змінюватися. Залежно від них потяги допускають на вокзал. На пріоритет певним чином впливають: середня швидкість потяга, кількість пасажирів, кількість вантажу, пріоритет маршруту, час потрібний на завантаження, надійність.

Кружечки - семафори

Рис.4.3 Схема розташування колій

Сигнал прибулих потягів формується так:

PC(7)- 1-якщо ліва колія

PC(4)- 1-якщо права колія

Рис. 4.4 Схема електрична функціональна

Опис функціонування

Програма імітує роботу з/д вокзалу. Програма використовує бібліотеку тривимірної графіки OpenGL для графічної реалізації алгоритму. Тому координати об’єктів мають вигляд дробових чисел. Для анімації використовується таймер form5.timer1, який приймає значення від 1 до 551 мілісекунд, відповідно прискорюючись чи сповільнюючись, шаг таймера 50 мілісекунд. В прграмі рухаються 4 потяги. Кожен потяг може мати від 1-го до 10-ти вагонів.

Структура потяга:

tr=record //поїзд

coun:byte; // кількість вагонів

vagon:array [1..10] of va; // масив вагонів

name:string; // ім’я

num:byte; // номер

cond:byte; // стан

prio:integer; // пріоритет

timez:integer; // час на завантаження

track:byte; // доп. Трек який відповідає потягу

trk:boolean; // лівий/правий напрямок руху

speed:byte; // швидкість (середня)

pas:integer; // кількість пасажирів

timemar:string; // час маршруту (середній)

goods:integer; // кількість товарів

mail:integer; // кількість пошти

end;

Структура вагона:

va=record // вагон

nametxt:string; // ім’я вагона

num:byte; // номер

xa,xb,xc,xd:real; // коорд

ya,yb,yc,yd:real; // коорд

typev:byte; // тип вагона

vert:boolean; // вертикальний

end;

Існують такі типи вагонів:

1-локомотив

2-поштовий

3-пасажирський

4-товарний (вантажний)

Відповідно до типу вагон приймає колір:

Пасажирський – зелений

Поштовий – фіолетовий

Товарний - сірий

Локомотив - червоний

Також вагон має пріоритет чим він більший тим швидше потяг допустять на вокзал:

Локомотив-0

Пасажирський-2

Поштовий-3

Товарний-1

На кожній лінії розташовані по три доп. Треки, на яких чекають потяги.

Структура треку:

track=record // доп. трек

xa,xb:real; // коорд

ya,yb:real; // коорд

ok:byte; // наявність поїзда

end;

Якщо потяга на доп. Треку немає тоді змінна ok має значення 0, інакше від 1 до 4.

Рис. 4.5 Інтерфейс програми

На малюнку семафори відмічені цифрами.

Семафори присутні на кожній лінії (по 5 штук) загалом їх 10.

Структура семафора:

sem=record // семафор

x:real; // коорд

y:real; // коорд

l:boolean; // вкл/викл

end;

Якщо l=true тоді семафор зелений, інакше червоний.

Рухаються потяги завдяки системі станів, стан потяга знаходиться у полі cond.

Відповідно до стану змінюються координати вагонів, потяг стоїть чи рухається.

Для кожної лінії існують свої номери станів: для верхньої(лівої) та нижньої(правої).

Стани змінюються послідовно, виконавши певні умови потяг приймає наступний з можливих станів. Таким чином, змінюючи стани, потяг рухається зліво-направо для верхньої(лівої) колії, чи зправа-наліво для нижньої(правої) колії.

Рух потяга можно зобразити послідовною зміною станів:

0->15->3->5->6->9->11->13->1 –для нижньої(правої) колії

1->14->2->4->7->8->10->12->0 –для верхньої(лівої) колії

Опис станів:

0 – лівий досяг кінця

1 – правий досяг кінця

2 – лівий перед семафором 1

3 – правий прерд семафором 6

4 – лівий їде на доп. трек

5 – правий їде на доп. трек

6 – правий стоїть на дор. треку

7 – лівий стоїть на дор. треку

8 – лівий їде на вокзал

9 – правий їде на вокзал

10 – лівий на вокзалі

11 – правий на вокзвлі

12 – лівий їде

13 – правий їде

14 – лівий піїзджає до семафора 1

15 – правий піїзджає до семафора 6

Опис системних змінних:

st,rst:real; // краї вокзалу

trackL:array [1..3] of track; // доп. треки

trackR:array [1..3] of track; // доп. треки

texturew,textureh:integer; // параметри текстури 1

texturew2,textureh2:integer;// параметри текстури 2

texture:^tex; // текстура 1

texture2:^tex; // текстура 2

im,im2:tbitmap; // рисунки

sema:array [1..10] of sem; // семафори

olg,org:byte; // поїзд їде на доп. трек

vlg,vrg:byte; // поїзд їде на вокзал

vlt,vrt:byte; // таймер находження поїзда на вокзале

slp,srp:byte; // таймер проїзду поїзда через семафор

vlp,vrp:byte; // таймер від’їзду поїзда з вокзалу

tabp:boolean; // змінна таблиці

vbn:boolean; // змінна кольору фону

Змінні olg(ліва),org(права) приймають значення більше 0, якщо якийсь потяг їде на свії доп. Трек.Ця змінна існує для того щоб потяги не зіштовхувались. Тобто потяг не поїде на свій доп. Трек поки попередні робить це.

Змінні vlg(ліва),vrg(права) приймають значення більше 0, якщо якийсь потяг їде на вокзал.Ці змінні снують для того щоб потяги не зіштовхувались. Тобто для того ж що і olg,org.

Змінні vlt(ліва),vrt(права) це таймери, вони затримують потяг на вокзалі, вони імітують розвантаження/завантаження. Вони приймають значення поля time потяга. Time заповнюється відповідно до типу вагонів:

Локомотив -0

Пасажирський -2

Поштовий -3

Товарний -5

Потім сума часу всіх вагонів множиться на 4.

Змінні slp(ліва),srp(права) теж таймери. Ці таймери тримають семафори 1(slp) та 6(srp) ввімкненими відповідну кількість часу, вона вираховується за формулою:

Slp(srp):=(d+2*p)*coun;

d- довжина вагону(0,08)

p- щілини між вагонами(0,01)

coun- кількість вагонів

За один такт таймера потяг проходить 0,01 тому помноживши довжину вагона на кількість вагонів отримаємо час необхідний на проходження потяга повз семафор.

Змінні vlp(ліва),vrp(права) –таймери вони затримують ввімкненим семафори 10() та 5().

Їх розмір формується таким чином як і slp,srp.

Тепер можна описати алгоритм проходження потяга по верхній(лівій) колії:

14->2->4->7->8->10->12->0

Потяг має стан 14 і рухається до семафору 1.

Досягши семафору 1 Стан потягу стає 2.

Стан 2: перевіряється стан olg,vlg якщо обидві 0 потяг отримує доп. Трек,olg стає не 0 і стан потягу стає 4.

Стан 4: потяг рухається на свій доп трек,загорається семафор 1 (slp<>0), досягши його він отримує стан 7.Якщо vlg та olg рівні 0 тоді вибирається потяг з найбільшим пріоритетом, йому присвоюється 8,vlg стає не 0 і він рухається на вокзал, інакше чекає черги.

Приїхавши на вокзал розвантажується/завантажується, чекає vlp<>0, а потім отримує стан 12 і їде.

Досягши певної точки за екраном отримає стан 0.

Доїхавши до кінця нижньої(правої) колії потяг отримує відповідні координати та стан і починає рухатися по верхній(лівій) колії і навпаки.

Рис. 4.6 Алгоритм для верхньої (лівої) колії

Рис. 4.7 Алгоритм для нижньої (правої) колії

Список рекомендованої літератури

1. С. Т. Хвощ, Н. Н. Варлінский, Е. А Попов – 1987р. Мікропроцесоры і мікроеом в системах автоматичного управління

2. В. Л. Шило - 1989г. Популярні мікросхеми ТТЛ

3. С. В. Якубовський Аналогові та цифрові інтегральні мікросхеми. – 1990р.

4. О. С. Козлов, Е. А. Метлицький, А. В. Екало – 1981р. Архітектура багатопроцесорних обчислювальних систем.

5. В. Д. Байков, В. Б. Смолов Спеціалізовані процесори: интераціонні алгоритми і структури. – М. 1985р.

6. А. І. Березенко, Л. Н. Корогин, А. Р. Назарьян Мікропроцесорні комплекси підвищеної швидкодії. М., -1981г.

7. В.І. Юров Асемблер - 2004 р.

8. Б.В. Тарабрін Інтегральні мікросхеми - 1983р.

9. Д.С. Гурлев Довідник з електронних пристроїв - 1974р.

10. Пей Ан Сполучення ПК із зовнішніми пристроями – 2001р.

Кафедра геологии

Состав, морфология и диагностические свойства

породообразующих минералов

Методические указания к циклу лабораторных работ

по инженерной петрографии

курса «Инженерная геология и гидрогеология» для студентов

специальности 311100 – «Городской кадастр»


Дата публикования: 2014-11-04; Прочитано: 257 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.014 с)...