|
UniSet @VERSION@
|
Документ описывает расширение SharedMemory и его возможности.
SharedMemory расширяет возможности IONotifyController. Основные функции:
SM позволяет ограничивать перечень регистрируемых датчиков, заказчиков и зависимостей через фильтры командной строки:
Если --X-filter-field задан без --X-filter-value, загружаются все объекты, у которых поле не пустое. Без фильтров загружается весь список из <sensors>.
В конфигурации:
Запуск с --s-filter-field myfilter --s-filter-value m1 загрузит датчики 12 и 121. Пара --c-filter-field mycfilter --c-filter-value c1 отфильтрует список заказчиков.
Параметры:
В конфигурации объектов указывайте evnt_<name>="1". После старта SM разошлёт SystemMessage::WatchDog.
Датчик может быть заблокирован, пока «разрешающий» датчик не примет нужное значение. Пример:
Параметры в <depend>:
block_invert — инвертировать разрешающий датчик.Работает для дискретных датчиков.
Для каждого процесса задаются два датчика: аналоговый счётчик и дискретный флаг. Процесс инкрементирует счётчик, SM периодически декрементирует. Пока счётчик > 0, дискретный датчик держится в 1. Если счётчик «упал» — дискретный сбрасывается в 0. При наличии WDT и параметра heartbeat_reboot_msec возможен перезапуск контроллера.
Аналоговый датчик помечается heartbeat="1" и включает:
heartbeat_ds_name — связанный дискретный датчик.heartbeat_node — фильтр (--heartbeat-node).heartbeat_reboot_msec — таймаут ожидания перезапуска.Пример:
Циклические буферы значений с периодом savetime мс. Каждая «история» настраивается в <History>:
Параметры элемента:
id — идентификатор истории.size — размер буфера.fuse_id — датчик-детонатор.fuse_value — значение срабатывания (для аналоговых).fuse_invert — инверсия детонатора.Событие сброса дампа доступно через сигнал SharedMemory::signal_history().
Периодическое переключение заданного датчика. Параметры запуска:
Включается опцией --db-logging (DBServer должен быть запущен).
SM может инициализироваться из резервной SM (см. параметры --sm-default-sensor-permission, --sm-ignore-acl-errors и логику initFromReserv()).
ACL задаётся в конфигурации датчиков, пример:
Параметр readonly устарел — используйте ACL. Имя процесса должно совпадать с именем из <objects>. Горячая перезагрузка ACL — командой SystemMessage::ReloadConfig, например:
Спецпараметр: --http-api-disable-access-control — отключить проверку прав для HTTP API.
Маршруты:
/help — список доступных команд./ — базовая информация./get?filter=id1,name2&id3&shortInfo — значения датчиков. Параметры: filter (список ID/имён), shortInfo (короткая форма). Старый формат: /get?id1,name2&id3./set?supplier=Name&id1=val1&name2=val2... — установить значения. supplier обязателен при включённом ACL./freeze и /unfreeze — зафиксировать/снять фиксацию значений, параметры как у /set./sensors?offset=N&limit=M&search=text&filter=id1,id2&iotype=AI|AO|DI|DO — получить список датчиков с фильтрами и пагинацией./consumers?sens1,sens2 — списки заказчиков по датчикам./lost — заказчики, с которыми терялась связь./conf/get?id,name,...&props=textname,iotype,... — параметры объектов из configure.xml (если props не задан, возвращаются все поля).