В процессе выполнения данного курсового проекта были закреплены навыки создания законченных микропроцессорных систем, начиная от проектирования, заканчивая разработкой алгоритмов и программного обеспечения. Также были освоены основные методики повышения безопасности устройств. Это подтверждается тем, что разработанная система удовлетворяет требованиям по безопасности для устройств ЖАТ.
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]) )
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.