Практически все современные измерительные и управляющие системы построены на клиент-серверной архитектуре. Приложения, созданные на основе этой архитектуры, позволяют собирать, анализировать, хранить, а также передавать данные на значительные расстояния с помощью проводных и беспроводных сетей. Эти системы используются для решения следующих задач:
-
мониторинг объектов и конструкций (мосты, здания, стадионы, высотные дома, транспорт);
-
автоматизированный учет электроэнергии (системы АСКУЭ для сбора информации со счетчиков электроэнергии);
-
автоматизация технологических процессов (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):
-
Клиент инициирует передачу кадра данных.
-
Функция «Write SVH Data» создает копию кадра данных в буфере клиента.
-
Кадр данных передается от клиента к серверу.
-
«Write SVH Data» ожидает уведомление о передаче кадра данных. Максимальное время ожидания задается таймаутом.
-
Функция «Read SVH Data» получает кадр данных и проверяет его целостность.
-
«Read SVH Data» отправляет клиенту уведомление о передаче кадра данных. Оно может быть двух видов:
-
«Кадр данных получен», если проверка целостности пакета данных пройдена;
-
«Кадр данных поврежден»,если проверка целостности пакета данных не пройдена.
-
-
«Write SVH Data» выполняет одно из следующих действий:
-
очищает буфер клиента и инициирует передачу нового пакета данных. Это действие выполняется при получении уведомления «Кадр данных получен»;
-
копирует пакет данных из буфера клиента и инициирует его повторную передачу. Это действие выполняется при получении уведомления «Кадр данных поврежден». Также «Write SVH Data» выполняет это действие, если «Read SVH Data» не прислала уведомление в течении таймаута.
Рисунок 2 – Алгоритм гарантированной доставки кадра данных с помощью SVH-функций
1 – сервер, 2 – клиент.
-
Библиотека Shared Variables Handler полностью решает задачу гарантированной доставки данных больших объемов в клиент-серверных приложениях в беспроводных и ненадежных проводных сетях. В отличие от SCADA и АСКУЭ, где передать большой объем информации практически невозможно, данное решение позволяет работать с данными большого объема, не опасаясь за их целостность.