Русская версия
Українська версія?
Module: | UserProtocol |
Name: | User protocol |
Type: | Protocol |
Source: | prot_UserProtocol.so |
Version: | 0.5.0 |
Author: | Roman Savochenko |
Translated: | Maxim Lysenko |
Description: | Allows you to create your own user protocols on any OpenSCADA's language. |
License: | GPL |
Module UserProtocol of the transport protocol is made to provide the user with the possibility of creation the implementations of different protocols by himself at one of the internal languages of OpenSCADA, usually JavaLikeCalc, without necessity of low-level programming of OpenSCADA.
The main purpose of the module is to simplify the task of connecting to the OpenSCADA system devices of data sources, that have limited distribution and/or provide access to their own data on a specific protocol that is usually fairly simple to implement in the internal language of OpenSCADA. For implementation of this the mechanism for the formation of the outgoing request protocol is provided.
In addition to the mechanism of the outgoing request protocol the mechanism for incoming request protocol is provided, which allows OpenSCADA to process the requests for data get on specific protocols, which simply can be implemented in the internal language of OpenSCADA.
The module provides the ability to create multiple implementations of different protocols in the object "User protocol" (Fig. 1).
The main tab contains the basic settings of the user protocol:
Protocol of incoming requests is working in cooperation with the incoming transport and the separate object "User Protocol" is set in the configuration field of transport protocol, together with the UserProtocol module's name. In the future, all requests to the transport will be sent to the processing procedure of the protocol's request (Fig. 2).
Tab of the processing procedures of the incoming request contains the field for selecting the internal programming language of OpenSCADA and the text entry field for the typing the processing procedure.
For the processing procedure the following exchange variables with incoming traffic are predetermined:
Общий сценарий обработки входящих запросов:
Протокол исходящих запросов работает в кооперации с исходящим транспортом и отдельным объектом "Пользовательского протокола". Источником запроса через протокол может выступать функция общесистемного API пользовательского программирования исходящего транспорта int messIO( XMLNodeObj req, string prt );, в параметрах которой указывается:
Запрос отправленный вышеуказанным образом направляться в процедуру обработки запроса протокола (рис.3) с идентификатором пользовательского протокола указываемым в атрибуте req.attr("ProtIt").
Вкладка процедуры обработки исходящих запросов содержит поле для выбора внутреннего языка программирования OpenSCADA и поле ввода текста процедуры обработки.
Для процедуры обработки предопределены следующие переменные обмена:
Общий сценарий формирования исходящего запроса:
Суть выделения протокольной части кода в процедуру пользовательского протокола заключается в упрощении интерфейса клиентского обмена при многократном использовании и предпологает формирование структуры XML-узла обмена в виде атрибутов адресов удалённых станций, адресов читаемых и записываемых переменных, а также значений самих переменных. При этом весь груз непосредственного кодирования запроса и декодирования ответа возлагается на процедуру пользовательского протокола.