Научная статья на тему 'АЛГОРИТМЫ ВЕДОМЫХ МИКРОКОНТРОЛЛЕРНЫХ БЛОКОВ УПРАВЛЕНИЯ ARDUINO NANO V3.0 CH340 ДЕМОНСТРАЦИОННОГО СТЕНДА "ИНТЕЛЛЕКТУАЛЬНЫЕ СЕТИ НА ОСНОВЕ МКС"'

АЛГОРИТМЫ ВЕДОМЫХ МИКРОКОНТРОЛЛЕРНЫХ БЛОКОВ УПРАВЛЕНИЯ ARDUINO NANO V3.0 CH340 ДЕМОНСТРАЦИОННОГО СТЕНДА "ИНТЕЛЛЕКТУАЛЬНЫЕ СЕТИ НА ОСНОВЕ МКС" Текст научной статьи по специальности «Электротехника, электронная техника, информационные технологии»

CC BY
158
24
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЭЛЕКТРОСНАБЖЕНИЕ / МУЛЬТИКОНТАКТНЫЕ КОММУТАЦИОННЫЕ СИСТЕМЫ / ПРОГРАММИРОВАНИЕ / МИКРОКОНТРОЛЛЕРНЫЙ БЛОК УПРАВЛЕНИЯ / НАДЕЖНОСТЬ ЭЛЕКТРОСНАБЖЕНИЯ

Аннотация научной статьи по электротехнике, электронной технике, информационным технологиям, автор научной работы — Лансберг А.А., Панфилов А.А., Семенов А.Е., Виноградов А.В., Псарев А.И.

Демонстрационный стенд «Интеллектуальный сети на основе МКС» позволит отрабатывать различные ситуации в электрической сети, содержащей различные виды мультиконтактных коммутационных систем (МКС). В свою очередь каждая МКС должна иметь схему управления, в которую входит микроконтроллерный блок управления (МБУ), который осуществляет мониторинг напряжения на выводах и фиксирует текущее положение контактов и передает эту информации в главный блок управления проекта как массив данных. В статье приведен общий принцип построения алгоритмов семи ведомых МБУ демонстрационного стенда в интегрированной среде от разработчиков Arduino с использование языка программирования C++.The demonstration stand «Intelligent networks based on the МSS» will allow you to work out various situations in the electric network containing various types of multi-contact switching systems (МSS). In turn, each МSS must have a control circuit, which includes a microcontroller control unit (MСU), which monitors the voltage at the terminals and fixes the current position of the contacts and transfers this information to the main control unit of the project as an array of data. The article describes the general principle of constructing the algorithms of seven slave MCU of the demonstration stand in an integrated environment from Arduino developers using the C ++ programming language.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по электротехнике, электронной технике, информационным технологиям , автор научной работы — Лансберг А.А., Панфилов А.А., Семенов А.Е., Виноградов А.В., Псарев А.И.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «АЛГОРИТМЫ ВЕДОМЫХ МИКРОКОНТРОЛЛЕРНЫХ БЛОКОВ УПРАВЛЕНИЯ ARDUINO NANO V3.0 CH340 ДЕМОНСТРАЦИОННОГО СТЕНДА "ИНТЕЛЛЕКТУАЛЬНЫЕ СЕТИ НА ОСНОВЕ МКС"»

12.05.2018) «О Транспортной стратегии Российской Федерации» // URL: http://www.consultant.ru/document/cons doc LAW 82617 (дата обращения 20.08.2019).

3. ГОСТ Р 51006-96 Услуги транспортные. Термины и определения (принят в качестве межгосударственного стандарта ГОСТ 30596-97) // URL: http://docs.cntd.ru/document/1200000872 (дата обращения 17.08.2019).

4. Адамова А.А. Транспорт как базовый элемент в современных транспортно-логистических системах // Евразийский союз ученых. 2016. № 4-1 (13). С. 8-10.

УДК 681.5:621.316.3

АЛГОРИТМЫ ВЕДОМЫХ МИКРОКОНТРОЛЛЕРНЫХ БЛОКОВ УПРАВЛЕНИЯ ARDUINO NANO V3.0 CH340 ДЕМОНСТРАЦИОННОГО СТЕНДА «ИНТЕЛЛЕКТУАЛЬНЫЕ СЕТИ НА ОСНОВЕ МКС»

