Разработка микропроцессорной системы автоматической переездной сигнализации, страница 7

В процессе выполнения данного курсового проекта были закреплены навыки создания законченных микропроцессорных систем, начиная от проектирования, заканчивая разработкой алгоритмов и программного обеспечения. Также были освоены основные методики повышения безопасности устройств. Это подтверждается тем, что разработанная система удовлетворяет требованиям по безопасности для устройств ЖАТ.


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 


1.  Системы железнодорожной автоматики и телемеханики. Под ред. доктора тех. наук, проф. Ю. А. Кравцова. М. Тр. 1996

2.  Микропроцессорные и информационно-управляющие системы в железнодорожной автоматике и телемеханике. Методы обеспечения безопасности функционирования. С. Н. Харлап, К. А. Бочков. Гомель, БелГУТ, 2002.

3.  Автоматика, телемеханика и связь на транспорте. Пособие по оформлению дипломных проектов. К. А. Бочков, А. Г. Серенков, С. Н. Харлап, В. Ф. Кондрачук. Гомель, БелГУТ, 2002

4.  Advantech ADAM-5510 PC-compatible programmable microcontroller. User’s manual. Advantech corp 2000. (www.advantech.com)

5.  ProSoft Safe Logic list. ProSoft , Ltd, 1999-2000. (www.prosoft.ru)


ПРИЛОЖЕНИЕ А. СХЕМА СТРУКТУРНАЯ АПС


ПРИЛОЖЕНИЕ Б. СХЕМА СТРУКТУРНАЯ БЛОКА УПРАВЛЕНИЯ


ПРИЛОЖЕНИЕ В.  ГЕНЕРАТОР ГАРМОНИЧЕСКИХ КОЛЕБАНИЙ


ПРИЛОЖЕНИЕ Г. ГЕНЕРАТОР ГАРМОНИЧЕСКИХ КОЛЕБАНИЙ. ПЕРЕЧЕНЬ ЭЛЕМЕНТОВ


ПРИЛОЖЕНИЕ Д. БЛОК КОНТРОЛЯ ПУТЕВОГО РЕЛЕ


ПРИЛОЖЕНИЕ Е. БЛОК КОНТРОЛЯ ПУТЕВОГО РЕЛЕ. ПЕРЕЧЕНЬ ЭЛЕМЕНТОВ


ПРИЛОЖЕНИЕ Ж. БЛОК СОГЛАСОВАНИЯ С ЛИНИЕЙ


ПРИЛОЖЕНИЕ З. БЛОК СОГЛАСОВАНИЯ С ЛИНИЕЙ. ПЕРЕЧЕНЬ ЭЛЕМЕНТОВ


ПРИЛОЖЕНИЕ И. СХЕМА СРАВНЕНИЯ И КОНТРОЛЯ


ПРИЛОЖЕНИЕ К. СХЕМА СРАВНЕНИЯ И КОНТРОЛЯ. ПЕРЕЧЕНЬ ЭЛЕМЕНТОВ


ПРИЛОЖЕНИЕ Л. СХЕМА САМОПРОВЕРЯЕМОГО ТЕСТЕРА
ПРИЛОЖЕНИЕ М. СХЕМА САМОПРОВЕРЯЕМОГО ТЕСТЕРА. ПЕРЕЧЕНЬ ЭЛЕМЕНТОВ


ПРИЛОЖЕНИЕ Н. СХЕМА ПАРАФАЗНОГО ТРИГГЕРА


ПРИЛОЖЕНИЕ О. СХЕМА ПАРАФАЗНОГО ТРИГГЕРА. ПЕРЕЧЕНЬ ЭЛЕМЕНТОВ


ПРИЛОЖЕНИЕ П. СХЕМА УПРАВЛЕНИЯ ЛАМПОЙ СВЕТОФОРА


ПРИЛОЖЕНИЕ Р. СХЕМА УПРАВЛЕНИЯ ЛАМПОЙ СВЕТОФОРА. ПЕРЕЧЕНЬ ЭЛЕМЕНТОВ
ПРИЛОЖЕНИЕ С. СХЕМА УПРАВЛЕНИЯ ШЛАГБАУМОМ


ПРИЛОЖЕНИЕ Т. СХЕМА УПРАВЛЕНИЯ ШЛАГБАУМОМ. ПЕРЕЧЕНЬ ЭЛЕМЕНТОВ


ПРИЛОЖЕНИЕ У. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ



// main.cpp

#include "adam5510.h"

#include <mem.h>

#include <time.h>

const unsigned int uicSensorMaxNum = 2;

// колдичество 55мс интервалов в секунде

const unsigned long ulcOneSecond = 18;

// структура информации о датчике

typedef struct

{

  // базовая информация о датчике

  union

  {

    struct

    {

      // uicSensorNotPresent - отсутствует,

      // иначе присутствует

      unsigned int iStatus;   

      // номер модуля ввода          

      char iBoardNo;

      // номер входа модуля

      char iPinNo;        

    } basic;

    unsigned long ulBasicPack;

  };

  // контрольная сумма полей структуры basic

  int iBasicSum;          

} sensor_info;

// Структура содержащая информацию

// о всех активных сенсорах

typedef struct

{

  // датчики

  sensor_info sensor[uicSensorMaxNum];

  // число активных 

  unsigned int nActiveNum;

} all_sensors;

unsigned short TestFlashSensorsInfo(all_sensors* ps);

void SetOutput(unsigned int uiOutput, int n);

void ChangeSignal();

 


void main()

{

  all_sensors sensors;

  // проверяем информацию во

  // флэш-памяти контроллера

  if ( (TestFlashSensorsInfo(&sensors) & 0x0007) != 0x0007 )

  {

    // на время инициализации - запрещаем сторожевой таймер

    WDT_disable();

    // если информация неверна

    // запускаем инициализацию контроллера

    // три структуры сенсоров

    // которые будут в последствие сохранены

    // во флэш-памяти

    all_sensors init_sens[3];

    // цикл повторения инициализаций

    // необходим в случае неудачной

    // первой инициализации

    do

    {

      int nTestOK[3] = {0, 0, 0};

      // инсталлируем обработчик прерывания

      // от таймера

      install_init();

        // на выходных линиях устанавливаем сигнал 0(закрыто)

        SetOutput(0x0000,2);

        for(register int i = 0; i < 3; i++)

           if ( pCurSensorsInfo[i] )

           {

             // Если текущая информация о датчиках

             // совпадает с хранимой увеличиваем

             // число совпадений на единицу

             if ( !TestAllSensorsInfo(pCurSensorsInfo[i], &init_sens[i]) )