Рассмотрим операцию масштабирования сигналов измерительного канала ( рис. 5 ) со следующими характеристиками.

Датчик с аналоговым выходным сигналом и линейной градуировочной характеристикой вида:

где : Y,— значения технологического параметра,

I- значения сигнала с датчика , индексы 1, 2 относятся к любым двум точкам

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

Из приведенной формулы получаем:

Программа драйвер, опрашивающая АЦП, выдает значение сигнала тока датчика, т. е. Yвх=I .

Следовательно, формула масштабирования канала:

где : Yвх— входное значение канала,

Yап— аппаратное значение канала.

Таким образом:

где константы: ,

Рис. 5 Характеристики измерительного канала :

а- принципиальная схема ; b- градуировочная характеристика датчика.

Пример. Масштабирование сигналов измерителя давления.

В системе используется датчик давления с линейной шкалой 0 ¸ 10 ати, выходным токовым сигналом 4¸20 ma .

В соответствии с представленными выше уравнениями коэффициенты формулы масштабирования сигнала с датчика давления:

В результате формула масштабирования примет вид:

Разделение газа, АСУ ТП, Электроснабжение

Масштабирование входного аналогового сигнала.

Модули аналогового ввода преобразуют физический сигнал на входе в цифровой вид. Одним из параметров модулей аналогового ввода, точнее АЦП входящего в его состав, является разрешение или разрядность. Разрешение АЦП характеризует количество дискретных значений, которые преобразователь может выдать на выходе. Количество дискретных значений определяется формулой 2 n . Для 12 бит АЦП количество дискретных значений соответствует 2 12 =4096.

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

Для определения выхода за пределы номинального диапазона преобразования, АЦП имеют или расширенный диапазон, к примеру, в модулях аналогового ввода ПЛК производства Triconex диапазон входного значения расширен на 6%, или ограничен диапазон представления в кодах АЦП, к примеру, в модулях производства Siemens, номинальный диапазон заканчивается кодом 27648 при максимальном коде 32768.

1. Аналоговый датчик с линейной градировочной характеристикой

OUT – представление сигнала в инженерных единицах;
IN_RAW – представление сигнала в кодах АЦП;
RAW_MIN – минимальный код АЦП. К примеру, для датчика 0-10 В – RAW_MIN = 0, для 4-20 мА – RAW_MIN = 819;
RAW_MAX – максимальный код АЦП, определяется формулой 2 n -1;
OUT_MIN – минимальное значение инженерной величины;
OUT_MAX – максимальное значение инженерной величины.

Минимальный код АЦП соответствующий минимальному значению входной инженерной величины определяется формулой

AI_MIN – минимальное значение выхода датчика;

AI_MAX – максимальное значение выхода датчика.

Пример. Датчик давления с выходным сигналом 4-20 мА и диапазоном измерения 100 – 1000 кПа подключен к 12 бит модулю аналогового ввода. Код АЦП — 2765

2. Аналоговый датчик с квадратичной характеристикой

В случае если подкоренное выражение принимает отрицательное значение, то

Код функции написанной на ST для выполнения процедуры масштабирования (Код написан в среде Tristation 1131)

Масштабирование — это функция, которая преобразует входной набор данных в выходной набор в заданном диапазоне. Функция обеспечивает удобный способ сопоставления входного набора данных и данных, которые будут участвовать в вашей визуализации.

Строго говоря, для работы программы контроллера масштабирование не обязательно. Оно применяется в основном для вывода данных в операционную панель в удобном для человека формате. Simatic Step 7 включает в стандартный дистрибутив библиотеку функций на все (почти) случаи типового применения. Среди них есть и функция масштабирования FC105 «SCALE». Она осуществляет перевод кодов АЦП (INT) в числовое значение (REAL) в соответствии с заданной шкалой датчика, проверяет на нахождение входного диапазона (4-20mA) в пределах шкалы и выводит результат вычисления.
Чтобы добавить стандартный блок в собственную программу нужно находясь в окне редактора исходных кодов LADSTLFBD в окне «Overviews» найти блок Libraries -> TI-S7 Converting Blocks -> FC105 SCALE CONVERT и перетащить его в код. Если это окно скрыто, показать его можно установив галку в меню View -> Overviews. При перетаскивании блок перенесется в папку Blocks и пропишется в символьной таблице.

