DRAKON.SU
https://forum.drakon.su/

Язык ДРАКОН. Визуальные операторы реального времени
https://forum.drakon.su/viewtopic.php?f=78&t=6263
Страница 1 из 14

Автор:  Владимир Паронджанов [ Четверг, 14 Июнь, 2018 17:44 ]
Заголовок сообщения:  Язык ДРАКОН. Визуальные операторы реального времени

Язык ДРАКОН. Визуальные операторы реального времени

Выкладываю "Главу 21. Операторы реального времени"
из моей новой книги.

Прошу критиковать

http://drakon.su/_media/biblioteka/glav ... _vrem_.pdf

Автор:  LKom [ Четверг, 14 Июнь, 2018 17:52 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

На рис. 125 обе стрелки должны быть направлены вниз.

Автор:  Владимир Паронджанов [ Четверг, 14 Июнь, 2018 18:22 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

LKom писал(а):
На рис. 125 обе стрелки должны быть направлены вниз.
Спасибо за важное замечание.
В оригинале сразу исправил.

Автор:  LKom [ Четверг, 14 Июнь, 2018 18:25 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

Нет толкования иконы Период без текста.

Автор:  LKom [ Четверг, 14 Июнь, 2018 18:44 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

Вложение:
О_Синхронизаторе.png

Разъяснение смысла иконы Синхпронизатор.
Обязательно необходимое разъяснение.

Автор:  Владимир Паронджанов [ Четверг, 14 Июнь, 2018 19:46 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

LKom писал(а):
Нет толкования иконы Период без текста.

Просьба пояснить, что значит "Период без текста"

Автор:  LKom [ Четверг, 14 Июнь, 2018 20:05 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

https://forum.drakon.su/viewtopic.php?p=36415#p36415

Автор:  Владимир Паронджанов [ Четверг, 14 Июнь, 2018 22:05 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

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

Плохой текст подлежащий удалению
Цитата:
Нередко имеет место ситуация, когда разработчик программы реального времени использует цикл ЖДАТЬ, но считает, что для его программы конкретное значение периода не играет роли. В этом случае икону “период” следует оставить пустой; система по умолчанию присвоит периоду максимальное значение из того ассортимента, которым располагает дракон-диспетчер.


Данный текст я считаю неправильным. Его следует аннулировать.
Пустые иконы (без текста) недопустимы.

Автор:  Владимир Паронджанов [ Четверг, 14 Июнь, 2018 22:24 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

LKom писал(а):
Разъяснение смысла иконы Синхпронизатор.
Обязательно необходимое разъяснение.

В качестве разъяснения привожу две цитаты их "Главы 21. Операторы реального времени"
Цитата:
ОПЕРАТОРЫ
«ПУСК ТАЙМЕРА» И «СИНХРОНИЗАТОР»


Вернемся еще раз к задаче на рис. 115 и слегка изменим ее. Будем считать, что разработчик управляемого объекта хочет указать время выдачи команд не по принципу «задержка после предыдущей команды», а по принципу секундомера. Это значит, что все времена отсчитываются от единого начального момента (совпадающего с пуском секундомера).

Исходя из этого, сформулируем задачу управляющего компьютера. Он должен:

 включить секундомер, то есть обнулить и запустить таймер;
 выдать команду ОТКРЫТЬ.ТРУБОПРОВОД;
 когда таймер отсчитает две минуты, выдать пару команд ВКЛЮЧИТЬ.НАСОС и ОТКРЫТЬ.ЗАСЛОНКУ;
 когда таймер отсчитает 2 минуты 45 секунд, выдать команду ПОДАЧА.ТОПЛИВА;
 когда таймер отсчитает 5 минут 45 секунд, выдать команду ПУСК.АГРЕГАТА.

Описанный алгоритм изображен на рис. 116. В нем используются операторы «Пуск таймера» и «Синхронизатор», совместная работа которых обеспечивает нужный эффект.

Например, синхронизатор А = 2мин 45с задерживает выдачу команды ПОДАЧА.ТОПЛИВА до момента, когда таймер А отсчитает 2 минуты 45 секунд.

Сравнивая алгоритмы на рис. 115 и 116, можно заметить, что они почти эквивалентны. Почему почти?

Чтобы разобраться, рассмотрим идеальный случай. Представим, что время, необходимое для выдачи одной команды равно нулю. Имеется в виду, что перечисленные ниже команды выдаются за время, равное нулю:

 ОТКРЫТЬ.ТРУБОПРОВОД;
 ВКЛЮЧИТЬ.НАСОС;
 ОТКРЫТЬ.ЗАСЛОНКУ;
 ПОДАЧА.ТОПЛИВА;
 ПУСК.АГРЕГАТА.

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

Практика показывает, что в некоторых ситуациях предпочтительным является принцип паузы (когда используется икона Пауза). А в других — принцип таймера (когда используются иконы «Пуск таймера» и «Синхронизатор»).

Оба инструмента оказываются в равной степени необходимыми и полезными.

Оператор Пуск таймера порождает, обнуляет и запускает таймер и присваивает ему имя, например А

Оператор Синхронизатор задерживает выполнение размещенной справа от него иконы до момента, указанного в иконе Синхронизатор

Вложение:
Рис. 115, 116 Упр подачей топлива .png
Рис. 115, 116 Упр подачей топлива .png [ 101.24 КБ | Просмотров: 11092 ]


Цитата:
ЦИКЛ «ЖДАТЬ»
И ОПЕРАТОР «СИНХРОНИЗАТОР»


Предположим, мы ожидаем из космоса приветствие от пришельцев, посылающих нам сигнал Сигма (который мы ловим с помощью цикла ЖДАТЬ).

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

На рис. 121 представлено упрощенное решение, позволяющее отправить в космос серию из трех сигналов.

Для этого нужны цикл ЖДАТЬ, икона «Пуск таймера» и три иконы «Синхронизатор». Когда таймер досчитает до 39-й минуты, мы пошлем пришельцам дружеский привет (рис. 121).

Данный рисунок демонстрирует совместное использование цикла ЖДАТЬ, таймера и синхронизаторов.

Вложение:
Рис. 121 Сигнал Сигма Пришельцы .png
Рис. 121 Сигнал Сигма Пришельцы .png [ 51.17 КБ | Просмотров: 11090 ]

Напоминаю, что обсуждаемая глава 21 находится по ссылке
http://drakon.su/_media/biblioteka/glav ... _vrem_.pdf

Автор:  TAU [ Понедельник, 18 Июнь, 2018 02:13 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

Владимир Даниелович, ну что же Вы...

Сколько можно...

На рисунке 116 опять у Вас некорректная картинка. А именно: идет непрерывная линия, означающая непосредственную передачу управления в семантике блок-схем и "обычных" Дракон-схем без РВ, от действия "Открыть.трубопровод" к действию "Включить.насос".

А на самом деле поток исполнения здесь разрывается. Передача управления после выполнения действия "Открыть.трубопровод" к действию "Включить.насос" не осуществляется. На самом деле алгоритм "застывает" в состоянии ожидания срабатывания таймера, которое никак сейчас на Дракон-схеме не отражено - видимо, уместно говорить здесь о "пробеле" в семантике Дракона. И продолжается выполнение данного алгоритма лишь по истечении заданной УВИ. Хотя бы линию сделать имеет смысл пунктирной - если не вообще ввести разрыв и специальный графический примитив, означающий переход алгоритма в состояние ожидания.

Аналогично, не происходит передача управления автоматически, несмотря на наличие прямой непрерывной вертикальной линии, к действиям "Подача.топлива" и "Пуск.агрегата".

Автор:  Владимир Паронджанов [ Понедельник, 18 Июнь, 2018 09:36 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

TAU писал(а):
Владимир Даниелович, ну что же Вы...

Сколько можно...

На рисунке 116 опять у Вас некорректная картинка. А именно: идет непрерывная линия, означающая непосредственную передачу управления в семантике блок-схем и "обычных" Дракон-схем без РВ, от действия "Открыть.трубопровод" к действию "Включить.насос".

А на самом деле поток исполнения здесь разрывается. Передача управления после выполнения действия "Открыть.трубопровод" к действию "Включить.насос" не осуществляется. На самом деле алгоритм "застывает" в состоянии ожидания срабатывания таймера, которое никак сейчас на Дракон-схеме не отражено - видимо, уместно говорить здесь о "пробеле" в семантике Дракона. И продолжается выполнение данного алгоритма лишь по истечении заданной УВИ. Хотя бы линию сделать имеет смысл пунктирной - если не вообще ввести разрыв и специальный графический примитив, означающий переход алгоритма в состояние ожидания.

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

К сожалению, я не могу с Вами согласиться.

1. Вы правы, "на самом деле поток исполнения здесь разрывается". Но этот факт можно учитывать несколькими способами.

2. На рис. 116 семантика при работе с ОС реального времени задана исчерпывающим образом. О наличии разрыва говорит семантика икон Синхронизатор и Пуск таймера.

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

3. Дракон-схема на рис. 116 корректно решает поставленную задачу. Она наглядна и не содержит ненужных усложнений.

Вложение:
Рис. 115, 116 Упр подачей топлива .png
Рис. 115, 116 Упр подачей топлива .png [ 101.24 КБ | Просмотров: 11059 ]

Подробнее см. http://drakon.su/_media/biblioteka/glav ... _vrem_.pdf

Автор:  TAU [ Понедельник, 18 Июнь, 2018 22:17 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

Владимир Паронджанов писал(а):
На рис. 116 семантика при работе с ОС реального времени задана исчерпывающим образом. О наличии разрыва говорит семантика икон Синхронизатор и Пуск таймера

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

Лезть в таблицу семантики, в частности - "Синхронизатора" в голову далеко не каждому придет. Скорее - не придет.
Очевидный и естественный смысл непрерывной линии - непосредственная передача управления.
Так что принципы базовые принципы, получается, нарушены.

Когда ее нет, уместно использовать нечто иное. Хотя бы пунктирную линию. Как компромисс.

Хотя по смыслу, конечно, там останов алгоритма и переход в диспетчер ОС РВ. А по "Сихронизатору" - включение алгоритма с определенного адреса (не с "Начала"!). Можно сказать, появляется еще одна точка входа.

Я ведь это не просто так, с бухты-барахты пишу. В ракетно-космическом центре "Прогресс", с коим я сотрудничаю на протяжении долгих лет, используется понятие "входов" алгоритмов. Это - всем понятная и общепринятая на предприятии вещь. "Включить алгоритм А12 по входу 2". Пишется как "А12Вх2". Между "входами" - УВИ.

Автор:  Дмитрий Бардынин [ Пятница, 28 Декабрь, 2018 12:48 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

Мы используем "Синхронизатор" для точной хронологии исполнения команд в программе на Ардуино. Это понятно и просто для восприятия.
Если углубляться в логику "передачи управления", то все схемы в наших программах должны быть пунктирные, т.к. прерывания работают.

Автор:  Alexey_Donskoy [ Пятница, 28 Декабрь, 2018 14:25 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

Дмитрий Бардынин писал(а):
Если углубляться в логику "передачи управления", то все схемы в наших программах должны быть пунктирные, т.к. прерывания работают.
TAU абсолютно прав.
Есть принципиальная разница между прерыванием, которое "снаружи" может приостановить выполнение текущего потока (а может и не приостановить, если прерывание обрабатывается другим ядром процессора), и алгоритмическим остановом потока (возвратом управления в ОС, переходом в режим ожидания некоторого внешнего события).

Автор:  Дмитрий Бардынин [ Пятница, 28 Декабрь, 2018 14:37 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

Я не зря указал, что мы программируем Ардуино. Синхронизаторы используем, возврат в ОС - нет.
КМК, предлагается детализация, которая уже сейчас не важна, а в дальнейшем и вовсе не потребуется.

Автор:  Владимир Паронджанов [ Пятница, 28 Декабрь, 2018 17:00 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

Дмитрий Бардынин писал(а):
предлагается детализация, которая уже сейчас не важна, а в дальнейшем и вовсе не потребуется.
Поддерживаю

Автор:  А_МУР [ Суббота, 29 Декабрь, 2018 00:51 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

Владимир Данилович, а как будет выглядить алгоритм для "желтый мигающий".? Это тоже процесс реального времени рис113

Автор:  А_МУР [ Суббота, 29 Декабрь, 2018 01:01 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

Согласен оператор "пуск таймера" запускает таймер
Сработал синхронизатор - и.... он сработал надолго, до следующей перезагрузки устройства на коем крутится программа
Тогда вопрос а кто или что обнуляет и останавливает таймер?
Спутник на орбите - а бортовой комп как подал сигнал на поджиг двигателя на земле так до сихпор и подает. Правда он не знает что первая ступень в атмосфере сгорела.

Автор:  Владимир Паронджанов [ Суббота, 29 Декабрь, 2018 08:43 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

А_МУР писал(а):
Согласен оператор "пуск таймера" запускает таймер
Обнуляет и запускает

А_МУР писал(а):
Сработал синхронизатор - и.... он сработал надолго, до следующей перезагрузки устройства на коем крутится программа
Почему надолго? Это неверно. Если в синхронизаторе написано А = 10с, это значит, что срабатывание оператора, находящегося справа от синхронизатора, будет задержано до момента 10 секунд по таймеру.
На этом функция данного синхронизатора закончилась.

А_МУР писал(а):
Тогда вопрос а кто или что обнуляет и останавливает таймер?
Оператор Пуск таймера обнуляет и запускает таймер.
Обнуляет таймер А потому, что в иконе Пуск таймера
написано А := 0
см. viewtopic.php?p=101816#p101816

Чтобы остановить таймер А, необходимо:
В иконе Пуск таймера надо записать
Цитата:
А = стоп

Автор:  А_МУР [ Суббота, 29 Декабрь, 2018 09:48 ]
Заголовок сообщения:  Re: Язык ДРАКОН. Визуальные операторы реального времени

Если в синхронизаторе написано строго А= 10 с, то синхронизатор мало вероятно сработает, так как цикличность обращения к таймеру у каждого устройства своя: на ПЛК состовляет от 50наносекунд до 1с. Жизнь такова что" А " никогда не будет равно 10 с. "А" может быть равно 10.000001 с или 10.1 с. Поэтому со временем игрушки плохи. Это приводит к выходу из строя оборудования
При работе со временем можно использовать только сравнение больше или равно. Отсюда все вытекающие последствия

Страница 1 из 14 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/