Commit 85194659 authored by Pavel Vainerman's avatar Pavel Vainerman

(docs): подправил документацию

parent 116c811d
...@@ -107,7 +107,7 @@ ...@@ -107,7 +107,7 @@
<item id="2342" name="MyObject" ... evnt_myfilter="1" ../> <item id="2342" name="MyObject" ... evnt_myfilter="1" ../>
</objects> </objects>
\endcode \endcode
При это в параметрах старта SM должно быть указано \b --e-filter myfilter. При этом в параметрах старта SM должно быть указано \b --e-filter myfilter.
Тогда при своём старте SM пришлёт объекту с идентификатором 2342 уведомление. Тогда при своём старте SM пришлёт объекту с идентификатором 2342 уведомление.
В качестве уведомления объектам рассылается сообщение \b SystemMessage::WatchDog. В качестве уведомления объектам рассылается сообщение \b SystemMessage::WatchDog.
...@@ -135,14 +135,49 @@ ...@@ -135,14 +135,49 @@
\endcode \endcode
На данный момент зависимость можно устанавливать только на дискретные датчики. На данный момент зависимость можно устанавливать только на дискретные датчики.
\section sec_SM_HeartBeat Слежение за "живостью" объектов \section sec_SM_HeartBeat Слежение за "живостью" объектов ("сердцебиение")
Слежение за специальными датчиками (инкремент специальных датчиков), Слежение за специальными датчиками (инкремент специальных датчиков),
а также выставление дискретных датчиков "живости" процессов. а также выставление дискретных датчиков "живости" процессов.
...
... Данный механизм построен на следующей логике:
\par
Каждому процессу, за которым необходимо следить, назначается два дватчика "сердцебиения"(heartbeat),
аналоговый(счётчик) и дискретный. Во время работы, процесс периодически (время задаётся в настройках)
сохраняет в свой \b аналоговый датчик заданное значение (количество тактов).
В свою очередь процесс SM, каждый "такт"(время между шагами задаётся в настройках),
"отнимает" у этого значения 1 (декриментирует). Пока значение счётчика больше нуля, дискретный датчик
держиться равным "1" (т.е. 1 - процесс "жив"). Если процесс "вылетает" и перестаёт обновлять свой счётчик,
то через некоторое количество тактов его счётчик становится меньше нуля. Как только это происходит, SM фиксирует,
"недоступность" процесса, и выставляет дискретный датчик в ноль (т.е. 0 - процесс вылетел(недоступен)).
При этом, имеется возможность для некоторых процессов (обычно для особо важных, без которых работа невозможна) указать,
время ожидания "перезапуска процесса"(heartbeat_reboot_msec) и в случае если для SM настроена работа с WDT-таймером
и за заданное время процесс не перезапустился (не обновил свой счётчик), происходит
перезагрузка контроллера (SM перестаёт сбрасывать WDT-таймер).
У аналоговых датчиков "сердцебиения" в конфигурайионном файле необходимо указывать \b heartbeat="1".
А также поля:
<br>\b heartbeat_ds_name - имя дискретного датчика, связанного с данным аналоговым
<br>\b heartbeat_node="ses" - фильтрующее поле (см. --heartbeat-node)
<br>\b heartbeat_reboot_msec - время ожидания перезапуска процесса. Это необязательный параметр, задаётся только в случае
необходимости перезапуска контроллера.
Пример задания датчиков "сердцебияния":
<br>_31_04_AS - аналоговый (счётчик)
<br>_41_04_S - дискретный ("доступность процесса")
\code
<item default="10" heartbeat="1" heartbeat_ds_name="_41_04_S" heartbeat_node="ses" heartbeat_reboot_msec="10000"
id="103104" iotype="AI" name="_31_04_AS" textname="SES: IO heartbeat"/>
<item default="1" id="104104" iotype="DI" name="_41_04_S">
<MessagesList>
<msg mtype="1" text="КСЭС: отключился ввод\вывод" value="0"/>
</MessagesList>
</item>
\endcode
\section sec_SM_History Механизм аварийного дампа \section sec_SM_History Механизм аварийного дампа
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment