Библиотека Arduino RTOS

Автор Дзюба Дмитрий 241, Вторник, марта 04, 2025, 01:20:57

« предыдущая тема - следующая тема »
Вниз

Дзюба Дмитрий 241

Вторник, марта 04, 2025, 01:20:57 Последнее редактирование: Четверг, марта 06, 2025, 02:11:23 от Дзюба Дмитрий 241
Тема "Библиотека Arduino RTOS"

Исполнитель - Дзюба Дмитрий Михайлович, гр. 241-об

Научный руководитель - Русинов Владислав Леонидович, СКБ "Промышленная робототехника и автоматизация"

План.
1. Краткое введение в операционную систему RTOS
2. Возможность использования RTOS в автоматизации ТП
3. Описание среды разработки Arduino IDE
4. Описание и возможности библиотеки Arduino RTOS
5. Примеры использования библиотеки для разработки программ работающих в реальном времени.

Краткое введение в операционную систему RTOS

RTOS (Real-Time Operating System) -- это операционная система, специально разработанная для управления приложениями, требующими строго определённого времени отклика. В отличие от общих операционных систем (таких как Windows или macOS), которые стремятся к максимальной производительности и эффективности в общем смысле, RTOS направлен на быстрое и своевременное выполнение команд.

Используется RTOS в устройствах и системах, где нужна надёжность, скорость и простота. Например, она управляет системами защиты серверов, системаии автоматического управления и т.д.

Возможность использования RTOS в автоматизации ТП

Автоматизация ТП требует высокой точности и надежности, особенно когда речь идет о промышленных процессах, где задержки могут привести к сбоям или даже авариям. Вот несколько примеров, где использование RTOS оправдано:

Управление производственными линиями: Например, конвейеры, станки ЧПУ требуют точного управления движениями и синхронизации действий различных устройств.
Энергетика: Системы контроля энергоснабжения, мониторинга нагрузок и защиты оборудования от перегрузок.
Робототехника: Управление роботизированными манипуляторами, требующими синхронной работы нескольких механизмов.
Транспортировка: Системы управления транспортом, такие как автоматизированные поезда метро или беспилотники.

Преимущества RTOS в автоматизации:

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

Описание среды разработки Arduino IDE

Arduino IDE -- это бесплатная интегрированная среда разработки (Integrated Development Environment, IDE), предназначенная для программирования микроконтроллеров на платформе Arduino. Она включает в себя редактор кода, компилятор и загрузчик, позволяющие пользователям создавать, тестировать и загружать программы на платы Arduino.


Рис.1-Рабочее окно программы Arduino IDE



  • Пункты меню. Через пункты меню Вы можете получить доступ ко всем функциям Arduino IDE.
  • Проверить скетч (компилировать). Проверка кода программы на ошибки.
  • Загрузить скетч в Arduino. Компиляция кода и его загрузка в плату.
  • Вкладка с названием текущего скетча. Имя Вашего скетча.
  • Создать новый скетч. Новое окно с чистой рабочей областью.
  • Открыть скетч. Список программ из папки со скетчами.
  • Сохранить скетч. Сохранение скетча в указанную Вами папку.
  • Номера строк. Количество и номера строк, которые занимает Ваш код (если у Вас не отображаются номера строк,не волнуйтесь, -- чуть позже мы их включим).
  • Монитор последовательного порта. Окно для обмена сообщениями с платой через COM-порт.
  • Управление вкладками. Переключение между вкладками с разными скетчами.
  • Область вкладок. Область вкладок для быстрого переключения между скетчами.
  • Рабочая область скетча. Текстовый редактор для написания кода программы.
  • Область уведомлений. Область, информирующая пользователя обо всех событиях при записи или проверке кода. В том числе, здесь будут появляться и сообщения об ошибках.
  • Название платы. Модель выбранной платы.
  • Номер порта. COM-порт, к которому подключена плата.



Основные особенности Arduino IDE:
Простота использования: IDE разработана с учетом новичков, предлагая интуитивно понятный интерфейс и готовые примеры кода.
Кросс-платформенность: Доступна для Windows, macOS и Linux.
Поддержка множества плат: Работает с различными моделями Arduino, такими как Uno, Nano, Mega и др.
Интеграция с библиотеками: Позволяет подключать и использовать сторонние библиотеки для расширения функциональности.
Монитор последовательного порта: Встроенный инструмент для отображения и анализа данных, передаваемых через USB-соединение.

Работа с Arduino IDE:
Написание скетча (программы) на языке C/C++, используя стандартные функции и библиотеки Arduino.
Компиляция кода для проверки синтаксиса и ошибок.
Загрузка прошивки на плату через USB-кабель.

Описание и возможности библиотеки Arduino RTOS

Arduino RTOS -- это библиотека, которая реализует функции операционной системы реального времени (Real-Time Operating System, RTOS) для микроконтроллеров Arduino. Она позволяет разработчикам создавать многозадачные приложения, где различные задачи выполняются параллельно, что существенно улучшает производительность и гибкость системы.

