Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по Unity Pro. Считать float и поменять порядок байт.
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
zasu
Приветствую всех, кто решил помочь разобраться в вопросе. Имеется устройство, во втором регистре готового хранится значение с типом данных Float 32 и порядком байт DCBA, подскажите, как на языке FBD
пересчитать это всё к нормальному виду.
Нажмите для просмотра прикрепленного файла
manjey73
AND работающий в режиме целочисленных есть?
Или деление с остатком как вариант?
zasu
Цитата(manjey73 @ 27.10.2021, 13:22) *
AND работающий в режиме целочисленных есть?
Или деление с остатком как вариант?


Ничего не понял, можно чуть подробнее?
zasu
Вот, что у меня есть, как из этого сотворить удобночитаемое число? Контроллер M340
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
manjey73
К сожалению я не использовал Unity так широко, решал на нем очень простую задачу давно и не знаю возможности языка FBD в реализашии Schneider.

Понимает ли AND, OR кроме битовой логики числовую ? например если на один и второй вход подать числа? Тогда при AND можно сделать отсечку всех битов сразу младшего и старшего байтов регистра, потом применяя SHL, SHR смещать числа и потом применить OR для склейки переставленных чисел.

Можете просто применить SHL, SHR которые заполняют при смещении нулями вытесняемые биты и просто потом сложить. (главное не ROL, ROR эти при вытеснении переносят биты)

Если есть поддержка ST или чего-то иного вы можете выдернуть старший и младший путем /256 и %256 то есть деление на 256 и остаток от деления на 256

Вообще в справке должны быть примеры на операции с битами
yante
Цитата(zasu @ 27.10.2021, 13:18) *
Приветствую всех, кто решил помочь разобраться в вопросе. Имеется устройство, во втором регистре готового хранится значение с типом данных Float 32 и порядком байт DCBA, подскажите, как на языке FBD
пересчитать это всё к нормальному виду.
Нажмите для просмотра прикрепленного файла

А если без языков программирования, то как вы видите ответ на свой вопрос?
Я думаю, что т.к.
30352 = 0x7690
20292 = 0x4F44
25948 = 0x655C
-19128 = 0xFFB548
Теперь выводите их в обратном порядке...
Извините, что вмешался...
zasu
Уверен, что когда-нибудь это обязательно кому-нибудь пригодится. Вот решение этой задачи средствами среды разработки.
Нажмите для просмотра прикрепленного файла
manjey73
Ужас какой, неужели нет в Unity SHR, SHL / (деление без остатка) и % (MOD) ? да не поверю....
zasu
Последовательность байт dcba можно поменять разными методами:

· командой SWAP_ARINT, SWAP_ARWORD
· командами маскирования "AND_***_***: Логическое И между массивами и переменными"
· командой WORD_AS_BYTE --> BYTE_AS_WORD


Деление без остатка есть, и с остатком тоже, а средствами языка FBD делается так, как показано на картике выше и ничего плохого я в этом не вижу.
manjey73
Ну я в том смысле, что запись даже в FBD могла оказаться короче и проще, а у вас там простыня с перестановками туда-сюда...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.