- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Помощь с преобразованием
-
- здесь недавно
- Сообщения: 3
- Зарегистрирован: 09 фев 2024, 11:41
- Имя: Максим
- Страна: Россия
- город/регион: Москва
Помощь с преобразованием
Здравствуйте. Контроллер S7-1200. Tia Portal V18. Есть значение которое занимает полтора байта (вторая половина второго байта занята уже другим значением). Подскажите как его правильно объединить и получить значение.
-
- освоился
- Сообщения: 258
- Зарегистрирован: 28 сен 2022, 15:26
- Имя: Андрей
- Благодарил (а): 4 раза
- Поблагодарили: 39 раз
Помощь с преобразованием
Код: Выделить всё
HHHHLLLL LLLLLLLL
BITAND
00001111 11111111
-
- почётный участник форума
- Сообщения: 3579
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 6 раз
- Поблагодарили: 273 раза
Помощь с преобразованием
Забыли про сдвиг.
Есть там такая операция 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
-
- освоился
- Сообщения: 258
- Зарегистрирован: 28 сен 2022, 15:26
- Имя: Андрей
- Благодарил (а): 4 раза
- Поблагодарили: 39 раз
-
- эксперт
- Сообщения: 1011
- Зарегистрирован: 31 мар 2018, 12:05
- Имя: Вячеслав
- Благодарил (а): 94 раза
- Поблагодарили: 136 раз
Помощь с преобразованием
Простите за оф, но не мог пройти мимо) Выглядит крайне изящно. Преподавать впору ;)
-
- почётный участник форума
- Сообщения: 3579
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 6 раз
- Поблагодарили: 273 раза
Помощь с преобразованием
А, я просто глянул на BITAND в предыдущем сообщении и на автомате написал AND. Надо OR, конечно.
-
- здесь недавно
- Сообщения: 87
- Зарегистрирован: 02 май 2021, 11:39
- Имя: Сергей
- Страна: Россия
- Благодарил (а): 6 раз
- Поблагодарили: 17 раз
Помощь с преобразованием
А у меня вопрос к автору поста, а что не в Tia Portal V19 делаете проект ? У Вас реально под рукой S7-1200 с новой прошивкой ? Или вы прошили свой S7-1200 до версии v4.6 для экономии рабочей памяти ?