Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: ООП в CoDeSys 3.5

  1. #1

    По умолчанию ООП в CoDeSys 3.5

    Кто-нибудь уже начал использовать классы в CS? Интересно кто для чего использует, может кто-то даже кодом поделится. А то пока на форумах можно найти только "ООП в контроллерах не нужно, ФБ наше все". Интересно собственно дает ли это какие-то плюсы по гибкости кода или не стоит заморачиваться?

  2. #2
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    ООП в контроллерах не нужно, ФБ наше все
    Ну а как же? ООП нужно там, где:
    • много объектов для обобщения;
    • есть вероятность замены этих объектов на структурно отличающиеся, но похожие (либо тип объектов заранее неизвестен)
    • объекты структурно сложные.

    Без этого получается ООП ради ООП — лишний код, создающий иррелевантную структуру и видимость упорядоченности.

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

  3. #3

    По умолчанию

    Я например рассматриваю ООП как мощный инструмент для написания библиотек пока. Учитывая сложность это получится только для себя конечно. Но мне кажется это будет удобно. Например сейчас думаю написать класс обработки входов с аналоговых датчиков. У меня уже все это есть в структурном виде, но я уже вижу что неудобно копировать весь ФБ ради изменения в нем одной строки. Возможно кто-то еще идеи для развития подкинет :-)

  4. #4

    По умолчанию

    Повторяю - ООП нужно только ради полиморфизма. Где полиморфизм в вашем классе?

  5. #5

    По умолчанию

    Ну как же - коды ошибок у всех типов датчиков одинаковые, а вот пересчет в физические величины разные. Плюс к тому у меня еще "правильное округление" для INT есть для всех типов датчиков.
    P.S. Я еще не написал этот класс, пока только говорю, что он вероятно имеет место быть для опробирования ООП в CS.

  6. #6

    По умолчанию

    А тогда смысл реализовывать это через ООП? Разбейте существующий ФБ на несколько. Для ООП Вы будете делать ровно этоже.

  7. #7

    По умолчанию

    Все верно, но в конечном счете года через 2 года когда мне придется вернуться к старому проекту то я гораздо быстрее отыщу что изменилось в каком-то экзотичном датчике относительно стандартного 4..20 например. Мне так кажется пока.
    Надо попробовать. Я сам пока до конца не понимаю нафига в CS ООП, вот и решил попробовать. Для этого и тему эту открыл, думал кто-то уже понял ЗАЧЕМ... :-)

  8. #8
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Возможно кто-то еще идеи для развития подкинет :-)
    Выкладывайте, не стесняйтесь. Подумаем. Как мне лично видится, для пересчёта редко требуется поддержка сложных состояний, и я такие вещи делаю одной-двумя функциями с кейсом.
    Последний раз редактировалось Yegor; 09.02.2015 в 11:45.

  9. #9

    По умолчанию

    Цитата Сообщение от RV9WFJ Посмотреть сообщение
    Я сам пока до конца не понимаю нафига в CS ООП, вот и решил попробовать. Для этого и тему эту открыл, думал кто-то уже понял ЗАЧЕМ... :-)
    Вот когда в программе появиться что то типа:
    PPlant^.Work
    Именно через указатель - тогда это будет правильное использование ООП. Но работа с указателями, как и динамическая память - это поперек идеологии МЭК программирования.

  10. #10
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Но работа с указателями, как и динамическая память - это поперек идеологии МЭК программирования.
    Однократные вызовы вообще поперёк циклического исполнения (лучше стабильно вызываемый код, который не меняет состояние, чем куча ветвлений). А значит и конструирование объектов в рантайме. И если все объекты должны быть известны статически, то отпадает жирный такой пласт паттернов. Куцое какое-то ООП выходит.
    Именно через указатель
    Тут не соглашусь. Обращение через ссылку PPlant.Work семантически эквивалентно.
    Последний раз редактировалось Yegor; 09.02.2015 в 12:15.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. ООП в CODeSys_v3
    от kao в разделе СПК2хх
    Ответов: 6
    Последнее сообщение: 06.02.2014, 21:06

Ваши права

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