Универсальная платформа для построения систем цифровой автоматизации и роботизации. Платформа разрабатывается, как самостоятельный проект, развитие идеи Arduino. В качестве основных контроллеров, используемых в платформе, выбрана линейка контроллеров от компании ST Microelectronics (STM8, STM32 ARM). Основные принципы и идеи платформы:
- Возможность создания по большей части самовоспроизводимой системы модулей. Имеется ввиду, что на базе существующей системы модулей и инструментов можно создавать как свою копию, так и новые, перспективные.
- Сделать компоненты настолько дешевыми, чтобы их можно было использовать свободно, как "кирпичики" для построения сложных систем, состоящих из огромного числа отлаженных модулей. Также дешевизна и простота модулей, делает возможным их применение в условиях кризиса или бесконечно-малого финансирования.
- По контроллеру - в каждый узел! Идея состоит в том, чтобы создать общее программное облако, с помощью которого, можно создавать самоконфигурируемые, самособирающиеся, самотестируемые и другие системы, требующие интерактивности от каждого своего функционального узла от мала до велика. Благо, современная конкуренция на рынке контроллеров дает возможность приобретать 8ми разрядные контроллеры по цене <
$0.5, и ARM-контолллеры от 1$ . - Облегчение и автоматизация труда разработчика. Предполагается применение разработок Web-Manufacture.net (KLAB, HLAB, ILAB и прочих), а также создание современных систем управления, разработки и тестирования для этой платформы. Под "современностью" понимается использования опыта разработки для систем более высокого уровня, применительно, к несколько "поотставшей" области программирования и отладки систем на контроллерах.
- Использовать коммуникационные протоколы и принципы проекта ILAB
- "Селективная шина" в качестве основной модели взаимодействия
На сегодня разработана и продумана общая концепция проекта. Проект разбит на несколько автономных, но взаимосвязанных подпроектов. Наибольший прогресс в области создания ПО, в частности распределенной клиент-серверной инфраструктуры и пользовательских интерфейсов. Реализованы “в железе” основные модули и базовый набор инстументов проекта, как то RoboMotors, RoboMind, RoboPwm, RoboPower, являющиеся концептуальными наследниками своих программных прототипов. Некоторые подпроекты уже имеют собственную жизнь, как RoboCNC, RoboPainter и RoboRails, трудящееся в автоматизированых теплицах. В рамках платформы идет работа по 3м основным направлениям:
- Инструменты и механическая часть, корпуса модулей, система соединения.
- Адаптация модулей, для воспроизводства в системе на базе RoboCNC (#МФКС).
- Доработка ПО, базирующееся на разработках Web-Manufacture (HLAB, ILAB, KLAB).
Шина представляет собой 4 вывода, 2 сигнальныx и 2 для питания. Каждый модуль может содержать несколько портов для подключения шины, но в целом это все равно остается одна физическая шина. Исключение -- контроллеры RoboMind.
Одной из главных особенностей, как шины, так и протокола -- является "горячее" подключение модулей, а также их идентификация.
Протокол шины описан ниже
Система построена на модулях для у правления чем-то конкретным (освещением RoboLeds, двигателем RoboMotor, другими контроллерами RoboMind), которые подключаются к общей шине XRouting. Также есть модули для считывания и запоминания информации (RoboSensor, RoboControl), а также ее обработки (RoboMind)
Для модулей используются разные контроллеры и процессоры, например stm8s207rbt6, stm8l151c8t6, stm8af5288t, stm32f103cbt6, stm32f407vet6, stm32f756zg, stm32w108cbu64tr, stm32h743vit6(перспективный). Конроллеры других производителей: ESP8266, и другие Или платформы Raspberry Pi, Orange Pi.
Контроллер представляет собой некий "Мозг", который может управлять другими модулями RP, или заниматься переадресацией пакетов. Причем может делать это как автономно, так и в связке с компьютером или Web-интерфейсом. Разные реализации могут иметь разные интерфейсы, как то: USB, UART, COM, RS-485, I2C, SPI, CAN, HDMI, Bluetooth, ZigBee, Ethernet, Wi-Fi. И естественно, выходы шины XRouting, причем возможно несколько "портов", каждый из которых образует свою независимую шину.
Также к некоторым модулям можно подключать дополнительно SD карту, или даже USB-OTG запоминающее устройство (да тот же HDD через переходник)
Идея модуля в том, что он может запоминать программу, которую необходимо выполнять, управляя периферией, как дирижер - оркестром. Например, в архитектурном макете данный контроллер руководит всей автоматизацией исполняя запрограммированную последовательность действий.
В ПО для контроллера используется интересный подход, как "набор прошивок", которые пользователь может свободно выбирать, и загружать через встроенный BootLoader. Таким образом из данного мозга можно сделать широкий спектр устройств. Например, существует прошивки, которая позволяют сделать из данного модуля логический анализатор, контроллер ЧПУ, контроллер общего назначения, работающий по временным интервалам.
Главная особенность разработки с использованием таких модулей, заключается в ПО "Конфигуратор", которое позволяет в реальном времени собирать из таких кирпичиков конечное решение, и сконфигурировать каждый его узел. Или же, произвести отладку всего "оркестра". За счет общей шины, каждый узел может отчитываться "мозгу" или ПК о своем состоянии или конфигурации. Именно над этим конфигуратором сейчас идет работа..
И все это счастье стоит порядка 5$ за штуку в младших моделях! Или же 7$ на базе ARM!!! Но верхний потолок может доходить до 400$ за промышленные реализации.
Универсальный контроллер для управления "любыми" двигателями, Stepper, DC, AC, BLDC
Модификация предыдущего модуля с еще более расширенным функционалом управления любыми электромагнитными устройствами.
Платформа для построения станков с ЧПУ, на базе предыдущих модулей
Управление системами хранения и конвертации электроэнергии. содержат разные DC-DC и системы контроля параметром V, I, P. Можно использовать для заряда, разряда аккумуляторов или объединения нескольких разных источников и потребителей энергии.
Модуль для управления силовой нагрузкой с применением PID-алгоритмов В модулях бывает до 8 портов для одновременного управления конечными устройствами (например, светодиодами, или нагревателями). С контролем параметров через V, I, P.
Модификация предыдущего модуля для управления светодиодными линейками Могут содержать до 64 портов.
Аналоговые модули высокого разрешения использующиеся для систем мониторинга или измерения параметров техпроцесса. Имеют до 4х аналоговых входов на модуль, иногда дифференциальных. Могут синхронизировать время измерения с другими модулями с высокой точностью. Также могут содержать обработчики DSP, топовые АЦП и ОУ от AD, чипы CPLD, FPGA от Altera серии MAX и Cyclone Как правило построены на чипах STM8S903, STM32F3, F4, для расширения вычислительных мошностей используют ресурсы RoboMind
Модули логического взаимодействия и логического ввода. Аналог логических элементов. Построены на компараторах и могут быть использованы для ввода логической информации. К примеру, логические анализаторы или системы мониторинга реального времени с высокоскоростной обработкой информации. Некоторые модули содержат чипы CPLD, FPGA от Altera серии MAX и Cyclone Бывают как дешевыми и простыми, так и дорогими и сложными.
Простые и дешевые варианты предыдущих модулей, к примеру для кнопочного ввода или простых датчиков.
Модули для работы с визуальной информацией, камерами, матрицами или устройствами вывода изображения.
Это -- протокол и сердце системы.
(#xx | #1x)( #dstAddr ..., #srcAddr..., #size, #pmo,#pm, #value,...,#pms, #pm, value..., #pme, #pme, (#crc) ? #03
1x - XRT packet type
11 Hi (Hi, when raise node)
12 Dying (Something wrong, buy or error, Unscribe, Del)
13 Acknowledge (Response, for anything, for example "see you as")
14 Things (Get Description, Get anything, Add, Set)
15 Lookup (All, Subscribe)
16 Redirect (Info)
17 Forward (Note)
18 Tunnel
xx #SYNC
#A0-#A9 - #Req
#B0-#B9 - #Ack
#C0-#C9 - Reserved
#E0-#EF #syncData1 #syncData2
#F0-FF #syncData (1Byte)
#addr (#dstAddr, #srcAddr)
First 1bits of address means this is end of address chain
0 - packet chain
1 - end packet
Special bytes in packet chain may have sense -- delimeter, mark of the address type
pm = packet marker ( 3bit - dataType + 5bit thing identifier )
pm data types:
00 - Raw Data, for a strings or something encoded, looking the next PM
01 - Sized something have fixed size, things identifier describe size
10 - #pmo Complex start with another PM's
11 - #pme Complex End