DRAKON.SU

Текущее время: Четверг, 20 Сентябрь, 2018 00:23

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 14 Июнь, 2018 17:44 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3773
Откуда: Москва
Язык ДРАКОН. Визуальные операторы реального времени

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Июнь, 2018 17:52 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 769
На рис. 125 обе стрелки должны быть направлены вниз.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Июнь, 2018 18:22 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3773
Откуда: Москва
LKom писал(а):
На рис. 125 обе стрелки должны быть направлены вниз.
Спасибо за важное замечание.
В оригинале сразу исправил.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Июнь, 2018 18:25 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 769
Нет толкования иконы Период без текста.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Июнь, 2018 18:44 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 769
Вложение:
О_Синхронизаторе.png

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Июнь, 2018 19:46 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3773
Откуда: Москва
LKom писал(а):
Нет толкования иконы Период без текста.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Июнь, 2018 20:05 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 769
https://forum.drakon.su/viewtopic.php?p=36415#p36415


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Июнь, 2018 22:05 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3773
Откуда: Москва
LKom, спасибо. Вы правы, в моей книге "Как улучшить работу ума" имеется плохой текст, который следует аннулировать.

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


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Июнь, 2018 22:24 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3773
Откуда: Москва
LKom писал(а):
Разъяснение смысла иконы Синхпронизатор.
Обязательно необходимое разъяснение.

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Июнь, 2018 02:13 

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 342
Владимир Даниелович, ну что же Вы...

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Июнь, 2018 09:36 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3773
Откуда: Москва
TAU писал(а):
Владимир Даниелович, ну что же Вы...

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

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

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

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

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

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

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

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Июнь, 2018 22:17 

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

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

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

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

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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


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

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2018, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB