PDA

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



rylezzzzz
16.12.2014, 15:44
Имеется контроллер и датчик температуры 4-20мА с диапозоном -40 +125 0С

15739

Подключил датчик, все вроде бы нормально, только вот такая проблема, нужно перевести число выдаваемое в формате WORD в реальные градусы, подскажите как программно на языке программирования ST это реализовать.


Есть вот такой вариант перевода
T:=(125-40)*IW0/65535 (этот способ вычитал в интернете, но число получается некорректным)

15740

Реальная температура градуса 23

Прошу помощи:confused:

приборист
16.12.2014, 18:37
Не ясно что за первый скрин.
Что за контроллер? Видимо не Овен.
А по факту - подайте 4мА на вход, и 20 мА на вход.
И значения прогоните через Lin_trafo используя как входные лимиты, а выходные -40..125

Allmax
16.12.2014, 20:12
У Вас ширина шкалы 85 (125-40), а надо - 165 (125-(-40))
Попробуйте так:


VAR_INPUT
Actual: REAL; (*текущее значение с модуля*)
Max_in: REAL; (*Для Вас 65535 (Или иной с модуля, соответсвующее 20 мА)*)
Sc_min: REAL; (*Для Вас -40*)
Sc_max: REAL; (*Для Вас +125*)
END_VAR
VAR_OUTPUT
OUT: REAL;
END_VAR
VAR
d: REAL; (*защита от деления на 0*)
END_VAR

d:=(Sc_max-Sc_min)/Max_in;
IF (d<>0) THEN
OUT:=(Sc_min+ABS(d*actual));
ELSE OUT:=Sc_min;
END_IF
END_VAR

lara197a
16.12.2014, 21:16
типа в школе не учились?

melky
16.12.2014, 23:02
можно еще Scale_R из oscat взять...
з.ы. а вообще надо доки контроллера читать, какое число равно 4 мА а какое 20 мА, там наверняка еще коридор сужен, 32768 скорее всего будет ниже 4 мА