Файл: Забайкальский институт железнодорожного транспорта.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;// завершение программы
}