Показано с 1 по 5 из 5

Тема: Идеальный на мой взгляд, язык блоков диаграмм.

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    188

    Lightbulb Идеальный на мой взгляд, язык блоков диаграмм.

    Лучшая реализация языка диаграмм функциональных блоков, что я видел - это "графы событий" из Unreal Engine.
    Unreal Engine - это бесплатный физикографический движок с открытым исходным кодом, предназначенный для создания компьютерных игр.
    Не вдаваясь в подробности самого движка, так как тема не о нем, перечислю основные свойства тамошнего ЯДФБ, которые мне особенно понравились.
    Во-первых - это явное управление потоком вычислений. Каждый блок кроме блока получения значения переменной или чистой функции имеет особый вход и выход "исполнение". Соединяя блоки через них мы таким образом указываем, в каком именно порядке происходит вычисление. Начинается любое вычисление из блока события, который имеет только выход исполнения.
    Это особенно радует, потому что во-первых, все ЯДФБ предназначенные для программирования контроллеров исполняются в порядке одному Богу известному, а во-вторых, каждый раз когда где-то изменяется переменная (введена в поле ввода, изменена каким-то алгоритмом, поступила из СКАДЫ), то программист часто оказывается бессилен как бы то ни было согласовать поступившие из разных мест значения между собой (хотя бы проигнорировать ввод по какой либо причине). В "графах событий" никакое событие не изменяет никаких переменных, а лишь при наступлении вызывает исполнение и может быть, возвращает некие значения, а уже пользователь использует или не использует это событие для изменения переменных.
    Существует событие "тик", вызывающее исполнение каждый вычислительный такт, и возвращающее время прошедшее с предыдущего такта.
    Поддерживаются циклы (внутри одного вычислительного такта), массивы. Пользователь может создавать свои функции и макросы.
    Все используемые переменные обязательно имеют инициализирующее значение. Все случаи глюков в моих проектах в Лоджике связаны с тем, что блоки отрабатывают операции на переменных инициализированных нулем, причем блоки работающие с выходами и переменными связанными с этими-же выходами отрабатывают в разное время, поэтому в работе проекта в Лоджике постоянно возникают неведомые ужасы, вызванные неинициализированными переменными плюс непонятной последовательностью исполнения.
    Ну и наконец, о чем мечтают некоторые юзеры - вместо использования языка блоков, пользователь может писать те-же самые скрипты на c++ текстом, так как в данном виде взаимно-однозначное соответствие диаграммы и текстового кода полностью очевидно.
    Очень хотелось бы, чтобы программисты, разрабатывающие Лоджик, посмотрели, как это выглядит, а то и в исходники, и вдохновились концепцией, потому что в таком виде на мой взгляд, Лоджик стал бы самым удобным и простым для разработки ЯДФБ.

    Внешний вид графа событий
    Event Graph.png

    PS заранее извиняюсь за то, что эта тема имеет слишком косвенное отношение к Лоджику.
    Последний раз редактировалось anthrwpos; 25.06.2018 в 08:16.
    - ά ν θ ρ ω π ο ς -
    Мои универсальные макросы https://github.com/anthrwpos1/macros

Похожие темы

  1. Библиотека блоков для ПЛК.
    от VA87 в разделе ПЛК1хх
    Ответов: 8
    Последнее сообщение: 23.06.2022, 13:16
  2. Замена блоков
    от Владимир Ситников в разделе Среда программирования OWEN Logic
    Ответов: 9
    Последнее сообщение: 05.02.2016, 22:39
  3. Опрос блоков
    от Певел в разделе Помощь Разработчикам
    Ответов: 5
    Последнее сообщение: 03.04.2013, 18:49
  4. Выходы блоков с EN
    от Михаил Иванович в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 17.03.2012, 16:25
  5. Нужен свежий взгляд
    от gleb1976 в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 29.06.2011, 00:59

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •