Самарин Григорий Иванович: «Разряд» — Терминал релейной защиты и автоматики (РЗА)

Цель проекта
Разработка встраиваемого программного обеспечения для промышленного терминала
релейной защиты и автоматики (РЗА) на базе отечественного трёхъядерного
микроконтроллера 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.

Ключевые особенности реализации

  1. Используемый микроконтроллер
  • 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.
  1. Алгоритмы и программное обеспечение
  • Архитектура: 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.
  1. Аппаратная часть
  • МК Baikal U1000 (RISC-V, 3 ядра) — основная вычислительная платформа.
  • АЦП AD7606 — 8-канальный, 16-бит, для измерения мгновенных значений токов и
    напряжений (SPI).
  • Ethernet-контроллер WIZnet W5500 — аппаратный TCP/IP стек с SPI-
    интерфейсом.
  • TFT-дисплей с контроллером ST7789 (SPI) — цветной HMI-экран.
  • GSM/GPRS-модуль SIM900A (UART) — удалённая передача телеметрии.
  1. Контекст реализации
  • Демонстрация применимости архитектуры 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 — Макет устройства перед сборкой в корпус