Протокол основывается на дискретной логике и по сути передает состояния. Для манипуляций доступны дискретные входы (1 бит ro), катушки (1 бит rw), регистры входные (16 бит ro) и удерживающие (16 бит rw). Для работы с этими данными (а также для получения диагностической информации и др.) определен перечень стандартных команд, который можно расширить пользовательскими.
Чтобы мастеру общаться со слейвом, достаточно сформировать пакет вида
slave_id, cmd, data, crc. Зачастую поле data содержит адрес регистра и данные для записи или количество байт для чтения. Из плюсов — если будет ошибка (неверный crc, адрес данных, неподдерживаемая команда или еще несколько вариантов) то «отлов» этой ошибки — простое логическое И со вторым принятым байтом.Именно этот протокол закладываю в код робота, ведь зачем придумывать что-то новое, если есть отличное рабочее решение? Если эксперимент будет удачным (в целом, уже достаточно хорошо работает) то добавлю библиотеку modbus rtu как стандартную библиотеку в свое ядро. Дальше останется доработать ui и все управление будет выполняться с телефона или планшета на той самой ОС▶️.
Если захотите потыкать робота, обсудить подключение смартфона к железкам — го на очную встречу (мое выступление будет в секции с 18:15)👉