PDA

Просмотр полной версии : Запись в HDA тег



SokolovS
13.11.2013, 17:27
server.Message(server.GetAttributeTagByRelativeNam e(OutputTagsPref.._headers[i]));
server.WriteTagByRelativeNameToHda(OutputTagsPref. ._headers[i], w, OPC_QUALITY_GOOD, tm);
Код выполняется без ошибок до тех пор, пока OutputTagsPref не указывает на другой уровень вложенности
Как только в нём появляется точка (например, "Arch."), в логе примерно такое:
13-11-2013 16:24:24.390 Скачать:Узел1.МСД-200.Скачать >> WriteTagByRelativeNameToHda : Тег Arch.Канал 2 в устройстве не найден
13-11-2013 16:24:24.390 Узел1.МСД-200.Скачать:falsetable: 028CB1C0 Я бы ещё понял если бы GetAttributeTagByRelativeName тоже не находила, но ведь находит же!
Как побороть?

SCADAMaster
13.11.2013, 18:45
Это ошибка. Ошибка проявляется только с подустройствами. Замените подустройство на группу - тогда ошибка должна пропасть.
У вас кстати где скрипт находится - в устройстве, подусттройстве, теге?

SokolovS
14.11.2013, 09:04
Да, с группой всё работает, спасибо.
Скрипт сейчас в теге. Это принципиально?

SCADAMaster
14.11.2013, 10:53
А почему вы именно в теге его расположили? Почему не в подустройстве?

SokolovS
14.11.2013, 11:02
Запрос архива занимает продолжительное время, делать его постоянно нельзя
Поэтому я хочу сделать его по команде, в обработчике события Write и запрашиваю

SCADAMaster
14.11.2013, 13:09
То есть вы хотите опрашивать устройство по команде? А просто увеличение периода опроса вас не устраивает?

SokolovS
14.11.2013, 13:56
На данный момент это просто проба пера так сказать
Смотрю насколько это реализуемо, подводные камни, скорость, производительность
Попутно оформляю куски готового кода как надо
Плюс к тому как таковой системы ещё нет
Так что на данный момент работу сервера я вижу только как через запрос, но это не значит, что ничего поменяться не может
В чём ещё разница помимо явной?

SCADAMaster
14.11.2013, 18:28
Да в принципе можно и так. В любом случае перенести скрипт в подустройство труда не составит.