Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы к экзамену по АСУП / АСУП. Конспект лекций.doc
Скачиваний:
75
Добавлен:
02.03.2016
Размер:
3.45 Mб
Скачать

Технология динамического обмена данными dde

DDE (Dynamic Data Exchange - динамический обмен данными) представляет собой коммуникационный протокол, разработанный компанией Microsoft для обмена данными между различными Windows-приложениями и их синхронизации. Для нормального функционирования DDE необходимо два участника – приложение, запрашивающее данные, и приложение, посылающее данные. Приложение, запрашивающее данные, называется клиентом. Приложение, посылающее данные, называется сервером.

Клиент DDE. В качестве приложения клиента может выступать любое приложение, позволяющее осуществлять DDE-запросы к DDE-серверу. В качестве примера приложения, обладающего возможностями DDE-клиента, можно привести электронную таблицу Microsoft Excel, позволяющую в качестве формулы в какой-либо ячейке устанавливать запрос с автообновлением данных к указываемому DDE-серверу.

Сервер DDE. Приложение, обеспечивающее возможности сервера, должно “уметь” принимать DDE сообщения и посылать данные в ответ на запросы приложений-клиентов. У одного DDE-сервера может быть один или несколько DDE-клиентов.

Сеанс DDE – активная непрерывная связь между клиентом и сервером.

Транзакция DDE – одиночный акт обмена данными в процессе сеанса.

В DDE используется трёхуровневая система адресации: service (зарегистрированный сервис, как правило, указывается приложение, предоставляющее серверные функции); topic (раздел данных, например, имя файла, или таблица базы данных); item (элемент данных, подлежащий передаче).

Если в качестве сервера DDE выступает MS Excel, эта схема выглядит следующим образом: service – "EXCEL"; topics – электронная таблица "[Книга1]Лист1"; item –ячейка "R1C2".

Поскольку Windows базируется на архитектуре, использующей сообщения, то наиболее подходящим методом для автоматической передачи данных между прикладными программами является посылка сообщений. Все транзакции выполняются с помощью передачи между программами клиентом и сервером DDE сообщений:

WM_DDE_INITIATE – инициализирует диалог между прикладными программами сервера и клиента;

WM_DDE_ACK – посылается в ответ на полученное сообщение;

WM_DDE_REQUEST – запрашивает у сервера значение элемента данных;

WM_DDE_POKE – посылает значение элемента данных серверу;

WM_DDE_ADVISE – устанавливает постоянную связь между сервером и клиентом;

WM_DDE_DATA – посылает значение элемента данных клиенту;

WM_DDE_EXECUTE – посылает строку прикладной программе-серверу, которая должна выполнить ее как последовательность команд;

WM_DDE_UNADVISE – завершает постоянную связь между сервером и клиентом;

WM_DDE_TERMINATE – завершает диалог.

Посылка сообщений – это нижний уровень обмена данными между DDE-клиентом и DDE-сервером. На верхнем уровне DDE-обмен реализован в виде функций, содержащихся в динамической библиотеке DDEML.DLL.

Технология DDE удобна для взаимодействия между такими приложениями как MS Excel – MS Word и т.п. Однако при высоком потоке передачи данных этот механизм не очень подходит вследствие низкой надежности и низкой скорости передачи сообщений. Для SCADA–систем имеются модификации: пакетированный DDE-обмен - FastDDE. Применение последнего заметно повышает эффективность и производительность обмена данными благодаря уменьшению общего количества DDE-пакетов, которыми клиент и сервер обмениваются между собой. Но принципиальные недостатки, связанные с надежностью и зависимостью от количества загруженных в текущий момент приложений Windows, остались.

С целью расширения возможностей стандартного протокола DDE на локальную сеть предложен NetDDE. Он позволяет приложениям, запущенным на компьютерах, объединенных в локальную сеть, вести DDE-обмен.

Обмен по DDE в TRACE MODE 6

Исполнительыне модули TRACE MODE 6 (МРВ) поддерживают обмен по DDE/NetDDE между собой и с приложениями WINDOWS, выступая одновременно в качестве сервера и клиента. Клиент инициирует обмен с сервером и задает один из следующих режимов обмена:

  • POKE – изменение значения указанного параметра на сервере;

  • REQUEST – запрос значения указанного параметра от сервера;

  • ADVISE – режим, при котором сервер посылает клиенту значение указанного параметра при его изменении.

Excel (DDE-клиент) – МРВ (DDE-сервер)

Если клиентом DDE является Excel, то DDE-обмен с МРВ может быть сконфигурирован с помощью: формул Excel; макросов VBA. Формула Excel может быть использована для запроса реального значения канала в режиме ADVISE или REQUEST. Запрос значений всех других атрибутов канала проводится только в режиме REQUEST.

Формат формулы EXCEL: =<server>|<topic>!<item>

server – имя сервера в формате RTM<k>, где k – индивидуальный номер узла;

topic – тема запроса (GET – для режима ADVISE, PUT – для режима REQUEST);

item – имя канала или уточненное имя атрибута в формате: <имя канала>.<номер атрибута> .

Примеры:

=RTM0|GET!Канал1 вызов реального значения канала КАНАЛ1 в режиме ADVISE;

=RTM0|PUT!Канал1.0 вызов реального значения (атрибут № 0) канала КАНАЛ1 в режиме REQUEST;

=RTM|PUT!Канал1.45 вызов значения атрибута "время последнего изменения реального значения" (атрибут № 45) для канала КАНАЛ1 в режиме REQUEST.

{DDEAuto RTM0 GET Канал1} вызов реального значения канала КАНАЛ1 в режиме ADVISE в поле MS WINWORD.

Через макросы VBA доступны режимы REQUEST и POKE. Для обмена с помощью макросов VBA используются функции:

Channel := DDEInitiate(App, Topic) – установка диалога по заданным сервису и теме;

DDETerminate(Channel) – прекращение диалога;

Data := DDERequest(Channel, Item) – запрос данных;

DDEPoke(Channel, Item, Data) – передача данных серверу;

DDEExecute(Channel, String) – передача команды другому приложению.