From OpenSCADAWiki
Jump to: navigation, search

Как можно видеть с рисунка 1, взаимодействие с устройством происходит через некоторый транспорт на котором они физически базируются. Запрос к транспорту Вы можете отправить:

  1. Непосредственно с помощью функции системного API OpenSCADA объекта транспорта string messIO( string mess, real timeOut = 0 );, если протоколоспецифическая часть очень проста и данные Вам нужно лишь извлечь.
  2. Завёрнутый запрос данных req, функцией int messIO( XMLNodeObj req, string prt ); и для протокола prt, если протокольная часть достаточно сложная и уже представлена в OpenSCADA.
  3. Завёрнутый запрос данных специфический к пользователю с помощью функции int messIO( XMLNodeObj req, "UserProtocol" ); и реализации пользовательского протокола, если протокольная часть достаточно сложная и ещё отсутствует в OpenSCADA. Пользователь реализует тут саму протоколоспецифическую часть в модуле UserProtocol и часть специфическую к данным в шаблоне для модуля Логического Уровня или непосредственно в процедуре контролера на внутреннем языке программирования модуля JavaLikeCalc.
At.png Этот последний метод развит к возможности формирования протокольной части кода непосредственно в том-же коде шаблона, как отдельная встроенная функция через вызовом функции запроса первого метода, если нет необходимости повторного использования, или даже если такая необходимость есть и тут имеет смысл создание комплексного шаблона, который сможет объединять роль и выходного протокола, через его подключение также к модулю пользовательского протокола. И оно будет полностью храниться в одной библиотеке шаблонов.