- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Помощь с преобразованием
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 3
- Зарегистрирован: 09 фев 2024, 11:41
- Имя: Максим
- Страна: Россия
- город/регион: Москва
Помощь с преобразованием
Здравствуйте. Контроллер S7-1200. Tia Portal V18. Есть значение которое занимает полтора байта (вторая половина второго байта занята уже другим значением). Подскажите как его правильно объединить и получить значение.
-
- не первый раз у нас
- Сообщения: 396
- Зарегистрирован: 28 сен 2022, 15:26
- Имя: Андрей
- Благодарил (а): 12 раз
- Поблагодарили: 54 раза
Помощь с преобразованием
Код: Выделить всё
HHHHLLLL LLLLLLLL
BITAND
00001111 11111111
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
Помощь с преобразованием
Забыли про сдвиг.
Есть там такая операция SHL/SHR.
Итак пусть есть два числа в двоичной форме:
X = 0000 1101 1100 0100
Y = 0000 0110
Как получить 0110 1101 1100 0100 или любое другое совмещенное число?
Сдвигаем Y с помощью операции SHL на 4 бита влево, получаем
Y1 = 0110 0000
Выполняем операцию AND (из Word logic operations) между Y1 и X:
0000 1101 1100 0100
AND
0110 0000
-------------------------
0110 1101 1100 0100
Есть там такая операция SHL/SHR.
Итак пусть есть два числа в двоичной форме:
X = 0000 1101 1100 0100
Y = 0000 0110
Как получить 0110 1101 1100 0100 или любое другое совмещенное число?
Сдвигаем Y с помощью операции SHL на 4 бита влево, получаем
Y1 = 0110 0000
Выполняем операцию AND (из Word logic operations) между Y1 и X:
0000 1101 1100 0100
AND
0110 0000
-------------------------
0110 1101 1100 0100
-
- не первый раз у нас
- Сообщения: 396
- Зарегистрирован: 28 сен 2022, 15:26
- Имя: Андрей
- Благодарил (а): 12 раз
- Поблагодарили: 54 раза
-
- эксперт
- Сообщения: 1035
- Зарегистрирован: 31 мар 2018, 12:05
- Имя: Вячеслав
- Благодарил (а): 100 раз
- Поблагодарили: 141 раз
Помощь с преобразованием
Простите за оф, но не мог пройти мимо) Выглядит крайне изящно. Преподавать впору ;)
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
Помощь с преобразованием
А, я просто глянул на BITAND в предыдущем сообщении и на автомате написал AND. Надо OR, конечно.
-
- осмотрелся
- Сообщения: 133
- Зарегистрирован: 02 май 2021, 11:39
- Имя: Сергей
- Страна: Россия
- Благодарил (а): 6 раз
- Поблагодарили: 23 раза
Помощь с преобразованием
А у меня вопрос к автору поста, а что не в Tia Portal V19 делаете проект ? У Вас реально под рукой S7-1200 с новой прошивкой ? Или вы прошили свой S7-1200 до версии v4.6 для экономии рабочей памяти ?