Jump to content
    

Вкл/выкл устройство по разным событиям, алгоритм.

Добрый день, подскажите как правильно разрулить работу устройства по нескольким событиям (из разных модулей)

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

1) пользователь нажал кнопку в web (вкл/выкл)

2) Работа по расписанию (часы реального времени)

3) Защита (превышение параметра выкл, параметр в норме вкл)

4) Детектор сигнала (пропал сигнал выкл, появился сигнал вкл)

 

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

 

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

 

Текущая реализация такая, в каждом модулей сделал свой Callback на событие, а установка всех Callback функций в одном файле в котором производиться логика работы по событиям + запись в журнал.

 

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

 

Как ещё можно это разрулить ?

Edited by pokk

Share this post


Link to post
Share on other sites

Ничего не понятно :( Можете сформулировать проблемную ситуацию по пунктам по порядку что сработало, что получили, что должно было получиться и т.д.

Share this post


Link to post
Share on other sites

5 часов назад, pokk сказал:

Добрый день, подскажите как правильно разрулить работу устройства по нескольким событиям (из разных модулей)

Как ещё можно это разрулить ?

Совершенно стандартно

 можно сделать так, что каждый модуль на выходе выдаёт флаги своих  состояний, которые поступают на вход автомата состояний - fsm,  где они и и анализируются... автомат состояний пишется довольно легко..  приоритеты в нем точно так же легко задаются...

Share this post


Link to post
Share on other sites

3 hours ago, MegaVolt said:

Ничего не понятно :( Можете сформулировать проблемную ситуацию по пунктам по порядку что сработало, что получили, что должно было получиться и т.д.

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

 

 

 

Share this post


Link to post
Share on other sites

20 часов назад, pokk сказал:

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

Ну значит при выключении устройства нужно выключать и детектор сигнала (выключать обработку с детектора.)

Share this post


Link to post
Share on other sites

Да не, тут просто нужны, отдельно, флаг действия пользователя, и два переключателя, его и устройства.

Share this post


Link to post
Share on other sites

On 12/22/2021 at 5:22 AM, pokk said:

Как ещё можно это разрулить ?

Нарисовать блок-схему. В которой показать, что от чего зависит и поведение в любой из ситуаций в зависимости от уже достигнутого состояния.

После чего обычно уже и спрашивать не нужно, все становится понятно. :)

Share this post


Link to post
Share on other sites

37 минут назад, Ruslan1 сказал:

Нарисовать блок-схему. В которой показать, что от чего зависит и поведение в любой из ситуаций в зависимости от уже достигнутого состояния.

:good2: Самый толковый совет.

А то похоже и сам ТС не понимает этого алгоритма. А уж посторонним, из такого невнятного описания, вообще ничего не понятно.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...