Воскресенье, 19.05.2024, 01:51
Приветствую Вас Гость | RSS
Главная | ROL: Циклический сдвиг влево | Регистрация | Вход
Меню сайта
Форма входа
Поиск
Календарь
«  Май 2024  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Программируемые Логические Контроллеры
    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
     
     На сегодня все, работа с операндами не так уж и проста, как может показаться на первый взгляд.
     

    Конструктор сайтов - uCozCopyright MyCorp © 2024