LINUX.ORG.RU

Конвертация int16 в uint16

 


0

1

Какой самый верный и быстрый метод преобразования? Из доступных инструментов, только двоичная арифметика, увы на ПЛК кроме FBD нечего не предусмотрено.

★★★

Ответ на: комментарий от Nastishka

читай сообщение выше, где там написано про Си? Имеется FBD и набор блоков для двоичной арифметики.

AUX ★★★
() автор топика
Ответ на: комментарий от AUX

int16 == uint16 если старший разряд равен нулю.

Какой результат ты хочешь увидеть если исходное число отрицательное ? Его абсолютное значение или 0 ?

vel ★★★★★
()

Смотри стандартную библиотеку. Там должна быть функция SINT_TO_UINT. В FBD рисуется в виде кирпича с одним входом и одним выходом.

shkolnick-kun ★★★★★
()
Последнее исправление: shkolnick-kun (всего исправлений: 1)
Ответ на: комментарий от shkolnick-kun

Я выше писал, что там ограниченный FBD, писать макросы можно только на FBD, был бы бы какой нибудь ST, вопросов не было бы. А uint16 они не завезли, все типы знаковые, а мне нужен беззнаковый.

AUX ★★★
() автор топика
Ответ на: комментарий от AUX

либо операция AND c 0x0111111111111111 тогда отрицательные -> 0.
либо прибавить 32768...
все зависит от задачи. арифметически правильнее первое решение, но, к примеру, для вывода в АЦП и подобные используется второй. и т.д. и т.п.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от pfg

В моем случае это данные энкодера в modbus

AUX ★★★
() автор топика

А какие именно операции ты собрался производить над данными? А то может никакая «конвертация» и не нужна.

Deleted
()
Ответ на: комментарий от Deleted

У меня связана по модбасу stm32 и плк segnetics smh2g. На stm32 три энкодера, а сегнтикс как показометр и управление ТП (ввод параметров изделия и проч.) для оператора и технолога. Просто мне удобнее иметь именно такой диапазон, просто со знаком немного не вписываюсь, просто мне не удобно будет считать:)

AUX ★★★
() автор топика
Ответ на: комментарий от beastie

Хорошая идея, завтра попробую, если конечно там есть операция xor для long int, просто весь прикол что у них нет такой сущности как безнаковое число. Придётся int преобразовать в long и уже потом xor.

AUX ★★★
() автор топика
Последнее исправление: AUX (всего исправлений: 1)

А мне всегда казалось что внутри FBD там обычный ST. Или там вообще ничего не дают, вот тебе базовый набор кирпичей, и крутись как хочешь?

morse ★★★★★
()
Ответ на: комментарий от morse

Или там вообще ничего не дают, вот тебе базовый набор кирпичей, и крутись как хочешь?

Ага

AUX ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.