На головну

jmp begin

  1. A BEGINNER'S GUIDE
  2. Anti-tobacco treaty begins
  3. Else begin
  4. Match the beginning and the ending of a sentence.
  5. The beginning of a restaurant business
  6. The Beginning of Formal Education

; Кінець

exit:

Питання до лабораторної роботи №8

  1. Архітектура системи. Особливості схемотехніки
  2. Мажоритарний принцип контролю інформаційних сигналів датчиків: ІD1, ІD2, ІD3
  3. Програмування МС І8255. Керуюче слово
  4. Програмування МС І8253. Керуюче слово
  5. Використання лічильників Ст0, Ст1, Ст2 в системі управління
  6. Використання режиму реального часу функціонування лічильниківСт1, Ст2
  7. Логічна обробка сигналів готовності: D1, D2, D3
  8. Перевірка динаміки системи в залежності від сигналів готовності в різних комбінаціях окремо від інформаційних сигналів
  9. Перевірка динаміки системи в залежності від інформаційних сигналів (ID1, ID2, ID3) в різних комбінаціях окремо від сигналів готовності
  10. Оптимізація архітектури системи

Приклади виконання залікової робіи

Імітація роботи з/д вокзалу

Завдання

Розробити програму , яка моделює з/д вокзал.

План

Коли приходить поїзд виводиться інформація про його маршрут, кількість пасажирів,кількість вагонів, тривалість маршруту. Вокзал має дві колії (в два напрямки) тому одночасно завантажуватися можуть лише два потяги , інші чекають своєї черги на додаткових тупикових коліях(по 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р.

 



  1   2   3   4   5   6   7   8   9   10   11   12   13   14

Знайомство з середовищем DELPHI | Interface | НАЛАШТУВАННЯ DELPHI | ЗНАЙОМСТВО З КОМПОНЕНТАМИ | Proc ProcDelay | Mov al, 10000001b ; 81h | Mov al, 10001000b ; 88h | MOV AL , 10101110 ;АЕН | OUT lFh, AL | Out lFH,al |

© um.co.ua - учбові матеріали та реферати