Объектная модель AgavaPLC/AgavaSCADA: различия между версиями
Строка 58: | Строка 58: | ||
=== Взаимодействие с узлами проекта. === | === Взаимодействие с узлами проекта. === | ||
В функции, программы и методы можно передавать ссылки и указатели на узлы проекта и вызывать методы, определенные в узлах. | В функции, программы и методы можно передавать ссылки и указатели на узлы проекта и вызывать методы, определенные в узлах. | ||
+ | |||
+ | === Описание свойств, полей и методов базовых классов === | ||
==== BasicNode ==== | ==== BasicNode ==== | ||
Строка 116: | Строка 118: | ||
void BasicWindow::Show() | void BasicWindow::Show() | ||
void BasicWindow::Hide() | void BasicWindow::Hide() | ||
+ | |||
+ | === Использование в дереве проекта узлов, унаследованных от базовых классов === | ||
+ | При создании в программе собственного класса основанного на переопределении имеющихся базовых появляется возможность использования экземпляров этого класса в дереве проекта. При этом логика работы экземпляра такого класса определяется реализацией его собственных методов, а не методов базового класса. |
Версия 11:27, 5 марта 2024
1 Введение
Данный документ описывает объектную модель AgavaSCADA/AgavaPLC версии 1.5 и старше (новее).
2 Узлы
2.1 Приложение
Узел для организации алгоритмов.
Позволяет хранить внутри себя алгоритмы и структуры, а также узлы (окна, формы, регистры и т. д.).
2.1.1 Типы вложенных узлов
- Класс (С++).
- Структура (С++).
- Функция (С++).
- Программа (С++).
2.1.2 Класс
Класс – это основополагающая сущность объектно-ориентированного программирования.
Узлы типа «Класс» позволяют реализовывать создание объектов определённого типа, описывая их структуру (набор полей и их начальное состояние) и определять алгоритмы (функции или методы) для работы с этими объектами.
Класс можно использовать для объявления экземпляров в функции, программе или методе другого класса. Возможно объявление экземпляров класса в дереве проекта и доступ к его полям, методам и свойствам из программ и функций.
Аналог класса в Codesys – функциональный блок.
2.1.2.1 Вложенные узлы
- Метод.
- Свойство. Специальный метод, предоставляющий доступ к полям через функции-сеттеры/геттеры.
- Действие. Специальный метод, доступный для использования в проекте как другие узлы типа "Действие".
2.1.3 Структура
Структура – композитный тип данных, инкапсулирующий без сокрытия набор значений различных типов.
Структуру можно использовать для объявления в функции, процедуре и классе. Возможно объявление экземпляров структуры в дереве проекта и доступ к ее полям из программ и функций..
2.1.4 Функция
Функция – фрагмент программного алгоритма, к которому можно обратиться из другого алгоритма - программы, метода или функции.
Функцию можно использовать для вызова в другой функции, процедуре или методах класса.
2.1.5 Программа
Программа – новый элемент объектной модели, отсутствующий в языке С++. Наиболее близок к функции, имеет возможность объявления внутренних объектов (аналог блока VAR), которые сохраняют свое значение при циклическом выполнении алгоритма. Позволяет задавать входные переменные (аналог блока VAR_IN). В программе возможно использование всех декларативных типов узлов (функций, структур и классов). Аналог в Codesys – программа. Возможно добавление дополнительных вложенных функций, не доступных вне процедуры.
3 Наследование
3.1 Иерархия классов/объектов/узлов
- BasicNode – базовый класс узла.
- BasicSource – базовый класс узла-источника.
- BasicSignal – базовый класс узла-сигнала.
- BasicWindow – базовый класс узла-окна.
- BasicWidget – базовый класс узла-виждета.
и т.д.
3.2 Взаимодействие с узлами проекта.
В функции, программы и методы можно передавать ссылки и указатели на узлы проекта и вызывать методы, определенные в узлах.
3.3 Описание свойств, полей и методов базовых классов
3.3.1 BasicNode
Предок: нет.
3.3.1.1 Методы
string BasicNode::GetName() string BasicNode::GetShortName() string BasicNode::GetDescription()
void BasicNode::SetName(string name) void BasicNode::SetShortName(string shortname) void BasicNode::SetDescription(string description)
string BasicNode::GetPath()
void BasicNode::Start() void BasicNode::Stop()
3.3.2 SignalValue
Предок: нет.
3.3.2.1 Методы
string SignalValue::ToString() double SignalValue::ToDouble() int SignalValue::ToInt()
void SignalValue::SetValue(string& value) void SignalValue::SetValue(int value) void SignalValue::SetValue(double value)
3.3.3 BasicSource
Предок: BasicNode.
3.3.3.1 Методы
SignalValue BasicSource::GetValue() int BasicSource::SetValue(SignalValue sv) int BasicSource::UpdateValue(SignalValue sv)
3.3.4 ModbusRegister
Предок: BasicSource.
3.3.4.1 Поля
uint8 m_ucDeviceNo ///< Номер устройства uint8 m_ucReadFunctionNo ///< Номер функции чтения uint16 m_wReadRegisterNo ///< Номер регистра чтения uint8 m_ucWriteFunctionNo ///< Номер функции записи uint16 m_wWriteRegisterNo ///< Номер регистра записи uint8 m_ucSize ///< Размер регистра в битах uint8 m_ucPriority ///< Приоритет. 0 - максимальный. Не используется.
3.3.4.2 Методы
int BasicSource::WriteValue(SignalValue sv)
3.3.5 BasicWindow
3.3.5.1 Методы
void BasicWindow::Show() void BasicWindow::Hide()
3.4 Использование в дереве проекта узлов, унаследованных от базовых классов
При создании в программе собственного класса основанного на переопределении имеющихся базовых появляется возможность использования экземпляров этого класса в дереве проекта. При этом логика работы экземпляра такого класса определяется реализацией его собственных методов, а не методов базового класса.