DRAKON.SU

Текущее время: Вторник, 03 Декабрь, 2024 20:55

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




Начать новую тему Ответить на тему  [ Сообщений: 276 ]  На страницу 1, 2, 3, 4, 5 ... 14  След.
Автор Сообщение
СообщениеДобавлено: Четверг, 14 Июнь, 2018 17:44 

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

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

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

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


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

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


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

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


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

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


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

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

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


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

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

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


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

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


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

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

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


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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 28 Декабрь, 2018 12:48 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Мы используем "Синхронизатор" для точной хронологии исполнения команд в программе на Ардуино. Это понятно и просто для восприятия.
Если углубляться в логику "передачи управления", то все схемы в наших программах должны быть пунктирные, т.к. прерывания работают.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 28 Декабрь, 2018 14:25 
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 28 Декабрь, 2018 14:37 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Я не зря указал, что мы программируем Ардуино. Синхронизаторы используем, возврат в ОС - нет.
КМК, предлагается детализация, которая уже сейчас не важна, а в дальнейшем и вовсе не потребуется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 28 Декабрь, 2018 17:00 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5944
Откуда: Москва
Дмитрий Бардынин писал(а):
предлагается детализация, которая уже сейчас не важна, а в дальнейшем и вовсе не потребуется.
Поддерживаю


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 29 Декабрь, 2018 00:51 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 29 Декабрь, 2018 01:01 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 29 Декабрь, 2018 08:43 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5944
Откуда: Москва
А_МУР писал(а):
Согласен оператор "пуск таймера" запускает таймер
Обнуляет и запускает

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 29 Декабрь, 2018 09:48 

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 276 ]  На страницу 1, 2, 3, 4, 5 ... 14  След.

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


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

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


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

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