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 На сегодня все, работа с операндами не так уж и проста, как может показаться на первый взгляд.
|