Вход

Просмотр полной версии : преоброзования



Анатолий
24.06.2009, 17:16
Необходимо производить арифметические действия с аналоговыми сигналами, полученными в ПЛК 150.
:)
С аналоговых входов АТ%ID получаем только REAL.
Константы вводим в UINT
:)
объявили в конфигураторе ПЛК :p
Pi Давление измеренное
dPi перепад измеренный
Ti температуру измеренную объявили в конфигураторе
:)

Объявляем константы, не должны теряться:p
VAR_GLOBAL RETAIN
P_100: UINT:=7650; (*100% расчетный расход*)
dP_100: UINT:=63; (*100% перепад давления*)
t_100: UINT:=20; (*расчетная температура*)
END_VAR


:confused:
А вот из REAL в UNIT не получается преобразовать
ни в обьявленниях
ни в программе
смотри вложение
попытка исправления ошибки 4024 ни к чему не приводят

magirus
24.06.2009, 18:38
у тебя синтаксическая ошибка....
uNIt вместо uINt.
и точки с запятой в одном месте не хватает...

Анатолий
24.06.2009, 19:13
где надо делать пробразование
в объвлениях или в программе?

magirus
24.06.2009, 20:12
во первых, переменнная объявляется типом а не преобразованием:
VAR
UPi:UINT;
UdP:UINT;
PI: REAL;
END_VAR
и во второй строке програмы вместо двоеточия в конце строки - точка с запятой.
UPi:=REAL_TO_UINT(PI);

Анатолий
25.06.2009, 14:48
Извините за надоедливость и ……………
Но , я получаю с аналоговых входов в формате REAL (Pi- измеренное давление , dPi – измеренный перепад, Ti- измеренная температура)
Для выполнения арифметических операций необходимо UINT.
как я понимаю одним объявлением не обойдешься.
Для этого необходимо выполнить преобразование из REAL в UINT (есть такое в КДС)
в UPi . UdPi , UTi преобразованное в формат UINT для арифметических операций

ВОТ ЧТО ЗАБИТО
ОБЬЯВЛЕНИЯ
PROGRAM PLC_PRG

VAR
UPi: UINT;
UdP: UINT;
UTI: UINT;
END_VAR

ПРОГА
UPi:=REAL_TO_UINT(PI);
UdP:=REAL_TO_UINT(dP);
UTi:=REAL_TO_UINT(TI);

ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ


VAR_GLOBAL RETAIN
P_100: UINT:=7650; (*максимальный расчетный расход*)
dP_100: UINT:=63; (*максимальный перепад давления*)
t_100: UINT:=20; (*расчетная температура*)
END_VAR

на скриншоте виден результат

magirus
25.06.2009, 15:09
онлайн - ран похоже не сделал...у меня все пашет

Анатолий
25.06.2009, 15:51
Спасибо.
осуществил .
увидел.
Потерял дробную часть..
Жаль, погрешность расчета расхода увеличится.
теперь еще пока не начал мУчиться .
как сложно можно набрать формулу расчета
т.е. при соблюдении правил выполнения арифметики (скобки, +/- и /\*)

magirus
25.06.2009, 16:15
я получаю с аналоговых входов в формате REAL (Pi- измеренное давление , dPi – измеренный перепад, Ti- измеренная температура)
Для выполнения арифметических операций необходимо UINT.
чушь полнейшая...
нужно чтоб переменные один тип имели, и те над которыми действия производишь, и результата...

summa:REAL; - вставить в объявления.
summa:=PI+TI; - вставить в прогу, запустить и посмотреть.

Анатолий
25.06.2009, 17:14
то есть обявить вводимые константы REAL
VAR_GLOBAL RETAIN
P_100: REAL:=7650; (*максимальный расчетный расход*)
dP_100: REAL:=63; (*максимальный перепад давления*)
t_100: REAL:=20; (*расчетная температура*)
END_VAR

и далее работать в REAL

Анатолий
25.06.2009, 17:21
Получилось
спасибо

magirus
25.06.2009, 20:33
пожалуста.