DRAKON.SU

Текущее время: Четверг, 13 Декабрь, 2018 02:48

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




Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Понедельник, 26 Февраль, 2018 15:23 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 189
Владимир Паронджанов писал(а):
Прошу критиковать

Ещё немного в сторону: почему нет варианта "переключатель с заданной длительностью"? (вариант 16 "переключатель по таймеру" присутствует)
Или, например, есть "17 вставка по таймеру", но нет "вставки с заданной длительностью".

Может, стоит просто перечислить где допустимо, а где недопустимо использовать "синхронизатор"?

Допустим ли вариант "переключающий цикл по таймеру"? (ну, такой же как "13 переключающий цикл", но с паузой на стрелке)

По-моему, если пытаться нарисовать все-все допустимые комбинации 2-3 икон, то получится гораздо больше, чем 23 картинки.


У пункта 20 "параллельный процесс по таймеру" неправильное описание. Там говорится про вставку.

У пункта 21 "цикл со стрелкой по таймеру" непонятен смысл. В описании говорится "задерживает выполнение цикла". Задерживает что именно? Проверку условия? Или переход по стрелке? А, если на стрелке какие-то действия? Сначала выполняем их, потом задерживаем возврат в начало цикла? Или как?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Февраль, 2018 16:18 

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

Если честно, то я легко могу представить себе использование обоих вариантов ("запуск по таймеру" / "действие с указанной длительностью") в программировании ПЛК/систем реального времени.

Например, важно не просто "ждать восхода солнца", а "ждать восхода солнца, но не более чем 24 часа. Если же не дождались, значит датчик солнца сломался и нужно сигнализировать об аварии"

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

Владимир, вы делаете важное замечание.
Но для него в ДРАКОНе уже есть решение.
См. рисунок — левая ветка, где про двигатели и таймер Т

Вложение:
Рис. 144 летТарелка.png
Рис. 144 летТарелка.png [ 93.28 КБ | Просмотров: 711 ]


Владимир Ситников писал(а):
У пункта 21 "цикл со стрелкой по таймеру" непонятен смысл. В описании говорится "задерживает выполнение цикла". Задерживает что именно? Проверку условия? Или переход по стрелке? А, если на стрелке какие-то действия? Сначала выполняем их, потом задерживаем возврат в начало цикла? Или как?
Смысл такой. Задерживается ВСЯ конструкция (как будто ее нету).

Когда задержка кончится, конструкция "Цикл со стрелкой" начнет выполняться.
Можно сказать, что начинает выполняться проверка условия и все остальное.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Февраль, 2018 16:46 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3890
Откуда: Москва
Владимир Ситников писал(а):
У пункта 20 "параллельный процесс по таймеру" неправильное описание. Там говорится про вставку.
Владимир, спасибо. Исправил


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Февраль, 2018 17:02 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 189
Владимир Паронджанов писал(а):
Владимир, вы делаете важное замечание.
Но для него в ДРАКОНе уже есть решение.
См. рисунок — левая ветка, где про двигатели и таймер Т


Я про это и говорил:
Владимир Ситников писал(а):
Можно, конечно, изобразить что-нибудь такое на "параллельных процессах" или на "запусках таймеров-синхронизаторах", ...

Иными словами, да, нужный алгоритм изобразить Дракон-схемой можно.
Можно, конечно, пообсуждать "что означает запись T=30с".
По логике (если смотреть на крайнюю правую ветку про таймер А), она означает "выполнить проверку тогда, когда таймер достигнет значения 30секунд". Но, при этом на 30ой секунде управление может пойти по веткам "двигатели не в норме", "T>8мин- нет".
В итоге, мы уходим на паузу в 1 сек, и потом приходим к проверке "левого двигателя" с "синхронизатором T=30с". Это как вообще? Таймер показывает гарантировано больше 30 секунд (т.к. мы его не сбрасывали). Мы прямо сразу начинаем проверять двигатели?

А, если двигатели оба двигателя запустились за 5 секунд, то мы можем сразу включать реактор?

Я к тому, что:
1) Визуально тяжело отследить "сброс таймера" и его проверку.
2) По схеме не видно обрабатывается ли и как обрабатывается ситуация "слишком долгой работы"
3) Да, вариант с ручным запуском таймеров можно рассматривать как "вспомогательный вариант для очень сложных случаев", но хотелось бы, чтобы простые случаи вроде "ждать, но не более N секунд" выглядели просто.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Февраль, 2018 19:36 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3890
Откуда: Москва
Владимир Ситников писал(а):
Можно, конечно, пообсуждать "что означает запись T=30с".
По логике (если смотреть на крайнюю правую ветку про таймер А), она означает "выполнить проверку тогда, когда таймер достигнет значения 30секунд". Но, при этом на 30ой секунде управление может пойти по веткам "двигатели не в норме", "T>8мин- нет".
В итоге, мы уходим на паузу в 1 сек, и потом приходим к проверке "левого двигателя" с "синхронизатором T=30с". Это как вообще? Таймер показывает гарантировано больше 30 секунд (т.к. мы его не сбрасывали). Мы прямо сразу начинаем проверять двигатели?
Владимир, вы правы. Я допустил ошибку в схеме.
Чтобы не было противоречий, сделаны такие Изменения:

1) Икону Пуск таймера я перенес наверх в начало первой ветки.
2) Синхронизатор Т = 30с я перенес наверх и прицепил ко вставке "Проверка двигателя"

Вот исправленный вариант.

Вложение:
Рис. 144а летТарелка .png
Рис. 144а летТарелка .png [ 93.85 КБ | Просмотров: 697 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Февраль, 2018 19:38 

Зарегистрирован: Понедельник, 14 Декабрь, 2015 19:18
Сообщения: 111
Владимир Ситников писал(а):
Я к тому, что:
1) Визуально тяжело отследить "сброс таймера" и его проверку.


Если имеется ввиду ветка "Пробный полет летающей тарелки", то, по мне, легко воспринимается обнуление таймера "А". Глаза быстро пролетают сверху вниз обозревая шампур.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Февраль, 2018 20:10 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 189
Владимир Невзоров писал(а):
Если имеется ввиду ветка "Пробный полет летающей тарелки", то, по мне, легко воспринимается обнуление таймера "А". Глаза быстро пролетают сверху вниз обозревая шампур.

Разумеется речь про 1-ый "проверка двигателей..."
Обсуждаем же то, как представлять "ограничение длительности работы"
Там T:=0 это "запуск", и "T>8" для проверки "истекло ли время". Вот я и говорю, что можно не заметить, можно забыть, кто напишет одним образом, кто другим.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Февраль, 2018 20:31 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3890
Откуда: Москва
Владимир Ситников, у вас есть критические замечания по исправленному варианту схемы?
viewtopic.php?p=101384#p101384


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 26 Февраль, 2018 22:19 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 189
Владимир Паронджанов писал(а):
Владимир Ситников, у вас есть критические замечания по исправленному варианту схемы?
viewtopic.php?p=101384#p101384

Конечно, стало лучше, но:
1) Почему проверка двигателей должна выполняться именно на 30-ой секунде? Получается, мы просто в начало работы алгоритма добавили паузу в 30 секунд? Какой в этом смысл? Может, стоит добавить простую икону "пауза 30сек" перед "проверкой двигателей"? И тогда можно перенести "сброс таймера T:=0" ниже. Ну, чтобы хотя бы обозначить "отсчитываем 8 минут вот от сих пор (от T:=0), и до сих (до T<8мин)".

\пауза 30 секунд/ -- зачем она, кстати?
||проверка двигателей|| -- а это что такое?
\\T:=0//
| <-- ....
<Левый двигатель в норме?>

Аналогично, кстати, и с пробным полётом. Почему мы включаем телепортацию на 3-ей минуте? Чего мы ждём 3 минуты?

2) С точки зрения ресурсов: в какой момент можно останавливать отсчёт таймера? Может ли этот таймер T использоваться внутри какой-нибудь вставки? Иными словами, сейчас по схеме тяжело понять "а используется ли ещё где-нибудь этот таймер?" Более того, если кто-то опечатается, и случайно укажет T в качестве названия таймера в какой-то другой части схемы, то получит нерабочий алгоритм.

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

Как изобразить "ждём установки флага, но не более 50 секунд"?
К одной-единственной иконе проверки флага добавляем "сброс таймера", "проверку таймера"?

3) Нездорово то, что придётся изобретать имена для таймеров T, A и тому подобных. Грубо говоря, если технически нужно "ограничить длительность операции", то придумывание имени замусоривает картинку. Ну и создаёт двусмысленность в том плане, что единожды запущенный таймер может аукаться на протяжении всей схемы.

4) Интересно, насколько "медикам" будет понятна нотация с "запусками таймеров". Мне по-прежнему не нравится, что "ограничение длительности работы" выполняется одним образом (указанием "времени группы"), а обработка "слишком долгого ожидания" совершенно другим (ручным запуском таймеров).

-----

Например: в алгоритме летающей тарелки почему-то только 2 двигателя. И почему-то мы это знание зафиксировали прямо в алгоритме проверки.

И что означает вставка "проверка двигателей"? Она чем-то отличается от проверок "левый двигатель в норме" / "правый двигатель в норме"?
Шампур называется "проверка двигателей", первая вставка тоже называется "проверка двигателей". Тавтология какая-то.

Можно схлопнуть условия "проверка одного и другого двигателя" в одну развилку "в норме ли двигатели" ? Если так, тогда этот самый "цикл проверки двигателей" сводится к проверке одного условия. И получается, что мы запускаем таймер и проверяем его значение ради одного-единственного условия на проверку двигателей.


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

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3890
Откуда: Москва
Владимир Ситников писал(а):
...важно не просто "ждать восхода солнца", а "ждать восхода солнца, но не более чем 24 часа. Если же не дождались, значит датчик солнца сломался и нужно сигнализировать об аварии"

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

Владимир, вот пример:

Вложение:
Рис. 120 цикл Ждать и таймер .png
Рис. 120 цикл Ждать и таймер .png [ 45.78 КБ | Просмотров: 451 ]


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

Цитата:
Описание

Задача. Включить главный двигатель. Если через 5 минут он не включится, следует включить резервный двигатель

Для решения задачи можно использовать цикл ЖДАТЬ и оператор «Пуск таймера» (рис. 120).
В начале алгоритма выдается команда ВКЛЮЧИ ГЛАВНЫЙ ДВИГАТЕЛЬ. Затем в иконе «Пуск таймера» запускается таймер А.

Далее мы видим цикл ЖДАТЬ, работающий с периодом 1 секунда. В цепи обратной связи цикла размещена икона Вопрос с условием А > 3 минуты.

Что это значит? Цикл ЖДАТЬ проверяет два условия:
 Включен ли главный двигатель?
 Прошли ли 3 минуты?

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

Если же, спустя три минуты, он не запустится, надо перейти на запасной двигатель. Бегунок выходит из правой иконы Вопрос через «Да» и выдается команда ВКЛЮЧИ РЕЗЕРВНЫЙ ДВИГАТЕЛЬ.

Таким образом, работу в реальном времени обеспечивают три элемента (рис. 120):
 Икона «Пуск таймера».
 Икона Период.
 Икона Вопрос с условием А > 3 мин.


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

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3890
Откуда: Москва
Владимир Ситников писал(а):
Обсуждаем же то, как представлять "ограничение длительности работы"
Там T:=0 это "запуск", и "T>8" для проверки "истекло ли время". Вот я и говорю, что можно не заметить, можно забыть, кто напишет одним образом, кто другим.
Здесь есть графическая подсказка, так как формы икон существенно различаются.

1. T:=0 это "запуск" — это пишут в иконе "Пуск таймера"

2. "T>8" для проверки "истекло ли время". — это пишут в иконе Вопрос.


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

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

Я внес исправления в пункты 26 и 27.

Вложение:
Рис. 22. Иконы Продолжение.png
Рис. 22. Иконы Продолжение.png [ 140.1 КБ | Просмотров: 311 ]


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


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

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


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

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


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

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