Это все конечно вы правильно говорите оба :-) но ООП в CS такое какое есть. Возможно доработают лет через 5 :-) Тут меня больше интересует использование того что есть сейчас.
Это все конечно вы правильно говорите оба :-) но ООП в CS такое какое есть. Возможно доработают лет через 5 :-) Тут меня больше интересует использование того что есть сейчас.
где то в специфических объеках можно применить и ООП, например разные технологические операции, совершают одинаковые действия с температурой,а вот клапана могут открыватся в зависимости от задачи, вот тут легче иметь общий класс для работы с пидом, а методы управления клапанами в расширяемых классах, но утверждать что это ускорит существенно разработку проекта я бы всёравно не стал
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Если бы я текущий проект в третьем кодесисе делал, то симулятор установки и настоящую установку под одним интерфейсом обобщил бы может быть (симулятор цепляется на отдельный COM-порт ПЛК, а настоящая установка — через железные входы-выходы). Других поводов применить ООП на ПЛК за 3,5 года работы на предприятии не припомню.
Есть, оказывается, такая тема на форуме. Аж 2015 года
Короче пытаюсь разобраться.
1. Есть два насоса - один основной, второй резервный.
2. Есть интерфейс itfPump, в котором есть методы Start, Stop и разные свойства (готовность, в работе, превышение давления, сухой ход и т.д).
3. Создан ФБ classSupplyPump, который реализует этот этот интерфейс.
4. Созданы два экземпляра данного ФБ (по кол-ву насосов).
Теперь я создал ФБ, в который хочу передаю экземпляр нужного мне насоса (который сейчас выбран основным) и оперирую его методами.
Собственно вопрос. В чем будет разница между такими определениями входных переменных:
Вариант 1
На входе указываем объект, унаследованный от интерфейса
Вариант 2Код:FUNCTION_BLOCK FB_PUMP VAR_INPUT refPump: itfPump; END_VAR VAR_OUTPUT END_VAR VAR END_VAR
На входе указываем ссылку на ФБ
Код:FUNCTION_BLOCK FB_PUMP VAR_INPUT refPump: REFERENCE TO classSupplyPump; END_VAR VAR_OUTPUT END_VAR VAR END_VAR
Работает вроде и так и так. Но чую в чем-то все-таки есть разница, опыта пока не хватает понять в чем.
https://content.helpme-codesys.com/e...interface.html
"A variable of the interface type (itfPump) is a reference to instances of function blocks (classSupplyPump)"
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk