Страница 5 из 8 ПерваяПервая ... 34567 ... ПоследняяПоследняя
Показано с 41 по 50 из 80

Тема: Функциональный блок таймер с задержкой включения TON (TOF, TP)

  1. #41

    По умолчанию

    Давайте! Спс.
    Для начала пример с работы с созданием и применением класса. (структуру или запись не является классом).
    Ссылка на таймер на форуме СТА:
    http://forum.cta.ru/forum_posts.asp?TID=2327

  2. #42

    По умолчанию

    Цитата Сообщение от Faton Посмотреть сообщение
    Давайте! Спс.
    Для начала пример с работы с созданием и применением класса. (структуру или запись не является классом).
    Ссылка на таймер на форуме СТА:
    http://forum.cta.ru/forum_posts.asp?TID=2327
    А где, собственно, описание проблемы, с которой Вы столкнулись?
    "Класс" в ООП = "Фунциональный Блок" в МЭК
    Создайте необходимый Вам класс так: Контекстное меню Application -> Add object -> POU и выберите там "FB" и спецификаторы доступа.

    Для использования объекта нужно создать экземпляр класса (в терминологии ООП).
    В CODESYS это делается просто в секции объявления переменных напишите запись вида
    Код:
     fb_myclassInst : MYCLASS;
    где fb_myclassInst имя экземпляра класса (объекта),
    MYCLASS - имя класса.

    Для вызова экземпляра класса без передачи параметров используйте запись вида
    Код:
    fb_myclassInst();
    При необходимости передачи параметров можно использовать запись, принятую в других ЯП
    Код:
    fb_myclassInst.iInputVar1 := 100;
    fb_myclassInst();
    iOutValue1 := fb_myclassInst.iOutVar1;
    либо запись, принятую в CODESYS:
    Код:
     fb_myclassInst (iInputVar1 := 100, iOutVar1 => iOutValue1);
    при таких вызовах выполняется код, записанный в теле функционального блока.
    Если выполнять код циклически (в каждом цикле ПЛК) нет необходимости, и объект должен реализовывать только событийную логику (или событийную логику в дополнение к циклическому выполнению), используйте методы.

    Добавить метод просто: контекстное меню ФБ -> Add object -> Method

    Для вызова методов ФБ используйте запись вида

    Код:
     iResult := fb_myclassInst.firstMethod (100);
    где firstMethod - имя метода


    "Конструктор" в ООП: метод "fb_Init" в CODESYS
    "Деструктор" в ООП: метод "fb_Exit" в CODESYS
    Более подробно об этих методах написано в справке CODESYS.

    Надеюсь ответил на все вопросы. Если нет - сформулируйте как можно более подробно оставшиеся - я постараюсь помочь.
    Последний раз редактировалось Осинский Алексей; 26.07.2016 в 10:59.

  3. #43

    По умолчанию

    Спасибо за оперативный ответ.
    Цитата Сообщение от Осинский Алексей Посмотреть сообщение
    Для использования объекта нужно создать экземпляр класса (в терминологии ООП).
    В CODESYS это делается просто в секции объявления переменных напишите запись вида
    Код:
     fb_myclassInst : MYCLASS;
    Где эта секция? В ассистенте ввода нет типа MYCLASS. Вручную попробовал вставить конструкцию в разных местах "fb_myclassInst : MYCLASS;" компилятор ругается.

  4. #44
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от Faton Посмотреть сообщение
    Спасибо за оперативный ответ.

    Где эта секция? В ассистенте ввода нет типа MYCLASS. Вручную попробовал вставить конструкцию в разных местах "fb_myclassInst : MYCLASS;" компилятор ругается.
    это не секция, MYCLASS это то как Вы назовете свое ПОУ

    не думаю что сильно поможет ООП, выкладываю проект, где пытался что то подобное начать использовать, может быть не рабочая версия, взял первое что попалось
    Вложения Вложения
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #45
    Пользователь
    Регистрация
    02.03.2015
    Адрес
    г. Алексеевка
    Сообщений
    64

    По умолчанию

    Раз уж тут про таймеры холиварят я тоже добавлю... У меня 31 объект. мне надо на каждом объекте 5 минут держать двигатель включенным 1 час выключенным, во время когда двигатель выключен поочередно должны включаться насосы 5 минут один потом 5 минут другой. так вот собственно мне городить 31 таймер на двигатель и 31 таймер на насосы. или можно какими-то функциями дропать текущее время плк и сравнивать разницу от уставки если больше чем уставка то выкл (т.е. каждый цикл дропаем время и если разница от начала запуска с текущим больше уставки то что то делаем). по времени реакции не принципиально если там буде погрешность в секунду две. Думаю выдержит ли плк 60+ таймеров или я что-то тоже не догнал в таймерах.

    кода не прошу прошу совета.
    Последний раз редактировалось Kostennikov; 29.07.2016 в 13:38.

  6. #46
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от Kostennikov Посмотреть сообщение
    Раз уж тут про таймеры холиварят я тоже добавлю... У меня 31 объект. мне надо на каждом объекте 5 минут держать двигатель включенным 1 час выключенным, во время когда двигатель выключен поочередно должны включаться насосы 5 минут один потом 5 минут другой. так вот собственно мне городить 31 таймер на двигатель и 31 таймер на насосы. или можно какими-то функциями дропать текущее время плк и сравнивать разницу от уставки если больше чем уставка то выкл (т.е. каждый цикл дропаем время и если разница от начала запуска с текущим больше уставки то что то делаем). по времени реакции не принципиально если там буде погрешность в секунду две. Думаю выдержит ли плк 60+ таймеров или я что-то тоже не догнал в таймерах.

    кода не прошу прошу совета.
    особо большой разницы нет, один таймер будет или несколько
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  7. #47
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,318

    По умолчанию

    Цитата Сообщение от Kostennikov Посмотреть сообщение
    Думаю выдержит ли плк 60+ таймеров или я что-то тоже не догнал в таймерах.
    Не догнали. Выдержит где-то 100 тысяч таймеров. Дальше думаю просто памяти не хватит.

  8. #48

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    это не секция, MYCLASS это то как Вы назовете свое ПОУ

    не думаю что сильно поможет ООП, выкладываю проект, где пытался что то подобное начать использовать, может быть не рабочая версия, взял первое что попалось
    Пытаюсь понять, т.к. компилятор подчеркивает трудно разобраться. Требуются подключить/заменить на новые библиотеки:
    форум.gif

  9. #49

    По умолчанию

    Цитата Сообщение от Faton Посмотреть сообщение
    Пытаюсь понять, т.к. компилятор подчеркивает трудно разобраться. Требуются подключить/заменить на новые библиотеки:
    форум.gif
    Сложно Вам будет. Думаю стоит все-таки последовательно подходить к разработке, раз нахрапом не получается.
    Для начала ознакомьтесь с литературой Игоря Петрова: Руководство пользователя по программированию ПЛК в CoDeSys 2.3
    В 3.5 по сути осталось то же самое, но расширился функционал и изменился интерфейс. Начните с этой книги, а потом добавляйте уже ООП и прочее.

    То, что Вы наблюдаете - указание того, что есть более новые версии библиотек (компилятора и т.д.). В большинстве случаев не стоит их изменять.
    Последний раз редактировалось Осинский Алексей; 01.08.2016 в 13:45.

  10. #50

    По умолчанию

    Игоря Петрова: Руководство пользователя по программированию ПЛК в CoDeSys 2.3 эту книгу я конечно же читал и знаю.

    Вот в проекте tcp304toPC.project (capzap) присутствует создание/ уничтожение объекта. Правда я до конца еще не разобрался в коде. Но считаю, что нужно стремиться к такой записи кода.
    В Codesys Функциональный блок можно ли уничтожить и освободить память? Смотрю коды других они используют конструкцию if then,чтобы вывести из работы ФБ. А можно ли вместо этого уничтожить объект, а потом создать?
    А лучше пример работы с классом/объектами и динамическом выделением памяти.

Страница 5 из 8 ПерваяПервая ... 34567 ... ПоследняяПоследняя

Похожие темы

  1. Функциональный блок PID
    от Hemann в разделе Программируемые реле
    Ответов: 78
    Последнее сообщение: 04.05.2017, 08:57
  2. LD + функциональный блок
    от дрю в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 26.04.2014, 09:47
  3. Функциональный блок для МЭ110-224.1М
    от rustam_m в разделе ПЛК3хх
    Ответов: 10
    Последнее сообщение: 10.03.2013, 20:07
  4. Пользовательский функциональный блок
    от fill-forty в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 17.08.2009, 09:49

Ваши права

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