Создание нового шаблонного конфигурационного элемента для DPT

При нажатии кнопки «Создать новый шаблонный конфигурационный элемент» открывается представленная ниже панель, предназначенная для ввода параметров шаблонного конфигурационного элемента. Выберите переключатель «Тип DP» (тип точки данных) для задания параметров шаблонного конфигурационного элемента, действующего для всего типа точки данных.

Снимок экрана: Панель для задания параметров шаблонного конфигурационного элемента для DPT

В выпадающем списке (возле текстового поля с серым фоном, содержащего текст «_da_DPT_») необходимо выбрать тип точки данных, для которого будет создаваться шаблонный конфигурационный элемент. После ввода «Текста», имя создаваемого шаблонного конфигурационного элемента отображается в поле на сером фоне ниже.

ПРИМЕЧАНИЕ

Имя шаблонного конфигурационного элемента включает в себя: _da_DPT_ + имя типа точки данных. Пример: _da_DPT_PUMP1 представляет собой шаблонный конфигурационный элемент для типа точки данных PUMP1.

Шаблонный конфигурационный элемент типа точки данных ( = DPT-Шабл.конф.элем. = DPT-PC = Data point type — PowerConfig) добавляется к корневому узлу мастер-точки данных и позволяет выполнять одновременную настройку нескольких элементов точки данных, находящихся на нижних уровнях (см. также раздел «Добавление шаблонных конфигурационных элементов к DPT«). Для одного типа точки данных может быть создан только один DPT-PC ( = Шаблонный конфигурационный элемент типа точки данных = DPT-Шабл.конф.элем. = DPT-PC = Data point type — PowerConfig). При создании DPT-PC из выпадающего списка следует выбрать требуемый тип точки данных. На данном этапе выбор типа данных не требуется, так добавление к корневому узлу всегда ассоциируется с типом данных string. DPT-PC всегда соответствуют типу данных string, так как DPT-PC могут быть добавлены только к корневому узлу (все узлы в «КАСКАД Цифра» обрабатываются как имеющие тип string. Например, к узлу может быть добавлен только шаблонный конфигурационный элемент «Обработка групповых алармов» (как соответствующий типу данных string)).

Поле «Текст» предназначено для присвоения шаблонному конфигурационному элементу альтернативного имени, которое будет отображаться в выпадающем списке «Конфигурационный элемент» в редакторе шаблонных конфигурационных элементов. Для подтверждения выполненных изменений и закрытия панели необходимо нажать кнопку «OK«; при нажатии кнопки «Отменить» панель закрывается без применения настроек.

ПРИМЕР

Создание шаблонного конфигурационного элемента, действующего для всего типа точки данных «TrafficLights» (сведения о структуре этого типа точки данных приводятся в разделе «Пример массового параметрирования«). При добавлении DPT-PC к корневому узелу мастер-точки данных для четырех элементов типа точки данных (red (красный)yellow (желтый)green (зеленый)malfunction (неисправность)) должна производиться настройка адреса периферии (OPC Вход). Server (сервер), Group (группа), Item (переменная) и Address-activation (активация адреса) должны являться изменяемыми атрибутами (которые могут быть изменены на уровне точки данных).

  1. В редакторе шаблонных конфигурационных элементов нажмите кнопку «Создать новый шаблонный конфигурационный элемент«.
  2. В открывшейся панели введите следующие параметры для нового шаблонного конфигурационного элемента:

Снимок экрана: Настройка нового шаблонного конфигурационного элемента

  1. Для задания переменных и сценариев во вкладках в ходе последующих шагов, в выпадающем списке «Конфигурационный элемент» выберите только что созданный шаблонный конфигурационный элемент «S — TrafficLights — DPT-Шабл.конф.элем.».
  2. На вкладке «Переменные» объявите все переменные, используемые в последующих сценариях для записи или чтения атрибутов шаблонного конфигурационного элемента (дополнительная информация представлена в разделе «Вкладка «Переменные«). В рамках данного примера необходимо объявить следующие переменные:
НазваниеТипЗначение по умолчаниюОписание
leaf_redstring«.red»Элемент точки данных
leaf_yellowstring«.yellow»Элемент точки данных
leaf_greenstring«.green»Элемент точки данных
leaf_malfunctionstring«.malfunction»Элемент точки данных
dpstringdpSubStr($DPE,DPSUB_DP)Имя точки данных
ref1string Дополнительный идентификатор для переменной
ref2string Дополнительный идентификатор для переменной
ref3string Дополнительный идентификатор для переменной
ref4string Дополнительный идентификатор для переменной
Serverstring«EXAMPLESERVER»Часть адреса периферии
Groupstring«STATE»Часть адреса периферии
ItemstringdpSubStr($DPE,DPSUB_DP)+»_OPCITEM»Часть адреса периферии
_referencestring Строка ссылки (определяет адрес)
_activebool Активация адреса
_directionint Определяет направление (вход или выход).
_drv_identstring«OPCCLIENT»Тип драйвера
  1. На данном шаге на вкладке «Вход» необходимо ввести сценарий, обеспечивающий считывание текущих значений атрибутов и присвоение считанных значений указанным переменным (например, при открытии панели конфигурирования шаблонных конфигурационных элементов точки данных). На данной вкладке введите следующий сценарий:

dpGet(dp+leaf_red+»:_address.._reference»,_reference,

      dp+leaf_red+»:_address.._active»,_active,

      dp+leaf_red+»:_address.._drv_ident»,_drv_ident,

      dp+leaf_red+»:_address.._direction»,_direction);

  1. На вкладке «Вычисления для входных значений» введите сценарий, который разделяет строку ссылки и присваивает значения переменным Server (сервер)Group (группа) и Item (переменная) (в случае адреса периферии OPC, переменным Server, Group и Item не поставлены в соответствие какие-либо «реальные» атрибуты «КАСКАД Цифра»). Данные переменные предназначены для использования в качестве изменяемых атрибутов, которые могут быть модифицированы требуемым образом на уровне соответствующих точек данных. Введите следующий сценарий, который разделяет строку на Server, Group и Item:

Server = substr(_reference, 0, strpos(_reference, «$»));

_reference = substr(_reference, strpos(_reference, «$»)+1, strlen(_reference));

Group = substr(_reference, 0, strpos(_reference, «$»));

Item = substr(_reference, strpos(_reference, «$»)+1, strlen(_reference));

  1. На вкладке «Ручной ввод» выберите переменные (изменяемые атрибуты), параметры которых могут быть модифицированы требуемым образом на уровне соответствующих точек данных (более подробная информация по данной вкладке приведена в разделе «Вкладка «Ручной ввод«). В данном примере используются переменные Server (сервер)Group (группа)Item (элемент) и _active. Так как имена переменных уже используются в других сценариях шаблонных конфигурационных элементов, то в таблице на вкладке также отображаются имена изменяемых атрибутов в формате обычного текста, хранящиеся в файле каталога сообщений da.cat.
  2. После разделения строки ссылки таким образом, что индивидуальные параметры могут быть установлены на уровне каждой точки данных посредством настройки шаблонного конфигурационного элемента (в панели конфигурирования необходимо нажать кнопку «OK«), следует повторно собрать адрес (строку ссылки) во вкладке «Вычисления для выходных значений», что обеспечит правильную установку атрибута _address.._reference адреса периферии OPC. Повторную сборку строки обеспечивает следующий сценарий:

_reference = Server+»$»+Group+»$»+Item;

ref1 = _reference;

ref2 = _reference+»_1″;

ref3 = _reference+»_2″;

ref4 = _reference+»_3″;

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

dpSetWait(dp+leaf_red+»:_address.._reference»,ref1,

          dp+leaf_red+»:_address.._active»,_active,

          dp+leaf_red+»:_address.._direction»,_direction,

          dp+leaf_red+»:_address.._drv_ident»,_drv_ident);

dpSetWait(dp+leaf_yellow+»:_address.._reference»,ref2,

          dp+leaf_yellow+»:_address.._active»,_active,

          dp+leaf_yellow+»:_address.._direction»,_direction,

          dp+leaf_yellow+»:_address.._drv_ident»,_drv_ident);

dpSetWait(dp+leaf_green+»:_address.._reference»,ref3,

          dp+leaf_green+»:_address.._active»,_active,

          dp+leaf_green+»:_address.._direction»,_direction,

          dp+leaf_green+»:_address.._drv_ident»,_drv_ident);

dpSetWait(dp+leaf_malfunction+»:_address.._reference»,ref4,

          dp+leaf_malfunction+»:_address.._active»,_active,

          dp+leaf_malfunction+»:_address.._direction»,_direction,

          dp+leaf_malfunction+»:_address.._drv_ident»,_drv_ident);

err = getLastError();

if (dynlen(err) > 0)

