Вход

Просмотр полной версии : Срочно! Кракозябры после преобразования real>string.



K580BB55A
20.11.2010, 12:57
язык Fbd.

Freq_measure (real>string) не меняется (кракозябры). я оставляю Left три знака. Необходимо "обрезать" число до Х.ХХ, иначе значение "гуляет".
Управление исполнительным - если больше, убавить, если меньше - добавить. При преобразовании значений Out (freq_measure) из Real>string кракозябры.


в режиме эмуляции всё работает, после заливки в плк значение
при преобразовании в другие типы краков не наблюдаю - зато теряются цифры после запятой Х - т.е. мне не нужны целые числа.

P/S
Только не умничать! Знал бы - не спрашивал!:confused:

Логвиненко Андрей
21.11.2010, 17:36
я наваял свою функцию и больше не маюсь.

FUNCTION RealToString : STRING(16)
VAR_INPUT
varReal:REAL;
NSAP:INT;
END_VAR

VAR
varNull:STRING:='0.';
varString:STRING;
varM:REAL;
i:INT;

END_VAR

i:=0;

IF ABS(varReal)>=1 THEN
varString:=REAL_TO_STRING(varReal);
RealToString:=LEFT(varString,FIND(varString,'.')+N SAP);
ELSE varM:=1;
FOR i:=1 TO NSAP DO varM:=varM/10; END_FOR
IF ABS(varReal)<varM THEN RealToString:='0.0';
ELSE
IF varReal<0 THEN varNull:='-0.';
ELSE varNull:='0.';
END_IF
varM:=ABS(varReal);
WHILE varM<0.1 DO
varNull:=CONCAT(varNull,'0');
varM:=varM*10;NSAP:=NSAP-1;
END_WHILE
FOR i:=1 TO NSAP DO varM:=varM*10; END_FOR
varString:=LEFT(REAL_TO_STRING(varM),NSAP);
RealToString:=CONCAT(varNull,varString);
END_IF
END_IF

K580BB55A
21.11.2010, 18:05
всё это хорошо, но можно на словах или блоками Fbd? выплюнул в буфер число и защёлкнул его, запретив запись.

Логвиненко Андрей
21.11.2010, 18:28
функцию можно вызывать как угодно, и St и Ld и Fbd и Cfc.

K580BB55A
21.11.2010, 18:33
а фукциональный блок какой использовать?

Логвиненко Андрей
21.11.2010, 18:46
Вам надо почитать руководство CoDeSys,
в FBD это будет выглядеть так:

K580BB55A
21.11.2010, 18:56
а каким образом мне получить этот блок? вставить код выше? библиотеку добавить? или ишо что? у меня только блоки преобразования реал в стринг...

Логвиненко Андрей
21.11.2010, 19:00
марш в школу.

K580BB55A
21.11.2010, 19:08
Я уже институт окончил - разработки в электронике, в том числе на pic %)

lara197a
21.11.2010, 19:12
Андрей!
У Вас в этом месте
IF ABS(varReal) ELSE
ошибка.
исправь те пожалуйста. Видимо, что-то не так скопировали.
функция полезная, но не работает.

Логвиненко Андрей
21.11.2010, 19:19
еще раз советую прочитать руководство, вопросов сразу станет намного меньше.
задание для самоподготовки: создание пользовательских функций и вызов их из Pou. кнопка F2 может помочь.

lara197a
21.11.2010, 19:23
как на счет ошибки?
чё-то не компилится.

K580BB55A
21.11.2010, 19:23
мой вопрос ещё актуален! Блин ф2 я всю перетыкал! справка содержит инфу по буферу только для st - для fbd там написано что его просто НЕТ!

Логвиненко Андрей
21.11.2010, 19:39
как на счет ошибки?
чё-то не компилится.
Копи-паст кривой,
можно попробовать так:

lara197a
21.11.2010, 20:00
спасибо андрей!

K580BB55A
21.11.2010, 20:53
разберусь - всем умникам 10101.

alexval2006
22.11.2010, 07:17
Создаете функциональный блок на st туда код товарища андрея потом из основной программы на фбд его вызываем, а вызываем так нажимаем вставить элемент это будет логический элемент вроде И непомню вручную правите тип это элемента на имя вашего функционального блока на st потом обявите его вверху впринципе автоматом предложет если неполучитса посже дам пример

Carter
04.02.2015, 16:07
Подскажите, что делать с такой же проблемой. Попробовал функцию прикрепленную в теме, тоже самое, преобразование real to string дает плохой результат - куча непонятных символов...

petera
04.02.2015, 16:32
Подскажите, что делать с такой же проблемой. Попробовал функцию прикрепленную в теме, тоже самое, преобразование real to string дает плохой результат - куча непонятных символов...
Посмотрите здесь http://www.owen.ru/forum/showthread.php?t=11396&p=69384&viewfull=1#post69384

Carter
04.02.2015, 16:44
Посмотрите здесь http://www.owen.ru/forum/showthread.php?t=11396&p=69384&viewfull=1#post69384
Да, спасибо, уже глянул.

tumasv1
03.05.2015, 16:01
как можно предложить свой блок в котором, как раз, и используется неработающий на плк 63/73 REAL_TO_STRING?!