Лансберг А.А.1, бакалавр 2 курса направления подготовки 13.03.02 «Электроэнергетика и электротехника», Панфилов А.А.2, начальник отдела «Автоматизированные системы диспетчерского управления»,

Семенов А.Е.1, старший преподаватель, Виноградов А.В.3, к.т.н., доцент, ведущий научный сотрудник, Псарев А.И. 1,старший преподаватель.

1ФГБОУ ВО Орловский ГАУ, 2 ПАО «МРСК Центра»-«Орелэнерго», 3 ФГБНУ «ФНАЦ ВИМ».

АННОТАЦИЯ

Демонстрационный стенд «Интеллектуальный сети на основе МКС» позволит отрабатывать различные ситуации в электрической сети, содержащей различные виды мультиконтактных коммутационных систем (МКС). В свою очередь каждая МКС должна иметь схему управления, в которую входит микроконтроллерный блок управления (МБУ), который осуществляет мониторинг напряжения на выводах и фиксирует текущее положение контактов и передает эту информации в главный блок управления проекта как массив данных. В статье приведен общий принцип построения алгоритмов семи ведомых МБУ демонстрационного стенда в интегрированной среде от разработчиков Arduino с использование языка программирования C++.

КЛЮЧЕВЫЕ СЛОВА

Электроснабжение, мультиконтактные коммутационные системы, программирование, микроконтроллерный блок управления, Arduino, надежность электроснабжения.

ABSTRACT

The demonstration stand «Intelligent networks based on the МSS» will allow you to work out various situations in the electric network containing various types of multi-contact switching systems ^SS). In turn, each МSS must have a control circuit, which includes a microcontroller control unit (M^), which monitors the voltage at the terminals and fixes the current position of the contacts and transfers this information to the main control unit of the project as an array of data. The article describes the general principle of constructing the algorithms of seven slave MCU of the demonstration stand in an integrated environment from Arduino developers using the C ++ programming language.

KEYWORDS

Power supply, multi-contact switching systems, programming, microcontroller control unit, Arduino, reliability of power supply.

Актуальность работы. Мультиконтактные коммутационные системы (МКС) -это элементы электросетевого оборудования, необходимые для реализации концепций умных электрических сетей [1-5] и состоящие из силовой и логической частей. Они позволяют повысить надежность электроснабжения потребителей, так как их особенность заключается в независимом управлении силовыми контактами (вакуумные выключатели), которые позволяют реализовывать в данных коммутационных аппаратах различные функции автоматики, в том числе: АПВ и АВР [6]. Причем при реконструкции систем электроснабжения на основе мультиконтактных коммутационных систем с соблюдением всех норм и стандартов в целом их воздействие на экологию будет находиться в допустимых пределах [7].

Классификация МКС представлена на рисунке 1.

Рисунок 1 - Классификация мультиконтатных коммутационных систем по конструктивному исполнению на примере силовых однолинейных схем и расшифровка принципа маркировки

Отработка схем управления опытными образцами МКС требуют их моделирования. В связи с этим разрабатывается демонстрационный стенд, система электроснабжения которого описана в источнике [8]. Он позволяет отрабатывать различные ситуации в электрической сети, содержащей несколько различных типов МКС. Каждая МКС должна быть оснащена схемой управления, позволяющей осуществлять переключения контактов МКС в зависимости от поступающих сигналов с датчиков тока и напряжения, а также команд диспетчера. В процессе работы

демонстрационного стенда с помощью двоичного кода будет описано 7 ситуаций, таким же образом как в [5, 8, 9].

Демонстрационный стенд будет выполнен в виде электрической цепи из элементов электроники, которые в свою очередь образуют электрические схемы МКС, позволяющие проводить безопасные испытания и проследить логику их работы в совокупности с МБУ. Описание работы такой схемы на примере МКССМ-8-4В представлено в [10]; а схема для мКС-4 с описанием ее работы в совокупности с МБУ-Arduino Nano V3.0 CH340 на базе чипа ATmega328P, где представлена распиновка последнего, в [11]. Для реализации проекта использовано 7 микроконтроллеров. На стенде изображена система электроснабжения, содержащая разные виды МКС. Выведенные на панель стенда тумблеры позволяют имитировать различные аварийные ситуации, возможные в сети. Микроконтроллерные средства управления моделями МКС реагируют на ту или иную ситуацию и выполняют необходимые переключения в схеме. Таким образом, моделируется управление МКС.

