Добрый вечер!
Подскажите, где есть по ООП на codesys почитать? И про архитектуру среды исполнения. В документации, которая на сайте мало про это, можно сказать ничего. По крайней мере я не смог найти...
желательно на русском языке
Добрый вечер!
Подскажите, где есть по ООП на codesys почитать? И про архитектуру среды исполнения. В документации, которая на сайте мало про это, можно сказать ничего. По крайней мере я не смог найти...
желательно на русском языке
А зачем тебе ООП-то тут? Не надо его сюда, там же всё отлично через FB делается.
Хочешь я тебе вот проект скину на посмотреть? ))
На русском по этим темам фактически ничего нет.
1. Лучшая (и, собственно, единственная мне известная) книга про реализацию ООП в контексте МЭК 61131-3 - это Michael Braun, Wolfgang Horn.
Object-Oriented Programming with SIMOTION. Fundamentals, Program Examples and Software Concepts According to IEC 61131-3
Она, конечно, не про CODESYS - но так как и SIMOTION, и CODESYS базируются на МЭК 61131-3 - то отличий не очень много.
2. Эта документация предоставляется только производителям оборудования и обычно не выкладывается в свободный доступ. Но если погуглить "codesys control win v3 manual" - то кое-что найти можно.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Скидывай, посмотрю.
А вообще мне надо ООП, т.к. хочу, чтоб в моем арсенале были все инструменты. Тем более используя ООП можно более красиво и гибко решить некоторые задачи, обычно это так. Но и не только это, он мне ближе в плане понимания, видимо сказывается предыдущий опыт
Вот, например, есть у меня въездные ворота на участок. Как сущность они имеют следующие управляющие входы:
- Enabled (вкл/выкл - выход ПЛК),
- ButtonEnabled (уличная кнопка для управления - вкл/выкл - выход ПЛК),
- Open (команда открыть - выход ПЛК),
- Close (команда закрыть - выход ПЛК);
и следующие выходы:
- isOpen (ворота открыты - вход ПЛК),
- isClosed (ворота закрыты - вход ПЛК),
- Opening (оба входа ПЛК false, был true isClosed),
- Closing (оба входа ПЛК false, был true isOpen).
На ООП я бы создал класс со следующими полями: Enabled, ButtonEnabled, isOpen (readonly), isClosed (readonly), методами: Open и Close и событиями: OnOpening, OnClosing, OnOpen, OnClose, а в вызове конструктора передал бы адреса портов ПЛК. И все, "черный ящик" готов.
Ну, думаю, я и ФБ так создам, накидал выходы: Enabled, ButtonEnabled, Open, Close и выходы: isOpen, isClosed, Opening, Closing и тут понял, что порты ПЛК я никак не завязываю внутри блока и черный ящик не получается. Посмотрел, вроде действительно внутри блока обратиться к портам нельзя (я не нашел как). Можно добавить в ФБ еще 4 входа, для портов ПЛК, тогда более менее что-то получается, но все равно не выходит черного ящика, да и не красиво это....
Может быть я просто еще не научился думать в парадигме ФБ и что-то делаю не так?
Последний раз редактировалось turkish945; 27.04.2020 в 18:44.
Или исключить из арсенала ПЛК1хх 😁
На самом деле ООП на больших проектах выручает. У меня прямо сейчас создается система где 3 частотника пчв, 3 instart и 3 упп. Много чего еще, но на примере этих - по сути это 3 насосные станции, они управляются все по modbus, команды и т.д. у всех разные. Но глобально логика общая работы. ООП в данном ключе отлично подходит.
Ну вам может и не нужен, а я в визуализации массивы из этих объектов использую и это очень удобно, что можно одну визуализацию для разных объектов создавать. Удобно то что массив именно один, а стуктуры в нем разные получаются. Полиморфизма тут конечно нет, вы можете не использовать