Давайте! Спс.
Для начала пример с работы с созданием и применением класса. (структуру или запись не является классом).
Ссылка на таймер на форуме СТА:
http://forum.cta.ru/forum_posts.asp?TID=2327
Давайте! Спс.
Для начала пример с работы с созданием и применением класса. (структуру или запись не является классом).
Ссылка на таймер на форуме СТА:
http://forum.cta.ru/forum_posts.asp?TID=2327
А где, собственно, описание проблемы, с которой Вы столкнулись?
"Класс" в ООП = "Фунциональный Блок" в МЭК
Создайте необходимый Вам класс так: Контекстное меню Application -> Add object -> POU и выберите там "FB" и спецификаторы доступа.
Для использования объекта нужно создать экземпляр класса (в терминологии ООП).
В CODESYS это делается просто в секции объявления переменных напишите запись вида
где fb_myclassInst имя экземпляра класса (объекта),Код:fb_myclassInst : MYCLASS;
MYCLASS - имя класса.
Для вызова экземпляра класса без передачи параметров используйте запись вида
При необходимости передачи параметров можно использовать запись, принятую в других ЯПКод:fb_myclassInst();
либо запись, принятую в CODESYS:Код:fb_myclassInst.iInputVar1 := 100; fb_myclassInst(); iOutValue1 := fb_myclassInst.iOutVar1;
при таких вызовах выполняется код, записанный в теле функционального блока.Код:fb_myclassInst (iInputVar1 := 100, iOutVar1 => iOutValue1);
Если выполнять код циклически (в каждом цикле ПЛК) нет необходимости, и объект должен реализовывать только событийную логику (или событийную логику в дополнение к циклическому выполнению), используйте методы.
Добавить метод просто: контекстное меню ФБ -> Add object -> Method
Для вызова методов ФБ используйте запись вида
где firstMethod - имя методаКод:iResult := fb_myclassInst.firstMethod (100);
"Конструктор" в ООП: метод "fb_Init" в CODESYS
"Деструктор" в ООП: метод "fb_Exit" в CODESYS
Более подробно об этих методах написано в справке CODESYS.
Надеюсь ответил на все вопросы. Если нет - сформулируйте как можно более подробно оставшиеся - я постараюсь помочь.
Последний раз редактировалось Осинский Алексей; 26.07.2016 в 10:59.
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Раз уж тут про таймеры холиварят я тоже добавлю... У меня 31 объект. мне надо на каждом объекте 5 минут держать двигатель включенным 1 час выключенным, во время когда двигатель выключен поочередно должны включаться насосы 5 минут один потом 5 минут другой. так вот собственно мне городить 31 таймер на двигатель и 31 таймер на насосы. или можно какими-то функциями дропать текущее время плк и сравнивать разницу от уставки если больше чем уставка то выкл (т.е. каждый цикл дропаем время и если разница от начала запуска с текущим больше уставки то что то делаем). по времени реакции не принципиально если там буде погрешность в секунду две. Думаю выдержит ли плк 60+ таймеров или я что-то тоже не догнал в таймерах.
кода не прошу прошу совета.
Последний раз редактировалось Kostennikov; 29.07.2016 в 13:38.
Пытаюсь понять, т.к. компилятор подчеркивает трудно разобраться. Требуются подключить/заменить на новые библиотеки:
форум.gif
Сложно Вам будет. Думаю стоит все-таки последовательно подходить к разработке, раз нахрапом не получается.
Для начала ознакомьтесь с литературой Игоря Петрова: Руководство пользователя по программированию ПЛК в CoDeSys 2.3
В 3.5 по сути осталось то же самое, но расширился функционал и изменился интерфейс. Начните с этой книги, а потом добавляйте уже ООП и прочее.
То, что Вы наблюдаете - указание того, что есть более новые версии библиотек (компилятора и т.д.). В большинстве случаев не стоит их изменять.
Последний раз редактировалось Осинский Алексей; 01.08.2016 в 13:45.
Игоря Петрова: Руководство пользователя по программированию ПЛК в CoDeSys 2.3 эту книгу я конечно же читал и знаю.
Вот в проекте tcp304toPC.project (capzap) присутствует создание/ уничтожение объекта. Правда я до конца еще не разобрался в коде. Но считаю, что нужно стремиться к такой записи кода.
В Codesys Функциональный блок можно ли уничтожить и освободить память? Смотрю коды других они используют конструкцию if then,чтобы вывести из работы ФБ. А можно ли вместо этого уничтожить объект, а потом создать?
А лучше пример работы с классом/объектами и динамическом выделением памяти.