Easyelectronics.ru

Электроника для всех
Текущее время: 11 авг 2020, 03:16

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



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 55 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 03 апр 2017, 20:23 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
Затруднения следующие: программный модуль управления оборудованием, модуль вывода информации на дисплей. У модуля управления оборудованием есть аварийные ситуации. Часть критичные (уход в состояние "Аварийный стоп"), часть некритичных (уход в ожидающие некоторых условий состояния). Модуль вывода информации проверяет буфер ошибок и сообщений. Если есть аварийные или предупреждающие сообщения, вывод соответствующих сообщений и уход в состояние ожидания условий выхода из этого состояния. Затруднение получилось следующее: у модуля управления оборудованием есть условия для выхода из определенного блокирующего состояния. Притом, если мы выйдем из этого состояния, то не будет условия для выхода из некоторого состояния для модуля вывода информации. Получается, что нужно создавать условие.

Пример:
Show Модуль управления


Show Модуль вывода информации


И тут я подумал, а зачем мне проверять лишний раз условия, если у модуля управления есть четкие условия для выхода из блокирующих состояний, и при выполнении этих условий отправлять определенные сообщения модулю вывода информации.

Хотелось бы узнать, кто как решает подобные задачи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 12:46 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
Модуль, занимающийся выводом отладочной информации или логированием вообще не должен ничего проверять. Это инверсия зависимостей, что архитектурно плохо. Модуль должен принимать сообщения и обрабатывать их согласно определенной стратегии.

Я не знаю архитектуру вашей системы... Но логика подсказывает мне следующее. Если буфер ошибок это отдельная сущность, то пусть буфер ошибок и посылает сообщения. Или напрямую, или ему можно сделать подписку, в которую запихать модуль логирования. Пусть буффер отсылает сообщения при входе в аварийное состояние и при выходе из него.

П.С. А зачем модулю вывода информации вообще уходить в ожидающее состояние?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 14:08 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
Mirmik писал(а):
А зачем модулю вывода информации вообще уходить в ожидающее состояние?

Состояния модуля: вывод текущей информации, меню и вывод предупреждающих, аварийных сообщений, выход из которого по нажатию кнопок или условиям (теперь уже по соответствующим сообщениям).
Я покрутил в голове так и эдак, именно сообщениями и нужно оперировать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 14:47 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
Можно заставить его всегда ждать сообщения. Сообщения о нажатии кнопок. Сообщения о изменении состояния буфера.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 15:04 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
Mirmik писал(а):
Можно заставить его всегда ждать сообщения.

Не получится. В каждом состоянии свой набор сообщений, событий. Альтернативы состояниям нет. Если нет состояний, то будет тупо обработка любого сообщения, события.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 15:25 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
Ну, мне сложно что-то предлагать, поскольку я не знаю архитектуру вашего диспетчера.
Общая мысль моя такая. Интерфейс не должен как-либо блокироваться из-за возникновения аварийного состояния.
Никакого ожидания быть не должно.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 16:51 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
demiurg1978 писал(а):
Альтернативы состояниям нет.
ага. и конечным автоматам.
зато затруднения в алгоритме - есть :) сам себе яму выкопал и незаметил :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 17:32 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
Не... Тут не в автоматах проблема. Это проблема оптимального использования сообщений. Она общая для всех микоядерных осей.
Нет никакой разницы, выступают ли в качестве адресатов автоматы, сервисы или же полноценные потоки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 18:32 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
может быть. а может быть проблема построения архитектуры программы (я не в курсе).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 18:38 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
Ink писал(а):
demiurg1978 писал(а):
Альтернативы состояниям нет.
ага. и конечным автоматам.
зато затруднения в алгоритме - есть :) сам себе яму выкопал и незаметил :)

Самое смешное, что я, получается, дважды обложил условиями. Модуль управления, модуль вывода информации. Хотя это можно сделать в одном месте, модуле управления. А из него уже отправлять сообщения или выставлять события. В принципе, я к этому подходил уже, когда задал тут вопрос.

А теперь, так сказать, академический вопрос. Альтернатива конечному автомату. Отдельное состояние, отдельный набор сообщений, событий. Входов, короче говоря. Тут упомянули что-то этакое. Хочу услышать развернутые ответы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 19:16 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
А как у вас реализуется прием различных сообщений в зависимости от состояния?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 19:32 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
Mirmik писал(а):
А как у вас реализуется прием различных сообщений в зависимости от состояния?

На данный момент пока сообщения - переменная. Буфер в этом проекте избыточен. В каждом состоянии свой набор констант-номеров сообщений. Нет сообщения, в переменной нуль. Если не нуль, значит есть сообщение. То же - ID ошибки. Также есть массив событий. Нажатие клавиш и тому подобное.
Почему такой винегрет, потому что еще окончательно не определил для себя стандарты. Везде есть свои плюсы и минусы.
По идее, нужно жестко определить: что ошибка, что событие, что сообщение. С сообщениями и событиями свои проблемы. Время жизни, очистка массива или очереди, нужна ли очистка, в общем, пока еще в раздрае в этом плане.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 19:40 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
То есть автомат может пребывать в различных состояниях и на каждое состояние у него свой стек сообщений, событий и прочего? Не избыточно ли?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 20:00 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
Mirmik писал(а):
То есть автомат может пребывать в различных состояниях и на каждое состояние у него свой стек сообщений, событий и прочего? Не избыточно ли?

