Страница 13 из 15 ПерваяПервая ... 31112131415 ПоследняяПоследняя
Показано с 121 по 130 из 148

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

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

    По умолчанию 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

  2. #122
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,060

    По умолчанию PRG#34. Где прочитать об использовании объектно-ориентированного подхода в CODESYS?

    Вопрос: где прочитать об использовании объектно-ориентированного подхода (ООП) в CODESYS V3.5?

    Ответ: объектно-ориентированный подход (ООП) - это устоявшаяся и хорошая известная методология программирования, которая не является какой-то уникальной чертой CODESYS V3.5.

    Если вы ранее не использовали ООП - то изучать его на примере CODESYS будет не самой лучшей идеей из-за крайне ограниченного количества методических материалов (особенно для начинающих).
    Желательно ознакомиться с концепцией ООП на примере какого-то enterprise-языка - например, Java (реализация ООП в CODESYS вдохновлена Java, используются те же самые ключевые слова - interface, extends, implements, super, this).
    В интернете доступно множество книг, статей, обучающих курсов и учебных видео по этому вопросу.

    Применение ООП неразрывно связано с системным подходом к проектированию ПО.
    Чтобы научиться оценивать, продуктивно ли будет использовать ООП в рамках вашей конкретной задачи, и применять объектно-ориентированный дизайн при проектировании ПО - необходимо изучить соответствующую литературу (например - см. Грэди Буч. Объектно-ориентированный анализ и проектирование).

    С терминологический точки зрения - говорить о примении ООП в CODESYS можно только при наличии осмысленного использования в вашем приложении наследования и полиморфизма
    (абстракция и инкапсуляция и так являются неотъемлемой частью продуманного приложения для ПЛК - даже созданного в типичной для них парадигме структурного программирования).

    Список материалов по использованию ООП при программировании ПЛК на языках стандарта МЭК 61131-3:

    1. Wolfgang Horn, Michael Braun. Object-oriented Programming in SIMOTION

    Это единственная известная мне книга, системно рассматривающая вопрос использования ООП для программирования ПЛК и рассчитанная в том числе на начинающих пользователей.

    2. Обучающие материалы PLCopen. Руководство по применению объектно-ориентированного подхода

    3. Швецов М. Л. CoDeSys V3 и объектно-ориентированные расширения языков МЭК 61131-3. Стратегическая идея или насущная необходимость?

    4. Петров И. В. Объектно-ориентированное программирование CDS V3

    5. Швецов М. Л. Эффективное применение ООП CODESYS на практике

    6. Кузьмина Н. С. Объектно-ориентированное программирование в стандарте МЭК 61131-3

    7. Хесс Д. Объектно-ориентированные расширения МЭК 61131-3

    8. CoDeSys. Object-Oriented Controller Programming

    9. OOP in CODESYS (часть 1, часть 2, часть 3)

    10. Статьи из блога Стефана Хеннекена

    11. Информация из онлайн-справки CODESYS

    12. Информация из онлайн-справки Beckhoff

    13. Вебинар по ООП от Beckhoff

    14. Примеры использования ООП в CODESYS:


  3. #123
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,060

    По умолчанию VISU#30. Как сделать всплывающее окно при появлении тревог?

    Вопрос: можно ли сделать так, чтобы при возникновении тревог на основном экране визуализации появлялось всплывающее окно с уведомлением о возникшей тревоге?

    Ответ: см. пример.

    2022-05-24_13-36-19.png

  4. #124
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,060

    По умолчанию PRG#35. Как определить объем используемой/свободной RETAIN-памяти?

    Вопрос: как определить объем используемой/свободной RETAIN-памяти?

    Ответ: после выполнения команды Компиляция - Генерировать код на панели сообщений компиляции отображается информация об общей и свободной RETAIN-памяти
    (параметр Наибольший непрерывный промежуток памяти). Соответственно, определить размер используемой в проекте RETAIN-памяти можно путем вычитания объема свободной RETAIN-памяти из общей.

    27-05-2022 8-35-39.png

  5. #125
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,060

    По умолчанию PRG#36. Как перенести проект из старой версии CODESYS в V3.5 SP17 Patch 3?

    Вопрос: наши проекты созданы в старых версиях CODESYS (V3.5 SP16 Patch 3, V3.5 SP14 Patch 3 и т.д.).
    Как перенести их в версию V3.5 SP17 Patch 3?

    Ответ: см. видео.

  6. #126
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,060

    По умолчанию PRG#37. Как перенести установленные плагины с одного ПК на другой?

    Вопрос: я использую CODESYS V3.5 SP17 Patch 3. С помощью CODESYS Installer обновил версии некоторых плагинов.
    Как теперь перенести их на другой ПК, на котором нет интернета/нет возможности использовать VPN и т.д.?

    Ответ: при загрузке плагина через CODESYS Installer его пакет (.package) сохраняется в директории C:\Users\<ваш пользователь>\AppData\Local\Temp\APInstaller\<дата загрузки плагина>.
    Вы можете перенести эти пакеты на другой ПК и установить их через CODESYS Installer.

    2022-07-01_7-16-13.png

  7. #127
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,060

    По умолчанию OTHER#12. Как отключить диагностику дискретных выходов в ПЛК210-03?

    Вопрос: в проекте используется контроллер ПЛК210-03. Дискретные выходы контроллера не будут использоваться. На контроллере они светятся красным.
    С точки зрения заказчика красные светодиоды - это плохо (авария и т.д.). Как их отключить и убрать красное свечение? Питание на выходы подано согласно схеме подключения.

    Ответ: цвет индикаторов выходов в выключенном состоянии определяется по следующей схеме:

    2022-07-14_6-29-59.png

    Общий принцип диагностики выходов и изменения цвета индикаторов выходов следующий:

    2022-07-14_11-34-39.png

    Если в проекте выходы не будут использоваться (то есть к ним не будет подключена нагрузка), и при этом красное свечение индикаторов выходов нужно отключить, то:

    1. Подайте питание на выходы согласно схеме подключения из РЭ.

    2022-07-14_11-30-11.png 2022-07-14_11-30-36.png

    2. Отключите диагностику быстрых дискретных выходов (FDO) в среде CODESYS:
    в узле LeftSide на вкладке Конфигурация в параметре Режим включения дискретных выходов присвойте всем выходам значение TRUE.
    Это переключит их в режим Верхний и нижний ключ, в котором диагностика выходов отключена.

    2022-07-11_9-19-18 (1).png

    3. Отключите диагностику обычных дискретных выходов (DO) в среде CODESYS:
    в узле RightSide на вкладке Конфигурация в параметре Диагностика работы выходов и обрыва нагрузки присвойте всем выходам значение FALSE.

    2022-07-14_6-36-27.png

  8. #128
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,060

    По умолчанию VISU#31. Медленное применение настроек тренда в плагине визуализации 4.2.0.0

    Вопрос: используем CODESYS V3.5 SP17 Patch 3 с плагином визуализации 4.2.0.0.
    Для элемента Тренд настроено управление видимостью перьев и диапазоном по оси Y - оператор в визуализации выбирает конкретное перо, после чего оно становится видимым, все остальные перья скрываются и устанавливается подходящий диапазон по оси Y. Но применение этих настроек происходит только спустя 10...30 секунд после выбора пера. С чем может быть связана эта проблема?

    Ответ: в плагине визуализации 4.2.0.0 изменился механизм обновления трендов.
    Теперь на него влияет переменная VisuElems.VisuElemBase.Visu_Globals.g_VisuTrendWit hTimeSelectorUpdateBehaviour; ее значение по умолчанию - 100.
    (из-за особенностей нашего форума в имени переменной отображается лишний пробел)
    Перерисовка тренда происходит с периодом = (время элемента выбора интервала дат) / VisuElems.VisuElemBase.Visu_Globals.g_VisuTrendWit hTimeSelectorUpdateBehaviour.

    Вот так работает клиентский проект со значением этой переменной по умолчанию = 100:

    https://ftp.owen.ru/CoDeSys3/95_Inte...aviour_100.mp4

    А вот что будет, если присвоить ей значение 0 (не обязательно делать это циклически - достаточно присвоить переменной 0 в первом цикле контроллера):

    https://ftp.owen.ru/CoDeSys3/95_Inte...ehaviour_0.mp4

    При значении 0 обновление тренда происходит максимально быстро - как в прошлых версиях плагина визуализации.
    Соответственно, такое поведение приводит к увеличению нагрузки на контроллер.

  9. #129
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,060

    По умолчанию OTHER#13. Как определить, можно ли перепрошить ПЛК2xx на прошивку 2.4.xxxx.xxxx?

    Вопрос: В ReadMe для прошивки 2.4.xxxx.xxxx написано следующее:

    Для ПЛК210:
    Перепрошивка с версии 1.2.xxxx.xxxx / 1.3.xxxx.xxxx на версию 2.4.xxxx.xxxx поддерживается только для устройств, выпущенных начиная с июля 2020 года512 Мб flash-памяти).

    Для ПЛК200:
    Перепрошивка с версии 1.2.xxxx.xxxx / 1.3.xxxx.xxxx на версию 2.4.xxxx.xxxx поддерживается только для устройств, выпущенных начиная с марта 2021 года512 Мб flash-памяти).
    Как определить дату производства ПЛК и объем его flash-памяти?

    Ответ: дату производства ПЛК можно определить по заводскому номеру.
    В его 7-8 разрядах указан год производства прибора, а в 9-10 - месяц.
    Пример заводского номера: 103026210832371658
    Этот ПЛК произведен в августе 2021 года (08.21).

    Но лучше ориентироваться на объем flash-памяти.
    Перезагрузите ПЛК, откройте web-конфигуратор, перейдите на вкладку Состояние/Журналы и выполните поиск по слову nand.
    В выводе отобразятся сообщения, в которых указан объем flash-памяти контроллера.

    2022-06-30_6-31-45.png

  10. #130
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,060

    По умолчанию PRG#38. Как использовать блок ПИД для управления охладителем?

    Вопрос: есть проект, в котором используется ФБ PID из библиотеки Util.
    Выход данного регулятора предназначен для управления нагревателем.
    Подскажите, что нужно сделать, если требуется управлять охладителем?

    Ответ: умножьте коэффициент пропорциональности (значение на входе KP регулятора) на -1.

    2022-09-20_14-13-30.png

Страница 13 из 15 ПерваяПервая ... 31112131415 ПоследняяПоследняя

Похожие темы

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

Ваши права

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