From OpenSCADAWiki
Jump to: navigation, search

Програмний інтерфейс OpenSCADA, для обслуговування вхідних та вихідних запитів через мережевий інтерфейс, представлено об'єктами та віртуальними функціями викликів із ядра OpenSCADA:

  • TTypeTransport->TModule — Кореневий об'єкт модуля підсистеми "Транспорти":
    • TTransportIn *In( const string &name, const string &db ); — Викликаються при відкритті або створені нового об'єкта вхідного транспорту name, даним модулем, зі сховищем у db.
    • TTransportOut *Out( const string &name, const string &db ); — Викликаються при відкритті або створені нового об'єкта вихідного транспорту name, даним модулем, зі сховищем у db.
  • TTransportIn — Об'єкт транспорту обробки вхідних запитів, функція серверу. Вхідні запити, отримані модулем через реалізацію мережевого інтерфейсу повинні направлятися до вказаного у конфігурації вхідного протоколу protocol(), за посередництвом функції mess():
    • string getStatus( ); — Виклики для отримання специфічного статусу інтерфейсу.
    • void setAddr( const string &addr ); — Встановлення адреси транспорту. Може перевизначатися для обробки та перевірки специфічного для модуля формату адреси транспорту.
    • void start(); — Запуск транспорту. При запуску вхідного транспорту зазвичай створюється задача, яка очікує запитів ззовні.
    • void stop(); — Зупинка транспорту.
  • TTransportOut — Об'єкт транспорту обробки вихідних запитів, функція клієнта:
    • string getStatus( ); — Виклик для отримання специфічного статусу інтерфейсу.
    • void setAddr( const string &addr ); — Встановлення адреси транспорту. Може перевизначатися для обробки та перевірки специфічного для модуля формату адреси транспорту.
    • void start( ); — Запуск транспорту. Під час запуску вихідного транспорту здійснюється фактичне підключення до віддаленої станції, для інтерфейсів які працюють по підключенню. У цей час можливі помилки, якщо підключення не можливе, та транспорт мусить повернутися у зупинений стан.
    • void stop( ); — Зупинка транспорту.
    • int messIO( const char *obuf, int len_ob, char *ibuf = NULL, int len_ib = 0, int time = 0, bool noRes = false ); — Обслуговування запитів із ядра OpenSCADA на відправку даних через транспорт. Час очікування time з'єднання визначається у мілісекундах, при ненульовому значенні має заміщувати однойменний таймаут транспорту в його загальних налаштуваннях. noRes використовується протоколами для монопольного блокування транспорту на час роботи з ним та попередження власного блокування функцією. Пакет для відправки указується у буфері obuf довжиною len_ob, а у ibuf та len_ib указується буфер та його розмір для відповіді. Вихідний буфер obuf може бути порожнім (NULL) якщо потрібно перевірити наявність продовження відповіді або відповідей, які надходять без запитів, режим віщання. Якщо не вказано буфер для відповіді (NULL) то очікування відповіді не буде здійснюватися.