{

   throwError(err);

}

  1. Последний шаг при создании нового шаблонного конфигурационного элемента связан с формированием на вкладке «По умолчанию» сценария для присвоения атрибутам значений, которые будут настроены для отдельных элементов точек данных при добавлении шаблонного конфигурационного элемента к корневому узлу мастер-точке данных. При создании данного сценария следует убедиться в том, что задан тип конфигурационного элемента, устанавливаемого для элементов точек данных (в данном примере _distrib.._type и _address.._type). Если данные атрибуты не установлены, то шаблонный конфигурационный элемент типа точки данных не будет доступен для добавления к мастер-точке данных (см. также «Добавление шаблонных конфигурационных элементов к DPT«).

    В данном примере значения по умолчанию присваиваются следующим атрибутам:

_reference = Server+»$»+Group+»$»+Item;

ref1 = _reference;

ref2 = _reference+»_1″;

ref3 = _reference+»_2″;

ref4 = _reference+»_3″;

dpSet(dp+leaf_red+»:_distrib.._type»,DPCONFIG_DISTRIBUTION_INFO,

      dp+leaf_red+»:_address.._type»,DPCONFIG_PERIPH_ADDR_MAIN,

      dp+leaf_red+»:_address.._reference»,ref1,

      dp+leaf_red+»:_address.._active»,FALSE,

      dp+leaf_red+»:_address.._direction»,»\2″,

      dp+leaf_red+»:_address.._drv_ident»,_drv_ident);

dpSet(dp+leaf_yellow+»:_distrib.._type»,DPCONFIG_DISTRIBUTION_INFO,

      dp+leaf_yellow+»:_address.._type»,DPCONFIG_PERIPH_ADDR_MAIN,

      dp+leaf_yellow+»:_address.._reference»,ref2,

      dp+leaf_yellow+»:_address.._active»,FALSE,

      dp+leaf_yellow+»:_address.._direction»,»\2″,

      dp+leaf_yellow+»:_address.._drv_ident»,_drv_ident);

dpSet(dp+leaf_green+»:_distrib.._type»,DPCONFIG_DISTRIBUTION_INFO,

      dp+leaf_green+»:_address.._type»,DPCONFIG_PERIPH_ADDR_MAIN,

      dp+leaf_green+»:_address.._reference»,ref3,

      dp+leaf_green+»:_address.._active»,FALSE,

      dp+leaf_green+»:_address.._direction»,»\2″,

      dp+leaf_green+»:_address.._drv_ident»,_drv_ident);

dpSet(dp+leaf_malfunction+»:_distrib.._type»,DPCONFIG_DISTRIBUTION_INFO,

      dp+leaf_malfunction+»:_address.._type»,DPCONFIG_PERIPH_ADDR_MAIN,

      dp+leaf_malfunction+»:_address.._reference»,ref4,

      dp+leaf_malfunction+»:_address.._active»,FALSE,

      dp+leaf_malfunction+»:_address.._direction»,»\2″,

      dp+leaf_malfunction+»:_address.._drv_ident»,_drv_ident);

  1. Сценарий созданного шаблонного конфигурационного элемента может быть просмотрен на последней вкладке «Исходный код». На данной вкладке также может быть проверен синтаксис сценария. Новая секция, содержащая настройки для нового шаблонного конфигурационного элемента, добавляется в файл шаблонных конфигурационных элементов (дополнительная информация о структуре данного файла представлена в разделе «Структура файла шаблонных конфигурационных элементов«). Сценарий для данного примера должен выглядеть следующим образом:

