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

Автовектор, принимая данные от объектов в формате двух- и четырехбайтных целых чисел, предполагает, что они беззнаковые (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. Получение значения надо будет отнимать, поэтому в таблицу расчета оно будет введено как отрицательное.

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

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

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

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

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

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