В коде появится вызов функции с формальными параметрами:

CALL «SCALE»

  • IN: INT — вход масштабируемого слова (выход датчика);
  • HI_LIM: REAL — верхняя граница шкалы датчика;
  • LO_LIM: REAL — нижняя граница шкалы датчика;
  • BIPOLAR: BOOL — TRUE, входной диапазон от –27648 до 27648; FALSE, входной диапазон от 0 до 27648;
  • RET_VAL: INT — результат успешности масштабирования (16#0 — успешно, 16#8 — не в диапазоне);
  • OUT: REAL — реальное значение на датчике в границах шкалы;

Формальным параметрам надо сопоставить фактические. Вот например вызов функции для датчика давления 0-10 бар:

Есть небольшие различия в написании синтаксиса в редакторе LADSTLFBD для исходных кодов в папке Source и исполняемого кода в папке Blocks. Орфография написания немного отличается. В папке Blocks при написании кода не нужны скобки вокруг параметров функции и запятые между ними, операторы не надо заканчивать точкой с запятой. Об этом просто надо помнить.
Проверить выход успешности масштабирования RET_VAL (RETURN_VALUE) можно по разному. Если выход RET_VAL присваивается слову меркера, проверяется нужный бит в нем, в данном случае M114.3. Недостаток в использовании только одного бита в меркерном слове (16 бит), остальные 15 уже нигде применены быть не могут. Если же RET_VAL присваивается внутренней переменной Int_Value или слову в глобальном блоке данных, проверка получится сложнее:

У меня подключены 4 датчика 4-20mA:

  • Давление, 0-16 бар:
  • Уровень воды, 0-600 мбар;
  • Температура конденсата, 0-150 С;
  • Уровень конденсата, 0-600 мбар;

И у всех заложена реакция на отказ датчика, т.е. нужен анализ RET_VAL после примения FC105. Жертвовать меркерами я не стал, применил присваивание RET_VAL внутренней переменной и анализ. Это работало, но четырежды повторенный код колол глаза, решил написать собственную функцию масштабирования, под свою задачу. Т.к. все датчики имеют нижнюю границу шкалы 0, вобще убрал параметр LO_LIM, BIPOLAR тоже мне не нужен, все датчики 4-20mA. О выходе за границы диапазона 4-20mA сигнализирует битовый параметр RANGE, RET_VAL используется как выходное значение функции масштабирования.

Иногда параметр LO_LIM все же бывает нужен. Например вам попался термодатчик с нормирующим усилителем настроенным на ненулевой нижний предел (-50..+150 С) и нет возможности его перепрограммировать. Вот вариант с параметром LO_LIM:

И еще одна функция масштабирования. Толчком к ее написанию стало расхождение между показаниями показометра ПКЦ-1101 на удаленной периферии и выводом вышеописанной функции в операционную панель. Источник один и тот же. Причем расхождения начались после 1,5 месяцев эксплуатации, до этого показания совпадали. Самое простое — измерить ток датчика и перевести через инженерные величины в выходное значение. Сразу станет понятно кто врет. Элементарная задача, но тут у тестера MASTECH MAS838 отказал токовый вход. А ведь все замеры уже есть в аналоговом модуле, нужно только вывести их в операционную панель в правильном формате. Причину я нашел, неисправность показометра ПКЦ-1101, но на будущее решил вывести токи датчиков в операционную панель.
Применение стандартной функции FC105 для отображения тока датчика (4-20mA) возможно, но ограничено. Дело в том, что она может масштабировать ток только в диапазоне 4-20mA. Выше и ниже диапазона будут отображены только граничные значения. В то же время аналоговый модуль может работать с входным током 1,185 — 22,81mA.

Чтобы иметь возможность отобразить полный рабочий диапазон аналогового модуля была написана своя функция.

Функция выводит ток в диапазоне 1,185 — 22,81mA, вне диапазона выставляется флаг RANGE, RET_VAL используется как выходное значение.


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


При включении начинает выполняться и эта ветвь кода.


При выходе тока из диапазона 1,185 — 22,81mA это сигнализируется прочерком показаний (просто откинул провод).

В стандартной библиотеке присутствует и функция обратного масштабирования REAL в INT, называется FC106 «UNSCALE».