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. Таким образом, младшие биты последовательно заняли позиции старшего бита. Данная структура больше представляет собой работу с системными параметрами, если можно так выразиться «на молекулярном уровне», нежели с жесткими логическими связующими, которые понятны инженеру электрику.
|