definition34(){

// definition start

//_da_DPT_Ampel:STRING

// variables definition

string leaf_red=».red»;

string leaf_yellow=».yellow»;

string leaf_green=».green»;

string leaf_malfunction=».malfunction»;

string dp=dpSubStr($DPE,DPSUB_DP);

string _drv_ident=»OPCCLIENT»;

bool _active;

int _direction;

string _reference;

string Server=»EXAMPLESERVER»;

string Group=»STATE»;

string Item=dpSubStr($DPE,DPSUB_DP)+»_OPCITEM»;

string ref1;

string ref2;

string ref3;

string ref4;

// dpGet

dpGet(dp+leaf_red+»:_address.._reference»,_reference,

      dp+leaf_red+»:_address.._active»,_active,

      dp+leaf_red+»:_address.._drv_ident»,_drv_ident,

      dp+leaf_red+»:_address.._direction»,_direction);

// calculate input

Server = substr(_reference, 0, strpos(_reference, «$»));

_reference = substr(_reference, strpos(_reference, «$»)+1, strlen(_reference));

Group = substr(_reference, 0, strpos(_reference, «$»));

Item = substr(_reference, strpos(_reference, «$»)+1, strlen(_reference));

// variables input

//_active

//Server

//Group

//Item

// calculate output

_reference = Server+»$»+Group+»$»+Item;

ref1 = _reference;

ref2 = _reference+»_1″;

ref3 = _reference+»_2″;

ref4 = _reference+»_3″;

// dpSet

dpSetWait(dp+leaf_red+»:_address.._reference»,ref1,

          dp+leaf_red+»:_address.._active»,_active,

          dp+leaf_red+»:_address.._direction»,_direction,

          dp+leaf_red+»:_address.._drv_ident»,_drv_ident);

dpSetWait(dp+leaf_yellow+»:_address.._reference»,ref2,

          dp+leaf_yellow+»:_address.._active»,_active,

          dp+leaf_yellow+»:_address.._direction»,_direction,

          dp+leaf_yellow+»:_address.._drv_ident»,_drv_ident);

dpSetWait(dp+leaf_green+»:_address.._reference»,ref3,

          dp+leaf_green+»:_address.._active»,_active,

          dp+leaf_green+»:_address.._direction»,_direction,

          dp+leaf_green+»:_address.._drv_ident»,_drv_ident);

dpSetWait(dp+leaf_malfunction+»:_address.._reference»,ref4,

          dp+leaf_malfunction+»:_address.._active»,_active,

          dp+leaf_malfunction+»:_address.._direction»,_direction,

          dp+leaf_malfunction+»:_address.._drv_ident»,_drv_ident);

err = getLastError();

if (dynlen(err) > 0)

{

   throwError(err);

}

// default

_reference = Server+»$»+Group+»$»+Item;

ref1 = _reference;

ref2 = _reference+»_1″;

ref3 = _reference+»_2″;

ref4 = _reference+»_3″;

dpSet(dp+leaf_red+»:_distrib.._type»,DPCONFIG_DISTRIBUTION_INFO,

      dp+leaf_red+»:_address.._type»,DPCONFIG_PERIPH_ADDR_MAIN,

      dp+leaf_red+»:_address.._reference»,ref1,

      dp+leaf_red+»:_address.._active»,FALSE,

      dp+leaf_red+»:_address.._direction»,»\2″,

      dp+leaf_red+»:_address.._drv_ident»,_drv_ident);

dpSet(dp+leaf_yellow+»:_distrib.._type»,DPCONFIG_DISTRIBUTION_INFO,

      dp+leaf_yellow+»:_address.._type»,DPCONFIG_PERIPH_ADDR_MAIN,

      dp+leaf_yellow+»:_address.._reference»,ref2,

      dp+leaf_yellow+»:_address.._active»,FALSE,

      dp+leaf_yellow+»:_address.._direction»,»\2″,

      dp+leaf_yellow+»:_address.._drv_ident»,_drv_ident);

dpSet(dp+leaf_green+»:_distrib.._type»,DPCONFIG_DISTRIBUTION_INFO,

      dp+leaf_green+»:_address.._type»,DPCONFIG_PERIPH_ADDR_MAIN,

      dp+leaf_green+»:_address.._reference»,ref3,

      dp+leaf_green+»:_address.._active»,FALSE,

      dp+leaf_green+»:_address.._direction»,»\2″,

      dp+leaf_green+»:_address.._drv_ident»,_drv_ident);

dpSet(dp+leaf_malfunction+»:_distrib.._type»,DPCONFIG_DISTRIBUTION_INFO,

      dp+leaf_malfunction+»:_address.._type»,DPCONFIG_PERIPH_ADDR_MAIN,

      dp+leaf_malfunction+»:_address.._reference»,ref4,

      dp+leaf_malfunction+»:_address.._active»,FALSE,

      dp+leaf_malfunction+»:_address.._direction»,»\2″,

      dp+leaf_malfunction+»:_address.._drv_ident»,_drv_ident);

// definition end

}

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

РЕЗУЛЬТАТ

Шаблонный конфигурационный элемент, созданный в рамках данного примера, может быть добавлен в модуле PARA к корневому узлу мастер-точки данных. Установка флажка «DPT-Шабл.конф.элем.» вызывает установку значений, заданных в секции «default» (значения по умолчанию) сценария шаблонного конфигурационного элемента (см. также раздел «Добавление шаблонных конфигурационных элементов к DPT«).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *