Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Word to bytes

  1. #1
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    Exclamation Word to bytes

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

  2. #2
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,273

    По умолчанию

    w:word;
    lo,hi:byte;

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

  3. #3
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    w:word;
    lo,hi:byte;

    lo:=word_to_byte(w);
    hi:=word_to_byte(w/256);
    Большое спасибо!

  4. #4

    По умолчанию

    Добрый день, у меня схожая задача только чуть интереснее. кодесис 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);

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

  5. #5
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,129

    По умолчанию

    Цитата Сообщение от Илья2 Посмотреть сообщение
    Добрый день, у меня схожая задача только чуть интереснее. кодесис 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);

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

  6. #6

    По умолчанию

    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);

    1_1.PNG

  7. #7
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,129

    По умолчанию

    Цитата Сообщение от Илья2 Посмотреть сообщение
    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);

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

  8. #8
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,273

    По умолчанию

    Ну все правильно. Вопрос то в чем?

  9. #9

    По умолчанию

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

  10. #10
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,129

    По умолчанию

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

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

    2024-04-10_8-26-11.png

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 18
    Последнее сообщение: 08.10.2021, 22:54
  2. Из двух WORD один REAL?
    от kholonkin в разделе СПК2хх
    Ответов: 1
    Последнее сообщение: 06.09.2013, 11:17
  3. Ответов: 4
    Последнее сообщение: 03.07.2013, 11:52
  4. Как записать UDINT в два WORD ?
    от Sergey_Byk в разделе СПК2хх
    Ответов: 2
    Последнее сообщение: 15.03.2013, 14:16
  5. Ошибка 'Invalid type WORD at address %IW9.7.17.0'
    от Andy в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 15.11.2008, 22:15

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •