Степан Митькин писал(а):
Задача не такая простая, как вы говорите. Задача на самом деле вот какая:
1. Не выключать генератор сразу после появления 230в, а подождать 5 мин.
2. Не включать генератор сразу после исчезновения 230в, а подождать 4 мин.
Да, задача именно такая. Это что? Сложная? Если честно, не видел смысла перепечатывать условие целиком, ведь, уже несколько раз озвучили.
Владимир Ситников писал(а):
Что ж, неплохая реклама для ДРАКОНа. Особенно R := NOT offDetect.Q. Зачöт.
Что не так?
Вполне понятно написано, что "сбрасываем выходное состояние, если сети нет более 4минут".
Владимир Ситников писал(а):
Если серьёзно, ДРАКОН лучше вот чем:
Лаконичность ДРАКОНа на конкретной задаче явно хромает.
Степан Митькин писал(а):
1. Видно, сколько есть состояний. Всё на виду, ничего не скрываем, включая все ситуации ожидания по таймеру. В задаче объективно 4 состояния? Пожалуйста, 4 ветки.
По факту, используются только 2 состояния: "сеть есть", "сети нет". Остальные 2 это детали реализации.
В варианте на ST как раз сразу видно, что состояния 2 (у RS триггера 2 состояния), и видно от чего зависит это выходное состояние.
Степан Митькин писал(а):
2. Видно, какие именно входные сигналы принимает каждое из состояний.
А объясните "пустые" входные сигналы в исходных состояниях "сети нет" и "сеть есть"?
Что они вообще значат?
Пришло пустое событие?
Это как вообще?
Степан Митькин писал(а):
3. Обработчики сигналов - вот они. Обработчики могут включать логику и ветвление.
Вообще говоря, вы почему-то разнесли "запуск таймера" и "проверку таймера" по разным веткам.
Ну какая логика в том, чтобы "запускать таймер, а потом проверять, что, возможно, сеть появилась?"
По-моему, "запуск таймера" как раз нужно перемещать в начало соответствующей ветки.
Да, тогда большинство реакций на события станут вообще пустыми. Т.е. переход по соответствующему адресу.
И как раз это будет показывать о водянистости и бесполезности конкретной схемы.
Сейчас же такое схема составлена так, что самое главное при восстановлении сети это "запустить таймер".
Степан Митькин писал(а):
4. Следующее состояние - вот оно, в самом низу. Лень читать обработчик? Смотри вниз: там указатель на следующее состояние.
См. выше. Куча пустых переходов (особенно, если вынести "команду запуска таймера" в начало ветки "возможно") -- явно плохой знак.
PS. Для запуска таймера есть специальная икона.
PPS. И, кстати, можно и на CFC такую же схему нарисовать:
Вложение:
avr.png [ 41.82 КБ | Просмотров: 15209 ]