Промышленный контроллер на АМУР MIK32

zoshytlogic 31 минуту назад Краткое содержание статьи Промышленный контроллер на АМУР MIK32 Простой 3 мин 1.3K Программирование микроконтроллеров * Промышленное программирование * C * FPGA * В разные периоды я...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: zoshytlogic 31 минуту назад Краткое содержание статьи Промышленный контроллер на АМУР MIK32 Простой 3 мин 1. 3K Программирование микроконтроллеров * Промышленное программирование * C * FPGA * В разные периоды я тестировал свою среду разработки, компилятор и рантайм на разных МК — от STM32G030 до FPGA Altera Cyclone 4. Минимальные требования к рантайму — это 5 КБ ОЗУ и не менее 32 КБ Flash, либо 3000 LUT, если это FPGA.
Мой основной тестовый стенд — это системы с относительно ограниченными ресурсами. Не 8-битные микроконтроллеры, но и не обязательно ESP32. ОЗУ от 12–20 КБ — это уровень, на базе которого можно создать настоящий ПЛК с вытесняющей многозадачностью, заменой кода на лету, RS-485 и онлайн-отладкой.
Технические детали
Классически я тестировал все МК на Ladder-программе, так как различные бренды — производители ПЛК часто публикуют данные выполнения дискретной логики в документации, что очень удобно для сравнения. Методика тестирования. Дискретная логика оценивается по среднему времени выполнения контактов и катушек в сложном ранге.
Под сложным понимается ранг со множеством ветвлений: здесь, помимо обработки самих контактов, компилятор неявно вставляет дополнительные инструкции для сохранения промежуточных результатов вычисления цепей. При разработке среды я ориентировался на Allen-Bradley, поэтому те, кто знаком с их ПО, сразу узнают знакомый дизайн — неограниченные сложные ветвления в рангах и характерный функционал. Однако есть и отличия.
Поскольку я ориентировался на языки высокого уровня (такие как ST), то создавал полноценный собственный компилятор, и встроенной поддержке сложных типов данных. Прямо в цепях Ладдера можно использовать следующие конструкции (можно делать короткие псевдонимы, аналоги #define на СИ):Второй тип тестов - наиболее часто используемые функциональные блоки: таймеры, триггеры, счетчики. Моргание светодиодом, подсчет импульсов счетчиком входящих и исходящих сигналов.
Отраслевые последствия
Сам рантайм представляет собой софт-процессор (виртуальное ядро с программными регистрами R0–R32). Это обеспечивает полную абстракцию от железа и позволяет мне всего за два часа развернуть ПЛК на любом микроконтроллере. Из минусов — производительность в 3–5 раз ниже, чем у нативной программы, однако в 5–10 раз выше, чем у Lua или MicroPython (а самое главное — выполнение строго детерминировано по времени).
С точки зрения нативной части внутри МК, в которой содержатся программа ПЛК, данные, стек и прочее, представляет собой единый массив:__attribute__((aligned(512))) uint8_t memory;SIZE_MEMORY - размер который можно выделить под программу для ПЛК. В данный момент, у меня единая область, нет разделения на память инструкций или данных: больше программа/меньше данных, меньше данных тогда влезет больше программа. Из IDE прошивка попадает в МК по UART.
После сверки хешей, начинается выполнение. В цикле идет чтение программы:dec. ui = __builtin_bswap32(*(uint32_t*)&memory); void (*instruction_handler)(void) = (void (*)(void))cpu.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.