Основные возможности библиотеки Arduino RTOS:
Многозадачность:
Позволяет создавать и управлять несколькими независимыми задачами (threads), которые выполняются одновременно.
Каждая задача имеет собственный стек и выполняется в своём контексте.
Приоритеты задач:
Каждой задаче присваивается определённый приоритет, что позволяет планировщику RTOS выбирать, какая задача будет выполнена следующей.
Высокоприоритетные задачи будут выполняться чаще и быстрее, чем низкоприоритетные.
Планировщик задач:
В библиотеке используется планировщик с вытесняющей многозадачностью, что обеспечивает предсказуемость выполнения задач.
Планировщик периодически переключается между задачами, давая возможность каждой из них получить процессорное время.
Синхронизация задач:
Библиотека предоставляет механизмы синхронизации, такие как семафоры, мьютексы и очереди сообщений, которые позволяют координировать взаимодействие между задачами.
Эти механизмы предотвращают конфликты при доступе к общим ресурсам и обеспечивают согласованность выполнения задач.
Таймеры и задержки:
Arduino RTOS поддерживает работу с таймерами и функциями задержки, что позволяет точно контролировать время выполнения задач.
Это особенно полезно для приложений, требующих точного временного управления.
Совместимость с Arduino IDE:
Библиотеку можно легко установить и использовать в среде Arduino IDE, что делает разработку простых и быстрых.
Применение библиотеки Arduino RTOS

Библиотека особенно полезна в следующих случаях:

Управление сложными системами: Когда требуется одновременное выполнение нескольких независимых задач, например, контроль сенсоров, управление исполнительными механизмами и передача данных.
Реализация систем реального времени: Где критически важна предсказуемость и надёжность выполнения задач в строго заданные временные интервалы.
Разработка многозадачных приложений: Когда необходимо повысить общую производительность системы за счёт параллельного выполнения задач.

Таким образом, библиотека Arduino RTOS является мощным инструментом для разработчиков, стремящихся улучшить производительность и функциональность своих проектов на базе Arduino.

Примеры использования библиотеки для разработки программ работающих в реальном времени.

Основные понятия
Задача (Task) -- это отдельная функция, которая выполняется параллельно другим задачам. В библиотеке задаются приоритеты задач, и планировщик распределяет ресурсы процессора между ними.
Приоритет задачи -- определяет важность задачи относительно других. Чем выше приоритет, тем чаще задача будет выполняться.
Планировщик (Scheduler) -- механизм, который управляет временем выполнения каждой задачи согласно её приоритету.
Синхронизация задач -- инструменты для координации работы нескольких задач через семафоры, мьютексы и другие механизмы синхронизации.

Простая многозадачность:

  • #include <ArduinoRTOS.h>
  • // Определение двух задач
  • void taskOne() {
  • Serial.println("Task One");
  • delay(1000);
  • }
  • void taskTwo() {
  • Serial.println("Task Two");
  • delay(500);
  • }
  • // Создание объектов задач
  • TaskHandle_t taskOneHandle = NULL;
  • TaskHandle_t taskTwoHandle = NULL;
  • void setup() {
  • // Инициализация последовательного порта
  • Serial.begin(9600);
  • // Создание задач
  • xTaskCreate(taskOne, "Task One", 128, NULL, 1, &taskOneHandle);  // Приоритет 1
  • xTaskCreate(taskTwo, "Task Two", 128, NULL, 2, &taskTwoHandle);  // Приоритет 2
  • }
  • void loop() {
  • // Планировщик берет управление
  • vTaskStartScheduler();
  • }


Разберём данный код подробнее:
#include <ArduinoRTOS.h> - подключает библиотеку Arduino RTOS.
void taskOne() -  объявляет первую функцию, которая ничего не возвращает.
Serial.println("Task One") - Serial -- это объект, используемый для связи с компьютером через USB-порт или другой последовательный интерфейс; метод println отправляет строку текста ("Task One") на последовательный порт и добавляет символ новой строки в конце; таким образом, когда вызывается эта команда, устройство печатает сообщение "Task One" в монитор последовательного порта (например, в окне мониторинга Arduino IDE).
delay(1000) - Функция delay останавливает выполнение программы на указанное количество миллисекунд. В данном случае программа приостановит выполнение на 1000 миллисекунд (1 секунду).
Описание функции void TaskTwo индентично.
Переменные типа TaskHandle_t будут хранить дескрипторы созданных задач. Они нужны для взаимодействия с задачами позже, если потребуется.
Функция setup:
Сначала инициализируется последовательный порт для вывода сообщений.
Затем создаются две задачи с помощью функции xTaskCreate:
Первая задача называется "Task One", ей выделена память размером 128 байт, задан приоритет 1.
Вторая задача называется "Task Two", также выделяется 128 байт памяти, но приоритет этой задачи равен 2.
Значение приоритета 2 делает эту задачу более важной, чем задачу с приоритетом 1, следовательно, она будет выполняться чаще.
Функция loop:
Функция vTaskStartScheduler() запускает планировщик задач, который начинает распределять процессорное время между всеми созданными задачами. Именно благодаря этому обе задачи начинают выполняться параллельно.

Как работает планировщик?

Планировщик RTOS периодически проверяет состояние всех задач и решает, какую из них сейчас нужно запустить. Если одна задача дольше не выполнялась, планировщик переключится на неё. Так как задача taskTwo имеет больший приоритет (приоритет 2), она будет выполняться чаще, чем taskOne (приоритет 1).

Таким образом, на выходе вы увидите чередование строк "Task One" и "Task Two", причем вторая строка будет появляться вдвое чаще, поскольку интервал ожидания у нее меньше (ровно в два раза).

Вверх