PDA

Просмотр полной версии : Тиражирование и объектный подход в CoDeSys



spdif123
06.04.2017, 09:52
Добрый день.
1)Долгое время работали в MasterScada, в которой легко было реализовывать объектный поход при разработке проектов АСУТП.
Объектный реализация проекта заключалась в:
-В оборудовании выделялись системы управления (система нагрева,водяная система, система газонапуска и т.д.)
-Для каждого объекта определялись списки внешних переменных ( входы/выходы для макрокоманд от главного объекта )
-Далее каждый специалист разрабатывал объект(модуль) управления той или иной системой.
-Готовые объекты (модули) вставлялись в конечный проект управления оборудованием через библиотеки. Внешние входы/выходы вставленного
в проект объекта связываются с главным объектом системы.
Такой подход позволяет легко добиться тиражирования объектов, организовать групповую работу над проектом и техническую поддержку.


2) Сейчас встала задача реализовать несколько проектов в CoDeSys. На мой взгляд есть несколько вариантов реализации подобной технологии(см.п.1) в CoDeSyS:
2.1.Библиотечные ФБ:
-Объект управления системой делается как визуальный ФБ (программная реализация через ST).
-После разработки - Объект(ФБ) помещается в библиотеку.
-В конечный проект из библиотеки вставляются нужные ФБ (объекты-системы) и визуальными связями связываются между собой и с главным объектом.

2.2. Папки
Этот вариант появился после просмотра демо проектов (в частности VisuDemoMobile.projectarchive) в которых специфичные функции разделяются по папкам.
Но как эти папки передавать в другой проект (без копировать/вставить) пока не решено.

2.3 Application composer (http://www.codesys.ru/docs/conf14/UC_2014_CODESYS_Application_Composer_en.pdf)
Концепция построения близка требуемой.

2.4. Интерфейсы
(пока не изучал)

Уважаемые знатоки CODeSys, подскажите как бы Вы реализовали такую задачу? В какую сторону надо "копать"?

murdemon
06.04.2017, 11:52
как вариант чтобы каждая подзадача работала в своем Таске и имела описаный интерфейс за который другие таски могли бы дергать. (тут не чего нового не придумать) а в Modbus маппить как раз - это стандартный описаны интерфейс и все

Осинский Алексей
07.04.2017, 09:00
Добрый день!
Объектный подход в CODESYS v3 возможен благодаря
"классам" - функциональным блокам (позволяет разбить программу на составляющие);
методам функциональных блоков (в ООП - метод класса), которые позволяют реализовать т.н. событийный подход к программированию и разграничить доступ к переменным класса;
интерфейсам (в ООП - интерфейсы) их использование позволяет в полной мере использовать полиморфизм т.е. работать с объектами разных классов сходным образом.

В общих чертах ознакомиться с принципами можно по ссылке: http://www.intuit.ru/studies/courses/16/16/lecture/27107?page=1
ООП В CODESYS (английский язык) во вложении.


Папки позволяют только объединить POU проекта по логическому смыслу, и не помогают избежать копирования кода.

Application Composer - инструмент платный, но действительно должен подойти Вам.
Единожды разработав библиотеку Вы сможете "собирать конструктор" из ее компонентов простым и удобным способом.


От выделения каждой подзадачи в отдельную задачу TaskManager'a я бы воздержался т.к. в CODESYS v3 используется вытесняющая многозадачность и могут возникнуть конфликтные ситуации при взаимодействии между ними.
Но их можно избежать используя т.н. синхронизацию (в CODESYS осуществляется при помощи функционала библиотеки SysSem).

vniko
10.04.2017, 13:59
spdif123, Ваш вариант 2.2 Папки - как бы совсем не вариант. Никакого программного смысла Папка не несет, просто позволяет объединить часть POU проекта в одном месте для удобства работы.
Как вариант могу предложить использовать массив Функциональных Блоков (FB) и работать с экземплярами FB.
http://www.owen.ru/forum/showthread.php?t=22549&p=188294&viewfull=1#post188294
По Визуализации - вот здесь пример от Евгения Кислова:
http://www.owen.ru/forum/showthread.php?t=22038&p=243083&viewfull=1#post243083