Показано с 1 по 10 из 151

Тема: CODESYS V3.5. Онлайн-FAQ

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию PRG#33. Что такое методы, свойства, действия и переходы?

    Вопрос: если нажать ПКМ на POU и выбрать команду Добавление объекта, то появляется возможность добавить в POU Действие, Метод, Переход и Свойство.
    Что это и зачем это нужно? Это имеет отношение к объектно-ориентированному подходу (ООП)?

    Ответ:

    1.1 Действие позволяет выделить фрагмент POU в обособленный объект с собственным названием.
    В других языках программирования аналогичные объекты называются процедурами (при этом действие является процедурой без параметров).
    Преимущества использования процедур описаны в этой статье:
    https://ru.wikipedia.org/wiki/%D0%9F...82%D0%B2%D0%B0

    Например, вы замечаете, что в разных фрагментах вашего POU, реализующего машину состояний, вам приходится дублировать один и тот же код для возвращения на шаг ожидания команды и очистки используемых ресурсов.
    В этом случае вы можете оформить его в виде действия с названием SwitchToIdle:

    2022-05-17_8-15-56.png

    Теперь во всех фрагментах POU вы можете заменить повторяющие строки кода вызовом действия:

    Код:
    // ...
    SwitchToIdle();
    // ...
    Если вам потребуется изменить этот код - то достаточно будет поменять его в действии, а не искать по всей программе.

    Кроме того, действия являются неотъемлемой частью языка SFC - они используются для описания выполняемых на конкретном шаге команд:

    2022-05-17_8-28-48.png

    Действие не является элементом ООП.

    За исключением языка SFC - всегда предпочтительнее использовать метод, а не действие (его функциональность перекрывает функциональность действия).

    Статьи из справки CODESYS:
    https://help.codesys.com/webapp/_cds...rsion=3.5.17.0
    https://help.codesys.com/webapp/_cds...rsion=3.5.17.0

    1.2. Переход является аналогом действия, используемым в языке SFC для описания условий переходов между шагами (см. скриншот выше).
    Это удобно для описания сложных условий, состоящих из нескольких строк кода - они бы загромождали блок-схему.
    На блок-схеме переход отмечается заливкой правого верхнего угла соответствующего ему прямоугольника.

    Справедливый вопрос - почему переход можно добавить к POU, который реализован не на языке SFC?
    Ответ есть в баг-трекере CODESYS - это необходимо в тех случаях, когда ФБ на языке SFC, наследуемый от ФБ на другом языке, должен иметь доступ к условиям перехода своего базового ФБ.

    2022-05-17_8-38-47.png

    Переход не является элементом ООП.

    Статья из справки CODESYS: https://help.codesys.com/webapp/_cds...rsion=3.5.17.0

    1.3. Метод представляет собой функцию, встраиваемую в ФБ и имеющую доступ к его переменным.
    В отличие от действия - метод может иметь собственные входные, выходные и локальные переменные (а также константы).

    Возвращаясь к примеру из п. 1.1 - предположим, после очистки ресурсов в зависимости от выполнения тех или иных условий нам требуется перейти на конкретный шаг машины состояний.

    Код:
    // как и функция - метод может иметь аргументы и возвращать значения
    xIsStateSwitched := SwitchToState(eNewState := STATE.READ);
    Метод может входить в состав интерфейса.

    Метод является элементом ООП, но может успешно использоваться и в структурном программировании.

    Статья из справки CODESYS: https://help.codesys.com/webapp/_cds...rsion=3.5.17.0

    1.4. Свойство представляет собой переменную, для которой автоматически создаются методы чтения (Get) и записи (Set).
    Это позволяет при чтении или записи переменной автоматически выполнить какой-либо фрагмент кода (например, провалидировать значение или отмасштабировать его).

    Пример: пусть у нас есть ФБ TEST_FB с локальной переменной iSetpoint. В рамках нашей задачи представим, что ее значение должно принадлежать диапазону -10...10.

    2022-05-17_13-33-14.png

    Добавим свойство Setpoint и в методе записи обеспечим ограничение значений переменной с помощью оператора LIMIT.

    2022-05-17_13-32-48.png

    Таким образом, при записи значения в свойство из кода программы произойдет автоматический вызов метода Set и обработанное (ограниченное оператором LIMIT) значение свойства будет записано в переменную iSetpoint.

    Доступ к свойству не требует вызова экземпляра ФБ:

    2022-05-17_13-32-11.png

    Cвойство является элементом ООП.

    Статьи из справки CODESYS: https://help.codesys.com/webapp/_cds...rsion=3.5.17.0

Похожие темы

  1. Ответов: 1
    Последнее сообщение: 29.06.2017, 11:21

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •