Валидация

Валидация настраивается в свойствах датчика и определяет зависимость датчиков друг от друга.

Валидатор — датчик, значение которого влияет на текущий датчик. Выбирается из списка доступных, ранее созданных для того же объекта датчиков.

Тип валидации — способ, которым валидатор влияет на текущий датчик. Возможен ряд логических и математических операций:

  • Логическое И
    Анализируются состояния датчика, по которому проходит валидация, и текущего датчика, т.е. к значениям валидирующего датчика и текущего применяется логическая функция И (конъюнкция), а результат датчика — логическое значение 0 или 1.
  • Логическое ИЛИ
    Анализируются состояния датчика-валидатора и текущего датчика, т.е. к значениям валидирующего датчика и текущего применяется логическая функция ИЛИ (дизъюнкция), а результат датчика — логическое значение 0 или 1.
  • Проверка на неравенство нулю
    Если валидирующий датчик не равен нулю, то значение текущего датчика выводится без изменений, в противном случае выводится прочерк.
  • Математическое И
    К значениям валидирующего датчика и текущего применяется математическая функция И.
  • Математическое ИЛИ
    К значениям валидирующего датчика и текущего применяется математическая функция ИЛИ.
  • Суммировать
    Значения валидирующего датчика и текущего складываются.
  • Вычесть валидатор из датчика
    Из текущего значения датчика вычитается значение валидирующего датчика.
  • Вычесть датчик из валидатора
    Из значения валидирующего датчика вычитается значение текущего датчика.
  • Перемножить
    Значения валидирующего и текущего датчиков умножаются друг на друга.
  • Делить датчик на валидатор
    Значение текущего датчика делится на значение валидирующего датчика.
  • Делить валидатор на датчик
    Значение валидирующего датчика делится на текущее значение датчика.
  • Заменять датчик валидатором в случае ошибки
    В случае, если невозможно получить данные от основного датчика, будут взяты данные с валидирующего датчика.

:!: Примечание.
Цепочка валидации может включать любое количество датчиков. То есть один датчик может являться валидатором другого и при этом зависеть от третьего.

Примеры использования валидации

Логическое ИЛИ

Рассмотрим пример, где в автомобиле на каждую из дверей установлено по датчику. Каждый датчик показывает, открыта дверь или закрыта. Предположим, что мы только хотим знать, открыт автомобиль или нет, и нам не важно, какая именно из дверей открыта.

Для этого в Автовектор для каждой из дверей создаем датчик с типом «Произвольный цифровой датчик». Затем друг за другом валидируем датчики, в качестве типа валидации указываем «Логическое ИЛИ». При использовании функции «Логическое ИЛИ» автомобиль будет считаться открытым, если любая из его дверей открыта (или та, или та, или та…). Для удобства в списке датчиков мы можем убрать флаг «Видимость» для всех используемых датчиков, кроме последнего валидируемого датчика. Теперь этот датчик будет показывать, закрыт автомобиль или открыт.

Математическое И

Предположим, что имеется автомобиль, где на каждую дверь установлено по датчику, и эти датчики показывают, открыта дверь или нет. В данном случае нас интересует состояние каждой двери в отдельности. Используемое оборудование присылает значение о состоянии дверей одним параметром (каждый отдельный бит подразумевает под собой дверь).

Создаем в Автовектор датчик с типом «Произвольный датчик» и прописываем для него параметр, с которого будет приходить значение состояния дверей. Затем создаем в Автовектор датчик с типом «Произвольный цифровой датчик» для каждой из дверей в отдельности и прописываем для каждого из них константный параметр (для первого — const1, для второго — const2, для третьего — const4, для четвертого — const8). Валидатором для каждого из произвольных цифровых датчиков указываем ранее созданный произвольный датчик, тип валидации — «Математическое И». Теперь, при помощи «Математического И» происходит проверка полученного параметра, и мы узнаем состояние каждой из дверей.

Использование математических операций

Пример 1

Предположим, на машине установлено три разных вида оборудования (щетка, плуг и поливалка). На каждое из них имеется цифровой датчик, который показывает, включено данное оборудование или нет. Используя систему валидации, мы можем при помощи одного датчика контролировать все три оборудования сразу.

Для каждого оборудования создаем датчик, и, таким образом, получаем три датчика — А, В и С. Предположим, что это произвольные цифровые датчики. У каждого из них должна быть по-разному настроена таблица преобразований — так, чтобы каждый присылал какое-либо уникальное значение. Например, один датчик (щетка) в случае его включения будет присылать 1, как обычно, другой (плуг) — 10, третий (поливалка) — 100. Таким образом, по сумме данных значений можно будет увидеть, какое из устройств включено. Возможные значения:

  • 0 — все выключено;
  • 1 — включена щетка;
  • 10 — включен плуг;
  • 11 — включены щетка и плуг;
  • 100 — включена поливалка;
  • 101 — включены поливалка и щетка;
  • 110 — включены поливалка и плуг;
  • 111 — включены все три.

Чтобы программа производила такое суммирование значений датчиков, необходимо установить между ними зависимость. Сделаем датчик А основным. Тогда в качестве валидатора для него будет выступать датчик В, а типом валидации будет суммирование. В свою очередь, датчик В будет зависеть от датчика С с таким же типом валидации.

Далее рекомендуется настроить для каждого значения отображение на панели мониторинга и в треках разными цветами (вкладка «Дополнительно»).

Пример 2

Предположим, есть транспортное средство, которое имеет два топливных бака. В каждом баке установлен датчик уровня топлива. Нам необходимо знать уровень топлива суммарно в двух баках.

Для этого в Автовектор создаем два датчика с типом «Датчик уровня топлива». Для одного из датчиков активируем валидацию по другому датчику, указываем тип валидации «Суммировать». Для удобства в списке датчиков можем оставить флаг видимости только для валидируемого датчика, для другого — убрать. Теперь мы будем видеть значение валидируемого датчика, в котором будет показываться суммарный уровень топлива двух баков.

:!: Использование любой математической операции в качестве метода валидации равнозначно указанию параметра датчика в виде формулы. То есть для любой математической операции в качестве метода валидации существует альтернатива без применения валидации. Чтобы разобраться, как это работает, используем уже рассмотренный пример с двумя баками, где нам необходимо знать суммарный уровень топлива двух баков.

В Автовектор создаем три датчика уровня топлива («Бак1», «Бак2» и «Сумма баков»). В датчике «Сумма баков» в параметре указываем формулу [Бак1]+[Бак2]. Датчики «Бак1» и «Бак2» показывают собственный уровень топлива, а датчик «Сумма баков» показывает уровень топлива двух этих баков.

Преимущество использования формул в том, что мы получаем больше информации. Например, если валидировать «Бак2» по «Баку1», то мы будем знать, какой уровень топлива в «Баке1», а в «Баке2» мы будем видеть уже только лишь общее количество топлива. Применяя формулы, мы будем знать и о том, сколько топлива в «Баке2».

Недостатком использования формул является создание большего количества датчиков, чем при использовании валидации.

  support@intsm.ru   |   Copyright © 2002-2017 Автовектор