ROL: Циклический сдвиг влево
Описание функции
Эта функция сдвигает битовую комбинацию на входе IN циклически влево на n битов (значение на входе Number).
Системный бит %S17 используется, как бит переноса, т.е. в нем сохраняется состояние сдвинутого бита
Типы данных входа IN и выхода OUT должны быть идентичны.
Примечание: Для совместимости с IEC 61131-3 эта функция также работает с типом BOOL . Здесь это не важно.
Дополнительные доступные функции
При использовании ПЛК Premium следующие функции доступны в библиотеке Obsolete:
ROL_DINT
ROL_INT
Эти функции идентичны функции ROL.
Описание параметров
Описание входных параметров:
Параметр | Тип | Значение |
InputPattern | Для ROL: BOOL, BYTE, WORD, DWORD Для ROL_INT: INT Для ROL_DINT: DINT | это битовая комбинация, которая будет сдвинута |
Number | Для ROL: UINT Для ROL_INT, ROL_DINT: INT | это число позиций, на которые будет сдвинута последовательность |
Описание выходного параметра:
Параметр | Тип данных | Значение |
OutputPattern | Для ROL: BOOL, BYTE, WORD, DWORD Для ROL_INT: INT Для ROL_DINT: DINT | это сдвинутая последовательность |
Обычно с типом Bool данную функцию не используют, честно говоря, я даже не знаю, куда ее применить. На примере покажу.
Итак, у нас имеются три переменных:
1. Input – тип Boolean, принимает 0 или 1
2. Number – тип UINT
3. Output – тип Boolean
Причем на входе и на выходе переменные должны быть одинаковыми. Единственный тип UINT который используется в качестве целого числа, т.е. это тот операнд на который будет сдвинут.
Далее смотрим пример. Для наглядности создадим анимированную таблицу, которая расположена в окне браузера проекта.
Открываем свойство таблицы, из меню выберем «New Animation Table». Свою таблицу я назвал «Table», вы соответственно можете своим именем назвать, главное чтобы вы сами знали.
Открываем таблицу, в которой пока что нет ничего, т.е. она пуста.
Далее будем в таблицу добавлять переменные. Наводим курсор на ячейку «Name» и щелкнем по ней, пред нами появиться кнопка выбора переменной, соответственно ранее созданных в программе.
Нажав на кнопку с тремя точками, появиться дополнительное окно «Animation Table: Instance Selection».
Из общего списка переменных, мы выберем лишь те, которые нам необходимы для проверки функции, а именно:
Поле того как запустим программу активизируется верхняя панель таблицы.
Нажимаем на кнопку «Modification», таким образом, мы в режиме симуляции без участия ПЛК, будем изменять параметры присуще данной функции.
Данная таблица очень полезна не только при работе в режиме симуляции, но и при рабочем режиме ПЛК, таким образом можно принудительно заставить сработать уровнемеры, двигатели и т.п.
На примере я в ячейку «Value» переменного input вписал 1, а number – 5.
Переходим к окну языка LD.
Input и output выкрашены в зеленый цвет, т.е. они стали активными, это все благодаря булевой единице, которая принимает истинное значение. Ну а 5 это тот параметр сдвига операнда в памяти. Честно говоря, сколько не искал про эту функцию, толком ничего нет путного.
Параметр UINT принимает значение от 0 до 65535, если использовать 65536 программа даст ошибку.
Теперь создадим функцию ROL_INT, смотрите рисунок ниже.
Num1, num2, num3 – тип переменной INT.
Открываем анимированную таблицу, удаляем ранее созданные переменные, взамен создадим новые, смотрите рис.
Теперь самое интересное, показываю на рисунках:
Если num1=1 и num2=0, тогда num3=1, таким образом, на выходе num3 сдвинут на 1.
Если num1=1 и num2=1, тогда num3=2
Если num1=2 и num2=1, тогда num3=4
Если num1=2 и num2=3, тогда num3=16
На сегодня все, работа с операндами не так уж и проста, как может показаться на первый взгляд.