Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
uniset2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
uniset2
Commits
85194659
Commit
85194659
authored
Oct 06, 2011
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(docs): подправил документацию
parent
116c811d
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
129 additions
and
91 deletions
+129
-91
IOControl.h
extensions/IOControl/IOControl.h
+89
-86
SharedMemory.h
extensions/SharedMemory/SharedMemory.h
+40
-5
No files found.
extensions/IOControl/IOControl.h
View file @
85194659
...
@@ -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>
J1 - chanenel 0 - 15
J2
<br>
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): Сделать обработку сигналов завершения */
...
...
extensions/SharedMemory/SharedMemory.h
View file @
85194659
...
@@ -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 Механизм аварийного дампа
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment