Объектная модель AgavaPLC/AgavaSCADA: различия между версиями

Материал из docs.kb-agava.ru
Перейти к навигации Перейти к поиску
Строка 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 Использование в дереве проекта узлов, унаследованных от базовых классов

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