Tia Portal Обработка аналоговых сигналов

2021-03-16 Промышленное  13 комментариев

Сегодняшняя тема — обработка аналогового сигнала с датчика 4…20 мА в среде Tia Portal различными способами. Но прежде, чем мы перейдем непосредственно к основной теме, небольшое вступление — рассмотрим как вообще электрический сигнал с датчика преобразуется в ПЛК в нужную нам величину.

Обработка аналоговых значений в ПЛК

Аналоговые сигналы применяются для измерения значений различных изменяющихся физических величин, таких как температура, давление, расход и т.д.

Но так как различных типов сигналов очень много, для удобства используются нормирующие преобразователи, встроенные в датчик, либо выносные, которые преобразуют выходной электрический сигнал с датчика в унифицированный токовый сигнал 4…20 мА или сигнал напряжения 0…10 В. И далее этот унифицированный сигнал приходит на аналоговый вход ПЛК или модуля аналоговых входов.

Далее аналоговый сигнал с помощью АЦП (аналого-цифрового преобразователя) преобразуется в некое целочисленное значение, обычно в формате Integer (целые числа в диапазоне от -32768 до 32767). Затем это число в программе с помощью специальных инструкций необходимо перевести в реальные единицы измерения.

Ниже приведены числовые значения для диапазонов измерения напряжения и тока.

Представление аналогового входа в Tia Portal для напряжения

Представление аналогового входа в Tia Portal для тока

Как мы видим, для сигнала 4…20 мА представление аналогового сигнала изменяется от 0 до 27648. Значения, находящиеся вне диапазона представляют собой переполнение или превышение значений.

Такова, вкратце, последовательность действий, а теперь вернемся к нашей основной теме.

Для начала в параметрах модуля аналоговых входов необходимо настроить значение канала, к которому будет подключаться, предположим, датчик давления, на тип измерения и диапазон 4...20 мА. Для этого на вкладке Device Configuration выбираем наш модуль, на вкладке General находим Analog Inputs и здесь выбираем необходимый канал. В его параметрах настраиваем тип сигнала и диапазон — токовый 4…20 мА.

Настройка аналогового канала

Подключаем датчик к нашему модулю аналоговых входов по следующей схеме:

Схема подключения аналогового датчика

Далее переходим уже к программной части.

Инструкции NORM_X и SCALE_X

Для начала рассмотрим типовой метод преобразования значения аналогового входа при помощи инструкций «NORM_X» — нормализации значения и «SCALE_X» — масштабирования.

Инструкции NORM_X и SCALE_X

NORM_X нормализует параметр VALUE к диапазону значений, определенному параметрами MIN и MAX. На вход параметра VALUE приходит значение с датчика. MIN — минимальное значение в диапазоне, в данном случае 0, MAX — максимальное значение, как мы помним для 4…20 мА это значение составляет 27648. На выходе мы получаем нормализованное значение, которое заносим в переменную temp_value.

Инструкция NORM_X

Затем масштабируем полученное значение согласно диапазону измерения датчика, в нашем случае от 0 до 160 bar.

Инструкция SCALE_X

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

Инструкция CALCULATE

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

Инструкция CALCULATE

По умолчанию инструкция CALCULATE предлагает два входных параметра и один выходной. Если необходимо добавить вход, нажмите желтую пиктограмму «Create» (Создать) рядом со входом, или правой кнопкой мыши щелкнуть на одном из входных параметров, после чего выбрать «Insert input».

Инструкция CALCULATE

Далее выбираем необходимый тип данных для входных и выходных параметров (IN и OUT должны иметь одинаковый тип данных).

Нажмем на значок «Редактировать выражение» для ввода математической функции.

Инструкция CALCULATE

В окне «Edit Calculate» введем наше выражение для масштабирования необработанного аналогового значения.

Out = ((in4 — in5) / (in2 — in3)) * (in1 — in3) + in5

Где:

  • Out — Масштабированное выходное значение
  • in1 — Аналоговое входное значение
  • in2 - Верхняя граница для масштабированного входного значения
  • in3 - Нижняя граница для масштабированного входного значения
  • in4 — Верхняя граница для масштабированного выходного значения
  • in5 — Нижняя граница для масштабированного выходного значения

После этого нажимаем «OK». Инструкция создаст указанные нами в арифметическом выражении входы и на выходе в параметре Out получим результат, согласно заданному уравнению.

Инструкция CALCULATE

Функция обработки аналогового сигнала на языке SCL

И наконец третий способ — написать функцию, отвечающую за обработку аналогового сигнала на языке SCL.

Создадим новую функцию SCALE и запишем в нее наше выражение.

Обработка аналогового значения на SCL

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

Далее вызываем нашу функцию в блоке OB1.

Обработка аналогового значения на SCL

Поделиться в соц. сетях

Опубликовать в LiveJournal
Опубликовать в Яндекс

  • Максим says:

    Доброго дня, а как обрабатывать сигнал с термопар, тип (к) Блок 6ES73317PF110AB0

    • admin says:

      Да все будет примерно также. Единственный нюанс — Значение будет передаваться в градусах, умноженных на десять (например, 25.3 градуса будет представлено как десятичное число 253). То есть для получения реального значения температуры, необходимо входное значение разделить на десять.

      И не забудьте в настройках модуля, указать тип термопары. Диапазон для типа К будет -200 –нижний предел, 1372 – верхний предел.

      • Максим says:

        Доброго дня. Если диапазон термопар 0-1100 гр. То мне так и указывать ?

        • admin says:

          Если у вас модуль TC, то есть поддерживает работу с термопарами, то лучше используйте инструкции CONV и DIV. Инструкция CONV для преобразования типа int в real.

          На входе IN в CONV указываете переменную, в которой хранится значение с датчика. На выходе out предположим переменная temp5. Затем в DIV in1 присваиваем temp5, in2 — 10.0, то есть делим на 10, о чем я и говорил в прошлый раз. На выходе DIV получаем фактическое значение с термопары.

          • Максим says:

            Большое спасибо

          • admin says:

            Не за что.

  • Pavel says:

    Здравствуйте уважаемые колеги .!такой вопрос !как в тиа портале зделать управление двумя двигателями по очереди неделю один работает неделю другой !впервые с тиа порталом очень мало опыта делаю прошиву на HVAC

    • admin says:

      Здравствуйте. Первое что приходит на ум, сделайте счетчик наработки моточасов двигателей на основе инструкции RTM (RunTime Meter), которая представляет собой счетчик часов работы. С ее помощью можно считывать время работы, устанавливать время, запускать либо останавливать работу счетчика.

  • myacad.blogspot.com says:

    Почему мои комментарии не публикуются кто нибудь мне ответит ???

    • admin says:

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

  • Роман says:

    А если необходимо подключить датчик температуры pt100?

    Как я понимаю напрямую его подключить нельзя, нужен преоразователь в 4-20 или 0-10, правильно?

    • admin says:

      Либо преобразователь, либо можно использовать аналоговые сигнальные модули, например SM 1231 RTD, предназначенные специально для измерения температуры.

  • Артем says:

    Супер!!!

Комментарии

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>