Программное обеспечение сетевого взаимодействия участников АСУ ТП: Учебное пособие, страница 4

ExcludeNodes=01-03,05-FA

Кроме настроек, которые можно выполнить в среде UltraLogik, имеются поля ActiveNodes для устанавливания адреса узлов, подлежащих опросу, и ExcludeNodes для прописывания адреса узлов, принудительно исключаемых из опроса.

 Организация сетевого взаимодействия

между контроллером ADAM-5510 и средой Genie 3.0

Связь контроллера ADAM-5510 со SCADA-системой Genie 3.0 осуществляется по средствам драйвера UltraNet, входящего в состав программного пакета UltraLogik.

Драйвер UltraNet.dll представляет из себя набор функций в виде объектного кода, с помощью которых пользователем может быть самостоятельно разработана программа, осуществляющая сетевой обмен данными, принятый в системе UltraLogik.

Термины и определения, принятые в системе

UltraLogik, для драйвера UltraNet

Участник сети - некоторая программа, которая поддерживает принятый в системе UltraLogik протокол обмена данными и имеет возможность осуществлять этот обмен (т.е. подключена к сети). Участники сети бывают активными и пассивными. Активный участник сети является инициатором обмена данными, а пассивный участник сети только обслуживает запросы активных участников сети. Каждый участник сети имеет уникальный номер (адрес). На одном компьютере может находиться несколько программ-участников сети.

Система визуализации (SCADA) - некоторая программа, которая использует драйвер UltraNet для связи с участниками сети.

Сетевая переменная - переменная участника сети, которая доступна (значение которой может использоваться) другим участникам сети. Сетевые переменные могут быть не только у контроллеров, но и у систем визуализации (например, для обмена данными между несколькими SCADA).

Драйвер UltraNet – драйвер, позволяющий получить доступ к сетевым переменным участников сети, а  также создать свои переменные, доступные другим участникам сети.

Драйвер UltraNet поддерживает следующие типы переменных:

Boolean – тип переменной аналогичен одноименному типу в языках программирования Turbo Pascal и Delphi фирмы Borland (здесь и далее имеются ввиду только эти языки программирования).  Переменная занимает один байт памяти и имеет два значения:  0(False) и 1(True).

Integer – 16-разрядное целое число со знаком.

Float – тип переменной с плавающей точкой одинарной точности.

Timer - таймерный тип переменной,  занимает 4 байта. Значение переменной можно преобразовать к типу Longint с помощью функции GetTimerVal.

Структура использования драйвера

В самом простом случае доступ к сетевым переменным производится по схеме (рис. 20).

Рис. 20. Схема доступа к сетевым переменным

Другой, более сложный вариант, доступно показан на схеме рис. 21.

Рис. 21. Схема доступа к сетевым переменным

Порядок работы с драйвером UltraNet

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

[Driver]

CurNetDriver=c:\plcwin\bin\plcnet.dll

[PlcNet]

Node=03

BaudRate=57600

Port=COM2

ActiveNodes=7

ExcludeNodes=0,8-0F,11-ff

Далее следует сообщить драйверу, какие переменные он должен опрашивать, а какие предоставлять другим участникам сети. Это можно сделать двумя способами. Первый способ - объявить их в файле конфигурации UltraNet.ini, например:

[Variables]

07.WorkTime=timer

WorkTime=timer(tstart)

01.DO01=boolean(True)

02.DO01=boolean

04.Sensor=float

04.Sensor1=float

04.A1=integer(123)

10.Sensor=float

10.Control=float

10.IVal=float

10.Dist=float

06.CPS=float

06.Inc=float

05.CPS=float

05.F00=float

05.F90=float

Value=Float(1.2e+0)

     Для этого следует указать сетевое имя переменной. Оно включает в себя адрес узла, которому  принадлежит, и тип переменной. При необходимости можно также указать начальное значение переменной.

Второй способ – в последовательном вызове функции AddVariable для создания требуемых переменных. Но в этом случае начальное значение созданной переменной равно нулю. Следует учитывать, что драйвер устанавливает связь только с теми контроллерами, на которые есть ссылка в именах переменных, и драйверу может потребоваться некоторое время (до нескольких секунд) для считывания параметров конфигурации контроллеров и установления соответствия между переменными перед тем, как реальные значения переменных станут доступными.

Драйвер можно заставить принудительно считать конфугурацию какого-либо участника сети с помощью вызова процедуры StartReadConfig. При этом следует указать адреса переменных в памяти с помощью вызовов AddVariable (если это не было сделано ранее). Эта функция вернет указатель на значение запрошенной переменной. Чтобы инициативно переслать новое значение переменной другому участнику сети, следует использовать функции SendXXXX. Необходимо учитывать, что посылки помещаются в буфер до того момента, когда у драйвера появится возможность их пересылки. Под каждый такой запрос отводится один буфер. Общее количество буферов указывается в файле UltraNet.ini.

Поэтому, если требуется одновременно (вернее с малым промежутком времени) инициативно изменить значения большого количества переменных, то следует увеличить это число.

Драйвер имеет еще одну важную функцию. Это функция Idle. Она не требует входных параметров и ничего не возвращает. Ее следует вызывать для нормальной работы сетевого драйвера нижнего уровня. Особенно это важно, когда в сети несколько активных участников и им приходится делить между собой время канала связи (арбитраж сети).

После настройки и загрузки драйвера UltraNet, необходимо обеспечить обмен данными между Genie и UltraNet с помощью библиотек Genie G2UL_I.DLL и G2UL_F.DLL.

Ниже представлена структурная схема (рис. 22), иллюстрирующая взаимодействие программ и потоки данных.

Рис. 22. Схема взаимодействия программ и потоки данных

Динамические библиотеки G2UL_I и G2UL_F отличаются только типом входных переменных со стороны SCADA системы Genie. Для G2UL_I на входе ожидается тип переменных INTEGER, а для G2UL_F  -  SINGLE (Floating point).

Установка драйвера

Установка выполняется в следующей последовательности:

1. Помещается файл ULTRANET.DLL в системную директорию Windows (обычно WINDOWS/SYSTEM) или в рабочий каталог Genie.