Обозначение
|
Назначение
|
A
|
B
|
выход
|
Vcc
|
питание +5В
|
RO
|
разрешение передачи
|
Z
|
вход
|
Y
|
выход
|
GND
|
земля
|
DI
|
разрешение приёма
|
Рисунок
18 - Схема сопряжения с линией
3. Разработка алгоритмов и программного обеспечения
3.1 Алгоритм работы подпрограммы считывания информации с реле
Алгоритм подпрограммы представлен на рисунке 19.
Рисунок
19 - Алгоритм работы подпрограммы считывания информации с реле
3.2 Алгоритм проверки и управления состоянием переезда
Алгоритм подпрограммы представлен на рисунке 20.
Рисунок
20 - Алгоритм проверки и управления состоянием переезда
3.3 Алгоритм передачи информации в линию
Алгоритм подпрограммы представлен на рисунке 21.
Рисунок
21 - Алгоритм передачи информации в линию
3.4 Алгоритм закрытия/открытия переезда
Алгоритм подпрограммы представлен на рисунке 22.
Рисунок 22 - Алгоритм закрытия/открытия переезда
3.5 Описание работы программы
Листинг программы ПЛИС приведен в приложении А. Далее в пункте изложены
основные принципы организации вычислений и дано описание используемых портов,
сигналов и процессов.
В начале программы объявлены все порты ввода и вывода информации:
· F1, F2 -
входы, на которые подаётся напряжение +5В при наличии питания на фидерах и
нулевое напряжение при его отсутствии.
· O1_T, O1_nT, O1_A, O1_B, O2_T, O2_nT, O2_A, O2_B, O3_T, O3_nT, O3_A, O3_B, O4_T, O4_nT, O4_A, O4_B - входы, на которые подаются импульсы
от устройств безопасного
ввода информации(c огневых реле ОР1
- ОР4).
· P1_T, P1_nT, P1_A, P1_B, P2_T, O2_nT, P2_A, P2_B, P3_T, P3_nT, P3_A, P3_B - входы, на которые подаются импульсы от устройств безопасного ввода
информации(c путевых реле ПР1 - ПP3).
· K1, K2 -
выходы управления переездными светофорами.
· SendInfo - вход, по которому осуществляется выдача информации
о состоянии МПС АПС.
· Info - выход, по которому производится последовательная
передача данных телесигнализации.
· Synchr - вход, сигнал синхронизации передачи.
· Zvuk - выход, по которому осуществляется звуковая
сигнализация.
· Pereezd - выход, несущий информацию о состоянии переезда.
· FStatus - вектор, несущий информацию о состоянии фидеров
питания.
Далее объявлены сигналы, используемые в программе:
· Close - сигнал, устанавливаемый при включении путевых реле,
используемый далее в процессе включения переездной сигнализации и закрытии
переезда.
· P1 - сигнал, устанавливаемый при включении путевого реле ПР1.
· P2 - сигнал, устанавливаемый при включении путевого реле ПР2.
· P3 - сигнал, устанавливаемый при включении путевого реле ПР3.
· O1 - сигнал, устанавливаемый при включении огневого реле O1.
· O2 - сигнал, устанавливаемый при включении путевого реле O1.
· O3 - сигнал, устанавливаемый при включении путевого реле O1.
· O4 - сигнал, устанавливаемый при включении путевого реле O1.
· CLK, ClkL,
- внутренние тактирующие сигналы, используемые для реализации различного рода
задержек. Назначение каждого из сигналов приведено в комментариях листинга.
При запуске программы все сигналы инициализируются в нуль.
Описание процессов.
· p1, p2, p3, o1, o2,o3,o4 - процессы, проверяющие состояние путевых и огневых реле.
Если приходит фронт сигнала Т производится четыре замера состояния на
линиях Т, не-Т, А и В через 1.5, 3, 6.5 и 8 мс, т.е. по два в первый и второй
полупериоды. Со следующим фронтом начинается новый цикл считывания. Состояние
реле определяется следующим образом: если на вход А приходит сигнал Т, а на
вход В - сигнал не-Т, то реле замкнуто, иначе - разомкнуто. При определении состояния
реле устанавливается сигнал Blok=1.
Если Blok=0, это говорит о нарушении
парафазности или импульсного характера сигнала.
Рисунок
25 - Временная диаграмма работы процесса
· fiders. Процесс проверяет наличие напряжения на фидерах
питания. Состояние о фидерах питания выдается по телесигнализации дежурному по
переезду.
· ПР. Процесс, определяющий состояние переезда. При вступлении
поезда на участок приближения выставляется сигнал на закрытие переезда. Далее
вычисляется направление движения, и при выключении путевых реле разрешается
открыть переезд.
· delayL. Процесс реализует изменение внутреннего тактирующего
сигнала ClkL для мигания ламп переездных светофоров.
· closeP. Процесс реализует выполнение алгоритма закрытия
переезда. Проверяет состояние сигналов Close и при наличии на нем выдаёт
сигналы на включение ламп переездных светофоров и звуковой сигнализации в
зависимости от состоянии сигнала ClkL.
· TS. Процесс выдачи в порт InfoOut информации телесигнализации. Выдаётся стартовый бит,
четыре бита адреса для идентификации переезда, 6 бит данных телесигнализации,
бит паритета и стоповый бит.
data
(0) = O1;состояние огневого реле ОР1
data
(1) = O2;состояние огневого реле ОР2
data
(2) = O3;состояние огневого реле ОР3
data
(3) = O4; состояние огневого реле ОР4
data
(4) = Pereezd; состояние переезда
data(6
downto 5) := FStatus; состояние фидеров питания
При включении системы происходит инициализация внутренних сигналов,
осуществляется считывание информации с входных портов и её обработка. Если
какое-либо путевое реле включается, запускаются процессы, обеспечивающие
алгоритмы закрытия переезда и включения переездной сигнализации. Также
запускаются процессы, контролирующие включённое состояние огневых реле ламп
переездных светофоров.
4. Расчет показателей безотказности и безопасности системы
Основными показателями безотказности и безопасности системы являются:
безотказность СЖАТ - свойство системы непрерывно сохранять
работоспособное состояние в течение некоторого времени или наработки.
Показатели безотказности делятся на две группы: показатели невосстанавливаемых
и восстанавливаемых изделий.
Невосстанавливаемые изделия - изделия, поведение которых существенно лишь
до первого отказа, - характеризуются следующими количественными показателями
надежности: интенсивностью отказов l(t); вероятностью безотказной работы Р(t); вероятностью
отказа Q(t); средней наработкой до отказа То.
Восстанавливаемые изделия - изделия, эксплуатация которых допускает их
многократный ремонт, - характеризуется следующими количественными показателями
надежности: параметрами потока отказов w(t) и потока восстановлений m(t); функцией готовности Кг(t); коэффициентом
готовности Кг; средним временем работы между двумя отказами tср; средним
временем восстановления tв.
Безопасность СЖАТ - свойство системы непрерывно сохранять исправное,
работоспособное или защитное состояние в течение некоторого времени или
наработки. Показатели безопасности аналогичны показателям безотказности.
Для невосстанавливаемых систем рассчитывают следующие показатели:
вероятность безопасной работы Рб(t); вероятность опасного отказа Qоп(t);
интенсивность опасных отказов lоп(t); среднюю наработку до опасного отказа Топ.
Вероятность безотказной работы мажоритарной структуры с умеренной связью
определяется выражением:
,
где
P1, Pмэ - вероятности безотказной работы соответственно
канала обработки информации и мажоритарного элемента МЭ; - число информационных
выходов модуля.
Для
разрабатываемой системы n=3.
Для
вычислительного канала имеем:
Резисторы
- 16 шт. = 1/ч
Конденсаторы
- 13 шт. = 1/ч
Диоды
- 5 шт. = 1/ч
Интегральные
микросхемы - 6 = 1/ч
Для
БМЭ:
Резисторы
- 29 шт. = 1/ч
Конденсаторы
- 20 шт. = 1/ч
Диоды
- 21 шт. = 1/ч
Транзисторы
- 9 шт. = 1/ч
Интегральные
микросхемы - 3 = 1/ч
Реле
- 6 шт. = 1/ч
Таким
образом,
.
Вероятность
безотказной работы за год составляет:
=2,56-1,679=0,881,
или
88,1%.
Вероятность
появления опасного отказа в мажоритарном модуле определяется выражением:
, (2)
где tД - период
диагностирования элементов модуля;
li - интенсивность отказов канала обработки информации.
Основной цикл программы и основные подпрограммы при размещении на
кристалле занимают около 57000 системных вентилей ПЛИС. Учитывая, что значение
средней задержки распространения сигнала равно 12нс, можно принять время
максимального цикла примерно равное 57000*12нс.
Следовательно,
для разработанной системы tД равняется примерно 684мкс или лет. li - есть суммарная интенсивность
отказов, которая составляет:
li = 1/ч
или
0,049 1/лет
Таким
образом вероятность опасного отказа за год составляет:
или %.
Полученная
вероятность соответствует барьеру установленному стандартом. Это позволяет
говорить о том, что систему можно считать безопасной.
вычислительный переезд программный безотказность
Заключение
В результате выполнения данного курсового проекта была разработана
микропроцессорная система автоматической переездной сигнализации.
Разработаны принципиальные схемы вычислительных каналов, устройств
сравнения и контроля, алгоритмы и программное обеспечение МИУС. Произведен
необходимый расчет показателей безопасности и безотказности системы.
Разработанная система полностью отвечает требованиям безопасности,
предъявляемым к СЖАТ.
При проведении расчёта показателей безопасности и безотказности были
получены следующие значения характеристик:
- вероятность безотказной работы Р=0.881;
- вероятность отказа системы (одновременное появление одинакового
сбоя в двух вычислительных каналах) Q=1.1×10-14.
Достоинства данной структуры состоят в простоте реализации; высокой
безопасности; высокой эксплуатационной готовности, т. к. при отказе одного из
каналов система продолжает выполнять свои функции. Однако у данной системы
имеются и свои недостатки: возможность накопления маскируемых отказов в
вычислительных каналах; невозможность обнаружения ошибок в программном
обеспечении, т. к. они одинаково проявляются во всех каналах.
Список литературы
1
Методы построения
безопасных микроэлектронных систем железнодорожной автоматики / В.В.
Сапожников, Вл. В. Сапожников, Х.А. Христов, Д.В. Гавзов; Под ред. Вл. В.
Сапожникова. - М.: Транспорт, 1995. - 272 с.
2
РТМ 32 ЦШ
1115842.01-94. Безопасность железнодорожной автоматики и телемеханики. Методы и
принципы обеспечения безопасности микроэлектронных СЖАТ. - СПб.: ПГУ ПС, 1994.
- 120 с.
3
Щелкунов Н.Н.,
Дианов А.П. Микропроцессорные средства и системы. М.: Радио и связь, 1989.
4
XC2S100 Datasheet. Xilinx. 2001
5
Цифровые
интегральные микросхемы. Справочник/ Богданович М.Н., Грель И.Н., Дубина С.А.,
Прохоренко В.А., Шалимо В.В. - Минск: Полымя, 1996. - 603 с.
6
Системы
железнодорожной автоматики и телемеханики / Кравцов Ю.А., Нестеров В.Л. и др. -
Учебник для ВУЗов. М.: Транспорт, 1996. 400 с.
вычислительный переезд программный безотказность
Приложение А
Листинг программы ПЛИС вычислительного канала
-- Title : mine
- Design : work
- Author : Alexey Kuprienko
- Company : Home
-
- File : mine.vhd
- Generated : Sun Dec 4 17:21:15 2005
- From : interface description file
- By : Itf2Vhdl ver. 1.20
-
-------------------------------------------------------------------------------------------
- Description : курсовой проект по МИУС Куприенко Алексея
-
-------------------------------------------------------------------------------------------IEEE;IEEE.STD_LOGIC_1164.all;IEEE.STD_LOGIC_ARITH.all;IEEE.STD_LOGIC_UNSIGNED.all;mine
is
( : in STD_LOGIC;-- контроль наличия напряжения на фидере 1: in
STD_LOGIC;-- контроль наличия напряжения на фидере 2: in STD_LOGIC; : in
STD_LOGIC;: out STD_LOGIC_VECTOR (1 downto 0);: in STD_LOGIC;: out
STD_LOGIC;_nT : in STD_LOGIC; -- P1 - Путевое реле 1_A : in STD_LOGIC;_B : in
STD_LOGIC;_T : in STD_LOGIC;_nT : in STD_LOGIC; -- P2 - Путевое реле 2_A : in
STD_LOGIC;_B : in STD_LOGIC;_T : in STD_LOGIC; _nT : in STD_LOGIC; -- P1 -
Путевое реле 1_A : in STD_LOGIC;_B : in STD_LOGIC;_T : in STD_LOGIC; _nT : in
STD_LOGIC; -- O1 - ОР1 переездного св.1_A : in STD_LOGIC;_B : in STD_LOGIC;_T :
in STD_LOGIC; _nT : in STD_LOGIC; -- O2 - ОР2 переездного св.1_A : in
STD_LOGIC;_B : in STD_LOGIC;_T : in STD_LOGIC; _nT : in STD_LOGIC; -- O3 - ОР1
переездного св.2_A : in STD_LOGIC;_B : in STD_LOGIC;_T : in STD_LOGIC;_nT : in
STD_LOGIC; -- O4 - ОР2 переездного св.2_A : in STD_LOGIC;_B : in STD_LOGIC;_T :
in STD_LOGIC;: out STD_LOGIC;: out STD_LOGIC;
-K1,K2 -выходной вектор управления светофорами: out STD_LOGIC;: out
STD_LOGIC;-- сигнал выдачи в линию информации о состоянии АПС: in STD_LOGIC--
синхронизация передачи
- СПИСОК СИГНАЛОВ, ИСПОЛЬЗУЕМЫХ В ПРОГРАММЕClose : STD_LOGIC :='0';--
закрыть переездP1 : STD_LOGIC :='0';-- ПР1 замкнутоP2 : STD_LOGIC :='0';-- ПР2
замкнутоP3 : STD_LOGIC :='0';-- ПР3 замкнуто
- БЛОК СИГНАЛОВ, СООТВЕТСТВУЮЩИХ ПОРТАМ ПЛИСO1: STD_LOGIC;O2:
STD_LOGIC;O3: STD_LOGIC;O4: STD_LOGIC;<=not CLK after 0.1 ms; process;
<=not Synchr after 10 ns; process;<=not SendInfo after 3600 s; process;
- СЪЁМ ИНФОРМАЦИИ С ПУТЕВОГО РЕЛЕ 1; ПРОИЗВОДИТСЯ ПОСТОЯННО:
processP1_T1,P1_T2,P1_T3,P1_T4 : STD_LOGIC;P1_nT1,P1_nT2,P1_nT3,P1_nT4 :
STD_LOGIC;P1_A1,P1_A2,P1_A3,P1_A4 : STD_LOGIC;P1_B1,P1_B2,P1_B3,P1_B4 :
STD_LOGIC;Blok : STD_LOGIC :='0';
- __ __
- длительность импульсов и провалов: 5 ms _| |__| |_P1_T'event and
P1_T='1' -- если пришёл фронт сигнала Тfor 1.5 ms;
_A1:=P1_A;_B1:=P1_B;_T1:=P1_T;_nT1:=P1_nT; for 1.5 ms;
_A2:=P1_A;_B2:=P1_B;_T2:=P1_T;_nT2:=P1_nT;for 3.5 ms;
_A3:=P1_A;_B3:=P1_B;_T3:=P1_T;_nT3:=P1_nT; for 1.5 ms;
_A4:=P1_A;_B4:=P1_B;_T4:=P1_T;_nT4:=P1_nT;P1_A1=P1_T1 and P1_A2=P1_T2 and
P1_T1=P1_T2 then P1_B1=P1_nT1 and P1_B2=P1_nT2 and P1_nT1=P1_nT2 then
P1_A3=P1_T3 and P1_A4=P1_T4 and P1_T3=P1_T4 then P1_B3=P1_nT3 and P1_B4=P1_nT4
and P1_nT3=P1_nT4 then P1_A1/=P1_A3 and P1_A2/=P1_A4 then:='1';<='1'; --
путевое реле 1 замкнутоif;if;
end if;if;if;P1_A1=P1_nT1 and P1_A2=P1_nT2 and P1_nT1=P1_nT2 then
P1_B1=P1_T1 and P1_B2=P1_T2 and P1_T1=P1_T2 then P1_A3=P1_nT3 and P1_A4=P1_nT4
and P1_nT3=P1_nT4 then P1_B3=P1_T3 and P1_B4=P1_T4 and P1_T3=P1_T4 then
P1_A1/=P1_A3 and P1_A2/=P1_A4 then:='1';<='0'; -- путевое реле 1
разомкнутоif;if;if;if;if;
- нарушение парафазности или импульсного сигнала на входах А и В Blok='0'
then<='0';if;if;process;
- СЪЁМ ИНФОРМАЦИИ С ПУТЕВОГО РЕЛЕ 2; ПРОИЗВОДИТСЯ ПОСТОЯННО:
processP2_T1,P2_T2,P2_T3,P2_T4 : STD_LOGIC;P2_nT1,P2_nT2,P2_nT3,P2_nT4 :
STD_LOGIC;P2_A1,P2_A2,P2_A3,P2_A4 : STD_LOGIC;P2_B1,P2_B2,P2_B3,P2_B4 :
STD_LOGIC;Blok : STD_LOGIC :='0';
- __ __
- длительность импульсов и провалов: 5 ms _| |__| |_P2_T'event and
P2_T='1' -- если пришёл фронт сигнала Тfor 1.5 ms;
_A1:=P2_A;_B1:=P2_B;_T1:=P2_T;_nT1:=P2_nT; for 1.5 ms;
_A2:=P2_A;_B2:=P2_B;_T2:=P2_T;_nT2:=P2_nT;for 3.5 ms; _A3:=P2_A;_B3:=P2_B;_T3:=P2_T;_nT3:=P2_nT;
for 1.5 ms; _A4:=P2_A;_B4:=P2_B;_T4:=P2_T;_nT4:=P2_nT;P2_A1=P2_T1 and
P2_A2=P2_T2 and P2_T1=P2_T2 then P2_B1=P2_nT1 and P2_B2=P2_nT2 and
P2_nT1=P2_nT2 then P2_A3=P2_T3 and P2_A4=P2_T4 and P2_T3=P2_T4 then
P2_B3=P2_nT3 and P2_B4=P2_nT4 and P2_nT3=P2_nT4 then P2_A1/=P2_A3 and
P2_A2/=P2_A4 then:='1';<='1'; -- путевое реле 2 замкнутоif;if;
end if;if;if;P2_A1=P2_nT1 and P2_A2=P2_nT2 and P2_nT1=P2_nT2 then
P2_B1=P2_T1 and P2_B2=P2_T2 and P2_T1=P2_T2 then P2_A3=P2_nT3 and P2_A4=P2_nT4
and P2_nT3=P2_nT4 then P2_B3=P2_T3 and P2_B4=P2_T4 and P2_T3=P2_T4 then
P2_A1/=P2_A3 and P2_A2/=P2_A4 then:='1';<='0'; -- путевое реле 2
разомкнутоif;if;if;if;if;
- нарушение парафазности или импульсного сигнала на входах А и В Blok='0'
then<='0';if;if;process;
- СЪЁМ ИНФОРМАЦИИ С ПУТЕВОГО РЕЛЕ 3; ПРОИЗВОДИТСЯ ПОСТОЯННО:
processP3_T1,P3_T2,P3_T3,P3_T4 : STD_LOGIC;P3_nT1,P3_nT2,P3_nT3,P3_nT4 :
STD_LOGIC;P3_A1,P3_A2,P3_A3,P3_A4 : STD_LOGIC;P3_B1,P3_B2,P3_B3,P3_B4 :
STD_LOGIC;Blok : STD_LOGIC :='0';
- __ __
- длительность импульсов и провалов: 5 ms _| |__| |_P3_T'event and
P3_T='1' -- если пришёл фронт сигнала Тfor 1.5 ms;
_A1:=P3_A;_B1:=P3_B;_T1:=P3_T;_nT1:=P3_nT; for 1.5 ms;
_A2:=P3_A;_B2:=P3_B;_T2:=P3_T;_nT2:=P3_nT;for 3.5 ms; _A3:=P3_A;_B3:=P3_B;_T3:=P3_T;_nT3:=P3_nT;
for 1.5 ms; _A4:=P3_A;_B4:=P3_B;_T4:=P3_T;_nT4:=P3_nT;P3_A1=P3_T1 and
P3_A2=P3_T2 and P3_T1=P3_T2 then P3_B1=P3_nT1 and P3_B2=P3_nT2 and
P3_nT1=P3_nT2 then P3_A3=P3_T3 and P3_A4=P3_T4 and P3_T3=P3_T4 then
P3_B3=P3_nT3 and P3_B4=P3_nT4 and P3_nT3=P3_nT4 then P3_A1/=P3_A3 and
P3_A2/=P3_A4 then:='1';<='1'; -- путевое реле 3 замкнутоif;if;
end if;if;if;P3_A1=P3_nT1 and P3_A2=P3_nT2 and P3_nT1=P3_nT2 then
P3_B1=P3_T1 and P3_B2=P3_T2 and P3_T1=P3_T2 then P3_A3=P3_nT3 and P3_A4=P3_nT4
and P3_nT3=P3_nT4 then P3_B3=P3_T3 and P3_B4=P3_T4 and P3_T3=P3_T4 then
P3_A1/=P3_A3 and P3_A2/=P3_A4 then:='1';<='0'; -- путевое реле 3
разомкнутоif;if;if;if;if;
- нарушение парафазности или импульсного сигнала на входах А и В Blok='0'
then<='0';if;if;process;
- СЪЁМ ИНФОРМАЦИИ С ОГНЕВОГО РЕЛЕ 1 ПЕРЕЕЗДНОГО СВЕТОФОРА 1;:
processO1_T1,O1_T2,O1_T3,O1_T4 : STD_LOGIC;O1_nT1,O1_nT2,O1_nT3,O1_nT4 :
STD_LOGIC;O1_A1,O1_A2,O1_A3,O1_A4 : STD_LOGIC;O1_B1,O1_B2,O1_B3,O1_B4 :
STD_LOGIC;Blok : STD_LOGIC :='0';
- __ __
- длительность импульсов и провалов: 5 ms _| |__| |_P1='1' -- если
переезд закрытif ClkL='0'thenO1_T'event and O1_T='1' -- если пришёл фронт
сигнала Тfor 1.5 ms; _A1:=O1_A;_B1:=O1_B;_T1:=O1_T;_nT1:=O1_nT; for 1.5 ms;
_A2:=O1_A;_B2:=O1_B;_T2:=O1_T;_nT2:=O1_nT;for 3.5 ms;
_A3:=O1_A;_B3:=O1_B;_T3:=O1_T;_nT3:=O1_nT; for 1.5 ms;
_A4:=O1_A;_B4:=O1_B;_T4:=O1_T;_nT4:=O1_nT;O1_A1=O1_T1 and O1_A2=O1_T2 and
O1_T1=O1_T2 then O1_B1=O1_nT1 and O1_B2=O1_nT2 and O1_nT1=O1_nT2 then
O1_A3=O1_T3 and O1_A4=O1_T4 and O1_T3=O1_T4 then O1_B3=O1_nT3 and O1_B4=O1_nT4
and O1_nT3=O1_nT4 then O1_A1/=O1_A3 and O1_A2/=O1_A4 then
-Close1<='1'; -- путевое реле 1 разомкнуто; закрыт
переезд:='1';<='1'; -- лампа ОР1ПС1 исправнаif;if;
end if;if;if;O1_A1=O1_nT1 and O1_A2=O1_nT2 and O1_nT1=O1_nT2 then
O1_B1=O1_T1 and O1_B2=O1_T2 and O1_T1=O1_T2 then O1_A3=O1_nT3 and O1_A4=O1_nT4
and O1_nT3=O1_nT4 then O1_B3=O1_T3 and O1_B4=O1_T4 and O1_T3=O1_T4 then
O1_A1/=O1_A3 and O1_A2/=O1_A4 then
-Close1<='0'; -- путевое реле 1 разомукнуто; переезд открыт:='1';<='0';--
лампа ОР1ПС1 неисправна if;if;if;if;if;
- нарушение парафазности или импульсного сигнала на входах А и В
Blok='0'O1<:=0; -- лампа ОР1ПС1 неисправнаif;if;if;process;
- СЪЁМ ИНФОРМАЦИИ С ОГНЕВОГО РЕЛЕ 2 ПЕРЕЕЗДНОГО СВЕТОФОРА 1;: processO2_T1,O2_T2,O2_T3,O2_T4
: STD_LOGIC;O2_nT1,O2_nT2,O2_nT3,O2_nT4 : STD_LOGIC;O2_A1,O2_A2,O2_A3,O2_A4 :
STD_LOGIC;O2_B1,O2_B2,O2_B3,O2_B4 : STD_LOGIC;Blok : STD_LOGIC :='0';
- __ __
- длительность импульсов и провалов: 5 ms _| |__| |_P1='1' -- если
переезд закрытif ClkL='1'thenO2_T'event and O2_T='1' -- если пришёл фронт
сигнала Тfor 1.5 ms; _A1:=O2_A;_B1:=O2_B;_T1:=O2_T;_nT1:=O2_nT; for 1.5 ms;
_A2:=O2_A;_B2:=O2_B;_T2:=O2_T;_nT2:=O2_nT;for 3.5 ms;
_A3:=O2_A;_B3:=O2_B;_T3:=O2_T;_nT3:=O2_nT; for 1.5 ms; _A4:=O2_A;_B4:=O2_B;_T4:=O2_T;_nT4:=O2_nT;O2_A1=O2_T1
and O2_A2=O2_T2 and O2_T1=O2_T2 then O2_B1=O2_nT1 and O2_B2=O2_nT2 and
O2_nT1=O2_nT2 then O2_A3=O2_T3 and O2_A4=O2_T4 and O2_T3=O2_T4 then
O2_B3=O2_nT3 and O2_B4=O2_nT4 and O2_nT3=O2_nT4 then O2_A1/=O2_A3 and
O2_A2/=O2_A4 then:='1';<='1'; -- лампа ОР1ПС2 исправнаif;if;
end if;if;if;O2_A1=O2_nT1 and O2_A2=O2_nT2 and O2_nT1=O2_nT2 then
O2_B1=O2_T1 and O2_B2=O2_T2 and O2_T1=O2_T2 then O2_A3=O2_nT3 and O2_A4=O2_nT4
and O2_nT3=O2_nT4 then O2_B3=O2_T3 and O2_B4=O2_T4 and O2_T3=O2_T4 then
O2_A1/=O2_A3 and O2_A2/=O2_A4 then:='1';<='0';-- лампа ОР1ПС2 неисправна
if;if;if;if;if;
- нарушение парафазности или импульсного сигнала на входах А и В
Blok='0'O2<=0; -- лампа ОР1ПС2 неисправнаif;if;if;process;
- СЪЁМ ИНФОРМАЦИИ С ОГНЕВОГО РЕЛЕ 1 ПЕРЕЕЗДНОГО СВЕТОФОРА 2;:
processO3_T1,O3_T2,O3_T3,O3_T4 : STD_LOGIC;O3_nT1,O3_nT2,O3_nT3,O3_nT4 :
STD_LOGIC;O3_A1,O3_A2,O3_A3,O3_A4 : STD_LOGIC;O3_B1,O3_B2,O3_B3,O3_B4 :
STD_LOGIC;Blok : STD_LOGIC :='0';
- __ __
- длительность импульсов и провалов: 5 ms _| |__| |_P1='1' -- если
переезд закрытif ClkL='0'thenO3_T'event and O3_T='1' -- если пришёл фронт
сигнала Тfor 1.5 ms; _A1:=O3_A;_B1:=O3_B;_T1:=O3_T;_nT1:=O3_nT; for 1.5 ms;
_A2:=O3_A;_B2:=O3_B;_T2:=O3_T;_nT2:=O3_nT;for 3.5 ms; _A3:=O3_A;_B3:=O3_B;_T3:=O3_T;_nT3:=O3_nT;
for 1.5 ms; _A4:=O3_A;_B4:=O3_B;_T4:=O3_T;_nT4:=O3_nT;O3_A1=O3_T1 and
O3_A2=O3_T2 and O3_T1=O3_T2 then O3_B1=O3_nT1 and O3_B2=O3_nT2 and
O3_nT1=O3_nT2 then O3_A3=O3_T3 and O3_A4=O3_T4 and O3_T3=O3_T4 then O3_B3=O3_nT3
and O3_B4=O3_nT4 and O3_nT3=O3_nT4 then O3_A1/=O3_A3 and O3_A2/=O3_A4
then:='1';<='1'; -- лампа ОР2ПС1 исправнаif;if;
end if;if;if;O3_A1=O3_nT1 and O3_A2=O3_nT2 and O3_nT1=O3_nT2 then
O3_B1=O3_T1 and O3_B2=O3_T2 and O3_T1=O3_T2 then O3_A3=O3_nT3 and O3_A4=O3_nT4
and O3_nT3=O3_nT4 then O3_B3=O3_T3 and O3_B4=O3_T4 and O3_T3=O3_T4 then
O3_A1/=O3_A3 and O3_A2/=O3_A4 then:='1';<='0';-- лампа ОР2ПС1 неисправна
if;if;if;if;if;
- нарушение парафазности или импульсного сигнала на входах А и В
Blok='0'O3:=0; -- лампа ОР1ПС2 неисправнаif;if;if;process;
- СЪЁМ ИНФОРМАЦИИ С ОГНЕВОГО РЕЛЕ 2 ПЕРЕЕЗДНОГО СВЕТОФОРА 2;:
processO4_T1,O4_T2,O4_T3,O4_T4 : STD_LOGIC;O4_nT1,O4_nT2,O4_nT3,O4_nT4 :
STD_LOGIC;O4_A1,O4_A2,O4_A3,O4_A4 : STD_LOGIC;O4_B1,O4_B2,O4_B3,O4_B4 :
STD_LOGIC;Blok : STD_LOGIC :='0';
- __ __
- длительность импульсов и провалов: 5 ms _| |__| |_P1='1' -- если
переезд закрытif ClkL='1'thenO4_T'event and O4_T='1' -- если пришёл фронт
сигнала Тfor 1.5 ms; _A1:=O4_A;_B1:=O4_B;_T1:=O4_T;_nT1:=O4_nT; for 1.5 ms;
_A2:=O4_A;_B2:=O4_B;_T2:=O4_T;_nT2:=O4_nT;for 3.5 ms;
_A3:=O4_A;_B3:=O4_B;_T3:=O4_T;_nT3:=O4_nT; for 1.5 ms;
_A4:=O4_A;_B4:=O4_B;_T4:=O4_T;_nT4:=O4_nT;O4_A1=O4_T1 and O4_A2=O4_T2 and
O4_T1=O4_T2 then O4_B1=O4_nT1 and O4_B2=O4_nT2 and O4_nT1=O4_nT2 then O4_A3=O4_T3
and O4_A4=O4_T4 and O4_T3=O4_T4 then O4_B3=O4_nT3 and O4_B4=O4_nT4 and
O4_nT3=O4_nT4 then O4_A1/=O4_A3 and O4_A2/=O4_A4 then:='1';<='1'; -- лампа
ОР2ПС2 исправнаif;if;
end if;if;if;O4_A1=O4_nT1 and O4_A2=O4_nT2 and O4_nT1=O4_nT2 then
O4_B1=O4_T1 and O4_B2=O4_T2 and O4_T1=O4_T2 then O4_A3=O4_nT3 and O4_A4=O4_nT4
and O4_nT3=O4_nT4 then O4_B3=O4_T3 and O4_B4=O4_T4 and O4_T3=O4_T4 then
O4_A1/=O4_A3 and O4_A2/=O4_A4 then:='1';<='0';-- лампа ОР2ПС2 неисправна
if;if;if;if;if;
- нарушение парафазности или импульсного сигнала на входах А и В
Blok='0'O4<=0; -- лампа ОР2ПС2 неисправнаif;if;if;process;
- КОНТРОЛЬ ПИТАНИЯ ФИДЕРОВ: process (F1, F2)F1='1' and
F2='1'FStatus<="11";if;F1='0' and
F2='1'FStatus<="01";if;F1='1' and
F2='0'FStatus<="10";if;F1='0' and F2='0'FSatus<="00";if;process;
- ОПРЕДЕЛЕНИЕ СОСТОЯНИЯ ПЕРЕЕЗДА
ПР : process (P1,P2,P3)Var : integer range 0 to 3 := 0;(var=0 and P1='1'
and P2='0' and P3='0') or
(var=0 and Close1='0' and P2='0' and P3='1')Close<='1';:=1;if;(var=1
and P1='1' and P2='1' and P3='0')or
(var=1 and P1='0' and P2='1' and P3='1')var:=2;if;(var=2 and
P2='0')var:=3;if;(var=3 and P1='0' and P2='0' and P3='0')var:=0;
Close<='0';if;process;
- МИГАНИЕ ЛАМП ПЕРЕЕЗДНЫХ СВЕТОФОРОВ: process (Close)TIMER : TIME := 1000
ms;Close='1'ClkL<= not ClkL after TIMER;if;process;
- ЗАКРЫТИЕ ПЕРЕЕЗДА: process (Close)Close='1'if CLKl='1'K1<=CLK; --
попеременное мигание<=CLK -- ламп переездных<='1'; -- звуковая
сигнализация<='1';if K1<='0';<='0';<='1'<='1';if; if
K1<='0';<='0';<='0';<='0';if;process;: process()
- ПЕРЕДАЧА В ЛИНИЮ ИНФОРМАЦИИ О СОСТОЯНИИ АПС: process
(SendInfo)start_read : boolean := false;last_bit : boolean := false;num_bit :
integer := 0;adress: STD_LOGIC_VECTOR (0 to 4) := "0111";data :
STD_LOGIC_VECTOR (0 to 6);SendInfo = '1' thenfalling_edge(Synchr) thenSendInfo
= '0' and num_bit = 0InfoOut <= '0';if;start_read = true thennum_bit =
11InfoOut <= '1';_bit := 0;_bit := true;if;num_bit = 13<= (adress(3) xor
adress(2) xor adress(1) xor adress(0)data(0) xor data(1) xor data(2) xor
data(3)xor data(4));_bit := 14;if;num_bit = 12InfoOut <= data(6);_bit :=
13;if;num_bit =11 InfoOut <= data(5);_bit := 12;if;num_bit = 10InfoOut <=
data(4);_bit := 11;if;num_bit = 9InfoOut <= data(3);_bit := 10;if;num_bit =
8InfoOut <= data(2);_bit := 9;if;num_bit = 7InfoOut <= data(1);_bit :=
8;if;num_bit = 6InfoOut <= data(0);_bit := 7;if;num_bit = 5InfoOut <=
adress(0);_bit := 6;if;num_bit = 4InfoOut <= adress(1);_bit := 5;if;num_bit
= 3InfoOut <= adress(2);_bit := 4;if;num_bit = 2InfoOut <= adress(3);_bit
:= 3;if;num_bit = 1InfoOut <= '1';_bit := 2;if;if;SendInfo = '1' and num_bit
= 0if last_bit = truelast_bit := false;_read := true;_bit := 1;(0) := O1;(1) :=
O2 ;(2) := O3;(3) := O4;(4) := Pereezd; (6 downto 5) :=
FStatus;if;if;if;if;process;mine;
Приложение Б
Листинг программы ПЛИС БМЭ
--
- Title : mine
- Design : work
- Author : Alexey Kuprienko
- Company : Home
- File : ИЬУ.vhd
- Generated : Sun Dec 4 17:21:15 2005
- From : interface description file
- By : Itf2Vhdl ver. 1.20
--
- Description : курсовой проект по МИУС Куприенко
Алексея--
-- Description :
- Design unit header --IEEE;IEEE.std_logic_1164.all;BME is(R1
: in STD_LOGIC;R2 : in STD_LOGIC;R1 : in STD_LOGIC;R2 : in STD_LOGIC;R1 : in
STD_LOGIC;R2 : in STD_LOGIC;: out STD_LOGIC;: out STD_LOGIC;: out STD_LOGIC;: out
STD_LOGIC;: out STD_LOGIC;: out STD_LOGIC
);BME;BME of BME is
--- Component declarations -----FE(: in STD_LOGIC;: in
STD_LOGIC;: out STD_LOGIC;: out STD_LOGIC
);component;spt(: in STD_LOGIC;: in STD_LOGIC;: in
STD_LOGIC;: in STD_LOGIC;: out STD_LOGIC;: out STD_LOGIC
);component;
--- Signal declarations used on the diagram ----NET122 :
STD_LOGIC;NET126 : STD_LOGIC;NET130 : STD_LOGIC;NET134 : STD_LOGIC;NET138 :
STD_LOGIC;NET142 : STD_LOGIC;NET295 : STD_LOGIC;NET299 : STD_LOGIC;NET303 :
STD_LOGIC;NET307 : STD_LOGIC;NET317 : STD_LOGIC;NET321 : STD_LOGIC;
--- Component instantiations ----: sptmap(=> K2R1,=>
K2R2,=> NET138,=> NET142,=> NET303,=> NET307
);: FEmap(=> NET303,=> NET307,=> SSVR21,=> SSVR22
);: FEmap(=> NET295,=> NET299,=> SSVR11,=> SSVR12
);: FEmap(=> NET317,=> NET321,=> SSVR31,=> SSVR32
);: sptmap(=> K1R1,=> K1R2,=> NET122,=>
NET126,=> NET295,=> NET299
);<= not(K3R2);<= not(K3R1);<= not(K2R2);<=
not(K2R1);<= not(K1R2);<= not(K1R1); BME;
- Title : Фиксирующий элемент
-- Design : First
- Author : 123
- Company : 456
-
- Description :
-
- Design unit header --IEEE;IEEE.std_logic_1164.all;
- other libraries declarations
- synopsys translate_off VIRTEX;IEEE;IEEE.vital_timing.all;
- synopsys translate_on FE is(: in STD_LOGIC;: in STD_LOGIC;:
out STD_LOGIC;: out STD_LOGIC
);FE;FE of FE is
--- Component declarations -----pt(: in STD_LOGIC;: in
STD_LOGIC;: in STD_LOGIC;: in STD_LOGIC;: out STD_LOGIC;: out STD_LOGIC
);component;ptgen(: out STD_LOGIC;: out STD_LOGIC
);component;sbros(: out STD_LOGIC
);component;spt(: in STD_LOGIC;: in STD_LOGIC;: in
STD_LOGIC;: in STD_LOGIC;: out STD_LOGIC;: out STD_LOGIC
);component;Vosstan(: out STD_LOGIC
);component;VCC
- synopsys translate_off(: STRING := "*";: BOOLEAN
:= False;
TimingChecksOn : BOOLEAN := false;: BOOLEAN := TRUE
);
- synopsys translate_on(: out std_ulogic := '1'
);component;
--- Signal declarations used on the diagram ----NET101 :
STD_LOGIC;NET260 : STD_LOGIC;NET264 : STD_LOGIC;NET276 : STD_LOGIC;NET308 :
STD_LOGIC;NET387 : STD_LOGIC;NET394 : STD_LOGIC;NET398 : STD_LOGIC;NET404 :
STD_LOGIC;NET414 : STD_LOGIC;NET418 : STD_LOGIC;NET422 : STD_LOGIC;NET453 :
STD_LOGIC;NET458 : STD_LOGIC;NET572 : STD_LOGIC;NET576 : STD_LOGIC;NET639 :
STD_LOGIC;NET707 : STD_LOGIC;NET716 : STD_LOGIC;NET97 : STD_LOGIC;
--- Configuration specifications for declared components
- synopsys translate_offU6 : VCC use entity VIRTEX.VCC;
- synopsys translate_on
- synopsys translate_offU7 : VCC use entity VIRTEX.VCC;
- synopsys translate_on
--- Component instantiations ----: sptmap(=> In1,=>
NET97,=> NET101,=> In2,=> NET260,=> NET264
);<= not(NET639);<= not(NET422);<= not(NET418);<=
NET639 and NET414;<= not(NET453);<= NET572 and NET458;<= NET716;<=
NET707;: sbrosmap(=> NET572
);: ptgenmap(=> NET97,=> NET101
);: Vosstanmap(=> NET387
);: ptmap(=> NET394,=> NET308,=> NET387,=>
NET707,=> NET716,=> NET398
);: ptmap(=> NET716,=> NET576,=> NET276,=>
NET264,=> NET260,=> NET707
);: VCCmap(=> NET308
);: VCCmap(=> NET276
);<= not(NET404);<= NET398 xor NET394;FE;
-------------------------------------------------------------------------------------------
- Title : 2-4 СПТ
- Design : First
- Author : 123
- Company : 456
- Description :
- Design unit header --IEEE;IEEE.std_logic_1164.all;spt is(:
in STD_LOGIC;: in STD_LOGIC;: in STD_LOGIC;: in STD_LOGIC;: out STD_LOGIC;: out
STD_LOGIC
);spt;spt of spt is
--- Signal declarations used on the diagram ----NET107 :
STD_LOGIC;NET115 : STD_LOGIC;NET91 : STD_LOGIC;NET99 : STD_LOGIC;
--- Component instantiations ----<= In2 or In1;<= In4
or In3;<= In2 and In1;<= In4 and In3;<= NET99 and NET91;<= NET115
or NET107;spt;
-------------------------------------------------------------------------------------------
- Title : Парафазный триггер
- Design : First
- Author : 123
- Company : 456
-
- Description :
- Design unit header --IEEE;IEEE.std_logic_1164.all;pt is(:
in STD_LOGIC;: in STD_LOGIC;: in STD_LOGIC;: in STD_LOGIC;: out STD_LOGIC;: out
STD_LOGIC
);pt;pt of pt is
--- Signal declarations used on the diagram ----NET102 :
STD_LOGIC;NET204 : STD_LOGIC;NET230 : STD_LOGIC;NET232 : STD_LOGIC;NET236 :
STD_LOGIC;NET239 : STD_LOGIC;NET240 : STD_LOGIC;NET340 : STD_LOGIC;NET343 :
STD_LOGIC;NET344 : STD_LOGIC;NET444 : STD_LOGIC;NET447 : STD_LOGIC;NET448 :
STD_LOGIC;NET556 : STD_LOGIC;NET568 : STD_LOGIC;NET580 : STD_LOGIC;NET592 :
STD_LOGIC;NET67 : STD_LOGIC;NET71 : STD_LOGIC;NET88 : STD_LOGIC;
--- Component instantiations ----<= not(NET102 and Reset
and T0);<= not(NET236);<= not(NET240);<= not(NET239);<=
not(NET230);<= NET232 or NET240;<= not(NET344 and Set and T1);<=
not(NET568 and Reset and NET340);<= not(NET340);<= not(NET343);<=
not(NET556 and Set and NET204);<= not(NET448 and Reset and T1);<= not(NET592
and Set and NET444);<= not(NET444);<= not(NET447);<= not(NET204);<=
not(NET102);<= not(NET88);<= not(NET67);<= NET71 or NET102;<=
not(NET240 and Set and T0);<= not(NET580 and Reset and NET236); pt;
- Title : Парафазный генератор
-- Design : First
- Author : 123
- Company : 456
- Description :
- Design unit header --IEEE;IEEE.std_logic_1164.all;PTGen
is( : out STD_LOGIC;: out STD_LOGIC);PTGen;STRUCTURA of PTGen isCLK_PERIOD:
TIME := 10 us; _GEN: process<= '0';<= '1';for CLK_PERIOD/2;<=
'1';<= '0';for CLK_PERIOD/2;process;STRUCTURA;
-------------------------------------------------------------------------------------------
-- Title : Формирователь сигнала
восстановления ПТ2
-- Design : First
- Author : 123
- Description :
- Design unit header --IEEE;IEEE.std_logic_1164.all;Vosstan
is( : out STD_LOGIC);Vosstan;STRUCTURA of PTGen is_GEN:
processi:bit:='0';i='0' thenfor 7us;:='1';if;<= '1'; for 0.3us;<= '0';for
82us;process;
end STRUCTURA;
-------------------------------------------------------------------------------------------
- Title : Формирователь сигнала начального сброса ПТ1
-- Design : First
- Author : 123
- Company : 456
- Description :
- Design unit header --IEEE;IEEE.std_logic_1164.all;sbros
is( : out STD_LOGIC );sbros;STRUCTURA of sbros is<= '1';for 6 us;<= '0';
end process;STRUCTURA;