Внешний вид демонстрационного стенда и часть его электрической схемы представлены на рисунках 2, 3.

Рисунок 2 - Процесс пусконаладки демонстрационного стенда со всеми включенными источниками генерации, контактами коммутационных устройств и накопителем электроэнергии, работающим в режиме зарядки

Цель работы. Описание алгоритмов семи ведомых микроконтроллерных блоков управления Arduino Nano V3.0 CH340 демонстрационного стенда, написанных с помощь программы Arduino IDE, позволяющей впоследствии после проверки интерпретировать скетчи в язык C++.

Задачи работы:

• изложить особенности программы Arduino IDE и принцип ее работы;

• описать общий принцип построения алгоритмов работы семи ведомых микроконтроллерных блоков проекта: объяснить причины выбора разных типов используемых переменных; изложить особенности функций и выполняемые ими задачи; объяснить принцип построения массива данных, его отправку, получение по шине I2C и чтение на ведомых МБУ.

Рисунок 3 - Электрическая схема управления демонстрационного стенда с микроконтроллерным блоком Arduino Nano V3.0 CH340 на базе чипа ATmega328P #1, содержащая модель 1МКС-3, накопитель электроэнергии и биогазовую установку

Для написания скетчей (построения алгоритмов) в микроконтроллерных блоках Arduino использована программа ArduinoIDE (Integrated Development Environment) -интегрированная среда разработки от создателей платформы. Программа позволяет писать скетчи на языке Ардуино, которые затем можно проверить непосредственно в самой программе и впоследствии перевести их в язык C++, а затем загрузить в плату Arduino. При этом у пользователя есть возможность в самой программе пояснять для себя полностью весь скетч или некоторые его команды, чтобы предотвратить дальнейшие ошибки. Для этого в конце строки ставится «//», а затем следует, соответственно, объяснение. В данной статье при описании алгоритмов мы будем пояснять отдельные его строки с использованием данной функции. К тому же в программе присутствует цветовая палитра, выделяющая переменные, циклы, библиотеки и облегчающая их визуальное восприятие. Алгоритм работы МБУ, представленный ниже, приведен в соответствии с цветовой палитрой интегрированной среды разработки от создателей платформы.

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

Изначально для всех ведомых семи МБУ проекта мы вводим библиотеку Wire, позволяющую плате устанавливать связь с другими устройствами через интерфейс I2C.

#include <Wire.h>

Далее мы вводим функцию String с названием Comand, которая необходима для обработки массива данных, представленного в виде информации о положении контактов коммутационных устройств, которое необходимо задать в текущей ситуации (происходит получение команды от ведущего МБУ, при этом возвращаемого значения нет). Функция String позволяет работать с переменными типа char, которые использованы в программе. Данная функция является своего рода конструктором, формирующим класс полученных данных. String Comand = "";

Далее мы вводим переменную символьного типа char с наименованием Answer, которая будет передавать информацию на главный контроллер Arduino Uno о состоянии контактов и наличии напряжения на выводах у коммутационных систем. Происходит процесс запроса 14 байт информации: 8 контактов-реле размером в 1 байт, 4 точки контроля напряжения на выводах, 1 байт несет в себе символ разделения между наличием напряжения и положением контактов для лучшего визуального восприятия на мониторе и 1 байт отводится размеру массива, который выполняет функцию завершения запроса. Запрос 14 байт происходит со всех микроконтроллеров. И так как количество контактов и точек мониторинга напряжения у других коммутационных систем меньше, чем у 1МКССМ-8-4В, то впоследствии в цикле программы недостающие ответы мы сами задаем как отсутствующие: '0'. char Answer[14];

Затем мы вводим «глобальные» переменные, которые будут использоваться во всех циклах программы.

В первую очередь мы придаем постоянные значения от 2 до 9 контактам коммутационных устройств: цифровые контакты D2-D9 платы Arduino. Для этого мы используем переменную const byte, которая позволяет передавать уменьшенный объем информации (8 бит). Значение переменной хранит беззнаковое число от 0 до 255 и не меняется в цикле программы. Ниже приведены некоторые примеры обозначения переменных данного типа с разных МБУ.

const byte SPAVR_Rele_1 = 2; // МБУ №7 для ТП и СПАВР. const byte AVR_P_Rele_2 = 3; // МБУ №6 для АВР-П. const byte Two_MKC_4_Rele_3 = 4; // МБУ №5 для 2МКС-4. const byte VAS_Rele = 5; // МБУ №4 для 2МКС-3 и ВЭС. const byte SAS_Rele = 6; //МБУ №2 для 1МКС-3 и СЭС. const byte MKCCM_8_4B_Rele_6 = 7; //МБУ №3 для 1МКССМ-8-4В. const byte MKCCM_8_4B_Rele_7 = 8; // МБУ №3 для 1МКССМ-8-4В. const byte MKCCM_8_4B_Rele_8 = 9; // МБУ №3 для 1МКССМ-8-4В. Далее мы используем переменные символьного (знакового) типа - char. Переменная этого типа данных занимает объем памяти размером в 1 байт и может хранить числовые значения в диапазоне от -128 до 127. Мы используем переменные данного типа для обозначения изначально разомкнутых (0) контактов коммутационных устройств и выключателей источников генерации. Соответственно, замкнутые положения обознаются как (1). Данная операция необходима для того, чтобы ведущий МБУ проекта сам произвел процесс включения стенда и установил нормальный режим работы. Например, для МБУ №3, осуществляющего управление коммутационным устройством 1МКССМ-8-4В, процесс обозначение переменных данного типа выглядит следующие образом: char Rele_1 = 0; char Rele_2 = 0; char Rele_3 = 0; char Rele_4 = 0; char Rele_5 = 0; char Rele_6 = 0; char Rele_7 = 0; char Rele 8 = 0;

Следующим этапом является придание постоянных значений A0-A3 (аналоговые пины платы Arduino) датчикам напряжения, установленным на выводах коммутационных устройств. Для этого мы используем переменную const byte.

const byte One_MKC_3_input_B1 = A0; // МБУ №1 - Придание постоянного значения датчику напряжения, установленному на выводе B1 коммутационного устройства 1МКС-3.

const byte One_MKC_4_input_B2 = A1; // МБУ №2 - Придание постоянного значения датчику напряжения, установленному на выводе B2 коммутационного устройства 1МКС-4.

const byte Two_MKC_3_input_B3 = A2; // МБУ №4 - Придание постоянного значения датчику напряжения, установленному на выводе B3 коммутационного устройства 2МКС-3.

const byte MKCCM_8_4B_input_B4 = A3; // МБУ - №3 - Придание постоянного значения датчику напряжения, установленному на выводе B4 коммутационного устройства МКССМ-8-4В.

Заключительным этапом в обозначении переменных является использование 2-х байтового целочисленного типа данных int для обозначения переменных, считывающих само напряжение на выводах коммутационных систем. Такая размерность типа данных дает возможность хранить значения в диапазоне от -32768 до 32767. Это необходимо в связи с тем, что сам микроконтроллер представляет напряжение с помощью интерпретационной шкалы от 0 до 1024. Мы изначально задаем, что напряжения на выводах коммутационных устройств нет. Эти переменные обозначены аналогично для всех ведомых МБУ проекта: in U_B1 = 0; in' U_B2 = 0; in' U_B3 = 0; in U_B4 = 0;

