dpSet()

Функция присваивает значения атрибутов точкам данных или создает конфигурационные элементы точки данных.

Краткое описание

int dpSet(string dp1, <type1> var1 [, string dp2, <type2> var2, …]);
int dpSet(dyn_string dpnames, dyn_anytype values);

Параметры

ПараметрЗначение
dp1Атрибут точки данных (например, «Valve17.opening:_original..value»), или имя точки данных ПРИМЕЧАНИЕНе используйте точки данных из различных систем! Функция dpSet() работает только для одной системы. Если функция dpSet() используется, по крайней мере, для двух систем, она не работает, и появляется следующее сообщение об ошибке: WCCOAui     (1), 2006.09.26 14:11:19.266, PARAM,SEVERE,    175, this request cannot address more than one system, DP: dist_789:ExampleDP_Arg1.:_original.._valueWCCOAui     (1), 2006.09.26 14:11:19.266, CTRL, WARNING,    76, Invalid argument in function,
var1Присвоенное значение (например, 40) или DPCONFIG_DEFAULTVALUE

Возвращаемое значение

Функция dpSet() обычно возвращает 0. Однако в случае неудачи возвращает -1.

Ошибка

Ошибки можно вывести при помощи getLastError(). Возвращаемым значением в таком случае является соответствующий код ошибки. Аларм выдается в случае несуществующих точек данных, передачи неверных параметров или орфографических ошибок.

Описание

Функция dpSet() присваивает значения var1, var2, … атрибутам точек данных. Функции dpSet() можно передать любое количество пар атрибутов точки данных и значений. Атрибуты точки данных передаются в виде string, тип данных значения зависит от атрибута. Несколько точек данных могут быть установлены в массиве одновременно. Количество точек данных и значений в массивах должно быть одинаковым!
Можно добавить онфигурационный элемент, например, к существующему элементу точки данных или удалить его с помощью функции dpSet () или dpSetTimed(). Для этого просто укажите атрибут «_type» требуемого конфигурационного элемента. В качестве значения должна быть установлена подходящая постоянная Control. Эти значения могут быть найдены в приложении напротив соответствующего конфигурационного элемента.

ВНИМАНИЕ

В одной функции dpSet() не допускается более чем однократное присвоение значения одному и тому же атрибуту точки данных. В этом случае принимается только первое присвоение, а остальные отбрасываются.Учтите, что с увеличением числа пар значений будет происходить квадратичное снижение производительности функций.
Приложение также содержит другие константы Control и связанные с ними целые значения, которые можно установить (dpSet()) или извлечь (dpGet()). Если не существует определения для конфигурации или атрибута, используются следующие значения по умолчанию и добавляются внутренним образом:
ФункцияПо умолчанию
dpSet*()_original.._value
dpGet()_online.._value
dpGetAsynch()_offline.._value
dpGetPeriod()_offline.._value
dpConnect()_online.._value
dpDisconnect()_online.._value
ПРИМЕЧАНИЕ

Биты состояния драйвера могут быть установлены с помощью dpSet(). Виртуально построенные биты состояния, а также биты _default_bad и _stime_inv не могут быть установлены. См. главу _original для получения списка битов состояния. Это полезно для тестирования, например, для обучения пользователей.Неделимость dpSet

ВНИМАНИЕ

Использование неделимого параметра dpSet () может привести к небольшой потери производительности. Установка нескольких значений в одной операции dpSet() может привести к несогласованности, потому что некоторыеоперации записи, возможно, потерпят неудачу, а другие будут успешны. При операциях с неделимой точкой данных убедитесь, что ни одна операцияуспешного выполнения всех операций записи. Таким образом, исключается возможность сбоев. Использование неделимого параметра dpSet () может привести к небольшой потери производительности. При включении «atomicDpSet» в разделе «общие» конфигурационного файла, т.е. при установке «atomicDpSet = 1», всеоперации точек данных для конфигурационных элементов Original, Lock и General являются неделимыми, кроме операций записи,инициированных драйверами «КАСКАД Цифра», которые никогда не бывают неделимыми. Если активируется неделимый режим, но установленная операция точки данных включает в себя другие конфигурационные элементы, кроме Original, Lock,и General, операция обрабатывается неделимым способом. По умолчанию атомарное поведение отключено. Неделимый режим может быть использован для всех заданных операций точек данных, поддерживаемых «КАСКАД Цифра» («dpSet», «dpSetWait»,и т.п.). Если эти операции ограничены конфигурационными элементами Original, Lock, и General, все операцииявляются успешными или не выполняется ни одна. В случае отказа, устанавливается, соответственно, код возврата идальнейшие сообщения об ошибках могут быть получены обычным способом.

ЗначокПРИМЕР
Установка соотношения регулирования клапана Valve17 на 40%.
main() {   int rc; // возвратный код   rc=dpSet(«Valve17.opening:_original.._value», 40);   DebugN(rc); }
ЗначокПРИМЕР
Добавление конфигурационного элемента «replacement» (замена) к элементу точки данных Valve17.opening.
main() {    int rc;    rc=dpSet(«Valve17.opening:_default.._type», DPCONFIG_DEFAULTVALUE);    DebugN(rc); }
ЗначокПРИМЕР
Удаление конфигурационного элемента «replacement» (замена) из элемента точки данных Valve17.opening.
main() {    int rc;    rc=dpSet(«Valve17.opening:_default.._type», DPCONFIG_NONE);    DebugN(rc); }
ЗначокПРИМЕР Другая возможность состоит в следующем вызове с динамическими параметрами:
main() {    dpSet(makeDynString(«test1.:_original.._value»,»test2.:_original.._value»,    «test3.:_original.._value»,»test4.:_original.._value»,    «test5.:_original.._value»), makeDynBool(false, false, false, false,   
  false)); }

Используется для объекта

Функция точки данных

Доступность

UI, CTRL

См. также

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

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