DRAKON.SU

Текущее время: Пятница, 29 Март, 2024 14:47

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




Начать новую тему Ответить на тему  [ Сообщений: 73 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Воскресенье, 29 Октябрь, 2017 15:17 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
LKom писал(а):
Полагаю, автоматно программировать надо не мысли, а устройства.
Диаграмм должно быть столько, сколько есть устройств.

Не нужно передёргивать.
Программируем мы компьютер, который управляет устройствами.
Мысли мы не программируем, а разделяем.
Что это практически означает? Одно устройство может быть описано через несколько диаграмм.

LKom писал(а):
Ни у С. Ефанова , ни у С. Миткина не указано количество устройств, не указано их назначение, не перечислены состояния каждого устройства.

Это дельное замечание.
ДРАКОН задаёт поведение системы. Но должна быть и модель системы.
Из каких элементов состоит система? Какие имеет связи?
В нашем примере неявно предполагается следующие элементы:
1. Сеть 220в.
2. Электроввод.
3. Генератор.
4. Отправщик СМС.


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

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1356
Цитата:
Программируем мы компьютер, который управляет устройствами.
Ну не компьютер, а устройства с программным управление.
Элементы, это вероятно части устройства.
Некоторые, Вами перечисленные элементы, вероятно сами являются устройствами.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 29 Октябрь, 2017 15:34 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
LKom писал(а):
ХАОС - произвольное использование нотации Дракон.

Я предлагаю выделить особый вид диаграмм силуэт — автоматный силуэт.
Не хаос и произвол, а порядок и гармония.


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

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

Степан Митькин писал(а):
Да, именно.
Отсюда как будто следует

Вывод:
сцеплять два автомата — это плохо, это концептуальная ошибка.


Степан Митькин писал(а):
Перекрещенные веточные циклы плохи только в вычисляющих алгоритмах.
В управляющих алгоритмах это не проблема.
Данная схема описывает алгоритм управления в виде автомата. А значит, ограничение по перекрещенным веточным циклам к нему не применимо.
Отсюда как будто следует

Вывод:
сцеплять автоматы можно


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 29 Октябрь, 2017 17:12 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Владимир Паронджанов писал(а):
Отсюда как будто следует

Вывод:
сцеплять два автомата — это плохо, это концептуальная ошибка.


Я убеждён, что это так.

Владимир Паронджанов писал(а):
Отсюда как будто следует

Вывод:
сцеплять автоматы можно


Вовсе нет.
Сцепленный автомат - это когда в одном автомате реально два состояния.
Перекрещенные веточные циклы не имеют к этому отношения.


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

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Степан Митькин писал(а):
Вовсе нет.
Сцепленный автомат - это когда в одном автомате реально два состояния.
Это надо объяснить.

Степан, если я правильно понял, вы вводите два понятия:
1. реальное состояние автомата.
2. нереальное состояние автомата.

Как отличить реальное состояние от нереального?

Поясню. Автомат силуэт состоит, например, из трех веток. Каждая ветка описывает свое состояние. Значит. в этом автомате три состояния (по числу веток).

Это какие состояния: реальные или нереальные?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 29 Октябрь, 2017 19:30 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Владимир Паронджанов писал(а):
Поясню. Автомат силуэт состоит, например, из трех веток. Каждая ветка описывает свое состояние. Значит. в этом автомате три состояния (по числу веток).
Это какие состояния: реальные или нереальные?

Имеется путаница в терминологии.
Есть два значения термина "состояние автомата":
1. Переменная, в которой указано в каком режиме находится автомат. Она у автомата одна.
2. Значения, которые эта переменная может принимать. Их может быть несколько.
"Сцепленность" автоматов означает, что по смыслу переменных две, но их значения засунуты в одну.
От этого получается большее количество значений, или режимов автомата.
Чем больше режимов, тем труднее с автоматом работать.


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

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

Вопрос. Имеем автомат с переменной K, которая имеет 5 значений. Этому соответствует силуэт с пятью ветками (автомат с пятью состояниями).

Я хочу узнать, является ли переменная К недопустимой, в которой спрятаны две разные по смыслу переменные.

Есть ли на этот счет какое-нибудь формальное или полуформальное правило? Правило, позволяющее выяснить, является ли автомат "сцепленным"?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Октябрь, 2017 08:42 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Владимир Паронджанов писал(а):
Степан Митькин писал(а):
"Сцепленность" автоматов означает, что по смыслу переменных две, но их значения засунуты в одну.

Есть ли на этот счет какое-нибудь формальное или полуформальное правило? Правило, позволяющее выяснить, является ли автомат "сцепленным"?
Правило, которое позволяет забраковать данный автомат, потому что он является "сцепленным".

Формального правила я не знаю.
Может, оно и есть. Специалисты по автоматному программированию его, наверное, знают.

Сам пользуюсь следующими двумя неформальными правилами.

1. Количество состояний
Если количество состояний больше 7-9,
возможно, имеет смысл разбить автомат на несколько.

2. Повторы в именах состояний.
Если в именах состояний есть повторяющиеся части,
возможно имеет смысл разбить автомат на несколько.

Пример. Есть список состояний:
1. Работа от сети.
2. Подтверждение отключения сети.
3. Запуск генератора.
4. Подтверждение подключения сети при запуске генератора.
5. Работа от генератора.
6. Подтверждение подключения сети при работе генератора.
7. Аварийное состояние.
8. Подтверждение подключения сети при аварийном состояни.

Видим, что "Подтверждение подключения сети" повторяется 3 раза.
Это сигнал, что имеются сцепленные автоматы.

Алгоритм Как построить конечный автомат
Вложение:
20171030065455.png
20171030065455.png [ 121.71 КБ | Просмотров: 15137 ]


Последний раз редактировалось Степан Митькин Понедельник, 30 Октябрь, 2017 08:55, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Октябрь, 2017 08:51 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Вот ссылка на диаграмму
https://drakon-editor.com/ide/doc/examples/65


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Октябрь, 2017 16:16 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
Степан Митькин писал(а):
Эти ожидания — отдельный аспект. Цель ожиданий здесь — иметь подтверждённое состояние сети 220в.
Для получения подтверждённых состояний необходимо ввести дополнительный автомат.
События сети 220в будут поступать в основной автомат через этот дополнительный автомат.

В целом, да мысль отделить "фильтр дребезга" от управляющего автомата звучит хорошо.

Кстати: сейчас напряжение по ГОСТ не 220В, а 230В.
В современных книгах правильнее говорить про 230В.

Степан Митькин писал(а):
Вот дополнительный автомат.
Вложение:
20171027151651.png

Выглядит, что это слишком сложный автомат для простой задачи "не выключать генератор сразу после появлении 230в"

Взять, например, язык ST из МЭК 61131.
Там было бы так:
Код:
  IN_PWR : BOOL; (* true -- есть 230В, false -- нет *)
  OUT_PWR : BOOL (* true -- уж точно есть 230В, false -- уж точно нет 230В *)

  onDetect : TON;
  offDetect : TOF;
  state : RS;

onDetect(CLK := IN_PWR, PT := T#5m); (* задержка включения на 5 минут *)
offDetect(CLK := IN_PWR, PT := T#4m); (* задержка выключения на 4 минуты *)
state(S := onDetect.Q, R := NOT offDetect.Q); (* S -- устанавливаем RS триггер, R -- сбрасываем. *)
OUT_PWR := state.Q;


Три простые строки кода.
1-ая делает задержку включения (т.е. переходит в true через 5 минут после включения)
2-ая делает задержку выключения
3-я вычисляет "результирующее" состояние. Если задержка включения прошла, а состояние входа ещё true, то переходим в состояние true (Set у RS триггера). Если задержка выключения прошла, и линия выключена, то сбрасываем (Reset) RS триггер.

В схеме "подтверждённое состояние 220в" 4 ветки, 4 раза используется слово "событие", и вообще там используется 30 квадратиков.

Отсюда вывод: для задачи вычисления "подтверждённого состояния" код на ST гораздо понятнее. Да, некоторые могут заметить, что "ST код это ересь на TON-TOF", но есть море автоматизаторов знакомых с TON-TOF. Если им покажут книгу, где 10 страниц Дракон-схем можно заменить тремя строками, то они сделают справедливый вывод, что на Драконе придётся в 10 раз больше рисовать, а толку ноль.

Я не говорю, что "алгоритм на Драконе должен быть 3 иконы максимум". Но 30 это перебор для такой простой задачи.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Октябрь, 2017 17:48 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Владимир Ситников писал(а):
Выглядит, что это слишком сложный автомат для простой задачи "не выключать генератор сразу после появлении 230в"

Задача не такая простая, как вы говорите. Задача на самом деле вот какая:
1. Не выключать генератор сразу после появления 230в, а подождать 5 мин.
2. Не включать генератор сразу после исчезновения 230в, а подождать 4 мин.

Владимир Ситников писал(а):
Код:
  IN_PWR : BOOL; (* true -- есть 230В, false -- нет *)
  OUT_PWR : BOOL (* true -- уж точно есть 230В, false -- уж точно нет 230В *)

  onDetect : TON;
  offDetect : TOF;
  state : RS;

onDetect(CLK := IN_PWR, PT := T#5m); (* задержка включения на 5 минут *)
offDetect(CLK := IN_PWR, PT := T#4m); (* задержка выключения на 4 минуты *)
state(S := onDetect.Q, R := NOT offDetect.Q); (* S -- устанавливаем RS триггер, R -- сбрасываем. *)
OUT_PWR := state.Q;

Три простые строки кода.

Что ж, неплохая реклама для ДРАКОНа. Особенно R := NOT offDetect.Q. Зачöт.

Если серьёзно, ДРАКОН лучше вот чем:
1. Видно, сколько есть состояний. Всё на виду, ничего не скрываем, включая все ситуации ожидания по таймеру. В задаче объективно 4 состояния? Пожалуйста, 4 ветки.
2. Видно, какие именно входные сигналы принимает каждое из состояний.
3. Обработчики сигналов - вот они. Обработчики могут включать логику и ветвление.
4. Следующее состояние - вот оно, в самом низу. Лень читать обработчик? Смотри вниз: там указатель на следующее состояние.

Владимир Ситников писал(а):
Но 30 это перебор для такой простой задачи.

А вот с этим не знаю что делать. Перейду на ST из МЭК 61131, наверное.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Октябрь, 2017 19:07 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
Степан Митькин писал(а):
Задача не такая простая, как вы говорите. Задача на самом деле вот какая:
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
avr.png [ 41.82 КБ | Просмотров: 15088 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Октябрь, 2017 19:23 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
efanov писал(а):
Я согласен.
Вложение:
Энергоснабжение_007.png
Вот изменённый автомат.

Если в данной схеме под вопросом "есть сеть 220В" имеется ввиду "наверняка есть сеть" (в том смысле, что уже учтены паузы), то, конечно, лучше смотрится.

По факту, ветки "ожидание запуска генератора" и "управление автономным генератором" почти ничем не отличаются. Разве что проверкой "работает ли генератор".
Наверняка можно объединить эти ветки?
Или есть какой-то тайный смысл в дублировании этих веток?

И B=0 в самом конце -- непонятно зачем.

PS. При отказе генератора SMS должна быть не "авария 220", а "авария гены". И вообще, если из разных веток отправляется одно и то же сообщение, то это наверняка плохо, ведь получателю важно понять "что происходит". Если сообщение одинаковое, то получатель не сможет понять о каком из них речь.
О самой потери сети (и попытке запуска генератора) тоже наверняка стоит написать SMS.

PPS. Большинство генераторов не могут работать непрерывно более 6-и часов. Нужно либо использовать 2 генератора и чередовать их, либо приостанавливать генератор (если он единственный).

PPPS. "Управление в аварийном состоянии" -- не читается. Аварийном состоянии чего? Сети? Генератора? Обоих?
Название "генератор сломан" было бы понятнее.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 31 Октябрь, 2017 12:46 

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

Ни в коем случае нельзя эту диаграмму помещать в книгу
В ней есть серьёзный недостаток.
Если опытный программист откроет эту книгу и увидит такое, будет позор и книге, и ДРАКОНу.

На данной диаграмме сцеплены два автомата.
Это приводит к повтору и к злоупотреблению таймерами.

Смотрите: когда в сети 220в пропадает питание, мы сначала не верим и 5 секунд надеемся, что питание восстановится.
Когда после перебоя ток в сети 220в вновь появляется, мы опять не верим своему счастью. Ждём 4 секунды.
Эти ожидания — отдельный аспект. Цель ожиданий здесь — иметь подтверждённое состояние сети 220в.
Для получения подтверждённых состояний необходимо ввести дополнительный автомат.
События сети 220в будут поступать в основной автомат через этот дополнительный автомат.

Вот дополнительный автомат.
Вложение:
20171027151651.png


А вот ставший гораздо проще основной автомат.
Вложение:
20171027151636.png

Степан, речь идет о книге, где надо все объяснять.

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

Хотелось бы, чтобы на дракон-схеме было сказано, что данный автомат живет не один, что он работает в паре с помощником.
Это можно указать, например, в иконе Комментарий.

Степан, что вы об этом думаете?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 31 Октябрь, 2017 22:39 

Зарегистрирован: Четверг, 06 Январь, 2011 15:45
Сообщения: 54
Владимир Ситников писал(а):
По факту, ветки "ожидание запуска генератора" и "управление автономным генератором" почти ничем не отличаются. Разве что проверкой "работает ли генератор".
Наверняка можно объединить эти ветки?
Или есть какой-то тайный смысл в дублировании этих веток?
Это два РАЗНЫХ состояния системы - в одном из них генератор ЕЩЕ не работает и это нормально. А во втором - он УЖЕ работает и если он тут остановится - то это плохо. Объединить ветки, наверное можно, уж этого точно не надо делать.
Владимир Ситников писал(а):
И B=0 в самом конце -- непонятно зачем.
Не нужна она там. Это моя опечатка.
С уважением, Ефанов Сергей.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 01 Ноябрь, 2017 00:08 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
efanov писал(а):
Это два РАЗНЫХ состояния системы - в одном из них генератор ЕЩЕ не работает и это нормально. А во втором - он УЖЕ работает и если он тут остановится - то это плохо. Объединить ветки, наверное можно, уж этого точно не надо делать.


Давайте постепенно.
Сейчас "переключить на автономный генератор" выполняется 2 раза в программе.
Иными словами, есть шанс ошибиться, забыть "переключить на автономный генератор", а просто перейти на "Управление автономным генератором".

Логично удалить две иконы и разместить "переключение на автономный генератор" в начале ветки "управление автономным генератором".

Аналогично для "переключить на сеть 220В" -- можно перетащить в начало ветки "управление при работе от сети".
Аналогично, "отправка SMS о поломке генератора" тоже сейчас упоминается 2 раза, хотя достаточно 1 раз упомянуть в ветке "управление в аварийном состоянии".

Как пример: при переходе из режима "управление автономным генератором" в режим "управление при работе от сети" отправки SMS не происходит. А нужно бы. Иначе получается, сеть пропала, а хозяин и не знает появилась ли.
Это как раз пример того, что эту отправку SMS можно было бы вынести в начало ветки "при работе от сети" и тогда она не забылась бы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 01 Ноябрь, 2017 09:25 

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

Ни в коем случае нельзя эту диаграмму помещать в книгу
В ней есть серьёзный недостаток.
Если опытный программист откроет эту книгу и увидит такое, будет позор и книге, и ДРАКОНу.

На данной диаграмме сцеплены два автомата.
Это приводит к повтору и к злоупотреблению таймерами.

Смотрите: когда в сети 220в пропадает питание, мы сначала не верим и 5 секунд надеемся, что питание восстановится.
Когда после перебоя ток в сети 220в вновь появляется, мы опять не верим своему счастью. Ждём 4 секунды.
Эти ожидания — отдельный аспект. Цель ожиданий здесь — иметь подтверждённое состояние сети 220в.
Для получения подтверждённых состояний необходимо ввести дополнительный автомат.
События сети 220в будут поступать в основной автомат через этот дополнительный автомат.

Вот дополнительный автомат.
Вложение:
Вложение 20171027151651.png больше недоступно


А вот ставший гораздо проще основной автомат.
Вложение:
Вложение 20171027151636.png больше недоступно

Степан, спасибо за замечания.

Выкладываю два автомата Сергея Ефанова (доработано по замечаниям Степана).

220 вольт по замечанию Владимира Ситникова (спасибо, Владимир) будет заменено на 230 вольт.

Управление электроснабжением загородного дома
Вложение:
049. Энергоснабжение_008.png
049. Энергоснабжение_008.png [ 29.57 КБ | Просмотров: 15012 ]


Контроль наличия сети 220 вольт
Вложение:
050. pimgpsh_fullsize_distr.png
050. pimgpsh_fullsize_distr.png [ 11.37 КБ | Просмотров: 15012 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 01 Ноябрь, 2017 10:38 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Владимир Паронджанов писал(а):
Контроль наличия сети 220 вольт

1. Нет отправки сообщения "Нет сети 220в".
2. Видимо, имеется путаница. Как автоматы у нас взаимодействуют?
Есть два варианта:
- через отправку сообщений
- через запись значений в разделяемые переменные
Сергей, какого подхода вы придерживаетесь? Это не ясно из диаграмм.
(С одной стороны, отправляются сообщения. С другой — циклы непрерывно проверяют состояние сети, генератора и т.п.)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 01 Ноябрь, 2017 11:04 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Владимир Паронджанов писал(а):
В вашем варианте возникает проблема.
Я не нашел связи двух автоматов между собой. Кажется, что они работают независимо друг от друга.
Глядя на первый автомат, я не могу догадаться, что нужен второй. И наоборот.

Согласен, проблема есть. И эта проблема слишком серьёзна, чтобы разрешить её при помощи комментария.
Я предлагаю вот что:

1. Необходимо построить модель системы, которая включает в себя:
- перечень входящих в модель автоматов
- перечень входящих в модель событий (и/или входящих переменных)
- перечень исходящих из модели событий (и/или исходящих переменных)

Рассмотрим наш пример.
Модель системы:
Автоматы: Управление энергоснабжением загородного дома, Автономный генератор, Подтверждённое состояние сети 230в.
Входящие события: Сеть 230в есть, Отказ сети 230в, Генератор запущен, Ответ на запрос о проверке состояния генератора.
Исходящие события: Переключить на автономный генератор, Переключить на сеть 230в, Запустить генератор, Остановить генератор, Проверить состояние генератора, Отправить СМС.

Замечания:
- Сеть 230в не является частью модели (А может, и является. Это зависит от того, как формируются события типа Сеть есть.)
- Возможно, СМС владельцу можно исключить и Электро-ввод можно исключить из модели.
- Автономный генератор исключать из модели нецелесообразно. Видимо, следует включить в него состояние ожидания, когда физический генератор будет запущен. Долго не запускается? Отправляем сообщение Отказ генератора.
- Таймер должен предоставлятся средой исполнения.

2. В иконах Вывод в верхней строке писать не "Команда" и не "Сообщение", а название автомата, который получит событие.
Если это событие выходит за пределы модели, пишем "Вывод" или применяем простую икону Вывод без полки.


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

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


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

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


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

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