PDA

Просмотр полной версии : Word to bytes



Scream
06.09.2013, 13:34
Доброго времени суток.
Как разложить WORD на BYTE в CODESYS 2.3 ?

Валенок
06.09.2013, 13:41
w:word;
lo,hi:byte;

lo:=word_to_byte(w);
hi:=word_to_byte(w/256);

Scream
06.09.2013, 14:21
w:word;
lo,hi:byte;

lo:=word_to_byte(w);
hi:=word_to_byte(w/256);

Большое спасибо!

Илья2
10.04.2024, 03:56
Добрый день, у меня схожая задача только чуть интереснее. кодесис 3.5. нужно преобразовать число в формате НЕХ в двоичный код, но выходит некорректно. число WORDформат переводится в двоичный код(формулой выше), а при переводе двоичного кода в STRING, чтобы дальнейшие операции совершать (выделить знак и пр) вместо двоичного кода я получаю число WORD в формате STRING, а не byte в формате STRING.
w := OSU.HEX_STR_TO_WORD(HEX_STR,HEX_STR_1);
lo:=word_to_byte(w);
paramtr:= BYTE_TO_STRING(lo);

Может сталкивался кто с такой задачей?

Евгений Кислов
10.04.2024, 07:21
Добрый день, у меня схожая задача только чуть интереснее. кодесис 3.5. нужно преобразовать число в формате НЕХ в двоичный код, но выходит некорректно. число WORDформат переводится в двоичный код(формулой выше), а при переводе двоичного кода в STRING, чтобы дальнейшие операции совершать (выделить знак и пр) вместо двоичного кода я получаю число WORD в формате STRING, а не byte в формате STRING.
w := OSU.HEX_STR_TO_WORD(HEX_STR,HEX_STR_1);
lo:=word_to_byte(w);
paramtr:= BYTE_TO_STRING(lo);

Может сталкивался кто с такой задачей?

Добрый день.
Напишите с примерами значений - что и каким образом вам нужно преобразовать.

Илья2
10.04.2024, 08:00
VAR
HEX_STR : STRING;
HEX_STR_1 : STRING;
w:WORD;
lo,hi:byte;
paramtr : STRING;

END_VAR

w := OSU.HEX_STR_TO_WORD(HEX_STR,HEX_STR_1);
lo:=WORD_TO_BYTE(w);
paramtr:= BYTE_TO_STRING(lo);

75087

Евгений Кислов
10.04.2024, 08:04
VAR
HEX_STR : STRING;
HEX_STR_1 : STRING;
w:WORD;
lo,hi:byte;
paramtr : STRING;

END_VAR

w := OSU.HEX_STR_TO_WORD(HEX_STR,HEX_STR_1);
lo:=WORD_TO_BYTE(w);
paramtr:= BYTE_TO_STRING(lo);

75087

Это результат, который вы получили. А какой вам нужен?

Валенок
10.04.2024, 08:07
Ну все правильно. Вопрос то в чем?

Илья2
10.04.2024, 08:17
Приходит строка формата STRING в которой переменная float зашифрованная в НЕХ : 40 А1 0А 4А. (переменная постоянно меняется но в формат 4 байта) блоком OSU.HEX_STR_TO_WORD идея перевести в двоичный код каждый байт и объединить в одну строку формата STRING (функцией CONCAT). ну и дальше получить float переменную в нормальном виде....
но при попытке перевести BYTE в моем случае допустим"1000000"(BYTE) 40 (НЕХ) при переводе в STRING я получаю 40 хотя ожидаю "1000000"

Евгений Кислов
10.04.2024, 08:27
Приходит строка формата STRING в которой переменная float зашифрованная в НЕХ : 40 А1 0А 4А. (переменная постоянно меняется но в формат 4 байта) блоком OSU.HEX_STR_TO_WORD идея перевести в двоичный код каждый байт и объединить в одну строку формата STRING (функцией CONCAT). ну и дальше получить float переменную в нормальном виде....
но при попытке перевести BYTE в моем случае допустим"1000000"(BYTE) 40 (НЕХ) при переводе в STRING я получаю 40 хотя ожидаю "1000000"

Остальное - не интересно.

См. скриншот. Речь шла об этом?

75088

Илья2
10.04.2024, 08:42
Да речь шла об этом, Спасибо большое!

Валенок
10.04.2024, 11:31
75103
и чуть проще