Оглавление
API системы OpenSCADA 1
Введение 4
1. Внутренняя структура, API системы OpenSCADA. 5
2. Общая структура системы. Модульность (TSubSYS, TModule) 6
2.1. Корневой объект системы (TSYS) 7
2.2. Объект сообщений системы (TMess) 10
2.3. Объект подсистемы (TSubSYS) 11
2.4. Объект модуля (TModule) 11
3. Подсистема “Базы Данных” (TBDS) 13
3.1. Объект подсистемы «Базы Данных» (TBDS) 14
3.2. Модульный объект типов баз данных (TTipBD) 15
3.3. Объект базы данных (TBD) 15
3.4. Объект таблицы (TTable) 16
4. Подсистема “Сбор данных” (TDAQS) 17
4.1. Объект подсистемы «Сбор данных» (TDAQS) 18
4.2. Модульный объект типа контроллера (TTipDAQ) 18
4.3. Объект контроллера (TController) 19
4.4. Объект типа параметров (TTipParam) 19
4.5. Объект параметра физического уровня (TParamContr) 20
4.6. Объект значения (TValue) 20
4.7. Объект атрибута (TVal). 21
4.8. Объект библиотеки шаблонов парметров подсистемы “DAQ” (TPrmTmplLib) 22
4.9. Объект шаблона парметров подсистемы “DAQ” (TPrmTempl) 22
5. Подсистема “Архивы” (TArchiveS) 23
5.1. Объект подсистемы «Архивы» (TArchiveS) 24
5.2. Объект архива значений (TVArchive) 25
5.3. Объект буфера значений (TValBuf) 26
5.4. Модульный объект типа архиватора (TTipArchivator) 27
5.5. Объект архиватора сообщений (TMArchivator) 28
5.6. Объект архиватора значений (TVArchivator) 29
5.7. Объект элемента архива в архиваторе (TVArchEl) 30
6. Подсистема «Транспорты» (TTransportS) 31
6.1. Объект подсистемы «Транспорты» (TTransportS) 31
6.2. Модульный объект типа транспортов (TTipTransport) 32
6.3. Объект входящих транспортов (TTransportIn) 32
6.4. Объект исходящих транспортов (TTransportOut) 33
7. Подсистема “Протоколы коммуникационных интерфейсов” (TProtocolS) 34
7.1. Объект подсистемы «Протоколы коммуникационных интерфейсов» (TProtocolS) 34
7.2. Модульный объект протокола (TProtocol) 34
7.3. Объект сеанса входящего протокола (TProtocolIn) 34
8. Подсистема “Пользовательские интерфейсы” (TUIS) 35
8.1. Объект подсистемы «Пользовательские интерфейсы» (TUIS) 35
8.2. Модульный объект пользовательского интерфейса (TUI) 35
9. Подсистема “Специальные” (TSpecialS) 36
9.1. Объект подсистемы «Специальные» (TSpecialS) 36
9.2. Модульный объект специальных (TSpecial) 36
10. Подсистема “Безопасность” (TSeсurity) 37
10.1. Объект подсистемы «Безопасность» (TSeсurity) 37
10.2. Объект пользователя (TUser) 37
10.3. Объект группы пользователей (TGroup) 38
11. Подсистема “Управление модулями” (TModSchedul) 39
11.1. Объект подсистемы «Управление модулями» (TModSchedul) 39
12. Компоненты объектной модели системы OpenSCADA 40
12.1. Объект функции (TFunction) 41
12.2. Объект параметра функции (IO) 42
12.3. Объект значения функции (TValFunc). 43
13. Данные в системе OpenSCADA и их хранение в БД (TConfig) 44
13.1. Объект данных (TConfig) 44
13.2. Ячейка данных (TCfg) 44
13.3. Объект структуры данных (TElem) 45
13.4. Ячейка структуры данных (TFld) 46
13.5. Объект упреждения про смену структуры (TValElem) 47
13.6. Ячейка данных (TVariant) 48
14. Интерфейс управления системой и динамическое дерево объектов системы (TCntrNode) 49
14.1. Синтаксис запроса и ответа интерфейса управления 51
14.2. Тег описания групп дочерних веток страницы 51
14.3. Информационные теги интерфейса управления системой 51
14.3.1. Тег области
51
14.3.2. Теги данных 52
a) Тег
52
b) Тег 53
c) Тег 53
d) Тег
55
e) Команды с параметрами. Тег 55
f) Ветки (дочерние узлы) 55
14.4. Иерархические зависимости элементов языка управления 55
14.5. Объект узла динамического дерева (TCntrNode) 58
15. XML в системе OpenSCADA (XMLNode) 61
15.1. XML-тег (XMLNode) 61
16. Ресурсы в системе OpenSCADA (Res, ResAlloc, AutoHD) 63
16.1. Объект ресурса (Res) 63
16.2. Объект ресурса (ResAlloc) 63
16.3. Шаблон (AutoHD) 63
16.4. Объект строки с доступом разделённым ресурсом (ResString) 64
17. Организация и структура базы данных компонентов системы 65
17.1. Системные таблицы 65
17.2. Таблицы подсистемы «Сбор данных» 65
17.3. Таблицы подсистемы “Транспорты” 66
17.4. Таблицы подсистемы “Архивы” 66
17.5. Таблицы подсистемы “Безопасность” 67
17.6. Структура баз данных модулей 67
18. Сервисные функции интерфейса управления OpenSCADA 68
18.1. Групповой доступ к значениям атрибутов параметров подсистемы «Сбор данных», а также к детальной информации 68
18.2. Доступ к архивным данным архивов сообщений 68
18.3. Доступ к архивным данным архивов значений 69
19. API модулей модульных подсистем 71
20. Отладка и тестирование проекта OpenSCADA 75
21. Правила оформления и комментирования исходных текстов OpenSCADA и его модулей 76
22. Условные обозначения по тексту и в исходниках 77
Введение
Данный документ представляет собой описание интерфейса программирования приложения (API) системы OpenSCADA.
OpenSCADA это проект открытой SCADA-системы построенной по модульному принципу. В документе содержится исчерпывающее описание внутренней архитектуры системы OpenSCADA. Кроме информации об архитектуры предоставляются справочные данные по методам и атрибутам объектов системы.
Документ предназначен для программистов желающих разобраться в архитектуре OpenSCADA и разрабатывать расширения для неё. Документ не предназначен для пользователей и интеграторов OpenSCADA!
Для понимания документа требуется знание концепции Объектно Ориентированного Программирования (ООП) и универсального языка моделирования программного обеспечения (UML), а для возможности изучения исходного кода проекта требуется знание языка программирования C++. Кроме того, в документе содержится упоминание о технологиях: реляционные БД, XML.
^
С целью наглядного и доступного восприятия архитектуры системы OpenSCADA в целом на рис.1. изображена статическая диаграмма классов системы OpenSCADA на универсальном языке моделирования (UML). Исходя из диаграммы видно, что система OpenSCADA содержит модульные подсистемы: «Архивы», «Базы данных», «Транспорты», «Транспортные протоколы», «Пользовательские интерфейсы», «Сбор данных» и «Специальные», а также подсистемы: «Безопасность» и «Управление модулями». На диаграмме наглядно представлены взаимосвязи между модульными подсистемами и модулями соответствующих типов.
Рис. 1. Статическая диаграмма классов
^
Корнем, от которого строится вся система, является объект TSYS. Корень содержит подсистемы (TSubSYS). Подсистемы могут быть: обычными и модульными. Отличие модульных подсистем четко прослеживается на рис. 1. Так, модульные подсистемы обязательно содержат список модульных объектов (TModule), например подсистема архивы TArchiveS содержит модульные объекты TTipArchivator. В тоже время обычная подсистема таких объектов не содержит. Например подсистема безопасности TSeсurity (рис.2).
Рис. 2. Иерархическая структура системы OpenSCADA.
В процессе инициализации корня (TSYS) определяется глобальная переменная SYS. Переменная SYS может использоваться для прямого обращения к корню системы из любого её узла. Инициализация корня выполняется единожды из главной вызывающей функции. После запуска управление захватывается объектом системы до остановки. Корневой объект концентрирует все общесистемные функции системы OpenSCADA.
Продолжением корневого объекта (TSYS), выполняющего функции обслуживания потока системных сообщений, выступает объект TMess. Объект доступен посредством глобальной переменной Mess, которая инициализируется корнем системы. Объект содержит функции кодирования, декодирования и локализации сообщений.
В подсистемах (TSubSYS) реализуются функции характерные для каждой подсистемы индивидуально, с общим для всех подсистем доступом, через объект TSubSYS. Модульная подсистема имеет возможность расширять функциональность посредством модулей. Для этой цели модульная подсистема предоставляет доступ к модулям своего типа в виде модульных объектов.
Модуль – составная часть модульной подсистемы. В общем, для всех модулей и их подсистем, модуль предоставляет информацию о себе, своём происхождении и экспортируемых функциях. Отдельно взятый модуль реализует функциональность в соответствии со своими потребностями.
^