Commit 85194659 authored by Pavel Vainerman's avatar Pavel Vainerman

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

parent 116c811d
...@@ -34,101 +34,104 @@ ...@@ -34,101 +34,104 @@
в качестве префикса по умолчанию используется "io", но в конструкторе можно задать другой в качестве префикса по умолчанию используется "io", но в конструкторе можно задать другой
если используется несколько процессов ввода/вывода. если используется несколько процессов ввода/вывода.
--io-confnode name - Использовать для настройки указанный xml-узел <br>\b --io-confnode name - Использовать для настройки указанный xml-узел
--io-name name - ID процесса. По умолчанию IOController1. <br>\b --io-name name - ID процесса. По умолчанию IOController1.
--io-numcards - Количество карт в/в. По умолчанию 1. <br>\b --io-numcards - Количество карт в/в. По умолчанию 1.
--iodev0 dev - Использовать для card='0' указанный файл comedi-устройства. <br>\b --iodev0 dev - Использовать для card='0' указанный файл comedi-устройства.
--iodev1 dev - Использовать для card='1' указанный файл comedi-устройства. <br>\b --iodev1 dev - Использовать для card='1' указанный файл comedi-устройства.
--iodev2 dev - Использовать для card='2' указанный файл comedi-устройства. <br>\b --iodev2 dev - Использовать для card='2' указанный файл comedi-устройства.
--iodev3 dev - Использовать для card='3' указанный файл comedi-устройства. <br>\b --iodev3 dev - Использовать для card='3' указанный файл comedi-устройства.
--iodevX dev - Использовать для card='X' указанный файл comedi-устройства. <br>\b --iodevX dev - Использовать для card='X' указанный файл comedi-устройства.
'X' не должен быть больше --io-numcards 'X' не должен быть больше --io-numcards
--iodevX-subdevX-type name - Настройка типа подустройства для UNIO. <br>\b --iodevX-subdevX-type name - Настройка типа подустройства для UNIO.
Разрешены: TBI0_24,TBI24_0,TBI16_8 Разрешены: TBI0_24,TBI24_0,TBI16_8
--io-default_cardnum - Номер карты по умолчанию. По умолчанию -1. <br>\b --io-default_cardnum - Номер карты по умолчанию. По умолчанию -1.
Если задать, то он будет использоватся для датчиков Если задать, то он будет использоватся для датчиков
у которых не задано поле 'card'. у которых не задано поле 'card'.
--io-test-lamp - Для данного узла в качестве датчика кнопки 'ТестЛамп' использовать указанный датчик. <br>\b --io-test-lamp - Для данного узла в качестве датчика кнопки 'ТестЛамп' использовать указанный датчик.
--io-conf-field fname - Считывать из конф. файла все датчики с полем fname='1' <br>\b --io-conf-field fname - Считывать из конф. файла все датчики с полем fname='1'
--io-polltime msec - Пауза между опросом карт. По умолчанию 200 мсек. <br>\b --io-polltime msec - Пауза между опросом карт. По умолчанию 200 мсек.
--io-filtersize val - Размерность фильтра для аналоговых входов. <br>\b --io-filtersize val - Размерность фильтра для аналоговых входов.
--io-filterT val - Постоянная времени фильтра. <br>\b --io-filterT val - Постоянная времени фильтра.
--io-s-filter-field - Идентификатор в configure.xml по которому считывается список относящихся к это процессу датчиков <br>\b --io-s-filter-field - Идентификатор в configure.xml по которому считывается список относящихся к это процессу датчиков
--io-s-filter-value - Значение идентификатора по которому считывается список относящихся к это процессу датчиков <br>\b --io-s-filter-value - Значение идентификатора по которому считывается список относящихся к это процессу датчиков
--io-blink-time msec - Частота мигания, мсек. По умолчанию в configure.xml <br>\b --io-blink-time msec - Частота мигания, мсек. По умолчанию в configure.xml
--io-blink2-time msec - Вторая частота мигания (lmpBLINK2), мсек. По умолчанию в configure.xml <br>\b --io-blink2-time msec - Вторая частота мигания (lmpBLINK2), мсек. По умолчанию в configure.xml
--io-blink3-time msec - Вторая частота мигания (lmpBLINK3), мсек. По умолчанию в configure.xml <br>\b --io-blink3-time msec - Вторая частота мигания (lmpBLINK3), мсек. По умолчанию в configure.xml
--io-heartbeat-id - Данный процесс связан с указанным аналоговым heartbeat-дачиком. <br>\b --io-heartbeat-id - Данный процесс связан с указанным аналоговым heartbeat-дачиком.
--io-heartbeat-max - Максимальное значение heartbeat-счётчика для данного процесса. По умолчанию 10. <br>\b --io-heartbeat-max - Максимальное значение heartbeat-счётчика для данного процесса. По умолчанию 10.
--io-ready-timeout - Время ожидания готовности SM к работе, мсек. (-1 - ждать 'вечно') <br>\b --io-ready-timeout - Время ожидания готовности SM к работе, мсек. (-1 - ждать 'вечно')
--io-force - Сохранять значения в SM, независимо от, того менялось ли значение <br>\b --io-force - Сохранять значения в SM, независимо от, того менялось ли значение
--io-force-out - Обновлять выходы принудительно (не по заказу) <br>\b --io-force-out - Обновлять выходы принудительно (не по заказу)
--io-skip-init-output - Не инициализировать 'выходы' при старте
--io-sm-ready-test-sid - Использовать указанный датчик, для проверки готовности SharedMemory <br>\b --io-skip-init-output - Не инициализировать 'выходы' при старте
<br>\b --io-sm-ready-test-sid - Использовать указанный датчик, для проверки готовности SharedMemory
\par Возможные настройки по каждому входу/выходу \par Возможные настройки по каждому входу/выходу
nofilter - не использовать фильтр
ioignore - игнорировать данный датчик (позволяет временно отключить вход/выход) <br>\b nofilter - не использовать фильтр
ioinvert - инвертированная логика (для DI,DO) <br>\b ioignore - игнорировать данный датчик (позволяет временно отключить вход/выход)
default - значение по умолчанию (при запуске) <br>\b ioinvert - инвертированная логика (для DI,DO)
noprecision - игнорировать поле precision (т.е. процесс в/в не будет его использовать, <br>\b default - значение по умолчанию (при запуске)
<br>\b noprecision - игнорировать поле precision (т.е. процесс в/в не будет его использовать,
но будет его присылать в SensorMessage) но будет его присылать в SensorMessage)
breaklim - пороговое значение для определения обырва датчика (используется для AI). <br>\b breaklim - пороговое значение для определения обырва датчика (используется для AI).
Если значение ниже этого порога, то выставляется признак обрыва датчика. Если значение ниже этого порога, то выставляется признак обрыва датчика.
<br>\b jardelay - защита от дребезга. Задержка на дребезг, мсек.
<br>\b ondelay - задержка на срабатывание, мсек.
<br>\b offdelay - задержка на отпускание, мсек.
<br>\b safety - безопасное значение. Значение которое сохраняется в случае аварийного
завершения процесса.
<br>\b iopriority - приоритет при опросе.
<br>\b iotype - тип входа/выхода [DI|DO|AI|AO]
jardelay - защита от дребезга. Задержка на дребезг, мсек. <br>\b rmin - минимальное "сырое" значение
ondelay - задержка на срабатывание, мсек. <br>\b rmax - максимальное "сырое" значение
offdelay - задержка на отпускание, мсек. <br>\b cmin - минимальное "калиброванное" значение
safety - безопасное значение. Значение которое сохраняется в случае аварийного <br>\b cmax - максимальное "калиброванное" значение
завершения процесса. <br>\b sensibility - чуствительность. (deprecated)
iopriority - приоритет при опросе. <br>\b precision - Точность. Задаёт количство знаков после запятой.
<br>Т.е. при считывании из канала, значение домножается
iotype - тип входа/выхода [DI|DO|AI|AO] <br>на 10^precision и уже таким сохраняется.
rmin - минимальное "сырое" значение <br>А в SensorMessage присылается присылается precision.
rmax - максимальное "сырое" значение
cmin - минимальное "калиброванное" значение <br>\b filtermedian - Значение для "медианного" фильтра
cmax - максимальное "калиброванное" значение <br>\b filtersize - Значение для "усреднения"
sensibility - чуствительность. (deprecated) <br>\b filterT - Постоянная времени фильтра.
precision - Точность. Задаёт количство знаков после запятой.
Т.е. при считывании из канала, значение домножается <br>\b caldiagram - Имя калибровочной диаграммы из секции <Calibrations>.
на 10^precision и уже таким сохраняется.
А в SensorMessage присылается присылается precision. <br>\b threshold_aid - идентификатор аналогового датчика по которому формируется порог.
filtermedian - Значение для "медианного" фильтра
filtersize - Значение для "усреднения"
filterT - Постоянная времени фильтра.
caldiagram - Имя калибровочной диаграммы из секции <Calibrations>.
threshold_aid - идентификатор аналогового датчика по которому формируется порог.
Используется для DI. Используется для DI.
lowlimit - нижний порого срабатывания. <br>\b lowlimit - нижний порого срабатывания.
hilimit - верхний порого срабатывания. <br>\b hilimit - верхний порого срабатывания.
sensibility - чувствительность (deprecated) <br>\b sensibility - чувствительность (deprecated)
card - номер карты <br>\b card - номер карты
subdev - номер подустройства <br>\b subdev - номер подустройства
channel [ 0<>32 ] - номер канала <br>\b channel [ 0<>32 ] - номер канала
jack [ J1 | J2 | J3 | J4 | J5 ] - название разъёма. Можно задавать вместо channel <br>\b jack [ J1 | J2 | J3 | J4 | J5 ] - название разъёма. Можно задавать вместо channel
J1 - chanenel 0 - 15 <br>&nbsp;&nbsp; J1 - chanenel 0 - 15
J2 <br>&nbsp;&nbsp; J2
lamp - признак, что данный аналоговый датчик является "лампочкой". <br>\b lamp - признак, что данный аналоговый датчик является "лампочкой".
Т.е. на самом деле дискретный выход, который может иметь три состояния <br> Т.е. на самом деле дискретный выход, который может иметь три состояния
UniSetTypes::lmpOFF - выключен <br>UniSetTypes::lmpOFF - выключен
UniSetTypes::lmpON - включен <br>UniSetTypes::lmpON - включен
UniSetTypes::lmpBLINK - мигание с частотой 1 <br>UniSetTypes::lmpBLINK - мигание с частотой 1
UniSetTypes::lmpBLINK2 - мигание с частотой 2 <br>UniSetTypes::lmpBLINK2 - мигание с частотой 2
UniSetTypes::lmpBLINK3 - мигание с частотой 3 <br>UniSetTypes::lmpBLINK3 - мигание с частотой 3
no_iotestlamp - игнорировать данную лампочку при тесте ламп. <br>\b no_iotestlamp - игнорировать данную лампочку при тесте ламп.
range - диапазон измерения аналогового входа (см. libcomedi) <br>\b range - диапазон измерения аналогового входа (см. libcomedi)
aref - тип подключения (см. libcomedi) <br>\b aref - тип подключения (см. libcomedi)
enable_testmode - включить в работу во время тестового режима tmConfigEnable <br>\b enable_testmode - включить в работу во время тестового режима tmConfigEnable
disable_testmode - исключить из работы в тестовом режиме tmConfigDisable. <br>\b disable_testmode - исключить из работы в тестовом режиме tmConfigDisable.
\section sec_IOC_ConfList Список датчиков для процесса в/в \section sec_IOC_ConfList Список датчиков для процесса в/в
...@@ -139,14 +142,14 @@ ...@@ -139,14 +142,14 @@
--io-test-mode ID либо в конфигурационном файле testmode_as="ID" --io-test-mode ID либо в конфигурационном файле testmode_as="ID"
Сейчас поддерживаются следующий режимы (см. IOControl::TestModeID): Сейчас поддерживаются следующий режимы (см. IOControl::TestModeID):
"0" - тестовый режим отключён. Обычная работа. <br>\b "0" - тестовый режим отключён. Обычная работа.
"1" - полностью отключить работу с картами в/в. При этом все выходы будут переведены в безопасное состояние. <br>\b "1" - полностью отключить работу с картами в/в. При этом все выходы будут переведены в безопасное состояние.
"2" - Режим "разрешённых" каналов. В этом режиме отключается работа со всеми каналами, кроме тех, у которых <br>\b "2" - Режим "разрешённых" каналов. В этом режиме отключается работа со всеми каналами, кроме тех, у которых
указан параметр enable_testmode="1". указан параметр enable_testmode="1".
"3" - Режим "запрещённых" каналов. В этом режиме отключается работа ТОЛЬКО для каналов, у которых <br>\b "3" - Режим "запрещённых" каналов. В этом режиме отключается работа ТОЛЬКО для каналов, у которых
указан параметр disable_testmode="1". указан параметр disable_testmode="1".
"4" - Режим "только входы" <br>\b "4" - Режим "только входы"
"5" - Режим "только выходы" <br>\b "5" - Режим "только выходы"
*/ */
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
/*! \todo (IOControl): Сделать обработку сигналов завершения */ /*! \todo (IOControl): Сделать обработку сигналов завершения */
......
...@@ -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.
...@@ -136,13 +136,48 @@ ...@@ -136,13 +136,48 @@
На данный момент зависимость можно устанавливать только на дискретные датчики. На данный момент зависимость можно устанавливать только на дискретные датчики.
\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