<!DOCTYPE article
PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.4 20190208//EN"
       "JATS-journalpublishing1.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="1.4" xml:lang="en">
 <front>
  <journal-meta>
   <journal-id journal-id-type="publisher-id">Vestnik of Astrakhan State Technical University. Series: Management, computer science and informatics</journal-id>
   <journal-title-group>
    <journal-title xml:lang="en">Vestnik of Astrakhan State Technical University. Series: Management, computer science and informatics</journal-title>
    <trans-title-group xml:lang="ru">
     <trans-title>Вестник Астраханского государственного технического университета. Серия: Управление, вычислительная техника и информатика</trans-title>
    </trans-title-group>
   </journal-title-group>
   <issn publication-format="print">2072-9502</issn>
   <issn publication-format="online">2224-9761</issn>
  </journal-meta>
  <article-meta>
   <article-id pub-id-type="publisher-id">86051</article-id>
   <article-id pub-id-type="doi">10.24143/2072-9502-2024-3-17-25</article-id>
   <article-categories>
    <subj-group subj-group-type="toc-heading" xml:lang="ru">
     <subject>УПРАВЛЕНИЕ, МОДЕЛИРОВАНИЕ, АВТОМАТИЗАЦИЯ</subject>
    </subj-group>
    <subj-group subj-group-type="toc-heading" xml:lang="en">
     <subject>CONTROL, MODELING, AUTOMATION</subject>
    </subj-group>
    <subj-group>
     <subject>УПРАВЛЕНИЕ, МОДЕЛИРОВАНИЕ, АВТОМАТИЗАЦИЯ</subject>
    </subj-group>
   </article-categories>
   <title-group>
    <article-title xml:lang="en">Development of a cross-platform application  for controlling a robotic complex</article-title>
    <trans-title-group xml:lang="ru">
     <trans-title>Разработка кроссплатформенного приложения  для управления робототехническим комплексом</trans-title>
    </trans-title-group>
   </title-group>
   <contrib-group content-type="authors">
    <contrib contrib-type="author">
     <name-alternatives>
      <name xml:lang="ru">
       <surname>Колтыгин</surname>
       <given-names>Дмитрий Станиславович </given-names>
      </name>
      <name xml:lang="en">
       <surname>Koltygin</surname>
       <given-names>Dmitry Stanislavovich </given-names>
      </name>
     </name-alternatives>
     <email>kds@brstu.ru</email>
     <xref ref-type="aff" rid="aff-1"/>
    </contrib>
    <contrib contrib-type="author">
     <name-alternatives>
      <name xml:lang="ru">
       <surname>Седельников</surname>
       <given-names>Илья Андреевич </given-names>
      </name>
      <name xml:lang="en">
       <surname>Sedel'nikov</surname>
       <given-names>Il'ya Andreevich </given-names>
      </name>
     </name-alternatives>
     <email>ohtargil@yandex.ru</email>
     <xref ref-type="aff" rid="aff-2"/>
    </contrib>
   </contrib-group>
   <aff-alternatives id="aff-1">
    <aff>
     <institution xml:lang="ru">Братский государственный университет</institution>
     <country>Россия</country>
    </aff>
    <aff>
     <institution xml:lang="en">Bratsk State University</institution>
     <country>Russian Federation</country>
    </aff>
   </aff-alternatives>
   <aff-alternatives id="aff-2">
    <aff>
     <institution xml:lang="ru">Братский государственный университет</institution>
     <city>Братск</city>
     <country>Россия</country>
    </aff>
    <aff>
     <institution xml:lang="en">Bratsk State University</institution>
     <city>Братск</city>
     <country>Russian Federation</country>
    </aff>
   </aff-alternatives>
   <pub-date publication-format="print" date-type="pub" iso-8601-date="2024-07-29T09:25:07+03:00">
    <day>29</day>
    <month>07</month>
    <year>2024</year>
   </pub-date>
   <pub-date publication-format="electronic" date-type="pub" iso-8601-date="2024-07-29T09:25:07+03:00">
    <day>29</day>
    <month>07</month>
    <year>2024</year>
   </pub-date>
   <volume>2024</volume>
   <issue>3</issue>
   <fpage>17</fpage>
   <lpage>25</lpage>
   <history>
    <date date-type="received" iso-8601-date="2024-04-17T00:00:00+03:00">
     <day>17</day>
     <month>04</month>
     <year>2024</year>
    </date>
    <date date-type="accepted" iso-8601-date="2024-07-09T00:00:00+03:00">
     <day>09</day>
     <month>07</month>
     <year>2024</year>
    </date>
   </history>
   <self-uri xlink:href="https://vestnik.astu.ru/en/nauka/article/86051/view">https://vestnik.astu.ru/en/nauka/article/86051/view</self-uri>
   <abstract xml:lang="ru">
    <p>Приводится краткий анализ подходов, применяемых в настоящее время для разработки программ управления, выявлены особенности их применения, преимущества и недостатки. Для исследования выбрана разработка кроссплатформенного приложения систем управления робототехническими комплексами (РТК) на примере РТК с роботами-манипуляторами МП-11. Структура системы управления включает в себя контроллер на плате Arduino Mega 2560 Pro Mini с загруженной программой низкого уровня и программу верхнего уровня. Разработка производится на платформе .NET MAUI, которая позволяет создать приложение для операционных систем Windows, Android, IOS на единой кодовой базе, т. е. один и тот же код автоматически компилируется под все операционные системы с учетом их особенностей и применяемых элементов. Подключение управляющего компьютера осуществляется по USB, мобильных устройств – по Bluetooth, при этом программно передача данных осуществляется через последовательный порт. Приведено описание режимов работы разработанного приложения, его алгоритмов функционирования с указанием особенностей выполнения для данного типа программ и внешнего вида форм с расположенными на них элементами. В программе предусмотрен ручной и автоматический режимы работы, а также управление не только РТК, но и его моделью. Ключевой особенностью данного приложения является использование единой кодовой базы и оформления для реализации настольного и мобильного приложения для различных операционных систем без использования ресурсов сети, в отличие от web-приложений.</p>
   </abstract>
   <trans-abstract xml:lang="en">
    <p>A brief analysis of the approaches currently used to develop management programs is provided, their application features, advantages and disadvantages are identified. For the study, the development of a cross-platform appli-cation of control systems for robotic complexes (RTC) was chosen, using the example of RTC with MP-11 robotic manipulators. The structure of the control system includes a controller on the Arduino Mega 2560 Pro Mini board with a loaded low-level program and an upper-level program. The development is carried out on the platform.NET MAUI, which allows you to create an application for Windows, Android, and IOS operating systems on a single code base, i.e. the same code is automatically compiled for all operating systems, taking into account their features and applied elements. The control computer is connected via USB, mobile devices via Bluetooth, while data is programmatically transmitted via a serial port. The description of the modes of operation of the developed application, its functioning algorithms, indicating the features of execution for this type of programs and the appearance of forms with elements located on them is given. The program provides manual and automatic modes of operation, as well as control &#13;
of not only the RTC, but also its model. The key features of this application are the use of a single code base and design for the implementation of desktop and mobile applications for various operating systems without using network resources, unlike web applications.</p>
   </trans-abstract>
   <kwd-group xml:lang="ru">
    <kwd>робототехнический комплекс</kwd>
    <kwd>кроссплатформенное приложение</kwd>
    <kwd>MAUI</kwd>
    <kwd>робот</kwd>
    <kwd>алгоритм</kwd>
    <kwd>управляющая программа</kwd>
   </kwd-group>
   <kwd-group xml:lang="en">
    <kwd>robotics complex</kwd>
    <kwd>cross-platform application</kwd>
    <kwd>MAUI</kwd>
    <kwd>robot</kwd>
    <kwd>algorithm</kwd>
    <kwd>control program</kwd>
   </kwd-group>
  </article-meta>
 </front>
 <body>
  <p> Введение В настоящее время в системах управления могут применяться устройства с различными операционными системами, например компьютеры с Windows и Linux, телефоны или планшеты с Android и IOS. Это позволяет создавать удобное и функциональное рабочее место оператора. Однако возникает необходимость работы программы управления на всех операционных системах, с сохранением ее функционала и внешнего вида.Это порождает три подхода к решению поставленной задачи:– создание нативных приложений для каждой ОС;– создание web-приложения;– создание кроссплатформенного приложения.В таблице приведен анализ основных параметров различных приложений. Анализ параметров приложенийAnalysis of application parametersПараметрНативные приложенияWeb-приложениеКроссплатформенноеприложениеУстановкаТребуетсяНе требуетсяТребуетсяОперационная система (ОС), на которойвозможно запустить приложение Для каждой ОСсвое приложениеЛюбаяЛюбая из поддерживаемых средством разработкиЯзык программированияДля каждой ОС свойЕдиный для всех ОСЕдиный для всех ОС,поддерживаемыхсредством разработкиСкорость разработкии отладкиВысокая для отдельного приложения, низкаяв совокупностиВысокаяСредняя, требуетсяоптимизация некоторых задач под разные ОСОбслуживаниеПростое для отдельного приложения, оченьсложное в совокупностиПростоеСреднее. Требуетсятестирование наразличных устройствахОбновление на стороне пользователяПовторная установкаили обновлениеНе требуетсяПовторная установкаили обновлениеДоступ через сетьНе требуетсяТребуетсяНе требуетсяСкорость работы ВысокаяНизкаяСредняяОтличия в работеМогут присутствовать отличия в интерфейсеи функционале наразличных устройствахОдинаковый функционал. Интерфейс может отличаться только наличием мобильного видаОдинаковый функционал и интерфейс, но могут присутствовать отличия, связанные с особенностями различных ОС  Для решения большинства задач оптимальнее выбрать web- или кроссплатформенное приложение. В существующей системе управления предполагается использование устройств без доступа к сети, подключаемых по USB и Bluetooth, поэтому выбор пал на кроссплатформенное приложение, поскольку данный подход позволяет создавать приложения для различных платформ с одной кодовой базой и оформлением.Один из самых популярных подходов к созданию кроссплатформенных приложений – использование мультиплатформенных фреймворков и библиотек. Они позволяют разрабатывать приложения на едином языке программирования, применяя их на разных платформах, таких как Windows, MacOS, Linux, iOS, Android и т. д., в качестве примера можно привести MAUI/Xamarin, React Native, Flutter, Electron и др. Структура системы управленияРобототехнический комплекс (РТК),  для которого разрабатывается приложение, состоит из двух манипуляторов МП 11 и транспортера, подключенных к контроллеру специальными кабелями. Контроллер построен на плате Arduino Mega 2560 Pro Mini с дополнительным модулем hc-05. Мобильные устройства (телефоны и планшеты) подключаются по Bluetooth, а ПК по USB, при этом программно подключение осуществляется через последовательный порт в обоих случаях. Структурная схема приведена на рис. 1.   Рис. 1. Структурная схема робототехнического комплексаFig. 1. Block diagram of a robotic complex  В контроллер записана специально разработанная программа низкого уровня, которая осуществляет управление функциями принятия, обработки и отправки команд, управление подключенными компонентами (реле, платами расширения и т. д.).На роботе МП-11 установлены 12 датчиков (конечные микропереключатели), которые определяют состояние каждого звена, кроме схвата, т. к. на нем отсутствует концевик. Контроллер делает ежесекундный опрос датчиков и формирует сообщение в виде «0» и «1», указывая состояние. Данное сообщение отправляется в COM-порт в формате «101010101010». Программа управления, запущенная на устройстве, считывает сообщение при запуске и выполнении каждой команды. Полученный текст разбивается на элементы, определяется состояние пары датчиков, расположенных на концах звена. Если звено находится в конечном положении, значения должны быть противоположные. Если значения не изменились за 2 секунды или значения равны, будет выдано сообщение об ошибке.Более подробно о создании контроллера и его программной составляющей написано в статье [1]. Алгоритмы работы программыНа рис. 2 приведен алгоритм ручного управления РТК.  Рис. 2. Алгоритм ручного управления робототехническим комплексом Fig. 2. The algorithm of manual control of the robotic complex  На рис. 3 приведен алгоритм автоматического управления РТК.   Рис. 3. Алгоритм автоматического управления робототехническим комплексом Fig. 3. The algorithm of automatic control of the robotic complex  Описание среды разработкиВ качестве среды разработки выбрана платформа .NET MAUI, поскольку уже существуют web-приложение и программа для настольного ПК под управление ОС Windows, что позволяет заимствовать из них большинство алгоритмов и модулей.При написании программы на .NET MAUI используются языки C# и XAML.Данная платформа входит в состав Visual Studio, устанавливаемой на ПК под управлением ОС Windows или Mac, и позволяет компилировать в собственные пакеты приложений:– приложения Android, компилируются из C# на промежуточный язык (IL), который затем компилируется JIT в собственную сборку при запуске приложения;– приложения iOS, полностью заранее скомпилированы из C# в собственный код сборки ARM;– приложения macOS, используется Mac Catalyst – решение apple, которое переносит приложение iOS, созданное с помощью UIKit, на рабочий стол и дополняет его API AppKit и платформами по мере необходимости;– приложения Windows, которые используют библиотеку пользовательского интерфейса Windows 3 (WinUI 3) для создания собственных приложений, предназначенных для рабочего стола Windows [2].На рис. 4 схематично показан процесс компиляции любого приложения, написанного с помощью кроссплатформенного фреймворка .NET MAUI.  Рис. 4. Структурная схема компиляции приложения MAUI  Fig. 4. The block diagram of the compilation of the MAUI application  Приложение разделено на две составляющие, абстрагированные друг от друга, – интерфейс пользователя и бизнес-логику.Пользовательский интерфейс описывается с помощью XAML, нейтрального для платформы языка на основе XML, аналогично web-приложению. При этом для оформления внешнего вида можно использовать текстовое представление и графический интерфейс, что повышает удобство и скорость создания формы.Бизнес-логика, отвечающая за выполнение операций, реализуется на языке C#.Платформа .NET MAUI всегда создает машинный код для целевого устройства, чтобы обеспечить оптимальную производительность. Для выполнения операции в .NET MAUI используются обработчики, относящиеся к каждой платформе и элементу пользовательского интерфейса. Например, при использовании iOS обработчик .NET MAUI сопоставит этот код с элементом UIButton iOS, если используется Android, то с Android AppCompatButton. Доступ к этим обработчикам осуществляется косвенно, через интерфейс для конкретного элемента управления, предоставляемый .NET MAUI [3].Поскольку релиз данной платформы состоялся только в конце 2021 г., обязательным условием работы является установка Visual Studio версии не старше 17.3. Описание разработанного приложения для управления РТК на базе манипуляторов МП-11Разработанное приложение поддерживает работу на устройствах с операционной системой Windows (версия не старше 10.0.17763.0), Android (версия не старше 5.0), IOS (версия не старше 11.0).В программе предусмотрены два режима работы:– ручное управление;– автоматическое управление.Элементы управления, требуемые для выполнения всех функций, разнесены на отдельные формы для удобства использования и компактности размещения, что особенно актуально в мобильной версии (в связи с малым размером экрана).Приложение позволяет осуществлять управление РТК в реальном времени и его моделью в режиме имитации, даже без непосредственного подключения к контроллеру. Данный режим работы очень востребован при обучении специалистов, т. к. позволяет готовить одновременно несколько человек, и при отладке управляющих программ для избегания нештатных ситуаций в случае ошибочных команд.Внешний вид формы ручного управления комплексом приводится на рис. 5, а автоматического – на рис. 6.  Рис. 5. Форма ручного управления робототехническим комплексом Fig. 5. The form of manual control of a robotic complex  Рис. 6. Форма автоматического управления робототехническим комплексом Fig. 6. The form of automatic control of a robotic complex  В окне ручного управления располагаются кнопки, выполняющие функции пульта управления, отдельные для каждого из манипуляторов и транспортерной ленты, кнопка переключения режима работы, блок выбора порта для подключения, блок записи управляющей программы, элементы включения/отключения камеры и режима имитации, а также два окна, отображающие текущее положение роботов.Блок записи управляющей программы позволяет создать управляющие программы для последующего использования их в автоматическом режиме или для отслеживания выполненных операций путем последовательного нажатия кнопок управления движением. Сформированная программа записывается в текстовый документ, пригодный для корректировки дальнейшего применения. Данная функция представляет собой один из вариантов обучения робота или создания управляющих программ в формате no-code.В окне автоматического управления также содержится блок для выбора порта подключения, кнопка смены режима, элементы управления камерой и имитацией, окна состояния манипуляторов. Кнопки управления движением заменены блоком ввода управляющих команд с возможностью загрузки существующей программы из файла. Управляющую программу можно зациклить, активировав соответствующий элемент. При этом действия будут выполняться до тех пор, пока не будет нажата кнопка «Стоп».Для формирования управляющей программы необходимо использовать специальный набор команд, описанный в статье [4]. Помимо основных операций в данном языке команд содержится множество алгоритмических функций, такие как условия, циклы, переходы и т. д., что позволяет формировать сложные управляющие программы. ЗаключениеКроссплатформенная разработка в настоящее время очень востребована, а применение ее в системах автоматизации позволяет расширить спектр используемых устройств для управления оборудованием. Методика, описанная в статье, является примером реализации подхода создания программ для РТК, однако она может быть использована и для других роботов и систем управления.Разработанное приложение применяется при освоении дисциплин, связанных с робототехникой, а также в профориентационных мероприятиях. Применение кроссплатформенного подхода дает возможность пользователям использовать привычные для них устройства для выполнения задач, не тратя время на освоение нового оборудования.</p>
 </body>
 <back>
  <ref-list>
   <ref id="B1">
    <label>1.</label>
    <citation-alternatives>
     <mixed-citation xml:lang="ru">Колтыгин Д. С., Авсиевич А. В., Седельников И. А. Аппаратно-программный комплекс для управления робототехническими комплексами // Мехатроника, автоматизация и управление на транспорте: материалы III Всерос. науч.-практ. конф. (Самара, 26–27 января 2021 г.). Самара: Изд-во Самар. гос. ун-та путей сообщения, 2021. С. 107–111.</mixed-citation>
     <mixed-citation xml:lang="en">Koltygin D. S., Avsievich A. V., Sedel'nikov I. A. Apparatno-programmnyi kompleks dlia upravleniia roboto-tekhnicheskimi kompleksami [Hardware and software complex for controlling robotic complexes]. Mekhatronika, avtomatizatsiia i upravlenie na transporte: materialy III Vserossiiskoi nauchno-prakticheskoi konferentsii (Samara, 26–27 ianvaria 2021 g.). Samara, Izd-vo Samar. gos. un-ta putei soobshcheniia, 2021. Pp. 107-111.</mixed-citation>
    </citation-alternatives>
   </ref>
   <ref id="B2">
    <label>2.</label>
    <citation-alternatives>
     <mixed-citation xml:lang="ru">Что такое .NET MAUI? URL: https://learn.microsoft.com/ru-ru/dotnet/maui/what-is-maui/ (дата обращения: 09.04.2024).</mixed-citation>
     <mixed-citation xml:lang="en">Chto takoe .NET MAUI? [What is.NET MAUI?]. Available at: https://learn.microsoft.com/ru-ru/dotnet/maui/what-is-maui/ (accessed: 09.04.2024).</mixed-citation>
    </citation-alternatives>
   </ref>
   <ref id="B3">
    <label>3.</label>
    <citation-alternatives>
     <mixed-citation xml:lang="ru">Описание архитектуры .NET MAUI. URL: https:// learn.icrosoft.com/ru-ru/training/modules/build-mobile-and-desktop-apps/2-describe-maui-architecture?ns-enrollment-tye=learningpath&amp;ns-enrollment-id=learn.dotnet-maui.build-apps-with-dotnet-maui (дата обращения: 09.04.2024).</mixed-citation>
     <mixed-citation xml:lang="en">Opisanie arhitektury .NET MAUI [Description of the architecture .NET MAUI]. Available at: https://learn.microsoft.com/ru-ru/training/modules/build-mobile-and-desktop-apps/2-describe-maui-architecture?ns-enrollment-type=learningpath&amp;ns-enrollment-id=learn.dotnet-maui.build-apps-with-dotnet-maui (accessed: 09.04.2024).</mixed-citation>
    </citation-alternatives>
   </ref>
   <ref id="B4">
    <label>4.</label>
    <citation-alternatives>
     <mixed-citation xml:lang="ru">Седельников И. А., Колтыгин Д. С. Методика разработки web-приложения для управления робототехническими комплексами // Вестн. Астрахан. гос. техн. ун-та. Сер.: Управление, вычислительная техника и информатика. 2024. № 1. С. 56–63. DOI: 10.24143/2072-9502-2024-1-56-63.</mixed-citation>
     <mixed-citation xml:lang="en">Sedel'nikov I. A., Koltygin D. S. Metodika razrabotki web-prilozheniia dlia upravleniia robototekhnicheskimi kompleksami [Methodology for developing a web application for managing robotic complexes]. Vestnik Astrakhanskogo gosudarstvennogo tekhnicheskogo universiteta. Seriia: Upravlenie, vychislitel'naia tekhnika i informatika, 2024, no. 1, pp. 56-63. DOI: 10.24143/2072-9502-2024-1-56-63.</mixed-citation>
    </citation-alternatives>
   </ref>
  </ref-list>
 </back>
</article>
