Пояснительная записка (1210991), страница 5
Текст из файла (страница 5)
Таблица регистрации изменения индикации и поездной ситуации у ДСП: таблица ONLINE2 содержит массив данных о текущей индикации и поездной ситуации на каждой станции. В момент изменения индикации происходит перезапись отображения изменений на табло у ДНЦ.
Таблица TABLO DK отображает текущую поездную ситуацию на табло ДК, где показано путевое развитие всех станций с индикацией занятия приемо-отправочных путей и участков перегона. На занятом участке отображается номер поезда и количества вагонов в составе.
-
База данных маршрутно-релейной централизации
Таблицы базы данных маршрутно-релейной централизации включают в себя информацию о положении стрелок, о значении напольных сигналов, отражают состояние секций и маршрутных реле и секций, в которых находится поезд, а также содержит информацию о задаваемых маршрутах.
-
База данных документации
Каждая таблица базы данных документации – это журналы, книги, разрешения и натурные листы, которые есть на каждой станции и содержат записи о поездных ситуациях, о повреждениях, о выданных разрешениях на работу. Таблицы GRUS, VAGONS, POESDA, VAGONBAS представляют базы груза, вагонов, поездов и составов соответственно.
-
База данных графика движения поездов
Таблицы базы данных графика движения поездов отображают фиксацию подключения станции к полигону, содержат расписание поездов, проходящих по станции, информации о технологических окнах, о движении поездов, а также о выставленных метках на графике движения.
-
База данных пульт-табло
В базу данных пульт-табло включены таблицы, содержащие информацию о станциях, о подключении их к полигону, о кнопках, соответствующих каждой станции, а также включают в себя таблицу пульт-табло, отображающую тип объектов, находящихся на реальном пульт-табло.
-
База данных автоматизированных рабочих мест
База данных учебно-тренажерного полигона дополнена таблицами АРМ ТК, АРМ ДСП, АРМ АПВО. Данные АРМы необходимы для подключения к полигону других служб, обеспечивающих перевозочный процесс. Виртуальные рабочие места для этих АРМ еще не созданы и их необходимо создать при поддержке специалистов, эксплуатирующих эти АРМ.
-
SQL-запросы (добавление, изменение и удаление данных)
Ниже приведен фрагмент листинга программы с добавлением новых данных (Insert) в таблицу путевых участков (St_Fields):
INSERT INTO ST_FIELDS (NOM, FIRST, NEXT, NOBJ, USE, DIR, TRAIN, GRAPH, X, Y, OBJT, LITER, N_STATION, N_FIELD)
VALUES (:NOM, :FIRST, :NEXT, :NOBJ, :USE, :DIR, :TRAIN, :GRAPH, :X, :Y, :OBJT, :LITER, :N_STATION, :N_FIELD)
Ниже приведен фрагмент листинга программы с обновлением данных (Update) в таблицу путевых участков (St_Fields):
UPDATE ST_FIELDS
SET FIRST =: FIRST, NEXT =: NEXT, NOBJ =: NOBJ, USE =: USE, DIR =: DIR, TRAIN =: TRAIN, GRAPH =: GRAPH, X =:X, Y =: Y, OBJT =: OBJT, LITER =: LITER, N_STATION =: N_STATION, N_FIELD =: N_FIELD
WHERE NOM =: OLD_NOM
Ниже приведен фрагмент листинга программы с удалением данных (Delete) в таблицу путевых участков (St_Fields):
DELETE FROM ST_FIELDS
WHERE NOM =: OLD_NOM
Refresh:
SELECT NOM, FIRST, NEXT, NOBJ, USE, DIR, TRAIN, GRAPH, X, Y, OBJT, LITER, N_STATION, N_FIELD
FROM ST_FIELDS
WHERE ST_FIELDS.NOM =: OLD_NOM
Ниже приведен фрагмент листинга программы с добавлением новых данных (Insert) в таблицу светофоров (St_Signal):
INSERT INTO ST_SIGNAL (NOM, FIELD, TYP, L, C, PP, WAY, IP, LOCK, H, BLINK_, GRNUM, N_STATION, N_FIELD)
VALUES (:NOM, :FIELD, :TYP, :L, :C, :PP, :WAY, :IP, :LOCK, :H, :BLINK_, :GRNUM, :N_STATION, :N_FIELD)
Ниже приведен фрагмент листинга программы с обновлением данных (Update) в таблицу светофоров (St_Signal):
UPDATE ST_SIGNAL
SET FIELD =: FIELD, TYP =: TYP, L =: L, C =: C, PP =: PP, WAY =: WAY, IP =: IP, LOCK =: LOCK, H =: H, BLINK_ =: BLINK_, GRNUM =: GRNUM, N_STATION =: N_STATION, N_FIELD =: N_FIELD
WHERE NOM =: OLD_NOM
Ниже приведен фрагмент листинга программы с удалением данных (Delete) в таблицу светофоров (St_Signal):
DELETE FROM ST_SIGNAL
WHERE NOM =: OLD_NOM
Refresh
SELECT NOM, FIELD, TYP, L, C, PP, WAY, IP, LOCK, H, BLINK_, GRNUM, N_STATION, N_FIELD
FROM ST_SIGNAL
WHERE ST_SIGNAL.NOM =: OLD_NOM
Ниже приведен фрагмент листинга программы с добавлением новых данных (Insert) в таблицу смещения станций относительно пути (St_Smeshenie):
INSERT INTO ST_SMESHENIE (NOM_SM, SMX, SMY, N_STATION)
VALUES (:NOM_SM, :SMX, :SMY, :N_STATION)
Ниже приведен фрагмент листинга программы с обновлением данных (Update) в таблицу смещения станций относительно пути (St_Smeshenie):
UPDATE ST_SMESHENIE
SET NOM_SM =: NOM_SM, SMX =: SMX, SMY =: SMY, N_STATION =: N_STATION
WHERE NOM_SM =: OLD_NOM_SM
Ниже приведен фрагмент листинга программы с удалением данных (Delete) в таблицу смещения станций относительно пути (St_Smeshenie):
DELETE FROM ST_SMESHENIE
WHERE NOM_SM =: OLD_NOM_SM
Refresh
SELECT NOM_SM, SMX, SMY, N_STATION
FROM ST_SMESHENIE
WHERE NOM_SM =: OLD_NOM_SM
Ниже приведен фрагмент листинга программы с добавлением новых данных (Insert) в таблицу секций (St_Section):
INSERT INTO ST_SECTION (NOM, USE, TYP, PREV, NEXT, INDF, M1, M2, BLOCK, SV, VZ, NMARSH, SWICH, N_FIELD, N_STATION)
VALUES (:NOM, :USE, :TYP, :PREV, :NEXT, :INDF, :M1, :M2, :BLOCK, :SV, :VZ, :NMARSH, :SWICH, :N_FIELD, :N_STATION)
Ниже приведен фрагмент листинга программы с обновлением данных (Update) в таблицу секций (St_Section):
UPDATE ST_SECTION
SET USE =: USE, TYP =: TYP, PREV =: PREV, NEXT =: NEXT, INDF =: INDF, M1 =: M1, M2 =: M2, BLOCK =: BLOCK, SV =: SV, VZ =: VZ, NMARSH =: NMARSH, SWICH =: SWICH, N_FIELD =: N_FIELD, N_STATION =: N_STATION
WHERE NOM =: OLD_NOM
Ниже приведен фрагмент листинга программы с удалением данных (Delete) в таблицу секций (St_Section):
DELETE FROM ST_SECTION
WHERE NOM =: OLD_NOM
Refresh
SELECT NOM, USE, TYP, PREV, NEXT, INDF, M1, M2, BLOCK, SV, VZ, NMARSH, SWICH, N_FIELD, N_STATION
FROM ST_SECTION
WHERE ST_SECTION.NOM =: OLD_NOM
Ниже приведен фрагмент листинга программы с добавлением новых данных (Insert) в таблицу стрелок (St_Point):
INSERT INTO ST_POINT (NOM, INDEXF, PL, DIRPL, DIRMN, MASKPL, MASKMN, SK, INDSM, OPLACE, HANDLE, NSKPL, NSKMN, INDPL, INDMN, INDVZ, INDO, PLACEO, PLANNUMBER, N_FIELD, N_STATION)
VALUES (:NOM, :INDEXF, :PL, :DIRPL, :DIRMN, :MASKPL, :MASKMN, :SK, :INDSM, :OPLACE, :HANDLE, :NSKPL, :NSKMN, :INDPL, :INDMN, :INDVZ, :INDO, :PLACEO, :PLANNUMBER, :N_FIELD, :N_STATION)
Ниже приведен фрагмент листинга программы с обновлением данных (Update) в таблицу стрелок (St_Point):
UPDATE ST_POINT
SET INDEXF =: INDEXF, PL =: PL, DIRPL =: DIRPL, DIRMN =: DIRMN, MASKPL =: MASKPL, MASKMN =: MASKMN, SK =: SK, INDSM =: INDSM, OPLACE =: OPLACE, HANDLE =: HANDLE, NSKPL =: NSKPL, NSKMN =: NSKMN, INDPL =: INDPL, INDMN =: INDMN, INDVZ =: INDVZ, INDO =: INDO, PLACEO =: PLACEO, PLANNUMBER =: PLANNUMBER, N_FIELD =: N_FIELD, N_STATION =: N_STATION
WHERE NOM =: OLD_NOM
Ниже приведен фрагмент листинга программы с удалением данных (Delete) в таблицу стрелок (St_Point):
DELETE FROM ST_POINT
WHERE NOM =: OLD_NOM
Refresh
SELECT NOM, INDEXF, PL, DIRPL, DIRMN, MASKPL, MASKMN, SK, INDSM, OPLACE, HANDLE, NSKPL, NSKMN, INDPL, INDMN, INDVZ, INDO, PLACEO, PLANNUMBER, N_FIELD, N_STATION
FROM ST_POINT
WHERE ST_POINT.NOM =: OLD_NOM
-
Подготовка структуры данных
Входными данными программы является однониточный план станции, а также списки объектов, находящихся на станции. Эти данные могут быть получены из ранее сформированного редактором однониточного плана станции файла. Таким образом, в первую очередь программа загружает из выбранного файла списки объектов, а именно: списки полей, секций, светофоров и стрелок.
Загрузка происходит путем считывания из файла характеристик объектов конкретного вида и создания их копий в памяти компьютера в виде динамических массивов: полей – «F», секций – «Sec», сигналов – «Sv», стрелок – «Point».
После прочтения из файла всей необходимой информации осуществляется генерация карты полей с установкой необходимой связи между объектами, а именно: задание направления движения по полям, номер секции, к которой относится данное поле и так далее.
-
Типы данных
Перечисляемый тип пользовательского набора данных представляет собой упорядоченное множество значений.
Для описания типа путевого участка создан перечисляемый тип «SecType», в состав которого входят все возможные типы путевых участков на станции.
Рисунок 2.1 – Тип секции (множество)
Начиная с младших разрядов:
-
NC – нецентрализованный участок;
-
IP – участок приближения;
-
PP – приемо-отправочный путь;
-
BU – блок-участок;
-
PU – бесстрелочный участок;
-
SP – стрелочный участок.
Для описания типов объектов, связанного с элементом пути создан перечисляемый тип «ObjectType», в состав которого входят все возможные типы объектов.
Рисунок 2.2 – Тип объекта, связанного с элементом пути
Начиная с младших разрядов:
-
Portal – Портал;
-
Section – Секция;
-
Shild – Щиток;
-
Svet – Светофор;
-
Strel – Стрелка;
-
None – Пусто.
Ниже приведен фрагмент листинга программы с объявлением перечисляемого типа «SecType»:
SecType = (SP, PU. BU, РР, IP, NC);
Ниже приведен фрагмент листинга программы с объявлением перечисляемого типа «ObjectType»:
ObjectType = (None, Strel, Svet, Shild, Section, Portal);
Для описания состояния путевого участка создан перечисляемый тип «UseType», в состав которого входят все возможные состояния путевых участков на станции.
Рисунок 2.3 – Состояние путевого участка
Начиная с младших разрядов:
-
Occupied – Занято;
-
Ust – Установка маршрута;
-
Lock – Замкнут в маршруте;
-
ReUst – Отмена маршрута;
-
UnLockManual – Искусственная разделка;
-
DubLock – Двойное замыкание.
Ниже приведен фрагмент листинга программы с объявлением перечисляемого типа «UseType»:
UseType = (Occupied, Ust, Lock, ReUst, UnLockManual, DubLock);
SetUseType = SET OF UseType;
Для описания направления на путевом участке создан перечисляемый тип «Direct», в состав которого входят все возможные направления на путевых участках.
Рисунок 2.4 – Возможные направления движения
Начиная с младших разрядов:
-
Left (Влево);
-
Right (Вправо);
-
Left-Right (Влево-Вправо);
-
Up (Вверх);
-
Left-Up (Влево-Вверх);
-
Right-Up (Вправо-Вверх);
-
Left-Right-Up (Влево-Вправо-Вверх);
-
Down (Вниз);
-
Left-Down (Влево-Вниз);
-
Right-Down (Вправо-Вниз);
-
Left-Right-Down (Влево-Вправо-Вниз);
Ниже приведен фрагмент листинга программы с объявлением перечисляемого типа «Direct»:
Direct = (Left, Right, LR, Up, LU, RU, LRU, Down, LD, RD, LRD);
DirSet = SET OF Direct;
Для описания типов светофоров создан перечисляемый тип «SygnType», в состав которого входят все возможные типы светофоров.
Рисунок 2.5 – Тип светофоров (множество)
Начиная с младших разрядов:
-
Poesd – Поездной;
-
Man – Маневровый;
-
Chet – Четный;
-
NChet – Нечетный;
-
Dop – Дополнительный;
Ниже приведен фрагмент листинга программы с объявлением перечисляемого типа «SignType»:
SignType = (Poesd, Man, Chet, NChet, Dop);
SignTypeSet= SET OF SignType;
SignLight = (None_, Red_, Green_, White_, Destroy);
SignSet = SET OF SignLight;
На множестве значений любого перечисляемого типа определены все возможные операторы отношения. При этом необходимо, чтобы оба операнда относились к одному и тому же типу. Значение порядковых номеров констант определяются очередностью их записи при описании типа. Так, если Section- переменная типа SecType, то после выполнения операции присвоения: «Section:= SecType(0);» переменная «Section» будет иметь значение «SP» [4].
-
Тип данных Direct. Направление движения
Для применения маршрутов передвижения в имитационной модели необходимо определять возможные направления движения по путевому участку. Для этого создается перечисляемый тип данных Direct.
















