Файл: Забайкальский институт железнодорожного транспорта.docx

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 19.10.2024

Просмотров: 14

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


При соответствии состояния контактов требуемому алгоритм должен обеспечивать проверку наличия тока и напряжения в системе с выдержкой на реализацию команд. В случае, если они отсутствуют, должно обеспечиваться отключение схемы питания. При соответствии показаний контактов выключателей и разъединителя, и контроле тока и напряжения в ячейку ПД должен помещаться код успешного завершения операции.

Представим алгоритм в графическом виде (рисунок 4.1):



Рисунок 4.1 - Алгоритм работы схемы
Для управления микроконтроллером, в собранной раннее схеме, напишем код, приведенный в приложении В.
Заключение
В данной курсовой работе были изучены принципы написания и работы программ на базе микроконтроллера ATMega328, изучены принципы составления алгоритмов для решения поставленных задач, связанных с обработкой и обменом информацией на микроконтроллерах на базе ATMega328.

Были применены полученные знания для создания микропроцессорной информационно-управляющей системы и устройств железнодорожного транспорта для управления отдельными технологическими операциями, связанными с контролем оперативного переключения оборудования.

Список использованных источников
1. Методические указания по выполнению курсовой работы «Микропроцессорные информационно-управляющие системы». Менакер К.В., Чита, 2014

2. Правила устройства электроустановок / Минэнерго РФ. – М.: Энергоатомиздат, 2002. – 378 с

ПРИЛОЖЕНИЕ А


Рисунок А - Принципиальная схема для включения и отключения системы и контроля состояния выключателя, разъединителя, ТТ, и ТН НН

ПРИЛОЖЕНИЕ Б


Рисунок Б - Принципиальная схема для включения и отключения системы и контроля состояния выключателя и разъединителя ВН
ПРИЛОЖЕНИЕ В
boolean buttonRaz; // создаем глобальную переменную кнопки включения разъединителя

boolean buttonVikl; // создаем глобальную переменную кнопки включения выключателя

boolean RazPlus; // создаем глобальную переменную плюсового состояния разъединителя

boolean RazMinus; // создаем глобальную переменную минусового состояния разъединителя


boolean ViklPlus; // создаем глобальную переменную плюсового состояния выключателя

boolean ViklMinus;// создаем глобальную переменную минусового состояния выключателя

boolean Transtoka=LOW;// создаем глобальную переменную состояния трансформатора тока
void setup()

{

pinMode(1, INPUT_PULLUP);// подтягивание пина от кнопки разъединителя к 1

pinMode(2, INPUT_PULLUP);// подтягивание пина от кнопки выключателя к 1

pinMode(6, OUTPUT);// управление разъединителем

pinMode(9, OUTPUT);// управление выключателем

pinMode(7, INPUT_PULLUP); //контроль минусового положения разъединителя

pinMode(8, INPUT_PULLUP);//контроль плюсового положения разъединителя

pinMode(10, INPUT_PULLUP); //контроль минусового положения выключателя

pinMode(11, INPUT_PULLUP);//контроль плюсового положения выключателя

pinMode(12, INPUT);//контроль тока на нагрузке

pinMode(4, OUTPUT);//аварийная индикация

digitalWrite(4, LOW);
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ В
// Считывание начального состояния всех устройств

Transtoka = digitalRead(12);// проверяем текущее состояние трансформатора тока

RazPlus = digitalRead(8);// проверяем текущее состояние разъединителя в плюсе

RazMinus = digitalRead(7);// проверяем текущее состояние разъединителя в минусе

ViklPlus = digitalRead(11);// проверяем текущее состояние выключателя в плюсе

ViklMinus = digitalRead(10);// проверяем текущее состояние выключателя в минусе
// Проверка отсутствия тока в цепи, плюсового и минусового положения разъединителя и выключателя

}
void loop()

