умножайте на 10 и переводите из реал в инт.
получите значение в размере 2 байта.
при отображении укажите 1 точка после запятой.
Вид для печати
умножайте на 10 и переводите из реал в инт.
получите значение в размере 2 байта.
при отображении укажите 1 точка после запятой.
kolyan еще можно использовать ROUND для реалов.
Да, это функция в oscat basic
Собственно вот импортируйте
А, сорри, там что-то в проекте надо добавить, дома смогу посмотреть где и что...
Скачайте архив заново. Только аккуратнее с импортом Global переменных, он перезатрет что у вас уже там есть. Лучше в голый проект импортните, там одна строчка всего добавляется и добавьте руками.
Возьмите лучше у Oscat функцию REAL_TO_STRF
Потому, что стандартная функция REAL_TO_STRING работает только в эмуляции. При загрузке в контроллер она не работает, возникают крякозябры даже без вывода на ЖКИ http://www.owen.ru/forum/showthread....ll=1#post69319
А так получите сразу и String и нужное кол. цифр после запятой, работает округление для отброшенных знаков.
Код:FUNCTION REAL_TO_STRF : STRING(20)
VAR_INPUT
IN : REAL;
N : INT;
END_VAR
VAR
O: REAL;
i: INT;
END_VAR
(* LIMIT N to 0 .. 7 *)
N := LIMIT(0,N,7);
(* round the input to N digits and convert to string *)
O := ABS(in) * EXP(N* 2.30258509299405);
REAL_TO_STRF := DINT_TO_STRING(REAL_TO_DINT(O));
(* add zeroes in front to make sure sting is at least 8 digits long *)
FOR i := LEN(REAL_TO_STRF) TO N DO REAL_TO_STRF := CONCAT('0', REAL_TO_STRF); END_FOR;
(* add a dot if n > 0 *)
IF n > 0 THEN REAL_TO_STRF := INSERT(REAL_TO_STRF, '.', LEN(REAL_TO_STRF) - N); END_IF;
(* add a minus sign if in is negative *)
IF in < 0 THEN REAL_TO_STRF := CONCAT('-', REAL_TO_STRF); END_IF;
Вернусь к первому вопросу, а можно как-то запретить функционал кнопок по умолчанию в Work_mode?