From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Modules/SelfSystem and the translation is 100% complete.

Other languages:
English • ‎mRussian • ‎Українська
Модуль Ім'я Версія Ліцензія Джерело Мови Платформи Тип Автор Опис
SelfSystem Власний протокол OpenSCADA 2.0 GPL2 prot_SelfSystem.so en,uk,ru,de x86,x86_64,ARM Протокол Роман Савоченко Надає власний протокол OpenSCADA заснований на XML та інтерфейсі керування OpenSCADA.

Модуль призначено для віддзеркалення інтерфейсу управління OpenSCADA у мережу, з метою надання можливості зовнішнім системам взаємодіяти із OpenSCADA, а також для взаємодії між собою станцій, побудованих на основі OpenSCADA.

Першим досвідом використання функцій цього модуля стала підтримка можливості віддаленої конфігурації однієї OpenSCADA станції з іншою, через мережу та посередництвом модуля конфігурації QTCfg.

1 Синтаксис протоколу

Протокол побудовано за методом "Запит-Відповідь". Запити та їх структура наведені у наступній Таблиці.

Структура запиту.
Запити

REQ: "SES_OPEN {user} {password}\n"
REZ OK: "REZ 0 {ses_id}\n"
REZ ERR: "REZ 1 Error authentication: wrong user or password.\n"
Запит на відкриття сеансу від ім'я користувача user з паролем password. У випадку успіху буде отримано ідентифікатор сесії, інакше — код та повідомлення про помилку.

REQ: "SES_CLOSE {ses_id}\n"
REZ: "REZ 0\n"
Закриття сеансу. Результат завжди вдалий.

REQ: "REQ {ses_id} {req_size}\n{command of the control interface}"
REQ: "REQDIR {user} {password} {req_size}\n{command of the control interface}"
REZ OK: "REZ 0 {rez_size}\n{result of the command of the control interface}"
REZ ERR: "REZ 1 Error authentication: session is not valid.\n"
REZ ERR: "REZ 2 {error of the control interface}"
Основні запити — сеансовий та прямий. Реалізуються шляхом відправлення стандартної команди Інтерфейсу Керування OpenSCADA у полі command of the control interface. У результаті буде отримано відповідь Інтерфейсу Управління result of the command of the control interface або одна з помилок.

REQ: "{Помилкова послідовність}"
REZ ERR: "REZ 3 Error the command format.\n"
Будь який некоректний запит.

Протоколом підтримується можливість стиснення трафіку. Стискаються лише дані Інтерфейсу Управління command of the control interface та result of the command of the control interface. Факт надходження стиснутого запиту або відповіді визначається негативним значенням розміру запиту req_size або відповіді rez_size. Визначити параметри стиснення можна на сторінці конфігурації модуля (рис.1). Відповідь вхідної частини протоколу примусово стискається із рівнем -1 (тобто оптимально) за стиснутих запитів.

At.png Усі ці параметри може бути налаштовано індивідуально для транспорту, оскільки модуль першим підтримує конфігурацію зовнішніх джерел у додаткових параметрах транспортів.

Рис.1. Головна вкладка сторінки конфігурації параметрів модуля.

На цій вкладці можна:

  • Ознайомитися з активними сеансами аутентифікації.
  • Вказати час життя сеансу, у хвилинах.
  • Вказати межу підключень одного користувача від одного хосту.
  • Вказати рівень і нижню межу стиснення. Де діапазон рівня стиснення від 0 до 9 (0-відімкнення компресії, -1-оптимальний за продуктивністю та якістю рівень компресії) і нижня межа є порогом використання стиснення та її вимкнення за малих запитів.

2 Внутрішня структура вихідного протоколу

Внутрішня структура формується деревом XML запитів мови інтерфейсу управління OpenSCADA з резервуванням додаткових службових атрибутів протоколу у кореневому тегу:

rqDir — ознака надсилання повідомлення оминаючи процедуру відкриття сеансу (0-відкривати сеанс, 1-надсилати одразу);
rqUser — користувач;
rqPass — пароль;
rqAuthForce — примусово оновити аутентифікацію;
rqSeq — послідовність запиту;
conTm — примусовий таймаут підключення.

Результатом запиту також є XML дерево мови інтерфейсу управління OpenSCADA.