Практически все современные измерительные и управляющие системы построены на клиент-серверной архитектуре. Приложения, созданные на основе этой архитектуры, позволяют собирать, анализировать, хранить, а также передавать данные на значительные расстояния с помощью проводных и беспроводных сетей. Эти системы используются для решения следующих задач:

  • мониторинг объектов и конструкций (мосты, здания, стадионы, высотные дома, транспорт);

  • автоматизированный учет электроэнергии (системы АСКУЭ для сбора информации со счетчиков электроэнергии);

  • автоматизация технологических процессов (SCADA системы).

Распределенные системы создаются в среде разработки NI LabVIEW с помощью программного модуля LabVIEW Datalogging and Supervisory Control (DSC). В этих системах для обмена данными данными между сервером и клиентами используется протокол UDP, который в отличие от протокола TCP меньше нагружает канал передачи данных. Однако, протокол UDP не следит за надежностью доставки данных, и, соответственно, сервер может не знать, отправляла ли ему измерительная система данные, а измерительная система, в свою очередь, может не знать, получил ли эти данные сервер (рисунок 1). Соответственно, при большом объеме данных или большом количестве клиентов и при нестабильном канале связи (что часто бывает в сотовых сетях), передаваемая информация может быть потеряна.

Рисунок 1 – Возможная потеря данных при передаче информации в беспроводных сетях

1 – сервер, 2 – клиенты (измерительные системы), 3 - роутер , 4 – отправленные клиентом данные, 5 – принятые сервером данные, 6 – передаваемый пакет данных, 7 – пакет данных, поврежденный при передаче

Для того, что бы избежать потерю измеренных данных в беспроводных сетях, была разработана библиотека функций «Shared Variables Handler» (библиотека SVH). SVH-функции проверяют переданные клиентом и принятые сервером данные и инициируют повторную передачу при их потере. Библиотека Shared Variables Handler состоит из следующих функций:

  • «Open SVH». Функция открывает сессию передачи данных между клиентом и сервером;

  • «Write SVH Data». Функция передает данные от клиента к серверу;

  • «Read SVH Data». Функция считывает на сервере переданные клиентом данные и проверяет их целостность;

  • «Close SVH». Функция закрывает сессию передачи данных между клиентом и сервером.

Для передачи одного кадра данных, SVH-функции используют следующий алгоритм (рисунок 2):

  1. Клиент инициирует передачу кадра данных.

  2. Функция «Write SVH Data» создает копию кадра данных в буфере клиента.

  3. Кадр данных передается от клиента к серверу.

  4. «Write SVH Data» ожидает уведомление о передаче кадра данных. Максимальное время ожидания задается таймаутом.

  5. Функция «Read SVH Data» получает кадр данных и проверяет его целостность.

  6. «Read SVH Data» отправляет клиенту уведомление о передаче кадра данных. Оно может быть двух видов:

    1. «Кадр данных получен», если проверка целостности пакета данных пройдена;

    2. «Кадр данных поврежден»,если проверка целостности пакета данных не пройдена.

  7. «Write SVH Data» выполняет одно из следующих действий:

    1. очищает буфер клиента и инициирует передачу нового пакета данных. Это действие выполняется при получении уведомления «Кадр данных получен»;

    2. копирует пакет данных из буфера клиента и инициирует его повторную передачу. Это действие выполняется при получении уведомления «Кадр данных поврежден». Также «Write SVH Data» выполняет это действие, если «Read SVH Data» не прислала уведомление в течении таймаута.

      Рисунок 2 – Алгоритм гарантированной доставки кадра данных с помощью SVH-функций

      1 – сервер, 2 – клиент.

Библиотека Shared Variables Handler полностью решает задачу гарантированной доставки данных больших объемов в клиент-серверных приложениях в беспроводных и ненадежных проводных сетях. В отличие от SCADA и АСКУЭ, где передать большой объем информации практически невозможно, данное решение позволяет работать с данными большого объема, не опасаясь за их целостность.