-
Tia Portal Обработка аналоговых сигналов
2021-03-16
Промышленное
-
Сегодняшняя тема — обработка аналогового сигнала с датчика 4…20 мА в среде Tia Portal различными способами. Но прежде, чем мы перейдем непосредственно к основной теме, небольшое вступление — рассмотрим как вообще электрический сигнал с датчика преобразуется в ПЛК в нужную нам величину.
Обработка аналоговых значений в ПЛК
Аналоговые сигналы применяются для измерения значений различных изменяющихся физических величин, таких как температура, давление, расход и т.д.
Но так как различных типов сигналов очень много, для удобства используются нормирующие преобразователи, встроенные в датчик, либо выносные, которые преобразуют выходной электрический сигнал с датчика в унифицированный токовый сигнал 4…20 мА или сигнал напряжения 0…10 В. И далее этот унифицированный сигнал приходит на аналоговый вход ПЛК или модуля аналоговых входов.
Далее аналоговый сигнал с помощью АЦП (аналого-цифрового преобразователя) преобразуется в некое целочисленное значение, обычно в формате Integer (целые числа в диапазоне от -32768 до 32767). Затем это число в программе с помощью специальных инструкций необходимо перевести в реальные единицы измерения.
Ниже приведены числовые значения для диапазонов измерения напряжения и тока.
Как мы видим, для сигнала 4…20 мА представление аналогового сигнала изменяется от 0 до 27648. Значения, находящиеся вне диапазона представляют собой переполнение или превышение значений.
Такова, вкратце, последовательность действий, а теперь вернемся к нашей основной теме.
Для начала в параметрах модуля аналоговых входов необходимо настроить значение канала, к которому будет подключаться, предположим, датчик давления, на тип измерения и диапазон 4...20 мА. Для этого на вкладке
Device Configuration
выбираем наш модуль, на вкладкеGeneral
находимAnalog Inputs
и здесь выбираем необходимый канал. В его параметрах настраиваем тип сигнала и диапазон — токовый 4…20 мА.Подключаем датчик к нашему модулю аналоговых входов по следующей схеме:
Далее переходим уже к программной части.
Инструкции NORM_X и SCALE_X
Для начала рассмотрим типовой метод преобразования значения аналогового входа при помощи инструкций «NORM_X» — нормализации значения и «SCALE_X» — масштабирования.
NORM_X нормализует параметр VALUE к диапазону значений, определенному параметрами MIN и MAX. На вход параметра VALUE приходит значение с датчика. MIN — минимальное значение в диапазоне, в данном случае 0, MAX — максимальное значение, как мы помним для 4…20 мА это значение составляет 27648. На выходе мы получаем нормализованное значение, которое заносим в переменную temp_value.
Затем масштабируем полученное значение согласно диапазону измерения датчика, в нашем случае от 0 до 160 bar.
Результирующим значением выходной переменной out_value будет фактическое значение давления в bar. Таким образом мы из электрического сигнала с датчика давления получаем целочисленное значение этой переменной.
Инструкция CALCULATE
Еще один способ обработки аналогового сигнала — это использование инструкции CALCULATE, с помощью которой можно задать математическую функцию, которая будет производить вычисления над входными параметрами и на выходе мы получаем необходимый результат согласно заданному уравнению.
По умолчанию инструкция CALCULATE предлагает два входных параметра и один выходной. Если необходимо добавить вход, нажмите желтую пиктограмму «Create» (Создать) рядом со входом, или правой кнопкой мыши щелкнуть на одном из входных параметров, после чего выбрать «Insert input».
Далее выбираем необходимый тип данных для входных и выходных параметров (IN и OUT должны иметь одинаковый тип данных).
Нажмем на значок «Редактировать выражение» для ввода математической функции.
В окне «Edit Calculate» введем наше выражение для масштабирования необработанного аналогового значения.
Out = ((in4 — in5) / (in2 — in3)) * (in1 — in3) + in5
Где:
- Out — Масштабированное выходное значение
- in1 — Аналоговое входное значение
- in2 - Верхняя граница для масштабированного входного значения
- in3 - Нижняя граница для масштабированного входного значения
- in4 — Верхняя граница для масштабированного выходного значения
- in5 — Нижняя граница для масштабированного выходного значения
После этого нажимаем «OK». Инструкция создаст указанные нами в арифметическом выражении входы и на выходе в параметре Out получим результат, согласно заданному уравнению.
Функция обработки аналогового сигнала на языке SCL
И наконец третий способ — написать функцию, отвечающую за обработку аналогового сигнала на языке SCL.
Создадим новую функцию SCALE и запишем в нее наше выражение.
Как видим, данное выражение соответствует тому, что мы использовали ранее в инструкции CALCULATE.
Далее вызываем нашу функцию в блоке OB1.
Поделиться в соц. сетях
Добрый день , а почему я по такому же принципу не могу настроить датчик температуры pt100? Подскажите пожалуйста через какие библиотеки это возможно, я просто новенький еще в этом деле
Настроить таким же образом не получится. Для измерения сигналов сопротивления требуются специальные сигнальные модули для термопар и термосопротивлений,например SM 1231 RTD. В настройках модуля можно будет выбрать необходимый тип датчика, в частности Pt100.
здравствуйте, на siemens s1200 стоит аналоговый модуль (точно непомню полностью название) на 10bit, но в тиапортале его нету, там есть 12bit- ные, можете подсказать что можно сделать?
Насколько я помню, у SIMATIC S7-1200 нет аналоговых модулей с разрешением 10 bit.
Доброго времени суток. У меня есть плк siemens 6ES7 214-1HG40-0XB0 у него есть внутри 2 аналоговых входа, я не могу в тиа портале изменить Measurement type : voltage хочу изменить на current оно заблокировано и диапазон 0 до 10 вольт тоже заблокиравано. не подскажите как включить ?. спасибо
Никак, выбрать в данном случае не получится. Они настроены только на диапазон измерений 0-10V. Используйте либо аналоговый модуль, либо преобразователь 0-10В/4-20мА, либо попробовать подобрать резистор.
Доброго дня, а как обрабатывать сигнал с термопар, тип (к) Блок 6ES73317PF110AB0
Да все будет примерно также. Единственный нюанс — Значение будет передаваться в градусах, умноженных на десять (например, 25.3 градуса будет представлено как десятичное число 253). То есть для получения реального значения температуры, необходимо входное значение разделить на десять.
И не забудьте в настройках модуля, указать тип термопары. Диапазон для типа К будет -200 –нижний предел, 1372 – верхний предел.
Доброго дня. Если диапазон термопар 0-1100 гр. То мне так и указывать ?
Если у вас модуль TC, то есть поддерживает работу с термопарами, то лучше используйте инструкции CONV и DIV. Инструкция CONV для преобразования типа int в real.
На входе IN в CONV указываете переменную, в которой хранится значение с датчика. На выходе out предположим переменная temp5. Затем в DIV in1 присваиваем temp5, in2 — 10.0, то есть делим на 10, о чем я и говорил в прошлый раз. На выходе DIV получаем фактическое значение с термопары.
Большое спасибо
Не за что.
Здравствуйте уважаемые колеги .!такой вопрос !как в тиа портале зделать управление двумя двигателями по очереди неделю один работает неделю другой !впервые с тиа порталом очень мало опыта делаю прошиву на HVAC
Здравствуйте. Первое что приходит на ум, сделайте счетчик наработки моточасов двигателей на основе инструкции RTM (RunTime Meter), которая представляет собой счетчик часов работы. С ее помощью можно считывать время работы, устанавливать время, запускать либо останавливать работу счетчика.
Почему мои комментарии не публикуются кто нибудь мне ответит ???
Не публикуются только комментарии, которые либо не проходят модерацию, либо сразу в блэклист попадают.
А если необходимо подключить датчик температуры pt100?
Как я понимаю напрямую его подключить нельзя, нужен преоразователь в 4-20 или 0-10, правильно?
Либо преобразователь, либо можно использовать аналоговые сигнальные модули, например SM 1231 RTD, предназначенные специально для измерения температуры.
Супер!!!