{

//ОПЕРАТИВНОЕ ВКЛЮЧЕНИЕ

metkaVKL:

if ((Transtoka==HIGH)||(RazPlus==LOW)||(RazMinus==HIGH)||(ViklPlus==LOW)||(ViklMinus==HIGH)){

digitalWrite(4, HIGH);// включаем аварийный светодиод

}

else {

// ИНАЧЕ инициализация включения разъединителя

metka1: buttonRaz = digitalRead(1);// считываем состояние кнопки разъединителя

buttonVikl = digitalRead(2); // считываем состояние кнопки выключателя

if ((buttonRaz==LOW)&&(buttonVikl==HIGH)) // если кнопка разъединителя ON,а выключателя OFF

ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ В
{ digitalWrite(6, HIGH); // команда на включение разъединителя

delay(1000);// задержка на перевод разъединителя (справочная информация)

goto metka2;

}

else if ((buttonRaz==HIGH)&&(buttonVikl==LOW)) // если кнопка выключателя ON,а разъединителя OFF

{

digitalWrite(4, HIGH);// включаем аварийный светодиод

goto metka1;// ждем выключения кнопки выключателя

}

else if ((buttonRaz==HIGH)&&(buttonVikl==HIGH)) // если кнопка выключателя и разъединителя OFF

{

digitalWrite(4, LOW);// выключаем аварийный светодиод, если он был включен

goto metka1;//ждем команды на включение разъединителя

}

else goto metka1;

// проверка текущего состояния устройств после перевода разъдинителя

metka2: Transtoka = digitalRead(12);// проверяем текущее состояние трансформатора тока



RazPlus = digitalRead(8);// проверяем текущее состояние разъединителя в плюсе

RazMinus = digitalRead(7);// проверяем текущее состояние разъединителя в минусе

ViklPlus = digitalRead(11);// проверяем текущее состояние выключателя в плюсе

ViklMinus = digitalRead(10);// проверяем текущее состояние выключателя в минусе

// Проверка отсутствия тока в цепи, плюсового положения разъединителя и минусового выключателя

ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ В
if ((Transtoka==LOW)&&(RazPlus==LOW)&&(RazMinus==HIGH)&&(ViklPlus==HIGH)&&(ViklMinus==LOW))

{ buttonRaz = digitalRead(1);// считываем состояние кнопки разъединителя

buttonVikl = digitalRead(2); // считываем состояние кнопки выключателя

goto metka3;

}

digitalWrite(4, HIGH);// включаем аварийный светодиод

digitalWrite(6, LOW); // команда на выключение разъединителя

delay(1000);// задержка на перевод разъединителя (справочная информация)

goto metka100;// завершение программы

metka3: delay(1);

if ((buttonRaz==LOW)&&(buttonVikl==LOW)) // если кнопка разъединителя ON и выключателя ON

{ digitalWrite(9, HIGH); // команда на включение выключателя

delay(100);// задержка на перевод выключателя (справочная информация)

goto metka4;

}

goto metka2;

// проверка текущего состояния устройств после перевода выключателя

metka4: Transtoka = digitalRead(12);// проверяем текущее состояние трансформатора тока

RazPlus = digitalRead(8);// проверяем текущее состояние разъединителя в плюсе

RazMinus = digitalRead(7);// проверяем текущее состояние разъединителя в минусе

ViklPlus = digitalRead(11);// проверяем текущее состояние выключателя в плюсе

ViklMinus = digitalRead(10);// проверяем текущее состояние выключателя в минусе

ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ В
// Проверка наличия тока в цепи, плюсового положения разъединителя и плюсового выключателя

if ((Transtoka==HIGH)&&(RazPlus==LOW)&&(RazMinus==HIGH)&&(ViklPlus==LOW)&&(ViklMinus==HIGH))

{ delay(1); // задержка

goto metkaVIKL;//ожидание выключения трансформатора

}

digitalWrite(4, HIGH);// включаем аварийный светодиод

digitalWrite(9, LOW); // команда на выключение выключателя

delay(100);// задержка на перевод выключателя (справочная информация)

digitalWrite(6, LOW); // команда на выключение разъединителя

delay(1000);// задержка на перевод разъединителя (справочная информация)

goto metka100;// завершение программы

}