|
С помощью операций сдвига можно побитно сдвигать содержимое входа IN влево
или вправо. Сдвиг на n битов влево умножает содержимое входа IN на 2n; сдвиг
на n битов вправо делит содержимое входа IN на 2n. Step7 предоставляет следующие операции сдвига:
Сдвиг влево 16 битОперация Сдвиг влево 16 битов активизируется состоянием сигнала “1” на разрешающем
входе (EN) и побитно сдвигает влево биты входа IN, имеющие номера с 0 по 15.
Сдвиг влево 32 битаКоманда сдвиг влево 32 бита выполняется также как и команда сдвиг влево 16 бит с разницей что обрабатывает она двойные слова. Хочу напомнить что сдвиг идет с 0 по 31 бит ( здесь исчисление идет от нуля). N не должно превышать значения 32 в противном случае команда запишет 0 на выходе.
Пример сдвига влево 32 бита и биты слова состояния для программируемых контроллеров
Сдвиг вправо 16 битЭта команда побитно сдвигает вправо биты входа IN, имеющие номера с 0 по 15. Биты с номерами с 16 по 31 воздействия не испытывают. Вход N задает, на сколько битов происходит сдвиг. Если N больше, чем 16, то команда записывает 0 на выходе OUT и сбрасывает биты CC0 и OV в ”0”. Освобождающиеся слева битовые позиции заполняются нулями. Результат операции сдвига можно узнать на выходе OUT. Операция, запущенная при не равном нулю N, всегда сбрасывает биты СС0 и OV слова состояния в ”0”. Когда операция выполнится (EN = 1), ENO показывает состояние сигнала последнего сдвинутого бита (соответствует СС1 и RLO в слове состояния). Другие операции после этого блока, подключенные через ENO (каскадное включение), не обрабатываются, если последний сдвинутый бит имеет состояние сигнала ”0”. При размещении блока Сдвиг вправо 16 битов необходимо соблюдать определенные ограничения по битам слова состояния.
Пример cдвига вправо 16 бит и биты слова состояния для контроллеров SIMATIC
Сдвиг вправо 32 битКоманда сдвиг вправо 32 бита выполняется также как и команда сдвиг вправо 16 бит с разницей что обрабатывает она двойные слова. Хочу напомнить что сдвиг идет с 0 по 31 бит и Если N больше 32 то команда записывает 0 на выходе.
Пример cдвига вправо 32 бит и биты слова состояния для контроллеров SIMATIC
Сдвиг вправо целого числа(16 бит)Команда Сдвиг вправо целого числа (16 битов) активизируется состоянием сигнала “1” на разрешающем входе (EN) и побитно сдвигает вправо биты входа IN, имеющие номера с 0 по 15. Вход N задает, на сколько битов происходит сдвиг. Если N больше, чем 16, то команда работает так, как будто N = 16. Битовые позиции слева заполняются состоянием сигнала бита 15 (разряд знака целого числа), то есть нулем, если число положительное, и 1, если число отрицательное. Результат операции сдвига Вы можете опрашивать на выходе OUT. Операция, запущенная при не равном нулю N, всегда сбрасывает биты СС0 и OV слова состояния в ”0”. Когда операция выполнится (EN = 1), ENO показывает состояние сигнала последнего сдвинутого бита (соответствует СС1 и RLO в слове состояния). Другие операции после этого блока, подключенные через ENO (каскадное включение), не обрабатываются, если последний сдвинутый бит имеет состояние сигнала ”0”. При размещении блока Сдвиг вправо целого числа 16 битов необходимо соблюдать определенные ограничения по битам слова состояния.
Сдвиг вправо целого числа 32 битаКоманда Сдвиг вправо целого числа (32 бита) работает по принципу сдвига вправо целого числа 16 бит. Единственная разница что работаем мы со словами 32 бита, а не 16. Кроме того если N больше, чем 32, то команда работает так, как будто N = 32.
Пример и биты слова состояния операции cдвига вправо целого числа 32 бит для SIMATIC
Операции циклического сдвига
С помощью операций циклического сдвига можно побитно циклически сдвигать
вправо или влево все содержимое входа IN. Освобождающиеся разряды заполняются
состояниями сигналов тех битов, которые выталкиваются из входа IN. Число,
задаваемое Вами для входного параметра N, показывает, на сколько битов должен
производиться циклический сдвиг. В зависимости от выбранной операции циклический
сдвиг происходит через бит СС1. Бит CC0 слова
состояния сбрасывается в “0”.
Циклический сдвиг влевоОперация Циклический сдвиг влево 32 бита активизируется состоянием сигнала “1” на разрешающем входе (EN) и побитно циклически сдвигает влево все содержимое входа IN. Вход N задает, на сколько битов происходит циклический сдвиг. Если N больше, чем 32, то двойное слово циклически сдвигается на число битов, равное (((N-1) по модулю 32) +1). Освобождающиеся справа битовые позиции заполняются состояниями сигналов циклически сдвигаемых битов. Результат операции циклического сдвига Вы можете опрашивать на выходе OUT. Операция, запущенная при не равном нулю N, всегда сбрасывает биты CC0 и OV слова состояния в ”0”. Когда операция выполнится (EN = 1), ENO показывает состояние сигнала последнего циклически сдвинутого бита (соответствует СС1 и RLO в слове состояния). Другие операции после этого блока, подключенные через ENO (каскадное включение), не обрабатываются, если последний циклически сдвинутый бит имеет состояние сигнала ”0”. При размещении блока Циклического сдвига влево 32 бит, необходимо соблюдать определенные ограничения по битам слова состояния.
Пример и биты слова состояния операции циклического cдвига влево для SIMATIC
Циклический сдвиг вправоЭта команда побитно циклически сдвигает вправо все содержимое входа IN. Вход N задает, на сколько битов происходит циклический сдвиг. Если N больше, чем 32, то двойное слово циклически сдвигается на число битов, равное (((N-1) по модулю 32) +1). Значение N может находиться между 0 и 15. Освобождающиеся слева битовые позиции заполняются состояниями сигналов циклически сдвигаемых битов. Результат операции циклического сдвига Вы можете опрашивать на выходе OUT Во всём остальном команда похожа на команду циклический сдвиг слево.
Пример и биты слова состояния операции циклического cдвига вправо для SIMATIC
|