Вход

Просмотр полной версии : Преобразование сигнала 4...20 мА в физ. велечину



Вараксин Роман
07.09.2015, 09:15
Добрый день!

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

melky
07.09.2015, 09:24
SCALE_R в библиотеках найдите. LIN_TRAFO в util.lib
А разве ПЛК63/73 этого сам не делает ? непомню просто.

Вараксин Роман
07.09.2015, 09:55
SCALE_R в библиотеках найдите. LIN_TRAFO в util.lib
А разве ПЛК63/73 этого сам не делает ? непомню просто.

Делает, поставил в конфигураций сигнал 4...20 мА, ниже есть две строчки - минимальное и максимальное, но они не подаются редактированию (выделены серым цветовым).....

Валенок
07.09.2015, 10:02
Делает, поставил в конфигураций сигнал 4...20 мА, ниже есть две строчки - минимальное и максимальное, но они не подаются редактированию (выделены серым цветовым).....
Чего делает 73й ? На какой странице РП/РЭ это написано ?
Вам про LIN_TRAFO уже melky сказал. Хоть хелп-то откройте.
перемасштабировать x0-x1 в y0-y1 ? 4-5й класс.

yurik
03.06.2016, 16:54
Мне думается, что всё гораздо проще.. В диапазоне 4..20 мА значение переменной, прописанной в конфигурации аналогового входа,
будет изменяться от 0 до 100%. Стало быть, ежели на верхнем пределе у датчика - 10 атм, то умножив значение полученное с датчика
на 0,1(количество атм в одном %), получим количество атм которые показывает датчик. И даже функций не нать, одна арифметика..
правда уже не помню какой класс. :-)

Валенок
05.06.2016, 16:30
Мне думается, что всё гораздо проще..
1.Датчик может быть абсолютным.
2.Может потребоваться программная калибровка на ходу
3.Завтра ТС заюзает другой ПЛК, или с модуля что нить в другом диапазоне

Решение должно быть общим, а это - перемасштаб x0-x1 в y0-y1.
И это не функция, а именно арифметика, 4-5й класс обычной советской школы. Видимо сейчас это 2-3й курс универа, с репетитором
А упомянутый LIN_TRAFO - это и есть перемасштаб упомянутый выше melky'м в уже написанном виде.

VA87
15.12.2016, 14:23
FUNCTION FC1: VOID //Масштабирование XMIN…XMAX -> YMIN…YMAX
TITLE = ' Масштабирование.'

VAR_INPUT //Входные переменные.
X:REAL; //Вход.
XMIN:REAL; //Минимум входного диапазона.
XMAX:REAL; //Максимум входного диапазона.
YMIN:REAL; //Минимум выходного диапазона.
YMAX:REAL; //Максимум выходного диапазона.
END_VAR

VAR_OUTPUT //Выходные переменные.
Y:REAL; //Выход.
END_VAR

//Алгоритм.
IF (XMAX<>XMIN) //Деление на 0 может остановить процессор.
THEN
Y:=(YMAX-YMIN)*((X-XMIN)/(XMAX-XMIN))+YMIN; //Масштабирование.
ELSE
Y:=0.0;
END_IF;
END_FUNCTION