Самарин Григорий Иванович: «Разряд» — Терминал релейной защиты и автоматики (РЗА)
Цель проекта
Разработка встраиваемого программного обеспечения для промышленного терминала
релейной защиты и автоматики (РЗА) на базе отечественного трёхъядерного
микроконтроллера Baikal U1000 (архитектура RISC-V). Задача — создать
функциональный прототип устройства, способного в режиме жёсткого реального
времени выполнять сбор аналоговых данных электросетей, реализовывать алгоритмы
защит, обеспечивать локальный HMI (человеко-машинный интерфейс) на графическом
дисплее и удалённую телеметрию по каналам GSM и Ethernet.
Описание задачи
- Разработать bare-metal прошивку для трёхъядерного RISC-V МК Baikal U1000 с
распределением задач между ядрами по принципу жёсткого реального времени. - Ядро C0: сбор данных с 8-канального АЦП AD7606 (токи и напряжения),
цифровая фильтрация, выполнение алгоритмов защит РЗА. - Ядро C1: управление TFT-дисплеем ST7789 (HMI: отображение
Ia/Ib/Ic/I0/Ua/Ub/Uc/U0, журнал событий, настройки уставок), работа с GSM-
модемом SIM900A (GPRS, HTTP POST). - Ядро C2: интенсивные DSP-вычисления (RMS, FFT).
- Реализовать межъядерный обмен данными через общую область SRAM с
атомарной синхронизацией на базе спинлока. - Обеспечить передачу телеметрии на удалённый сервер по HTTP POST через
GSM.
Ключевые особенности реализации
- Используемый микроконтроллер
- Baikal U1000 (BE-U1000) — отечественный трёхъядерный RISC-V
микроконтроллер. - Ядра C0, C1 — основные ядра (UART, SPI, GPIO, CLIC, ADC). Ядро C2 —
математический сопроцессор. - SDK 2.1 (bare-metal HAL), компилятор riscv32-none-elf-gcc, отладка через
OpenOCD.
- Алгоритмы и программное обеспечение
- Архитектура: bare-metal (без RTOS), суперлупы с разделением ответственности
по ядрам. - Межъядерная синхронизация IPC через shared_ipc_t в SRAM (0x70007C00, 1 КБ),
атомарный спинлок __sync_lock_test_and_set, паттерн producer-consumer. - Графический интерфейс: экраны РЗА (фазные токи/напряжения), журнал событий
аварий. - Драйвер AT-команд для GSM SIM900A: GPRS-подключение, формирование и
отправка JSON по HTTP POST. - Ethernet-стек ioLibrary (WIZnet): Berkeley Socket API, DHCP, DNS, HTTP, MQTT,
SNMP, SNTP. - Поддержка IEC 61850 (parseSV) — библиотека парсинга Sampled Values уже
интегрирована в проект, однако из-за проблемы реализации высоконагруженного
протокола SV на базе W5500 было принято решения отказаться от этой задачи. - Инструменты: RISC-V GCC Toolchain, GNU Make, OpenOCD (прошивка), VS Code
- clangd.
- Аппаратная часть
- МК Baikal U1000 (RISC-V, 3 ядра) — основная вычислительная платформа.
- АЦП AD7606 — 8-канальный, 16-бит, для измерения мгновенных значений токов и
напряжений (SPI). - Ethernet-контроллер WIZnet W5500 — аппаратный TCP/IP стек с SPI-
интерфейсом. - TFT-дисплей с контроллером ST7789 (SPI) — цветной HMI-экран.
- GSM/GPRS-модуль SIM900A (UART) — удалённая передача телеметрии.
- Контекст реализации
- Демонстрация применимости архитектуры RISC-V (Baikal U1000) для задач
промышленной автоматики с жёстким реальным временем.
Результаты
- Разработана и верифицирована многоядерная bare-metal архитектура: C0 —
сбор/защиты, C1 — HMI/GSM, C2 — DSP. - Реализован механизм IPC через общую SRAM без RTOS с атомарной
синхронизацией и нулевой блокировкой critical path. - Успешно интегрированы и протестированы драйверы: AD7606 (АЦП), W5500
(Ethernet), ST7789 (дисплей), SIM900A (GSM). - Построена система сборки Make: три независимых Makefile для C0/C1/C2 +
корневой Makefile, сшивающий fullimage.bin. - Подтверждена работоспособность HTTP POST телеметрии через GSM: данные
отображаются на дашборде. - МК Baikal U1000 доказал способность параллельно выполнять задачи жёсткого
реального времени, HMI и сетевого взаимодействия без RTOS. - Преимуществом перед аналогами стоит отметить многоядерность
микроконтроллера. Что позволяет эффективно реализовать параллельные
алгоритмы сбора и анализа данных, без внедрения ОСРВ. - Широкий набор интерфейсов (поддержка RS-485, CAN) позволяют эффективно
внедрять Baikal U-1000 в промышленные решения.
Выводы
- Проект «Разряд» подтвердил применимость отечественного RISC-V
микроконтроллера Baikal U1000 для задач промышленной автоматики и релейной
защиты. - Архитектура bare-metal с физическим разделением задач по ядрам обеспечила
детерминированность реального времени без накладных расходов RTOS. - Тестовая установка прототипа в работающую энергоустановку.
- Расширение алгоритмов РЗА: дифференциальная защита, защита от замыканий
на землю, автоматическое повторное включение (АПВ). - Микроконтроллер U-1000 доказал свою эффективность: поддержка необходимых
интерфейсов (SPI, UART, GPIO, CAN), достаточная вычислительная мощность и
надёжная работа в bare-metal окружении.
Перспективы
- Полная интеграция стека IEC 61850, в случае появления интерфейсов RMII/MII
(библиотека parseSV уже включена) для стандартизированной связи с
диспетчерскими системами SCADA. - Применение в энергетике и промышленных объектах, требующих
сертифицированных российских компонентов (импортозамещение). - Рынок промышленной автоматики проявляет интерес к решениям на RISC-V
отечественного производства.
Изображения / схемы
Таблица 1. Карта памяти SRAM (межъядерное разделение)

Таблица 2. Адреса ядер во Flash-памяти (fullimage.bin)

Таблица 3. IPC — обмен данными между ядрами

Рисунок 1 — Экран подсчета мощности

Рисунок 2 — Экран измерения

Осцилограма сети 220В

Рисунок 3 — Осциллограмма оцифровки сети 220В
Частота дискретизации 256 точек на период промышленой частоты 50 Гц по
стандарту МЭК 61850.

Рисунок 4 — Схема измерения сетевого напряжения
Здесь использован измерительный трансформатор ZMPT107-1.

Рисунок 5 — Заполнения тестовыми данными базы данных на удаленном сервере

Рисунок 6 — Макет устройства перед сборкой в корпус