Существует два механизма реализующих зависимость между датчиками:
Механизм зависимостей реализован в классе
IOController.
Пример записи "зависимости" в configure.xml:
<item textname="...." iotype="..." .../>
<consumers>
<consumers>
<depends>
<depend name="Sensor1" filter="val" />
<depend name="Sensor2" filter2="val1" />
</depends>
</item>
При считывании конф. файла можно задавать фильтры.
ПОКА РЕАЛИЗОВАНА ЗАВИСИМОСТЬ ТОЛЬКО ОТ ОДНОГО ДАТЧИКА! т.е. <depend> может быть только один.
Механизм зависимостей между датчиками на уровне
IOBase, работает на уровне процессов обмена использующих
IOBase. В ним относятся
IOControl, ModbusMaster (RTU,TCP) и т.п. Плюсом данного механизма является, то, что он обеспечивает для датчика (который зависит от другого) весь набор обработки, поддерживаемый
IOBase - это задержки на срабатывание, фильтры, калибровочные диаграммы и т.п. (см.
IOBase). Чтобы задействовать данный механизм, достаточно у датчика указать следующие поля:
- depend="name"- имя датчика от которого зависит данный
- depend_value=".." - разрешающее значение (по умолчанию 1).
- depend_off_value="..." - значение которое будет иметь датчик, если он "заблокирован". По умолчанию - 0.
Следует иметь ввиду, что этот механизм не действует при сохранении значений, например при помощи uniset-admin, в отличие от механизма Зависимость на уровне IOController (SharedMemmory)
Пример записи "зависимости" в configure.xml:
<item textname="...." iotype="..." ... depend="OtherSensor_AS" depend_value="2" />
В данном случае подразумевается, что разрещающим датчиком является OtherSensor_AS=2.