Ммм, мне проще показать:
Show


Так как сообщение, по сути такая же переменная как и ошибка, я упразднил на данный момент "сообщение", оставил ошибку.


Последний раз редактировалось demiurg1978 04 апр 2017, 20:05, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 20:02 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
demiurg1978 писал(а):
А теперь, так сказать, академический вопрос. Альтернатива конечному автомату. Отдельное состояние, отдельный набор сообщений, событий. Входов, короче говоря. Тут упомянули что-то этакое. Хочу услышать развернутые ответы.
чтобы дать развернутый ответ, необходимое (но не достаточное!) условие - иметь полное ТЗ по задаче/системе. имея лишь инфу "есть программный модуль управления оборудованием, модуль вывода информации на дисплей" ничего внятного сказать нельзя. более того "модуль ***" - это уже часть выбранной архитектуры, в другой архитектуре его вообще может не быть, из-за иного подхода. альтернатив построения программ - мульён, и КА - далеко не всегда удачный выбор, в т.ч. из-за сложности поддержки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 20:10 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
Ink писал(а):
...

Конечные автоматы - единственная работающая для меня реализация. К примеру как реализовать следующее: включен аварийный стоп. на дисплее соответствующее сообщение. Пока грибок не отожмешь, сообщение не исчезнет. Алгоритмически без автомата не реализовать. Если вы скажете про флаги, то это тоже автомат. только состояние - флаги. А на флагах код становится нечитабельным и еще более не поддерживаемым. Плюсуем сюда еще скрытые, неучтенные, невыявленные состояния - сочетания флагов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 21:42 
Старожил

Зарегистрирован: 30 авг 2010, 00:02
Сообщения: 926
Вообще-то разделение на две части это условность, особенно если подразумевается деление программы.
Состояние системы на каждый момент можно выразить через N бит, а что делать должен решить только demiurg1978, знающий что можно, что нельзя и куда бежать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 04 апр 2017, 22:10 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
demiurg1978 писал(а):
Конечные автоматы - единственная работающая для меня реализация.

видимо, пришло время изучить другие парадигмы :)
это типа как сказать "рекурсия - это иденственный способ сделать ***". а это всегда не так.
demiurg1978 писал(а):
К примеру как реализовать следующее: включен аварийный стоп. на дисплее соответствующее сообщение. Пока грибок не отожмешь, сообщение не исчезнет.

так, как задачу описываешь ты:
Код:
print("warning msg");
while(gribok);
clr();

никаких флагов, никаких КА :)
demiurg1978 писал(а):
Если вы скажете про флаги, то это тоже автомат. только состояние - флаги. А на флагах код становится нечитабельным и еще более не поддерживаемым. Плюсуем сюда еще скрытые, неучтенные, невыявленные состояния - сочетания флагов.

и да, и нет, и различие ты сам и описал. но флаги позволяют сокращать код (т.е., делать его как раз читаемее и модульнее!), вызывая несколько действий, каких надо, не описывая что-то в каждом состоянии КА. а невыявленные состояния - это только если продолжать мыслить категориями КА. для нефанатов КА никаких проблем нет, сплошные удобства. но и флаги - далеко не единственно возможная реализация.
КА больше всего годится если используется периодический вызов функции, в которой используется этот КА, а должен ли весь девайс быть описан КА? сомневаюсь. на ПЛК, например, другого выхода и нет, там всё работает именно циклами, но делая девайсы на МК, нет смысла городить эти огороды просто так. у любого девайса, например, есть режимы работы, типа, простой, настройки, начало работы, работа, авария, останов. нет смысла это описывать автоматом, просто каждую операцию описываешь своей функцией в своем файле. это лишь один из примеров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 05 апр 2017, 01:45 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
Кроме конечных автоматов и флагов есть прорва различных парадигм.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 05 апр 2017, 08:53 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3679
Откуда: Новосибирск
Касаемо ПЛК, как раз то, что нельзя явно реализовать КА на ПЛК - это существенный минус. Один раз мне попадался проект, где конечный автомат сделали на меркерах.
Чтобы закрыть спор по поводу КА, скажу следующее: дело не в том, что я фанат КА. Мои проекты в основном для оборудования. А это, как ни крути, состояния.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 05 апр 2017, 11:42 
Старожил

Зарегистрирован: 02 май 2015, 16:16
Сообщения: 2071
Цитата:
Кроме конечных автоматов и флагов есть прорва различных парадигм.
часто по непониманию неопытные пытаются заменить суть красивыми словосочетаниями - конечный автомат, бесконечный автомат, критичные сообщения, парадигма...
Цитата:
Код:
print("warning msg");
while(gribok);
clr();
никаких флагов, никаких КА :)
в АСУ реально-крутящегося в цикле времени всё намного проще - там одна операция или функция не может зациклиться сама в себе - это уже программная ошибка, которую может зафиксировать системная функция контроля времени выполнения цикла :( типа спящая в ПЛК собака)
вся программа постоянно прогоняется от начала до конца в цикле периодичностью 1...10 миллисекунд
на картинке каждая ветка Network обрабатывается в каждом цикле и результат сохраняется в специальной Таблице обмена с другими устройствами (образ процесса - буфер обмена), откуда внешние устройства его и забирают или куда кладут биты событий нажатия/отжатия от кнопок с экрана посредством коммуникационных функций - в данном случае панель оператора визуализирует данные из ПЛК
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 05 апр 2017, 15:01 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
demiurg1978 писал(а):
Касаемо ПЛК, как раз то, что нельзя явно реализовать КА на ПЛК - это существенный минус.
почему это явно нельзя? все как раз можно. я про то, что вот там ты ограничен КА или флагами архитектурой этого плк. а на мк ты ни чем не ограничен.
demiurg1978 писал(а):
Мои проекты в основном для оборудования. А это, как ни крути, состояния.
это заблуждения.
petrplc писал(а):
в АСУ реально-крутящегося в цикле времени всё намного проще - там одна операция или функция не может зациклиться сама в себе - это уже программная ошибка, которую может зафиксировать системная функция контроля времени выполнения цикла :( типа спящая в ПЛК собака)
спасибо кэп:)
но это архитектура плк тебя вынуждает реализовывать софт так. если у тебя МК, ты свободен писать нормальные программы, которые могут виснуть в цикле как надо. если надо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 05 апр 2017, 15:39 
Старожил

Зарегистрирован: 02 май 2015, 16:16
Сообщения: 2071
Ink писал(а):
petrplc писал(а):
в АСУ реально-крутящегося в цикле времени всё намного проще - там одна операция или функция не может зациклиться сама в себе - это уже программная ошибка, которую может зафиксировать системная функция контроля времени выполнения цикла :( типа спящая в ПЛК собака)
спасибо кэп:)
но это архитектура плк тебя вынуждает реализовывать софт так. если у тебя МК, ты свободен писать нормальные программы, которые могут виснуть в цикле как надо. если надо.
Не все понимают что есть такое ПЛК и боятся понять суть ПЛК:
ПЛК (программируемый логический контроллер) обычное микропроцессорное устройство на основе обычных компонентов, как классический ПЛК S7-300 на фотке
Изображение
Процессор (в данном случае 16-ти разрядный микроконтроллер Сименс-Инфинеон C165, а есть реализации ПЛК на Атмегах :),
флеш-память (с операционной системой реального времени),
оперативная память для программы пользователя, оперативная память для сохраняемых при выключении сетевого питания данных (обе памяти питаются от литиевой батарейки - нет батарейки, нет памяти :)
интерфейсная микросхема с аппаратной реализацией сименовского протокола Профибус (внутри микроконтроллер 1816ВЕ31 с буфером двух-портовой памяти для обмена с внешним процессором)

В принципе можно загрузить свою ОС и зацикливать одну операцию ожидания на себя... а весь мир пускай подождёт...
Концепция ПЛК в программной реализации алгоритма выполнения задач:
чтение сигналов со входов встроенных в микроконтроллер или из внешних микросхем по последовательной внешней или параллельной внутренней шине = всё полученное записывается в область памяти, называемую образ процесса,
последовательный проход по всем веткам программы - время выполнения контролируется внутренними таймерами ОС и аппаратной собакой процессора,
обработка внутренних и внешних прерываний или прямых обращений к портам ввода-вывода из ветки программы,
результаты операций автоматически попадают в образ процесса,
вывод результатов из образа процесса на ножки и внешние порты вывода напрямую или коммуникационные функции через заданные интерфейсы.
всё просто :)
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 05 апр 2017, 15:58 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
Концепция ПЛК удачна, потому что примитивна.

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

ПЛК замечательно решают 95% задач автоматизации и делают это превосходно.

Но работать с ПЛК мне просто скучно...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Затруднения в алгоритме. Вывод критичных сообщений.
СообщениеДобавлено: 05 апр 2017, 16:23 
Старожил

Зарегистрирован: 02 май 2015, 16:16
Сообщения: 2071
Mirmik писал(а):
Сложная алгоритмика противоречит самой сути ПЛК.
ПЛК замечательно решают 95% задач автоматизации и делают это превосходно.
Но работать с ПЛК мне просто скучно...
если тебе не нравится это
Изображение
то могу предложить приключения и нескучную увлекательную работу
Цитата:
работаю в кип и а,
поменяли датчик давления в танке 4-20ма,
набрали в танк продукта 800л на экране видим 500,
можно конечно в датчике подкрутить, но это не совсем правильно и в других танках та же беда,
вместо 2 тонн 400 литров,
вместо 1 тонны 7 тонн,
.....
установил сегодня новый датчик, при нуле показывал -656, налили 2000л показывает 11150 и 1500 литров...
да да ПЛК надёжны... а вот обслуживающие их не всегда... кого ругать за полупустую коробку молока ?


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


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


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

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


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB