Инструкции TIA Portal

Сдвиг и Вращение
Манипуляция битами

Оптимизируйте обработку ваших регистров. От сверхбыстрых математических вычислений до сложного управления протоколами связи — освойте движение битов.

Зачем сдвигать или вращать биты?

Операции сдвига (Shift) и вращения (Rotate) позволяют перемещать биты слова влево или вправо. В промышленности они используются для извлечения точной информации из телеграмм связи, создания регистров сдвига для отслеживания деталей на конвейере или выполнения умножения/деления на степени двойки с максимальной производительностью.

Основное различие заключается в обработке 'выходящих' битов: в то время как сдвиг (Shift) отбрасывает их и заменяет нулями, вращение (Rotate) возвращает их с другой стороны слова, создавая непрерывную круговую петлю.

Сдвиг (Shift)

Линейное движение с потерей битов

SHL / SHR — Сдвиг влево/вправо

SHL

Что она делает

Перемещает биты влево (SHL) или вправо (SHR) на количество позиций, определенное входом N. Биты, выходящие из регистра, теряются, а новые входящие биты устанавливаются в 0.

Когда использовать

Быстрое умножение на 2 (SHL), деление на 2 (SHR) или выделение конкретного байта в 32-битном слове.

Советы профи

Сдвиг целого числа на 1 бит влево эквивалентен его умножению на 2 без использования математического блока.

Для знаковых типов (Int, DInt) SHR часто сохраняет знаковый бит (арифметический сдвиг).

Если N больше размера слова (например, N=20 для WORD), результатом будет 0.

Вращение (Rotate)

Круговое движение без потерь

ROL / ROR — Вращение влево/вправо

ROL

Что она делает

Вращает биты по кругу. Бит, выходящий с одной стороны (например, слева для ROL), сразу же входит с другой стороны (справа). Данные не теряются.

Когда использовать

Создание бегущих огней, простое шифрование данных или управление кольцевыми буферами (FIFO).

Советы профи

Идеально подходит для чередования приоритетов в группе насосов или двигателей.

В отличие от сдвига, полный оборот (например, 16 бит для WORD) возвращает исходное значение.

Используйте ROL/ROR для изменения порядка байтов (Endianness) при обмене данными.

Сдвиг против Вращения: Сравнение

Понимание влияния на ваши данные

СвойствоСдвиг (SHL/SHR)Вращение (ROL/ROR)
СтруктураЛинейнаяКруговая
Выходящие битыУдаляются (Теряются)Возвращаются с другой стороны
Входящие битыВсегда 0Выходящие биты возвращаются
Мат. использованиеУмножение / ДелениеПерестановка битов
Пример из жизниОтслеживание деталиБегущий огонь / Секвенсор
РискОпустошение регистраНет (данные сохраняются)

Часто задаваемые вопросы

Почему стоит использовать SHL вместо умножения на 2?

Инструкция SHL выполняется процессором ПЛК гораздо быстрее, чем операция MUL, так как она работает напрямую с регистром, минуя сложные блоки АЛУ.

Как создать регистр сдвига для конвейера?

Используйте SHR при каждом импульсе энкодера. Если на входе обнаружена деталь, установите бит 0 в 1. Сдвигая слово, вы отслеживаете положение детали бит за битом.

Каково влияние типа данных (Byte, Word, DWord)?

Инструкция адаптируется к размеру. ROR для Byte заставит бит 7 снова появиться в позиции 0 после 1 сдвига. Для Word бит 15 вернется в 0.

Можно ли сдвигать переменные в SCL?

Да, через функции SHL(IN:=var, N:=n) или используя стандартные побитовые операторы, если это позволяет ваша версия TIA Portal.

Автоматизируйте свои бинарные манипуляции

Нужно изолировать биты или создать сложный секвенсор? T-IA Connect сгенерирует ваши сети сдвига и вращения в один клик.