void setup() { // начало цикла, здесь располагаются программы, которые необходимо выполнить один раз перед началом работы цикла void loop.

Serial.begin(9600); // функция позволяет устанавливать соединение контроллера с внешним устройством и выводит информацию монитора порта на экран ПК, 9600 бит/секунду - скорость обмена данными, заданная по умолчанию.

Wire.begin(1/2/../7); // Библиотека позволяет производить связь устройств через интерфейс I2C. Использованы: A4- линия данных, А5 - линия тактового сигнала. Адреса устройств: 1МКС-3 - №1; 1MKC-4 - №2; 1МКССМ-8-4В - №3; 2MKC-3 - №4; 2MKC-4 - №5; АВР-П - №6; СПАВР - №7.

Далее на ведомой плате Arduino Nano назначаем функции, которые будут автоматически вызываться при получении запроса от ведущей платы Arduino Uno. Они начинают работать при поступлении данных от ведущего МБУ: переключение контактов, запрос наличия напряжения. Данные функции не возвращают никаких значений и принимают лишь один параметр, описывающий количество поступивших байт с ведущего микроконтроллера. Wire.onRequest(requestEvent); Wire.onReceive(receiveEvent);

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

pinMode(One_MKC_3_Rele_1, OUTPU ); //МБУ №1. pinMode(One_MKC_4_Rele_2, OUTPU ); //МБУ №2. pinMode(MKCCM_8_4B_Rele_3, OUTPU ); //МБУ №3. pinMode(VAS_Rele, OUTPU ); //МБУ №4. pinMode(Two_MKC_4_Rele_4, OUTPU ); //МБУ №5. pinMode(AVR_P_Rele_1, OUTPU ); //МБУ №6.

pinMode(TP_Rele, OUTPUT); //МБУ №7.

Затем с помощью функции digitalWrite мы изначально устанавливаем (снимаем) напряжение на всех контактах коммутационных устройств и выключателях источников генерации низким - Low. Таким образом, все они разомкнуты. digitalWrite(SPAVR_Rele_1, LO ); //МБУ №7. digitalWrite(AVR_P_Rele_3, LO ); //МБУ №6. digitalWrite(Two_MKC_4_Rele_1, LO ); //МБУ №5. digitalWrite(Two_MKC_3_Rele_2, LO ); //МБУ №4. digitalWrite(MKCCM_8_4B_Rele_7, LO ); //МБУ №3. digitalWrite(SAS_Rele, LO ); //МБУ №2. digitalWrite(N_Rele, L< ); //МБУ №1. } //конец цикла void setup.

Далее следует цикл void loop, в который помещены программы, выполняющиеся все время пока работает микроконтроллер. Начав выполнение с первой команды, микроконтроллер дойдет до конца и сразу же перепрыгнет в начало, чтобы повторить ту же последовательность. И так бесконечное число раз (до тех пор, пока на плату будет подано питание).

void loop() { // начало основного цикла программы.

byte i = 0; // вводим постоянную переменную изначально равную 0 для многократного измерения напряжения на выводах.

Затем мы вводим переменные целового типа с наименованием A-D, необходимые для считывания напряжениях на выводах B1-B4 коммутационных систем.

int A = 0; int B = 0; int C = 0; int D = 0;

Напряжение на выводах у коммутационных систем мы будем считывать неоднократно. Это необходимо для того, чтобы добиться максимальной точности показаний и устранить ошибки работы электрической схемы при отправлении запроса от ведущего мБу ведомым. Для мониторинга напряжения мы используем функцию analogRead, которая с помощью интерпретационной шкалы от 0 до 1024 считывает 29 раз значения напряжения на выводах B1-B4 коммутационных устройств, складывая все полученные значения в переменные A-D с учетом сложения изначально заданного отсутствующим (0) напряжения.

while( i < 30){ // начало цикла while, позволяющего выполнить одни и те же операции определенное количество раз - 29 раз измеряем наличие напряжения на выводах .

delay (10); // вводим задержку перед считыванием напряжения с вывода B1. A = A + analogRead(SPAVR_input_B1); // МБУ №7.

delay (10); // вводим задержку перед считыванием напряжения с вывода B2. B = B + analogRead(AVR_P_input_B2); // МБУ №6.

delay (10); // вводим задержку перед считыванием напряжения с вывода B3. C = C + analogRead(One_MKC_3_input_B3); МБУ №1.

delay (10); // вводим задержку перед считыванием напряжения с вывода B4. D = D + analogRead(One_MKC_4_input_B4); // МБУ №2.

i++; // добавляем текущее значение напряжения, доводя число измерений до 30. if ( i == 30) { // начало цикла - получив в общем 30 измерений находим их среднее арифметическое значение.

A = A / 30; // находим среднее арифметическое значение напряжения на выводе

B1.

B = B / 30; // находим среднее арифметическое значение напряжения на выводе

B2.

B3.

B4.

C = C / 30; // находим среднее арифметическое значение напряжения на выводе D = D / 30; // находим среднее арифметическое значение напряжения на выводе

} // конец цикла нахождения средних арифметических значений.

} // конец цикла while.

U_B1 = A; // присваиваем значению напряжения на выводе B1 среднее арифметическое 30 измерений.

U_B2 = B; // присваиваем значению напряжения на выводе B2 среднее арифметическое 30 измерений.

U_B3 = C; // присваиваем значению напряжения на выводе B3 среднее арифметическое 30 измерений.

U_B4 = D; // присваиваем значению напряжения на выводе B4 среднее арифметическое 30 измерений.

После завершения мониторинга напряжения выводим конкретные значения на монитор ПК.

Serial.println(A); // выводим значение напряжения на выводе B1 в COM-порт.

Serial.println(B); // выводим значение напряжения на выводе B2 в COM-порт.

Serial.println(C); // выводим значение напряжения на выводе B3 в COM-порт.

Serial.println(D); // выводим значение напряжения на выводе B4 в COM-порт.

В основном цикле программы мы также формируем переменную Answer, передающую информацию на главный контроллер о наличии напряжения и положении контактов. Она состоит из 14 байт, нумерация которых в программе происходит с 0 по 13, причем каждый байт несет в себе информацию о определенном датчике напряжения или контакте. При недостатке датчиков контроля напряжения и контактов у других коммутационных аппаратов до количества датчиков и контактов 1МКССМ-8-4В, под которую и была сделана универсальная программа, отсутствующие элементы задаются как '0' и не несут никакой информации. Например, переменная Answer, формирующая информацию о положении контактов, для МБУ №3 выглядит следующим образом:

Answer[0] = Rele_1; //получение коммутационного устройства 1МКССМ-8-4В.

Answer[1] = Rele_2; //получение коммутационного устройства 1МКССМ-8-4В.

Answer[2] = Rele_3; //получение коммутационного устройства 1МКССМ-8-4В.

Answer[3] = Rele_4; //получение коммутационного устройства 1МКССМ-8-4В.

Answer[4] = Rele_5; //получение коммутационного устройства 1МКССМ-8-4В.

Answer[5] = Rele_6; //получение коммутационного устройства 1МКССМ-8-4В.

Answer[6] = Rele_7; //получение коммутационного устройства 1МКССМ-8-4В.

Answer[7] = Rele_8; //получение коммутационного устройства 1МКССМ-8-4В.

Answer[8] = '_ ; //введение разделения наличием напряжения.

if (U_B1 > 615) Answer[9] = 1'; // 5В представлено по шкале от 0 до 1024, если получаемое значение больше 615 (примерно 3В), то мы считаем, что напряжение на выводе B1 коммутационного устройства МКССМ-8-4В есть.

if (U_B1 < 410) Answer[9] = 0'; // 5В представлено по шкале от 0 до 1024, если получаемое значение меньше 410 (примерно 2В), то мы считаем, что напряжения на выводе B1 коммутационного устройства МКССМ-8-4В нет.

информации о состоянии контакта 1

информации о состоянии контакта 2

информации о состоянии контакта 3

информации о состоянии контакта 4

информации о состоянии контакта 5

информации о состоянии контакта 6

информации о состоянии контакта 7

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

информации о состоянии контакта 8

между положениями контактов и

if (U_B2 > 615) Answer[10] = '1 ; // 5В представлено по шкале от 0 до 1024, если получаемое значение больше 615 (примерно 3В), то мы считаем, что напряжение на выводе B2 коммутационного устройства МКССМ-8-4В есть.

if (U_B2 < 410) Answer[10] = '0 ; // 5В представлено по шкале от 0 до 1024, если получаемое значение меньше 410 (примерно 2В), то мы считаем, что напряжения на выводе B2 коммутационного устройства МКССМ-8-4В нет.

if (U_B3 > 615) Answer[11] = '1 ; // 5В представлено по шкале от 0 до 1024, если получаемое значение больше 615 (примерно 3В), то мы считаем, что напряжение на выводе B3 коммутационного устройства МКССМ-8-4В есть.

if (U_B3 < 410) Answer[11] = '0 ; // 5В представлено по шкале от 0 до 1024, если получаемое значение меньше 410 (примерно 2В), то мы считаем, что напряжения на выводе B3 коммутационного устройства МКССМ-8-4В нет.

if (U_B4 > 615) Answer[12] = '1 ; // 5В представлено по шкале от 0 до 1024, если получаемое значение больше 615 (примерно 3В), то мы считаем, что напряжение на выводе B4 коммутационного устройства МКССМ-8-4В есть.

if (U_B4 < 410) Answer[12] = '0 ; // 5В представлено по шкале от 0 до 1024, если получаемое значение меньше 410 (примерно 2В), то мы считаем, что напряжения на выводе B4 коммутационного устройства МКССМ-8-4В нет.

Serial.println(Answer); // функция serial.println позволяет вывести на экран массив информации о положении контактов и наличии напряжения на выводах коммутационного устройства МККСМ-8-4В. ln - позволяет положение контактов и наличие напряжения отображать с новой строки.

В основном цикле программы мы также осуществляем переключения контактов в зависимости от команд, поступающих с ведущего МБУ. Мы используем логический оператор if, который проверяет определенное условие; и в зависимости от верности или ложности условия выполняется блок кода, заключенный в следующие скобки. Ведущий МБУ посылает команды включения '1' и отключения '0' контактов и с помощью функции digitalWrite мы подаем/снимаем напряжение на базах транзисторов, тем самым размыкая/замыкая контакты коммутационных устройств.

(Rele_1 == " ) digitalWrite(SPAVR_Rele_1, HIGI ); // МБУ №7.

(Rele_1 == '( ) digitalWrite(SPAVR_Rele_1, LO ); // МБУ №7.

(Rele_2 == " ) digitalWrite(Two_MKC_3_Rele_2, HIGH); // МБУ №4.

(Rele_2 == '0 ) digitalWrite(Two_MKC_3_Rele_2, .C ); // МБУ №4.

(bgyRele == '1) digitalWrite(BGY_Rele, HIGH); // МБУ №1. i (bgyRele == 'C ) digitalWrite(BGY_Rele, LC ); // МБУ №1. } //Конец основного цикла программы.

void requestEvent() { //данная функция обработчик информации выполняется при получении запроса от ведущего устройства - начало цикла.

Wire.write(Answer); // ставит данные о положении контактов реле и наличии напряжения в очередь для передачи. } //конец цикла.

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

void receiveEvent() { // начало цикла.

Comand = ""; // получение информации об изменении положения контактов. while (Wire.available()) { // возвращает количество байт на ведущий микроконтроллер о положении контактов. На ведущем устройстве данная функция вызывается после функции requestFrom, а на ведомом внутри функции обработчика onReceive.

char c = Wire.read(); // используем переменную символьного типа - char, для обозначения функции Wire.read, которая производит чтение байтов (положение

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

Comand = Comand + c; // формирование команды на переключение контактов путем сложения изначально полученного пакета байтов информации и расшифрованных значений.

} //конец цикла.

Далее мы с помощью функции charAt, позволяющей возвращать указанный символ из массива данных String, производим переключение всех контактов в соответствии с текущей ситуацией. Этот цикл для МБУ №1 выглядит следующим образом:

Rele_1 = Comand.charAt(0); // разбираем команду на переключение контакта.

Rele_2 = Comand.charAt(1); // разбираем команду на переключение контакта.

Rele_3 = Comand.charAt(2); // разбираем команду на переключение контакта.

nRele = Comand.charAt(3); // разбираем команду на переключение выключателя накопителя.

bgyRele = Comand.charAt(4); // разбираем команду на переключение выключателя БГУ.

}//конец цикла.

Вывод.

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

Библиография:

1. Виноградов А.В., Лансберг А.А. Интеллектуальные электрические сети на основе МКС: материалы Международной студенческой научной конференции «Горинские чтения. Наука молодых - инновационному развитию АПК» (28-29 марта 2019 года): в 4 т. Том 4. п. Майский.: Издательство ФГБОУ ВО Белгородский ГАУ, 2019. 245 С.

2. Лансберг А.А. Повышение надежности электроснабжения поселка Корсунь посредством применения мультиконтактных коммутационных систем // Научный журнал молодых ученых. № 1(14). март 2019. С.51-60.

3. Виноградов А.В. Новые мультиконтактные коммутационные системы и построение на их базе структуры интеллектуальных распределительных электрических сетей // Агротехника и энергообеспечение. №3 (20). 2018. С. 7-20.

4. Виноградов А.В., Большев В.Е., Виноградова А.В. Системы интеллектуализации распределительных электрических сетей/ А. В. Виноградов, В. Е. Большев, А. В. Виноградова // В сборнике: Информационные технологии, системы и приборы в АПК: материалы 7-й Международной научно-практической конференции «Агроинфо-2018». Сибирский федеральный научный центр агробиотехнологий Российской академии наук, Сибирский физико-технический институт аграрных проблем и др. 2018. С. 443-447.

5. Виноградов А.В., Виноградова А.В., Марин А.А. Применение мультиконтактных коммутационных систем с мостовой схемой и четырьмя выводами в схемах электроснабжения потребителей и кодирование возникающих при этом ситуаций // Вестник НГИЭИ. 2019. № 3 (94). С. 41-50.

6. Лансберг А.А. Мультиконтактная коммутационная система МКС-4 и преимущества ее применения. В книге: Энергетика. Проблемы и перспективы развития: материалы IV Всероссийской научной конференции. 2019. С. 117-119.

7. Электрические сети на основе мультиконтактных коммутационных систем и их воздействие на экологию / Лансберг А.А., Игнатова Г.А., Семенов А.Е., Уварова М.Н., Виноградов А.В. // Экология и сельское хозяйство: на пути к инновациям: материалы Международной научно-практической конференции. 2019. С. 184-191.

8. Виноградов А.В., Лансберг А.А., Семенов А.Е. Выбор системы электроснабжения демонстрационного стенда «Интеллектуальные сети на основе мультиконтактных коммутационных систем» и кодирование возникающих ситуаций с помощью двоичного кода. // Инновации в образовании: материалы XI научно-практической конференции: в 2-х частях. Орел.: Изд-во ФГБОУ ВО Орловский ГАУ, 2019. С. 14-18.

9. Способ кодирования ситуаций в сети, содержащей мультиконтактные коммутационные системы и возобновляемые источники энергии / А.В. Виноградов, А.В. Виноградова, В.Е. Большев, А.А. Лансберг // Вестник аграрной науки Дона». 2019. № 2 (46). Издательство.: Азово-Черноморский инженерный институт - филиал федерального государственного бюджетного образовательного учреждения высшего образования «Донской государственный аграрный университет» в г. Зернограде. С. 6876.

10. Виноградов А.В., Лансберг А.А., Псарев А.И. Электрическая принципиальная схема управления мультиконтактной коммутационной системой, выполненной по смешанной схеме, с 8 контактами и 4 выводами // Профессия инженер: сборник материалов Молодежной научно-практической конференции. Орел.: Изд-во ФГБОУ ВО Орловский ГАУ, 2019. С. 103-107.

11. Лансберг А.А., Панфилов А.А. Электрическая принципиальная схема управления мультиконтактной коммутационной системой с 4 контактами и микроконтроллерным блоком управления Arduino Nano V3/0 CH340 для демонстрационного стенда // Научный журнал молодых ученых. № 2(15). июнь 2019. С. 69-75.

УДК 693.2

ИЕРАРХИЧЕСКАЯ МОДЕЛЬ ВЫБОРА МАТЕРИАЛА СТЕН

Макарова А.И., магистрант 1 курса направления подготовки 08.04.01 «Строительство». Научный руководитель: д.э.н., профессор Шуметов В.Г. ФГБОУ ВО Орловский ГАУ

АННОТАЦИЯ

Рассмотрены факторы, которые влияют на выбор материала стен. Для решения этой задачи в программной среде системы поддержки принятия решений Expert Decide построена иерархическая модель, позволяющая определить веса критериев выбора и проводить обоснованное сравнение альтернатив.

КЛЮЧЕВЫЕ СЛОВА

Метод анализа иерархий, система поддержки принятия решений, выбор материала стен, конструкция, модель принятия решения.

i Надоели баннеры? Вы всегда можете отключить рекламу.