Преобразование знаковых параметров (signed)

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

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

Анализ параметра

Откройте вкладку Сообщения и запросите сообщения от объекта за какой-нибудь интервал. Укажите Отображать параметры как исходные данные. В столбце Параметры найдите интересующий Вас параметр и проанализируйте приходящие от него значения. В нашем случае это будет параметр температуры с наименованием param24.

Видно, что при снижении температуры и пересечении порога в 0 градусов появляются невероятно большие цифры вместо необходимых отрицательных.

Определение наибольшего значения

Сначала нужно определить максимальный порог этих чисел. Для этого возьмите любое из «невероятно больших цифр», которое встречается в значениях параметра, и введите его в калькулятор в инженерном режиме (Dec). После этого перейдите в шестнадцатеричное представление (Hex).

Посчитайте количество разрядов в полученном числе. Возможные значения: 2, 4, 8. Если разрядов получилось меньше, то делаем округление в бóльшую сторону (например, 5 нужно округлять до 8). В нашем случае получается 8 разрядов.

Теперь нужно ввести в калькуляторе в режиме Нех букву F столько раз, сколько получилось разрядов (после округления). После этого перейдите в режим Dec. Получившийся результат и есть максимально возможное число. Его необходимо запомнить или записать.

Таблица расчета датчика

Откройте свойства объекта и создайте датчик на основе этого параметра. Теперь нужно создать для него таблицу расчета. Для этого в свойствах датчика перейдите на вкладку Таблица расчета.

Мы выяснили, что весь интервал возможных значений — от 0 до 4294967295. Из них от 0 до половины максимального числа идут положительные значения, а после половины и до конца — отрицательные (причем максимальное число — это наименьшее отрицательное число по модулю). Делим максимальное значение на 2, получаем 4294967295 : 2 = 2147483647,5. То есть положительные значения будут идти от нуля до 2147483647, а отрицательные — от 2147483648 до 4294967295.

В таблице расчета Х — сырое значение, присылаемое параметром, а — коэффициент, b — необходимая коррекция. И все это необходимо для получения некоего Y — то есть реального значения температуры.

Используется ли коэффициент (a) для данного параметра, можно выяснить в спецификации оборудования. В нашем случае коэффициент равен 0.1, то есть, если оборудование присылает значение параметра 6, это будет означать, что реальная температура 0.6 градусов.

Для первого отрезка коррекция по b не нужна (т.е. 0), а для второго нужна, т.к. значения идут как бы в обратном порядке (максимальное число соответствует наименьшему отрицательному значению температуры по модулю). Для вычисления смещения b нужно прибавить к максимальному числу единицу (т.к. ноль у нас уже есть) и умножить на коэффициент. Получаем: (4294967295+1)х0.1 = 429496729.6. Получение значения надо будет отнимать, поэтому в таблицу расчета оно будет введено как отрицательное.

Теперь можно вводить оба интервала (для положительных и для отрицательных чисел) в таблицу расчета.

Анализ результата

Можно проанализировать полученную таблицу, перейдя на вкладку Таблица расчета и нажав на кнопку Обновить.

Кроме того, оценить настройку датчика можно на вкладке Сообщения. Закажите сообщения по объекту за тот же интервал времени, и на сей раз выберите Отображать параметры как значения датчиков.

Скачать файл PDF
Скачать документ Word

Смотрите также