ROR: Циклический сдвиг вправо
Описание функции
Эта функция сдвигает битовую комбинацию на входе In циклически вправо на n битов (значение на входе Number).
Системный бит %S17 используется, как бит переноса, т.е. в нем сохраняется состояние сдвинутого бита
Типы данных входа IN и выхода OUT должны быть идентичны.
Примечание: Для совместимости с IEC 61131-3 эта функция также работает с типом BOOL . Здесь это не важно.
EN и ENO могут быть сконфигурированы как дополнительные параметры.
Представление:
Описание параметров
Описание входных параметров:
Параметр | Тип данных | Значение |
InputPattern | Для ROR: BOOL, BYTE, WORD, DWORD Для ROR_INT: INT Для ROR_DINT: DINT | это битовая комбинация, которая будет сдвинута |
Number | Для ROR: UINT Для ROR_INT, ROR_DINT: INT | это число позиций, на которые будет сдвинута последовательность |
Описание выходного параметра:
Параметр | Тип данных | Значение |
OutputPattern | Для ROR: BOOL, BYTE, WORD, DWORD Для ROR_INT: INT Для ROR_DINT: DINT | это сдвинутая последовательность |
Данная функция идентична предыдущей, если в ROL сдвиг осуществлялся влево, то теперь битовая комбинация будет сдвинута вправо.
Итак, запускаем программу и с помощью таблицы совершенных действий (анимированная таблица), проверяем, что из этого получилось.
То, что было ранее показано, покажется вам не понятным и бессмысленным, поэтому создадим другие переменные и типы. На пример в данном случае я буду использовать тип «byte».
In_byte и out_byte имеют тип «byte», number - соответственно «UINT».
Далее запускаем программу в режиме симулятора.
В данном случае 2#0000_0000 представлен в двоичной системе, таким образом, при запуске программы все параметры находятся в логическом нуле.
Далее открываем таблицу, меняем входные параметры переменной in_byte на 1, смотрите рисунок:
Таким образом у нас изменились входные и выходные параметры, теперь изменим номер переменной number на 1, смотрим что из этого получилось.
Из предыдущего рисунка можно судить, что входной параметр остался неизменным, а выходной изменил свой бит на 2#1000_0000, и все благодаря числовой переменной UINT.
Таким образом, младшие биты последовательно заняли позиции старшего бита.
Данная структура больше представляет собой работу с системными параметрами, если можно так выразиться «на молекулярном уровне», нежели с жесткими логическими связующими, которые понятны инженеру электрику.