С помощью операций сдвига можно побитно сдвигать содержимое входа IN влево или вправо. Сдвиг на n битов влево умножает содержимое входа IN на 2n; сдвиг на n битов вправо делит содержимое входа IN на 2n.
Следовательно, если Вы, например, сдвигаете двоичный эквивалент десятичного значения 3 на 3 бита влево, то получается двоичный эквивалент десятичного значения 24. Если Вы сдвигаете двоичный эквивалент десятичного значения 16 на 2 бита вправо, то получается двоичный эквивалент десятичного значения 4. Число, задаваемое Вами для входного параметра N, показывает, на сколько битов должен производиться сдвиг. Разряды, освобождающиеся вследствие операции сдвига, заполняются нулями или состоянием сигнала бита знака (”0” в случае положительного числа, ”1” в случае отрицательного числа). Бит, сдвигаемый последним, загружается в бит СС1 слова состояния . Биты CC0 и OV сбрасываются в “0”. Можно оценивать бит СС1 слова состояния с помощью операций перехода.

Step7 предоставляет следующие операции сдвига:

  • сдвиг влево 16 битов, сдвиг влево 32 битов
  • сдвиг вправо 16 битов, сдвиг вправо 32 битов
  • сдвиг вправо целого числа (16 битов), сдвиг вправо целого числа (32 бита).

Сдвиг влево 16 бит

Операция Сдвиг влево 16 битов активизируется состоянием сигнала “1” на разрешающем входе (EN) и побитно сдвигает влево биты входа IN, имеющие номера с 0 по 15.

Вход N задает, на сколько битов происходит сдвиг. Если N больше, чем 16, то команда записывает 0 на выходе OUT и сбрасывает биты CC0 и OV слова состояния в ”0”. Освобождающиеся справа битовые позиции заполняются нулями. Результат операции сдвига может опрашиваться на выходе OUT.

Операция, запущенная при не равном нулю N, сбрасывает биты CC0 и OV слова состояния в ”0”. Когда операция выполняется (EN = 1), ENO показывает состояние сигнала последнего сдвинутого бита (соответствует CC1 и RLO в слове состояния). Другие операции после этого блока, подключенные через ENO (каскадное включение), не обрабатываются, если последний сдвинутый бит имеет состояние сигнала ”0”.

При размещении блока Сдвиг влево 16 битов необходимо соблюдать определенные ограничения

Сдвиг битов входа IN на шесть битовых разрядов влево

Элемент FBD Параметры Тип данных Область памяти Описание
IN WORD I, Q, M, D, L Сдвигаемое значение
N WORD I, Q, M, D, L Количество битовых разрядов, на которое производится сдвиг
OUT WORD I, Q, M, D, L Результат операции
EN BOOL I, Q, M, D, L Деблокировка входа
ENO BOOL I, Q, M, D, L Деблокировка выхода

Пример и биты слова состояния

 

Сдвиг влево 32 бита

Команда сдвиг влево 32 бита выполняется также как и команда сдвиг влево 16 бит с разницей что обрабатывает она двойные слова. Хочу напомнить что сдвиг идет с 0 по 31 бит ( здесь исчисление идет от нуля). N не должно превышать значения 32 в противном случае команда запишет 0 на выходе.

Элемент FBD Параметры Тип данных Область памяти Описание
IN WORD I, Q, M, D, L Сдвигаемое значение
N WORD I, Q, M, D, L Количество битовых разрядов, на которое производится сдвиг
OUT WORD I, Q, M, D, L Результат операции
EN BOOL I, Q, M, D, L Деблокировка входа
ENO BOOL I, Q, M, D, L Деблокировка выхода

Пример сдвига влево 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 битов необходимо соблюдать определенные ограничения по битам слова состояния.

 

Элемент FBD Параметры Тип данных Область памяти Описание
IN WORD I, Q, M, D, L Сдвигаемое значение
N WORD I, Q, M, D, L Количество битовых разрядов, на которое производится сдвиг
OUT WORD I, Q, M, D, L Результат операции
EN BOOL I, Q, M, D, L Деблокировка входа
ENO BOOL I, Q, M, D, L Деблокировка выхода

Пример cдвига вправо 16 бит и биты слова состояния для контроллеров SIMATIC

 

 

Сдвиг вправо 32 бит

Команда сдвиг вправо 32 бита выполняется также как и команда сдвиг вправо 16 бит с разницей что обрабатывает она двойные слова. Хочу напомнить что сдвиг идет с 0 по 31 бит и Если N больше 32 то команда записывает 0 на выходе.

Элемент FBD Параметры Тип данных Область памяти Описание
IN DWORD I, Q, M, D, L Сдвигаемое значение
N WORD I, Q, M, D, L Количество битовых разрядов, на которое производится сдвиг
OUT DWORD I, Q, M, D, L Результат операции
EN BOOL I, Q, M, D, L Деблокировка входа
ENO BOOL I, Q, M, D, L Деблокировка выхода

Пример 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 битов необходимо соблюдать определенные ограничения по битам слова состояния.

 

Элемент FBD Параметры Тип данных Область памяти Описание
IN INT I, Q, M, D, L Сдвигаемое значение
N WORD I, Q, M, D, L Количество битовых разрядов, на которое производится сдвиг
OUT INT I, Q, M, D, L Результат операции
EN BOOL I, Q, M, D, L Деблокировка входа
ENO BOOL I, Q, M, D, L Деблокировка выхода

Пример и биты слова состояния операции cдвига вправо целого числа 16 бит в функциональном плане для SIMATIC

 

 

Сдвиг вправо целого числа 32 бита

Команда Сдвиг вправо целого числа (32 бита) работает по принципу сдвига вправо целого числа 16 бит. Единственная разница что работаем мы со словами 32 бита, а не 16. Кроме того если N больше, чем 32, то команда работает так, как будто N = 32.

Элемент FBD Параметры Тип данных Область памяти Описание
IN DINT I, Q, M, D, L Сдвигаемое значение
N WORD I, Q, M, D, L Количество битовых разрядов, на которое производится сдвиг
OUT DINT I, Q, M, D, L Результат операции
EN BOOL I, Q, M, D, L Деблокировка входа
ENO BOOL I, Q, M, D, L Деблокировка выхода

Пример и биты слова состояния операции cдвига вправо целого числа 32 бит для SIMATIC

 

 

Операции циклического сдвига

 

С помощью операций циклического сдвига можно побитно циклически сдвигать вправо или влево все содержимое входа IN. Освобождающиеся разряды заполняются состояниями сигналов тех битов, которые выталкиваются из входа IN. Число, задаваемое Вами для входного параметра N, показывает, на сколько битов должен производиться циклический сдвиг. В зависимости от выбранной операции циклический сдвиг происходит через бит СС1. Бит CC0 слова состояния сбрасывается в “0”.
Вы можете воспользоваться следующими операциями циклического сдвига:

  • циклический сдвиг влево 32 бита
  • циклический сдвиг вправо 32 бита

 

Циклический сдвиг влево

Операция Циклический сдвиг влево 32 бита активизируется состоянием сигнала “1” на разрешающем входе (EN) и побитно циклически сдвигает влево все содержимое входа IN. Вход N задает, на сколько битов происходит циклический сдвиг. Если N больше, чем 32, то двойное слово циклически сдвигается на число битов, равное (((N-1) по модулю 32) +1). Освобождающиеся справа битовые позиции заполняются состояниями сигналов циклически сдвигаемых битов. Результат операции циклического сдвига Вы можете опрашивать на выходе OUT.

Операция, запущенная при не равном нулю N, всегда сбрасывает биты CC0 и OV слова состояния в ”0”. Когда операция выполнится (EN = 1), ENO показывает состояние сигнала последнего циклически сдвинутого бита (соответствует СС1 и RLO в слове состояния). Другие операции после этого блока, подключенные через ENO (каскадное включение), не обрабатываются, если последний циклически сдвинутый бит имеет состояние сигнала ”0”.

При размещении блока Циклического сдвига влево 32 бит, необходимо соблюдать определенные ограничения по битам слова состояния.

 

Элемент FBD Параметры Тип данных Область памяти Описание
IN DWORD I, Q, M, D, L Сдвигаемое значение
N WORD I, Q, M, D, L Количество битовых разрядов, на которое производится сдвиг
OUT DWORD I, Q, M, D, L Результат операции
EN BOOL I, Q, M, D, L Деблокировка входа
ENO BOOL I, Q, M, D, L Деблокировка выхода

Пример и биты слова состояния операции циклического cдвига влево для SIMATIC

 

 

Циклический сдвиг вправо

Эта команда побитно циклически сдвигает вправо все содержимое входа IN. Вход N задает, на сколько битов происходит циклический сдвиг. Если N больше, чем 32, то двойное слово циклически сдвигается на число битов, равное (((N-1) по модулю 32) +1). Значение N может находиться между 0 и 15. Освобождающиеся слева битовые позиции заполняются состояниями сигналов циклически сдвигаемых битов. Результат операции циклического сдвига Вы можете опрашивать на выходе OUT

Во всём остальном команда похожа на команду циклический сдвиг слево.

Элемент FBD Параметры Тип данных Область памяти Описание
IN DWORD I, Q, M, D, L Сдвигаемое значение
N WORD I, Q, M, D, L Количество битовых разрядов, на которое производится сдвиг
OUT DWORD I, Q, M, D, L Результат операции
EN BOOL I, Q, M, D, L Деблокировка входа
ENO BOOL I, Q, M, D, L Деблокировка выхода

Пример и биты слова состояния операции циклического cдвига вправо для SIMATIC

 

<—Предыдущая глава  



Rambler's Top100


Сделано djoni