УДК 004.421

Реализация метода наложенной маски для создания тренировочных программ по поиску неисправностей в электрических цепях

Мирончук Артемий Владимирович – студент Петербургского государственного университета путей сообщения им. Императора Александра I

Аннотация: В статье рассматривается метод для создания обучающих программ по поиску неисправностей, а также для других задач. В качестве основной версии платформы разработки выбрана .NET 6. Наиболее подходящим вариантом является C# из-за наилучшей совместимости системы с платформой .NET. Для реализации необходимо иметь исходное изображение, копию исходного изображения с намеченными зонами взаимодействия и алгоритм сравнения цветов шестнадцатеричного формата.  Используется конструктор объекта Bitmap, принимающий в качестве аргументов файл исходного изображения, размер отображаемой картинки по высоте и ширине. Для вывода состояния используется текстовое поле у курсора.

Ключевые слова: программирование, поиск неисправностей, электрические цепи, Bitmap, наложение маски, C#.

Для снижения риска нанесения травм от удара электрическим током и механических воздействий (например, контакторные переключатели), а также для дополнительного обучения учеников и студентов по проверке электрических цепей был реализован метод наложенной маски для реализации в создаваемых программах на платформе .NET 6.

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

Карта (маска) представляет собой оригинальное изображение схемы, на которой различными цветами модели RGB выделены узлы (участки, места), имеющие собственное состояние (статус). RGB (аббревиатура английских слов red, green, blue – красный, зелёный, синий) или КЗС – аддитивная цветовая модель [1], описывающая способ кодирования цвета для цветовоспроизведения с помощью трёх цветов, которые принято называть основными.

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

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

Для проверки узлов электрической схемы подразумевается виртуальный "прозвон" контрольной лампой. Если рассматривается схема с постоянным напряжением, то для переключения полярности одного провода можно использовать элемент управления SwitchButton или два RadioButton.

Первоначально создаётся проект в Visual Studio на основе Windows Forms. Задаются первоначальные размеры формы, внедряется PictureBox и описательные элементы по желанию.

Через специализированную программу (Компас-электрик, AutoCad) создается нужная схема и импортируется в jpeg изображение (растровый графический формат [2]). В PictureBox загружается картинка и теперь она отображается на форме.

Важным этапом служит обработка исходного изображения в графической программе. Для этого нужно определить:

  • какая в схеме реализуется ошибка;
  • как должен протекать ток при этой неисправности;
  • реализуется ли дополнительные элементы управления для "переключения" протекания тока или полярности контрольной лампы.

В случае третьего пункта увеличивается количество наносимых на узлы или размеченных зон цветов.

Когда становится понятно, как будет протекать ток по электрической схеме, нужно постараться сгруппировать узлы, найти общие точки и разметить их одним цветом. Также важно для программной реализации алгоритма сравнения сохранять значения цветов в шестнадцатеричном формате. Например, #ff0000 отображается как красный цвет [3], потому что уровень красного здесь установлен в максимальное значение (ff), а уровень остальных составных цветов установлен в минимальное значение (00).

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

Он инкапсулирует точечный рисунок GDI+ [4], состоящий из данных пикселей графического изображения и атрибутов рисунка. Объект Bitmap используется для работы с изображениями, определяемыми данными пикселей.

Для примера данный метод был реализован для силовых цепей и цепей управления ЭД4М. На силовую цепь были нанесены контрольные точки, маска силовой цепи при ошибке переключения контроллера машиниста из «1» во «2» позицию изображена на рисунке 1.

1

Рисунок 1. Нанесение контрольных точек для проверки силовой цепи виртуальной контрольной лампой.

Так как у электропоезда цепи повышенного и пониженного постоянного напряжения [5], то соответственно используется 4 разъёма (для силовой цепи плюс и минус, как и для цепи управления).

Код реализации:

private void SilovayaScheme_MouseMove(object sender, MouseEventArgs e)

        {

            if (Error_groupbox.Enabled)

            {

                Cursor.Current = Cursors.Hand;

                Color colour = b.GetPixel(e.X, e.Y);

                string c = ToHexString(colour).ToLower();

                if (c != "#ffffff")

                {

                    if (plusSCRadio.Checked && c == "#0000fe")

                    {

                        SayPowerOff();

                    }

                    else if (minusSCRadio.Checked && c == "#0000fe")

                    {

                        SayPowerOn();

                    }

                    else if (minusSCRadio.Checked && c == "#00ffff")

                    {

                        SayPowerOn();

                    }

                    else if ((minusSCRadio.Checked || plusSCRadio.Checked) && (c == "#ff00fe" || c == "#fe0000"))

                    {

                        SayPowerOff();

                    }

                    else

                    {

                        MainToolTip.BackColor = Color.WhiteSmoke;

                        MainToolTip.Hide(this);

                    }

                }

                else

                {

                    MainToolTip.BackColor = Color.WhiteSmoke;

                    MainToolTip.Hide(this);

                }

 

            }

        }

Модуль SayPowerOn() отображает поле у курсора при наведении на точку (узел) с положительным исходом проверки, SayPowerOff() соответственно если лампа не загорелась.

Данный метод можно использовать и при написании игр, сайтов, но требует ресурсов оперативной памяти и тщательной проработки алгоритма сравнения.

Список литературы

  1. RGB // Википедия: сайт. – URL: https://ru.wikipedia.org/ (дата обращения: 16.08.2023).
  2. JPEG // Википедия: сайт. – URL: https://ru.wikipedia.org/ (дата обращения: 16.08.2023).
  3. HEX (Шестнадцатеричные) цвета // MSITER: сайт. – URL: https://msiter.ru/ (дата обращения: 16.08.2023).
  4. Microsoft: сайт. – URL: https://learn.microsoft.com/ (дата обращения: 16.08.2023).
  5. ЭД4 // Википедия: сайт. – URL: https://ru.wikipedia.org/ (дата обращения: 16.08.2023).

Интересная статья? Поделись ей с другими: