roboforum.ru

Технический форум по робототехнике.

Робототехнический IDE (интегрированная среда разработки)

Робототехнический IDE (интегрированная среда разработки)

beep_beam » 31 дек 2020, 01:50

Всем привет,
Тема автоматного программирования ( AP, АП) уже много лет занимает заметное место в научно-популярных СМИ. Однако, несмотря на это, АП не стало магистральным трендом. Главная причина здесь — недостаточный опыт использования, и как следствие, отсутствие популяризаторов. Нельзя сказать, что недостаточно статей посвященных АП, но круг обсуждаемых в статьях вопросов по большому счёту сводится к описанию FSM (, т.е. теории конечных автоматов, а не инструкциям по работе с ними, либо к вопросу «Как реализуются программные автоматы?». Это печально но факт, отсутствует обсуждение того, какие перспективы для разработчиков - широкого инженерного сообщества открываются при использовании данной технологии.


Cреди нас есть люди, интересующиеся вопросами разработки, такими к примеру с чего начать, на чем писать код, как реализовать аппаратный процессинг и т.д.
Думаю этой темой мне удастся привлечь внимание многих участников форума и вовлечь в обсуждение того, что имеет право на существование, подтвердило свою актуальность и востребованность, а так же имеет шанс на привлечение внимания широкой аудитории разработчиков - интеграторов.
То что я хочу здесь представить, имеет давнюю историю и в конечном итоге из простого любопытства и домашних экспериментов переросло в набирающий обороты проект в рамках стартапа.

Итак IDE (Integrated Development Environment) на базе ПК x86 с минимальной конфигурацией:
Quad Core 1.8 GHz processor, 2-4GB RAM and 32-64GB onboard flash memory.
В моем случае это одноплатный SBC от китайского производителя LattePanda
Что не есть минимальный предел для того о чем пойдет дальше речь.
В качестве OC можно устанавливать финальную версию Win 10(LTSC x64) или одну из последних сборок Linux.

А речь пойдет о специально разработанной инструментальной IDE платформе, (период разработки 2017 - 2020г) в концепте которого заложена демократизация широкой аудитории
разработчиков - интеграторов, которые с одной стороны нуждаются в универсальной (не хоббийном) R&D софт программно аппаратной лаборатории, состоящей из ПК IDE, а так же механических узлов, электронных модулей, драйверов сенсоров, преобразователей, генераторов, сенсоров, приводов и т.п. для профессионального прототаипинга.
С другой стороны эта категория отраслевых специалистов, не владеющих навыками программирования, студентов, стартапов, инжиниринговых многоотраслевых фирм и т.п. все еще ждут свой заветный инструментарий c минимальными требованиями к PC архитектуре, в комплекте с I/O USB интерфейсом, с возможностью выбора на свой вкус OС.

Варианты решения:
Собственно такой сет для механиков создать задача не из сложных, важно скооперироваться с профессиональными автоматизаторами. Что касается аппаратного набора, скомплектовать и красиво уложить в зеленый с оранжевыми защелками кейс, скажем на 10 - 20 кг. на том же принципе что и предыдущий вполне реализуемо. Сегодня рынок модульных решений для прототаипинга на таких мега площадках как Али, кишит своим многообразием и ценовыми предложениями.

И наконец самый важный ключевой момент - в этом кейсе в отдельном отсеке положить инсталяционную флешку с фирменным наименованием продукта, а рядом I/O стартовый модуль к примеру 10/16. Так же и не исключаю еще 1 отсек для SBC одноплатника с предустановленной OС и IDE платформой, присутствует в виде инсталянта на флешке (но можно и через онлайн с сайта продукта), блок питания для одноплатника и поехали...

IDE, по своей парадигме, базируется на автоматном программировании и давно готова, больше того, она имеет одноименное название BEEPTOOLKIT, успешно провалидирована в коммерческих проектах (Медицина, Hi-Tech, научая сфера в области лазерной оптики, автомобилестроение) и на данном этапе ведется активный нетворкинг на онлайн площадках с целью масштабирования, популяризации и установления стратегического партнерства.
Что из себя представляет автоматное программирование, можно понять из этого видеоролика, где метод простыми словами раскрыт на примере машины Тьюринга:


С деталями проекта, ознакомительными и образовательными видеоматериалами можно ознакомиться на сайте продукта (англ).
BEEPTOOLKIT.

Я предвижу здесь скептические заключения, тем не менее я готов аргументировано отстаивать свои доводы ссылаясь на авторитетные источники.
Если эта публикация будет иметь здесь положительный резонанс, я готов к дальнейшим описаниям, диалогу и отвечу здесь на экспертном уровне на интересующие вопросы.

К слову, в ближайшее время будет представлена обновленная версия BEEPTOOLKIT, в которой выполнен пересмотр в пользу реалистичного корпусного решения. Что по нашему мнению,
позволить изменить пользователям восприятие IDE без необходимости в растянутых описаниях.
Последний раз редактировалось beep_beam 19 сен 2023, 13:00, всего редактировалось 10 раз(а).

Re: Робототехнический фреймворк

esisl » 07 апр 2023, 17:50

Я давно утратил нить, ничего не понимаю, но оч интересно....

Re: Робототехнический фреймворк

setar » 07 апр 2023, 17:53

esisl писал(а):Я давно утратил нить, ничего не понимаю, но оч интересно....

да не было нити, пришел человек странный и начал кал на вентилятор подкидывать.
При этом "я страсть какой важный и страсть какой умный, есть два мнения мое и не правильное".
Я даже по началу его откровенные посылы на три буквы отредактировал, просто по человечески предупредив - не понял ...

Re: Робототехнический фреймворк

beep_beam » 08 апр 2023, 00:13

Проехали, отнесем ситуацию к профессиональному заболеванию выгорающих кодеров, что увы иногда перерастает в патологию.

Ситуация подтолкнула меня к следующей теме проекта, над которым сейчас работаем.
Сразу оговорюсь, как аппаратная так и программная часть будут здесь раскрыты целиком на уровне применяемых инструкций в среде BEEPTOOLKIT.
Так же отмечу, что программная симуляция практически завершена, что стало для клиента ключевым фактором к принятию решения о финансировании.
Демонстрация симуляции это вишенка на торте и я непременно продемонстрирую все в работе, но не хочу забегать на перед, т.к.
цель рассмотреть здесь и взвесить преимущества и недостатки, если таковые будут выявлены в ходе обсуждения проекта.

И так имеем:
Необходимо из 12 видов замороженных плодово ягодных ингредиентов, хранящихся при температуре -26С выполнять приготовление разнообразных прохладительных напитков, условно
это 3 типа микширования ингредиента по 50 г. каждый с добавлением воды что в общем объеме готового продукта будет составлять 300 мл (пластиковый стакан 300 - 350 мл.).
Собственно наименование напитка - смузи.

Функции системы - вендинговый автомат приготовления смузи, возможность для посетителей в выборе набора рецептов посредством тачскрин фронтальной панели, безналичный способ оплаты кредитной карточкой, выдача чека.
Соответственно сервисное обслуживание предусматривает удаленный контроль расхода ингредиентов, аварийные оповещения в случае сбоев, отключение воды, электроэнергии, отсутствия одноразовых стаканов в спейсере и т.п.
Система должна соответствовать всем санитарным нормам и требованиям (хранение ингредиентов, обмыв поверхностей дозирующего оборудования, устранение конденсата и как следствие плесени в определенных зонах и т.п.
Последний раз редактировалось beep_beam 27 окт 2023, 15:40, всего редактировалось 1 раз.

Re: Робототехнический IDE

beep_beam » 29 июн 2023, 23:53

Финальная версия 023

Re: Робототехнический IDE (интегрированная среда разработки)

smur » 14 сен 2023, 21:05

Посмотрел видео:

Автоматное программирование,Машина Тьюринга, или как случайно возникла информатика.
https://www.youtube.com/watch?v=lQGw1b0ILGw

Пример нечестной конкуренции.
Упоминая Автоматное Программирование нужно приводить источник.
Вы его видимо специально используете, чтобы замкнуть на свой проект ссылки из Ютуба и других ресурсов, равно как и пытаетесь влезть в с рекламой своего коммерческого продукта везде, где только можете, во все некоммерческие варианты.

В говорите, что парадигма Автоматного Программирования не стало магистральным трендом, но это не так.
Это доказывают многочисленные источники и диссертации, а так же многочисленные текущие проекты.

Используйте источник, когда говорите об Автоматном программировани:

УНИВЕРСИТЕТ ИТМО
Кафедра «Технологии программирования»
http://news.ifmo.ru/ru/blog/35/

Шалыто Анатолий Абрамович
Профессор факультета информационных технологий и программирования
https://itmo.ru/ru/viewperson/94/shalyt ... movich.htm

Что такое автоматное программирование?
http://is.ifmo.ru/works/tech_aut_prog
http://is.ifmo.ru/works/diesel/
http://is.ifmo.ru/projects_en/

Re: Робототехнический IDE (интегрированная среда разработки)

beep_beam » 14 сен 2023, 22:53

В качестве лирического отступления, т.к. то, о чем Вы говорите, плавно перескочило из одной темы в другу.

smur писал(а):Посмотрел видео:

Автоматное программирование,Машина Тьюринга, или как случайно возникла информатика.
https://www.youtube.com/watch?v=lQGw1b0ILGw

Пример нечестной конкуренции.
Упоминая Автоматное Программирование нужно приводить источник.
Вы его видимо специально используете, чтобы замкнуть на свой проект ссылки из Ютуба и других ресурсов, равно как и пытаетесь влезть в с рекламой своего коммерческого продукта везде, где только можете, во все некоммерческие варианты.


Давайте по порядку,
Я не рассмотрел никакой конкуренции, с кем я здесь конкурирую? так и не понял, в том что на примере трактовки автора материала, я не скрываю первоисточник и ссылаюсь на него в начале видеоролика. А тот факт, что изложенная парадигма всего лишь является подтверждением нашего концептуального в этом направлении, есть результат популяризации идей и подходов в пользу автоматного программирования.

smur писал(а):В говорите, что парадигма Автоматного Программирования не стало магистральным трендом, но это не так.
Это доказывают многочисленные источники и диссертации, а так же многочисленные текущие проекты.
Используйте источник, когда говорите об Автоматном программировани:

УНИВЕРСИТЕТ ИТМО
Кафедра «Технологии программирования»
http://news.ifmo.ru/ru/blog/35/

Шалыто Анатолий Абрамович
Профессор факультета информационных технологий и программирования
https://itmo.ru/ru/viewperson/94/shalyt ... movich.htm

Что такое автоматное программирование?
http://is.ifmo.ru/works/tech_aut_prog
http://is.ifmo.ru/works/diesel/
http://is.ifmo.ru/projects_en/


Я с большим уважением отношусь лично к Анатолию А.Шалыто и его трудам, с которыми я относительно недавно начал знакомиться. В своих дискуссиях и спорах цитирую его. Кроме того я таки да, даю ссылки на его лекции, которые доступны на YouTobe, а так же в онлайне с первоисточниками.
У меня не так давно была с ним беседа относительно моей платформы, где он высказал ряд замечаний и советов, а так же поделился ссылками на его обновленные материалы.

То что здесь была выставлена ссылка в переведенном виде на доклад, если Вы об этом, это одна из многочисленных попыток пролить исторический свет предтечи того, что сегодня взято за основу в автоматном программировании.
К слову, повторяюсь, наша платформа построена исключительно на FSM и скомпилирована в среде программирования языка G, т.к. мне комфортно было реализовать IDE именно так.
Мой сравнительный пример с примером аналогичного концепта под AVR, наглядно демонстрирует проблему до неприличия малого количества когда либо разработанных IDE для автоматного программирования и все мои усилия в данном направлении имеют не всегда желаемую для меня реакцию, к примеру на популярном IT ресурсе Habr, все авторы в данной тематике испытывают атаки минусаторов и необъективно критикуются. Есть и другие подобные ресурсы.
Буду очень благодарен, если Вы поделитесь со мной экспертными сообществами где присутствует желание здорового не предвзятого дискуса и люди понимают предмет разговора.
У нас на FB есть страница платформы, и для меня большая честь видеть среди участников Анатолия А.Шалыто :wink:
так что при желании Вы лично можете с ним там пообщаться и задать свои вопросы. Он вполне коммуникабельный и корректный, если это не глупые вопросы.

К слову я сейчас изучаю его работу в соавторстве В.С. Гуров, М.А. Мазин, А.С. Нарвский, которыми он со мной поделился, т.к. в моей теме он обратил внимание на то, чем я занимаюсь, в свою очередь я, делаю их общим достоянием форума.
Есть русскоязычная версия в моем переводе, позже выложу.
Последний раз редактировалось beep_beam 15 сен 2023, 16:57, всего редактировалось 2 раз(а).

Re: Робототехнический IDE (интегрированная среда разработки)

smur » 15 сен 2023, 10:29

Про термин «автоматное программирование», про источники и про визуальное программирование:

Автоматное программирование изд.2.pdf
Термин «автоматное программирование» родился в 1997 г. в ходе беседы одного из
авторов этой книги с Д. А. Поспеловым на конференции по мультиагентным
системам, проходившей в поселке Ольгино под Санкт-Петербургом, и был впервые
использован во введении к работе [4]. На английский язык этот термин переводится
как automata-based programming.

[4] Шалыто А. А. SWITCH-технология. Алгоритмизация и программирование задач
логического управления. СПб: Наука, 1998. http://is.ifmo.ru/books/switch/1

Инструменты визуального программирования для парадигмы Автоматного программирования:

http://is.ifmo.ru/automata/visio2switch/
http://unimod.sourceforge.net/
http://is.ifmo.ru/projects/metaauto/

Янкин Ю.Ю., Шалыто А.А. Метод создания ПО на основе программируемых логических интегральных схем
https://www.youtube.com/watch?v=YNWdmnwHZi8

Ну и немного об авторе парадигмы:
Видео поздравление к 75-летию от ЛЭТИ
https://www.youtube.com/watch?v=Gxxud-Yb40U

Re: Робототехнический IDE (интегрированная среда разработки)

beep_beam » 15 сен 2023, 16:03

smur писал(а):...
Янкин Ю.Ю., Шалыто А.А. Метод создания ПО на основе программируемых логических интегральных схем

Как не пытался так и не смог вставить сюда Ваш VideoID для показа здесь. Возможно в настройках на ютубе отключена функция разрешающая вставку видео в другой контент.
При просмотре возник вопрос - исходным кодом является управление набором предварительно запрограммированных ПЛИС, или Вы генерируете код для дальнейшей его компиляции и загрузки его в ПЛИС, последующим их иерархическом объединением в АП проекте? Скорей 1-й вариант, представленная на ролике интерфейсная абстракция включает в себя интерпретатор HDL или VHDL, т.к. там присутствует ранняя Quartus II, не очень информативно, но я допускаю все же что имеет место связь через протоколы по работе с API на уровне регистровых значений в ПЛИС?
Так же не понятно, как реализован интерфейс коммуникаций между ПЛИС как и в целом работа с I/O.
Можно кроме симуляции представить здесь пример в работе на конкретном примере, к примеру на базе Altera или теми чипами с которыми Вам приходится иметь дело.
Последний раз редактировалось beep_beam 15 сен 2023, 17:11, всего редактировалось 2 раз(а).

Re: Робототехнический IDE (интегрированная среда разработки)

smur » 15 сен 2023, 16:44

Это вопросы к авторам:
Янкин Ю.Ю., Шалыто А.А. Метод создания ПО на основе программируемых логических интегральных схем

На видео приведен пример использования stateflow
https://docs.exponenta.ru/stateflow/gs/ ... hines.html

в качестве инструментария для задач:

МЕТОД СОЗДАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
МОДУЛЕЙ, ВЫПОЛНЕННЫХ НА ОСНОВЕ
ПРОГРАММИРУЕМЫХ ЛОГИЧЕСКИХ ИНТЕГРАЛЬНЫХ СХЕМ
https://is.ifmo.ru/works/2013/yankin-ntkms.pdf

Re: Робототехнический IDE (интегрированная среда разработки)

beep_beam » 15 сен 2023, 17:49

Относительно Тьюринга:

Машина Тьюринга (МТ) является расширением конечного автомата, где так же реализован поточный опрос.
Согласно тезису Ч.Тьюринга, МТ способна имитировать всех исполнителей (с помощью задания правил перехода- инструкций), заданным образом, реализующих процесс пошагового вычисления, в котором каждый шаг вычисления достаточно элементарен.
То есть всякий интуитивный алгоритм может быть реализован с помощью некоторой машины Тьюринга. При этом он же и имел разочарование в таком тезисе.
В основе МТ был заложен принцип следования инструкциям когда управляющее устройство обращается к состояниям и может перемещаться влево и вправо по ленте, оставаться в неподвижном положении, читать и записывать в ячейки символы некоторого конечного алфавита. Выделяется особый пустой символ, заполняющий все клетки ленты, кроме тех из них (конечного числа), на которых записаны входные данные, причем все это за долго до появления машинных языков программирования.

Из видео лекции, на которую Вы сетуете, в ее финале звучит, что метод реализованный Тьюрингом, все же в дальнейшем был воплощен в разнообразных небольших системах автоматики.

Здесь же в этой теме речь идет, об упрощении автоматного программирования и один из таких концептов IDE здесь обсуждается.
Все упирается в интерфейсные абстракции разрабатываемых IDE и это параллельный мир, того, как пользователи таких платформ быстро осваивают "шахматы".

Люди не имеющие представления об автоматном программировании не обязаны вникать в ее парадигму, как впрочем и люди с развитым музыкальным слухом, не всегда знают нотную грамоту и вполне могут воспользоваться буквенным наименованием акордов в нужной тональности для игры на 6-и струнной гитары, дети сегодня имеют музыкалные игрушки по которым быстро осваивают разные мелодии по загорающимся клавишам из 7 цветов, быстро запоминают и могут играть без подсказки.
Звучит не так чтоб академически, но в жизни есть масса примеров таких систем, ядро которых скрывает сложные автоматы, к примеру логарифмическая линейка и гениальная демонстрация мышления одного из ее юзеров, великолепного Cliff Stoll, всего лишь применение инструкций и возможно без опыт, знания формул и правил, алгебраических вычислений(еn):



То, что сегодня демонстрируют японские ученики младших классов, выглядит завораживающие и грандиозно.
Они могут производить в уме невероятно сложные мгновенные вычисления. Они также умеют визуально создавать их в своем воображении и «виртуально» перемещать их элементы.
Эта методика имеет сегодня большую армию поклонников и берется на вооружение преподавателями специализированных математических школ во многих странах мира:


Все эти приводимые мной примеры, далеко не алхимия, это реальные инструменты, причем даже применяемые в не далеком прошлом космическими экипажами в космосе, да, в их расспоряжении на борту была титановая лгорифичиская линейка.

МЕТОД СОЗДАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
МОДУЛЕЙ, ВЫПОЛНЕННЫХ НА ОСНОВЕ
ПРОГРАММИРУЕМЫХ ЛОГИЧЕСКИХ ИНТЕГРАЛЬНЫХ СХЕМ
https://is.ifmo.ru/works/2013/yankin-ntkms.pdf


Автор данной статьи утверждает очень спорные вещи которые очевидны в деталях:
Дальнейшее развитие микроэлектроники привело к появлению средств, позволяющих совместить аппаратную реализацию с программируемостью: программируемые логические интегральные схемы (ПЛИС).
Традиционно программирование ПЛИС осуществляется с использованием языков описания аппаратуры (Verilog, VHDL), а также создания функциональных схем из библиотечных блоков. Однако, при таком подходе также требуется привлечение специалиста по программированию, соответственно сохраняются недостатки присущие программной реализации.
Модули управления ИМ 4, 5, 6 могут быть построены на основе аналоговых микросхем, цифровых микросхем низкой степени интеграции, цифро-
вых микросхем высокой степени интеграции или микроконтроллеров.


Согласен, при этом далее по тексту возникает довольно спорное суждение:
Развитие программного обеспечения привело к появлению средств проектирования, не требующих привлечения программистов к программированию ПЛИС. Примерами таких средств являются пакет MATLABSimulink, его расширение Stateflow, а также пакет фирмы Altera Quartus II

На освоение таких IDE требуется как минимум 136 - 236 академических часов, в зависимости от базы знаний и опыта абитуриента, причем никаких гарантий что он с маху сядет и начнет самостоятельно вести разработку.
К слову Altera Quartus II уже не актуален, а язык с которым его пользователи должны работать не есть его репликация, а самый что ни на есть Verilog HDL как и тестирвание с отладкой, при том что по большому если копнуть, то нужны знания и в физике и в мат. статистике.
Для примера уровень погружения разработчика в среде Quartus.

По части приверженности теоретиков автоматного программирования к UML, попробуйте меня переубедить что я непременно должен именно от такого метода визуализации задачи должен отталкиваться при разработке своих моделей автоматного программирования, как и то что, не являясь классическим кодером, должен программист обязан иметь практический опыт чтения и построения диаграмм.
Решить эту проблему пытаются с помощью автоматической генерации кода посредством UML, но я пока не видел тех, кто это успешно реализовал на практике в сфере автоматики и робототехники.
Все попытки построения таких интерпретаторов сводились не столько к реальному, сколько к доказательному применению в научных целях.
Впрочем все же один такой IDE все же приходит на память - Flowсode, который больше подходит для небольших проектов под PIC, AVR, STM32 и т.п. ARM, но как правило исходники требуют тестирования и костыльных решений.
Последний раз редактировалось beep_beam 16 сен 2023, 15:59, всего редактировалось 1 раз.

Re: Робототехнический IDE (интегрированная среда разработки)

smur » 16 сен 2023, 15:18

Не совсем понятно, почему Вас кто то должен переубеждать если Вы видимо (или я ошибаюсь?) не ознакомились с теми материалами, на которые несколько раз выкладывались ссылки.
Речь идет не об UML (англ. Unified Modeling Language — унифицированный язык моделирования), а о парадигме. Не важно используется ли вариант визуального программирования или текстовый редактор.
И кстати, я лично успешно применял этот подход с использованием инструмента визуального программирования (это не UML):
http://is.ifmo.ru/automata/visio2switch/

Если Вы против парадигмы Автоматного программирования, то просьба изложить, что именно Вам не подошло, в чем возникли трудности, на каком этапе.
Иначе это все голословно.

По Автоматному программированию база есть и так же есть практические применения, ну хотя бы вот здесь можно посмотреть:
http://is.ifmo.ru/projects_en/

И самое, что ни на есть практическое применение:
http://is.ifmo.ru/works/diesel/

Re: Робототехнический IDE (интегрированная среда разработки)

beep_beam » 16 сен 2023, 17:03

Я не против автоматного программирования, и даже больше агитирую развивать инструменты по работе с ним.
Ваши ссылки не доступны, там новостной контент с изображением Д.Трампа.
По этому пункту

А вот теперь, коль здесь появился практический пример, давайте сравним уровень входа в предложенную Вами среду автоматного программирования и в мою.
Не знаю кому как, но мне быстрей заходит такой тип описания сценария алгоритма:
Перечислим эти режимы, каждому из которых соответствует
выделенное состояние автомата:
1. Дизель остановлен. В рассматриваемом режиме осуществляется проверка условий начала выполнения алгоритма предпусковых операций. Если при нахождении системы
управления в этом режиме дизель-генератор был запущен в обход нее, то система отреагирует на это переходом в установившийся режим. Срабатывание одного из алгоритмов аварийной и предупредительной сигнализации в этом режиме приводит к переходу системы в режим аварийной блокировки.

2. Предпусковые операции. В рассматриваемом режиме выполняется алгоритм предпусковых операций....

3. К пуску готов. Режим соответствует удачному завершению выполнения алгоритма предпусковых операций. В этом режиме система проверяет сохранились ли условия,
разрешающие пуск. При нажатии оператором кнопки "Пуск" начинается выполнение алгоритма пуска.

4. Выполняется пуск. В рассматриваемом режиме выполняется алгоритм пуска, при успешном осуществлении которого система переходит в установившийся режим.

5. Установившийся режим. В этом режиме при необходимости выполняется алгоритм открытия наружной захлопки?, реализуемый автоматом A10. Выход из этого режима происходит
в начале выполнения одного из видов останова, при срабатывании алгоритма аварийной защиты или при останове дизель-генератора в обход системы управления.

6. Останов. В рассматриваемом режиме выполняется алгоритм останова. Указанный алгоритм может быть прерван в случае экстренного останова.

7. Экстренный останов. В рассматриваемом режиме выполняется алгоритм экстренного останова. После завершения этого алгоритма система переходит в режим аварийной
блокировки. и т.п.


Нежели представление в виде схем связей с графами переходов автоматов, о чем собственно я изложил в предыдущем посте.
В Первом варианте я как ученик под диктовку могу сразу в своем IDE могу сразу вводить инструкции и наблюдать их симуляцию.

Если попросите, могу вникнуть в Ваше ТЗ здесь и выставить свою репликацию нескольких Ваших пунктов в виде визуальных инструкций на примере моей IDE.

Впрочем здесь уже выставлялись видеоролики методов ввода инструкций и их описаний на разных примерах с демонстрацией работы на аппаратном уровне, чего мне по сей день здесь никто не демонстрирует в своих доводах и теориях.

В Вашем случае я вынужден в другом IDE составлять такой длины скрипт с учетом синтаксиса языка, далее компиляция под определенную архитектуру MCU, и хорошо, если вычислительные ее ресурсы это потянут, а может и нет, тогда нужно весь код переписывать и строить другие графы со связями:

Код: Выделить всёРазвернуть
Текст функции, реализующей этот автомат, приведен в листинге 1.
ЛИСТИНГ 1. Функция автомата A1
void A1( int e, dg_t *dg )
{
int y_old = dg->y1 ;
8
#ifdef GRAPH_EVENTS_LOGGING
log_exec( dg, "A1", y_old, e ) ;
#endif
switch( dg->y1 )
{
case 0:
if( e == 0 ) dg->y1 = 1 ;
break ;
case 1:
A15( e, dg ) ;
if( e == 70 || x300(dg) || !x350(dg)
|| x500(dg) || x510(dg) || x520(dg)
|| dg->y3 != 0 || dg->y4 != 0
|| dg->y7 == 2 || dg->y7 == 4 )
{ z10_0(dg) ; z30_0(dg) ; z420_0(dg) ;
z430_0(dg) ; z440_0(dg) ; z810_0(dg) ;
dg->y1 = 0 ; }
else
if( dg->y15 == 3 )
dg->y1 = 3 ;
else
if( dg->y15 == 2 && x350(dg)
&& x280(dg) && !x290(dg) && !x300(dg) )
dg->y1 = 2 ;
break ;
case 2:
if( e == 0 ) dg->y1 = 1 ;
break ;
case 3:
if( e == 0 ) dg->y1 = 1 ;
break ;
default:
#ifdef GRAPH_ERRORS_LOGGING
log_write( LOG_GRAPH_ERROR, dg->number,
"ERROR IN A1: unknown state number!", 0 ) ;
#endif
break ;
} ;
if( y_old == dg->y1 ) goto A1_end ;
#ifdef GRAPH_TRANS_LOGGING
log_trans( dg, "A1", y_old, dg->y1 ) ;
#endif
#ifdef DEBUG_FRAME
update_debug() ;
#endif
switch( dg->y1 )
{
case 1:
A15( 0, dg ) ;
z10_1(dg) ; z20_1(dg) ; z30_1(dg) ; z400_1(dg) ; z420_1(dg) ;
z430_1(dg) ; z440_1(dg) ; z460(dg) ; z810_1(dg) ;
break ;
case 2:
z10_0(dg) ; z30_0(dg) ; z400_0(dg) ; z440_0(dg) ; z810_0(dg) ;
break ;
case 3:
z10_0(dg) ; z30_0(dg) ; z40_2(dg) ; z400_0(dg) ; z430_0(dg) ;
z440_0(dg) ; z410(dg) ;
z700_1(dg) ; z1300(dg, MSG_NO_TURN) ;
break ;
} ;
A1_end: ;
#ifdef GRAPH_ENDS_LOGGING
log_end( dg, "A1", dg->y1, e ) ;
#endif
} ;


Не стал все копипастить, там еще продолжение.

Далее классика. У Вас три способа отладки:
Первый способ является традиционным и состоит в применении отладчика.
Второй способ состоит в наблюдении за значениями переменных состояний каждого из автоматов (свойство 10 наблюдаемости автоматов).
Третий способ основан на автоматическом протоколировании реакции системы на входные воздействия.
При этом если первый способ целесообразно использовать для системозависимой части, то второй и третий — для системонезависимой.


В моем случае визуализированная симуляция. Алгоритм в исполнительном коде или работает или нет, мне не нужно отлавливать сбои кода в процессе копиляции или проводить QA тестирование в классическом представлении.

Наконец протоколирование, здесь в моем случае можно как в отдельности в процессе симуляции запустить параллельное протоколирование или на избранных участках сценария.
Причем как с аппаратным подключением, так без.
Подводя итог, не спорю что Ваша репликация вполне рабочая и где-то у клиента все функционирует, как и наши внедренные проекты.

В постскриптуме Вы как бы подтверждаете все о чем здесь идет разговор как и мое утверждение которое совпадает с Вашим:

Заключение
Рассмотренный выше пример демонстрирует то, что разработанные программы реализуют весьма сложные алгоритмы управления. Их непросто понять, даже используя
предложенную технологию, включающую различные схемы, диаграммы и протоколы. Авторам остается только догадываться, насколько возросла бы сложность программирования данной
задачи и последующего понимания построенных программ при применении традиционного подхода, в котором для реализации логики используются флаги.
По-нашему мнению, для задач рассматриваемого класса использование объектно-ориентированного подхода не решило бы проблему понимания построенных программ.
Отметим также, что при столь сложной логике, как в рассмотренном примере, применение диаграмм взаимодействий и диаграмм состояний из UML практически
невозможно.


Еще раз, речь идет об инструментарии автоматного программирования, вопросов цены и условий реализации проектов для клиента и жизненного цикла решения с учетом перспективы развития такого внедрения.
Последний раз редактировалось beep_beam 16 сен 2023, 21:58, всего редактировалось 1 раз.

Re: Робототехнический IDE (интегрированная среда разработки)

smur » 16 сен 2023, 21:44

Если Вы об Автоматном программировании, то это к Шалыто АА. И только к нему.
>>>> Ваши ссылки не доступны, там новостной контент с изображением Д.Трампа.
Извините, из Питера ссылка открывает документ:

УДК 681.3.06 : 62-507
А.А. Шалыто, д-р техн. наук, Н.И.Туккель
Проектирование программного обеспечения системы управления
дизель-генераторами на основе автоматного подхода

Отладка в парадигме на мой взгляд наглядна для понимания потока управления, пример из тестового варианта:

tic : 1
A20 в состоянии <0> запущен с событием e0
A20 перешел из состояния <0> в состояние 1
A21 в состоянии <0> запущен с событием e0
A21 перешел из состояния <0> в состояние 1
z21_1 <Ф-я Стоп > запущена
A21 в состоянии <1> завершил событие e0
z20_1 <Функция Начало Работы > запущена
A20 в состоянии <1> завершил событие e0
tic : 2
A20 в состоянии <1> запущен с событием e0
A21 в состоянии <1> запущен с событием e0
A21 в состоянии <1> завершил событие e0
A20 в состоянии <1> завершил событие e0

BUTTON 2 PRESSED
tic : 1
A20 в состоянии <1> запущен с событием e2
A21 в состоянии <1> запущен с событием e2
A21 перешел из состояния <1> в состояние 2
A32 в состоянии <0> запущен с событием e0
A32 перешел из состояния <0> в состояние 1
z32_1 <Ф-я Стоп > запущена
A32 в состоянии <1> завершил событие e0
z21_2 <Ф-я Вперёд > запущена
A21 в состоянии <2> завершил событие e2
A20 в состоянии <1> завершил событие e2
tic : 2
A20 в состоянии <1> запущен с событием e2
A21 в состоянии <2> запущен с событием e2
A32 в состоянии <1> запущен с событием e2
A32 перешел из состояния <1> в состояние 2
z32_2_1_user работает
z32_2_1 <Ф-я Вперёд старт > запущена
A32 в состоянии <2> завершил событие e2
A21 в состоянии <2> завершил событие e2
A20 в состоянии <1> завершил событие e2
tic : 3
A20 в состоянии <1> запущен с событием e0
A21 в состоянии <2> запущен с событием e0
A32 в состоянии <2> запущен с событием e0
x32_2_user запущена
x32_2 <Команда Вперёд выполнена> вернул 0
x20_6_user запущена
x20_6 <Датчик касания правый сработал> вернул 0
x20_6_user запущена
x20_6 <Датчик касания правый сработал> вернул 0
x20_7_user запущена
x20_7 <Датчик касания левый сработал> вернул 0
x20_8_user запущена
x20_8 <Показание радара меньше заданного> вернул 0
x32_1_user запущена
x32_1 <Коррекция требуется> вернул 0
z32_2_2_user работает
z32_2_2 <Ф-я Вперёд обработка > запущена
A32 в состоянии <2> завершил событие e0
A21 в состоянии <2> завершил событие e0
A20 в состоянии <1> завершил событие e0
tic : 4
A20 в состоянии <1> запущен с событием e0
A21 в состоянии <2> запущен с событием e0
A32 в состоянии <2> запущен с событием e0
x32_2_user запущена
x32_2 <Команда Вперёд выполнена> вернул 0
x20_6_user запущена
x20_6 <Датчик касания правый сработал> вернул 0
x20_6_user запущена
x20_6 <Датчик касания правый сработал> вернул 0
x20_7_user запущена
x20_7 <Датчик касания левый сработал> вернул 0
x20_8_user запущена
x20_8 <Показание радара меньше заданного> вернул 0
x32_1_user запущена
x32_1 <Коррекция требуется> вернул 0
z32_2_2_user работает
z32_2_2 <Ф-я Вперёд обработка > запущена
A32 в состоянии <2> завершил событие e0
A21 в состоянии <2> завершил событие e0
A20 в состоянии <1> завершил событие e0
tic : 5
A20 в состоянии <1> запущен с событием e0
A21 в состоянии <2> запущен с событием e0
A32 в состоянии <2> запущен с событием e0
x32_2_user запущена
x32_2 <Команда Вперёд выполнена> вернул 0
x20_6_user запущена
x20_6 <Датчик касания правый сработал> вернул 0
x20_6_user запущена
x20_6 <Датчик касания правый сработал> вернул 0
x20_7_user запущена
x20_7 <Датчик касания левый сработал> вернул 0
x20_8_user запущена
x20_8 <Показание радара меньше заданного> вернул 0
x32_1_user запущена
x32_1 <Коррекция требуется> вернул 0
z32_2_2_user работает
z32_2_2 <Ф-я Вперёд обработка > запущена

Добавлено спустя 19 минут 29 секунд:
Базовый алгоритм работы АП приведен здесь:
https://vzikblog.wordpress.com/2019/04/02/проект-bibi-часть-5/
Данный проект был сделан для изучения этого подхода.
По сути и сейчас он находится в стадии изучения особенностей применения в том или ином варианте.

Добавлено спустя 21 минуту 2 секунды:
Что то мне подсказывает, что в визуальном варианте (в Visio) состояния и переходы проще править, чем вот здесь:

Код: Выделить всёРазвернуть
//--- this file is machine generated ---

#include "common.h"
#include "log.h"

common_t cm;

//-------------------------------------------------------
// A20 - Автомат  Первого уровня КУД (BiBi 1.0)
//-------------------------------------------------------
void A20( uint e )
{
  uint y_old = cm.y20;

  #ifdef A20_BEGIN_LOGGING
    log_a_begin(0, y_old, e);
  #endif

  switch( cm.y20 )
  {
    case 0://
      if(1)
      {
                                        cm.y20 = 1;
      }
    break;

    case 1:// Начало работы
      A21(e);
    break;

    default:
      #ifdef A20_ERRORS_LOGGING
        log_write(LOG_GRAPH_ERROR, "Error in the machine A20: unknown number of state!");
      #else
        ;
      #endif
  }

  if( y_old == cm.y20 ) goto A20_end;

  #ifdef A20_TRANS_LOGGING
    log_a_trans(0, y_old, cm.y20);
  #endif

  switch( cm.y20 )
  {
    case 0://
    break;

    case 1:// Начало работы
      A21(0);
      z20_1();
    break;

  }

  A20_end: ;
  #ifdef A20_END_LOGGING
    log_a_end(0, cm.y20, e);
  #endif
}
//-------------------------------------------------------
// A21 - Автомат командного режима КУД (BiBi 1.0)
//-------------------------------------------------------
void A21( uint e )
{
  uint y_old = cm.y21;

  #ifdef A21_BEGIN_LOGGING
    log_a_begin(1, y_old, e);
  #endif

  switch( cm.y21 )
  {
    case 0://
      if(1)
      {
                                        cm.y21 = 1;
      }
    break;

    case 1:// Стоп
      if((e == 4))
      {
                                        cm.y21 = 4;
      }
      else
      if((e == 2))
      {
                                        cm.y21 = 2;
      }
      else
      if((e == 3))
      {
                                        cm.y21 = 3;
      }
      else
      if((e == 5))
      {
                                        cm.y21 = 5;
      }
    break;

    case 2:// Вперёд
      A32(e);
      if(cm.y32 == 1)
      {
                                        cm.y21 = 1;
      }
    break;

    case 3:// Назад
      A33(e);
      if(cm.y33 == 1)
      {
                                        cm.y21 = 1;
      }
    break;

    case 4:// Вправо
      A34(e);
      if(cm.y34 == 1)
      {
                                        cm.y21 = 1;
      }
    break;

    case 5:// Влево
      A35(e);
      if(cm.y35 == 1)
      {
                                        cm.y21 = 1;
      }
    break;

    default:
      #ifdef A21_ERRORS_LOGGING
        log_write(LOG_GRAPH_ERROR, "Error in the machine A21: unknown number of state!");
      #else
        ;
      #endif
  }

  if( y_old == cm.y21 ) goto A21_end;

  #ifdef A21_TRANS_LOGGING
    log_a_trans(1, y_old, cm.y21);
  #endif

  switch( cm.y21 )
  {
    case 0://
    break;

    case 1:// Стоп
      z21_1();
    break;

    case 2:// Вперёд
      A32(0);
      z21_2();
    break;

    case 3:// Назад
      A33(0);
      z21_3();
    break;

    case 4:// Вправо
      A34(0);
      z21_4();
    break;

    case 5:// Влево
      A35(0);
      z21_5();
    break;

  }

  A21_end: ;
  #ifdef A21_END_LOGGING
    log_a_end(1, cm.y21, e);
  #endif
}
//-------------------------------------------------------
// A32 - Автомат Вперёд (BiBi 1.0)
//-------------------------------------------------------
void A32( uint e )
{
  uint y_old = cm.y32;

  #ifdef A32_BEGIN_LOGGING
    log_a_begin(2, y_old, e);
  #endif

  switch( cm.y32 )
  {
    case 0://
      if(1)
      {
                                        cm.y32 = 1;
      }
    break;

    case 1:// Стоп
      if((e == 2))
      {
                                        cm.y32 = 2;
      }
    break;

    case 2:// Вперёд
      if(x32_2())
      {
                                        cm.y32 = 1;
      }
      else
      if((e == 1) || (e == 2) || (e == 3) || (e == 4) || (e == 5))
      {
                                        cm.y32 = 1;
      }
      else
      if(((e == 6) || x20_6() || x20_6() || x20_7() || x20_8()))
      {
                                        cm.y32 = 3;
      }
      else
      if(x32_1())
      {
                                        cm.y32 = 4;
      }
      else
      if(1)
      {
        z32_2_2();
      }
    break;

    case 3:// Приостановка
      if((e == 1) || (e == 2) || (e == 3) || (e == 4) || (e == 5))
      {
                                        cm.y32 = 1;
      }
      else
      if(!((e == 6) || x20_6() || x20_6() || x20_7() || x20_8())&&x32_1())
      {
                                        cm.y32 = 4;
      }
      else
      if(!((e == 6) || x20_6() || x20_6() || x20_7() || x20_8()))
      {
                                        cm.y32 = 2;
      }
      else
      if(1)
      {
        z32_3_2();
      }
    break;

    case 4:// Коррекция
      if(((e == 6) || x20_6() || x20_6() || x20_7() || x20_8()))
      {
                                        cm.y32 = 3;
      }
      else
      if(!x32_1())
      {
                                        cm.y32 = 2;
      }
      else
      if((e == 1) || (e == 2) || (e == 3) || (e == 4) || (e == 5))
      {
                                        cm.y32 = 1;
      }
      else
      if(1)
      {
        z32_4_2();
      }
    break;

    default:
      #ifdef A32_ERRORS_LOGGING
        log_write(LOG_GRAPH_ERROR, "Error in the machine A32: unknown number of state!");
      #else
        ;
      #endif
  }

  if( y_old == cm.y32 ) goto A32_end;

  #ifdef A32_TRANS_LOGGING
    log_a_trans(2, y_old, cm.y32);
  #endif

  switch( cm.y32 )
  {
    case 0://
    break;

    case 1:// Стоп
      z32_1();
    break;

    case 2:// Вперёд
      z32_2_1();
    break;

    case 3:// Приостановка
      z32_3_1();
    break;

    case 4:// Коррекция
      z32_4_1();
    break;

  }

  A32_end: ;
  #ifdef A32_END_LOGGING
    log_a_end(2, cm.y32, e);
  #endif
}
//-------------------------------------------------------
// A33 - Автомат Назад (BiBi 1.0)
//-------------------------------------------------------
void A33( uint e )
{
  uint y_old = cm.y33;

  #ifdef A33_BEGIN_LOGGING
    log_a_begin(3, y_old, e);
  #endif

  switch( cm.y33 )
  {
    case 0://
      if(1)
      {
                                        cm.y33 = 1;
      }
    break;

    case 1:// Стоп
      if((e == 3))
      {
                                        cm.y33 = 2;
      }
    break;

    case 2:// Назад
      if(x33_2())
      {
                                        cm.y33 = 1;
      }
      else
      if((e == 1) || (e == 2) || (e == 3) || (e == 4) || (e == 5))
      {
                                        cm.y33 = 1;
      }
      else
      if((e == 6))
      {
                                        cm.y33 = 3;
      }
      else
      if(x33_1())
      {
                                        cm.y33 = 4;
      }
      else
      if(1)
      {
        z33_2_2();
      }
    break;

    case 3:// Приостановка
      if((e == 1) || (e == 2) || (e == 3) || (e == 4) || (e == 5))
      {
                                        cm.y33 = 1;
      }
      else
      if(!(e == 6)&&x33_1())
      {
                                        cm.y33 = 4;
      }
      else
      if(!(e == 6))
      {
                                        cm.y33 = 2;
      }
      else
      if(1)
      {
        z33_3_2();
      }
    break;

    case 4:// Коррекция
      if((e == 6))
      {
                                        cm.y33 = 3;
      }
      else
      if(!x33_1())
      {
                                        cm.y33 = 2;
      }
      else
      if((e == 1) || (e == 2) || (e == 3) || (e == 4) || (e == 5))
      {
                                        cm.y33 = 1;
      }
      else
      if(1)
      {
        z33_4_2();
      }
    break;

    default:
      #ifdef A33_ERRORS_LOGGING
        log_write(LOG_GRAPH_ERROR, "Error in the machine A33: unknown number of state!");
      #else
        ;
      #endif
  }

  if( y_old == cm.y33 ) goto A33_end;

  #ifdef A33_TRANS_LOGGING
    log_a_trans(3, y_old, cm.y33);
  #endif

  switch( cm.y33 )
  {
    case 0://
    break;

    case 1:// Стоп
      z33_1();
    break;

    case 2:// Назад
      z33_2_1();
    break;

    case 3:// Приостановка
      z33_3_1();
    break;

    case 4:// Коррекция
      z33_4_1();
    break;

  }

  A33_end: ;
  #ifdef A33_END_LOGGING
    log_a_end(3, cm.y33, e);
  #endif
}
//-------------------------------------------------------
// A34 - Автомат Вправо (BiBi 1.0)
//-------------------------------------------------------
void A34( uint e )
{
  uint y_old = cm.y34;

  #ifdef A34_BEGIN_LOGGING
    log_a_begin(4, y_old, e);
  #endif

  switch( cm.y34 )
  {
    case 0://
      if(1)
      {
                                        cm.y34 = 1;
      }
    break;

    case 1:// Стоп
      if((e == 4))
      {
                                        cm.y34 = 2;
      }
    break;

    case 2:// Вправо
      if(x34_2())
      {
                                        cm.y34 = 1;
      }
      else
      if((e == 1) || (e == 2) || (e == 3) || (e == 4) || (e == 5))
      {
                                        cm.y34 = 1;
      }
      else
      if((e == 6))
      {
                                        cm.y34 = 3;
      }
      else
      if(1)
      {
        z34_2_2();
      }
    break;

    case 3:// Приостановка
      if((e == 1) || (e == 2) || (e == 3) || (e == 4) || (e == 5))
      {
                                        cm.y34 = 1;
      }
      else
      if(!(e == 6))
      {
                                        cm.y34 = 2;
      }
      else
      if(1)
      {
        z34_3_2();
      }
    break;

    default:
      #ifdef A34_ERRORS_LOGGING
        log_write(LOG_GRAPH_ERROR, "Error in the machine A34: unknown number of state!");
      #else
        ;
      #endif
  }

  if( y_old == cm.y34 ) goto A34_end;

  #ifdef A34_TRANS_LOGGING
    log_a_trans(4, y_old, cm.y34);
  #endif

  switch( cm.y34 )
  {
    case 0://
    break;

    case 1:// Стоп
      z34_1();
    break;

    case 2:// Вправо
      z34_2_1();
    break;

    case 3:// Приостановка
      z34_3_1();
    break;

  }

  A34_end: ;
  #ifdef A34_END_LOGGING
    log_a_end(4, cm.y34, e);
  #endif
}
//-------------------------------------------------------
// A35 - Автомат Влево (BiBi 1.0)
//-------------------------------------------------------
void A35( uint e )
{
  uint y_old = cm.y35;

  #ifdef A35_BEGIN_LOGGING
    log_a_begin(5, y_old, e);
  #endif

  switch( cm.y35 )
  {
    case 0://
      if(1)
      {
                                        cm.y35 = 1;
      }
    break;

    case 1:// Стоп
      if((e == 5))
      {
                                        cm.y35 = 2;
      }
    break;

    case 2:// Влево
      if(x35_2())
      {
                                        cm.y35 = 1;
      }
      else
      if((e == 1) || (e == 2) || (e == 3) || (e == 4) || (e == 5))
      {
                                        cm.y35 = 1;
      }
      else
      if((e == 6))
      {
                                        cm.y35 = 3;
      }
      else
      if(1)
      {
        z35_2_2();
      }
    break;

    case 3:// Приостановка
      if((e == 1) || (e == 2) || (e == 3) || (e == 4) || (e == 5))
      {
                                        cm.y35 = 1;
      }
      else
      if(!(e == 6))
      {
                                        cm.y35 = 2;
      }
      else
      if(1)
      {
        z35_3_2();
      }
    break;

    default:
      #ifdef A35_ERRORS_LOGGING
        log_write(LOG_GRAPH_ERROR, "Error in the machine A35: unknown number of state!");
      #else
        ;
      #endif
  }

  if( y_old == cm.y35 ) goto A35_end;

  #ifdef A35_TRANS_LOGGING
    log_a_trans(5, y_old, cm.y35);
  #endif

  switch( cm.y35 )
  {
    case 0://
    break;

    case 1:// Стоп
      z35_1();
    break;

    case 2:// Влево
      z35_2_1();
    break;

    case 3:// Приостановка
      z35_3_1();
    break;

  }

  A35_end: ;
  #ifdef A35_END_LOGGING
    log_a_end(5, cm.y35, e);
  #endif
}

Re: Робототехнический IDE (интегрированная среда разработки)

beep_beam » 17 сен 2023, 00:38

Глядя на все Ваши доказательные выкладки в поиске оптимальных решений по визуализации исходного кода, со стороны все это выглядит как рассуждение вслух, где в качестве доводов представляются груды pdf доков, часто 10 летней давности с обновлениями, уровня академических работ аспирантов или преподов в соавторстве с другими теоретиками. Выставленная ссылка на очередной pdf или то, что я обнаружил на ресурсах всех авторов, на которых Вы ссылаетесь, у меня хватило сил на несколько таких доков, чтоб дать свою рецензию. но все это как-то напоминает пчелиный улей где кипит работа, но мед от этого чисто математический без запаха цвета и не материализован.

Тема плавно перетекает в Ваш пост - Робот с логикой на основе автоматного программирования, где Вы дали очень краткое описание проекта и его статуса на данный момент.
При этом применяемые Вами MCU Atmega 328p вполне можно кодить посредством Flowcode с применением диаграмм, который специально заточен под такие микропроцессоры и включает в себя библиотеки классов таких процессорных архитектур. Обсуждать детали проекта и его хода Вы не стали, т.к. проект не опенсорс и коммерческий, но хотя бы инструменты по его разработке и общие вещи вполне можно продемонстрировать, чтоб всем была понятна Ваша стратегия в автоматном программировании.
Свою стратегию я выложил здесь подробными описаниями, ответами на вопросы, демонстрациями и т.п.

Но я уже начал терять Вашу логическую цепочку рассуждений, уводите тему в сторону, вплоть до идеи применения векторной графики с возможным применением тяжеловесного редактора Visio... и как бы пропускаете мимо то, о чем мы здесь говорим:

Еще раз, речь идет об инструментарии автоматного программирования, вопросов цены и условий реализации проектов для клиента и жизненного цикла решения с учетом перспективы развития такого внедрения.


Попробуйте набросать интерфейсную свою абстракцию для пользователей Вашей IDE под диаграммы, чтоб они юзеры прониклись идеей и начали ее обсуждать, не на примере гипотетического - математического дизель генератора, а скажем на реверсивном управлении шаговым двигателем, что сплошь и рядом сегодня применяется в автоматике. Здесь на форуме это лучше заходит, пусть меня просмотрщики поправят если я не прав.

Re: Робототехнический IDE (интегрированная среда разработки)

smur » 17 сен 2023, 01:33

Мне кажется я и начал обсуждать применение автоматного программирования на примере
https://vzikblog.wordpress.com/2019/04/02/проект-bibi-часть-5/
в ветке:
forum10/topic18271.html
причем в деталях, для тех, кто читает, а не просматривает.

Flowcode вещь полезная, хотя и платная и проприетарная. Но она не научит, как запрограммировать, например, работу лифтов в многоквартирном доме. А вот с помощью автоматного программирования это сделать довольно просто. Я имею в виду алгоритм работы. Подключение моторов и датчиков это дело техники, сам подход в программировании систем со сложным поведением это уже другой уровень задач которые я и пытаюсь рассмотреть.

В вашей IDE как запрограммировать работу лифтов, кстати? Скажем два лифта и 9 этажей. Одна кнопка вызова на каждом этаже.


cron
Rambler\'s Top100 Mail.ru counter