Страница 1 из 1

Array в KepServer for Wonderware. Доступ из InTouch

СообщениеДобавлено: Пт июн 03, 2011 3:34 pm
LexSL
День добрый.
Подскажите как объявлять теги в Интаче с привязкой к элементам массива в KepServer.
В KepServer объявляю тег "MIS" с адресом 300000 [15] (тип данных Word).
Подключаясь к kepServer OPC клиентом (который с kepServer устанавливается) вижу поступающие данные в виде: [0,0,xx,xx,...,xx].

в Интаче делаю через AccessName: Node Name = localhost, AppName = Servermain, TopicName = _ddedata.
в словаре тегов создаю тег, указываю созданный AccessName, а Item = Channel1.device1.mis. Ну и на мнемосхему вывожу - он мне выводит первый элемент - "ноль". QualityStatus этого тега = 3 (гуд).
А как получить доступ к остальным элементам-то?
указывал и так "Channel1.device1.mis[3]", и так "Channel1.device1.mis.5" - в логах пишет "Failed to advise item "Channel1.Device1.MIS.5" for Access Name "kepware"". типа - нет такого Item.
Как быть?

----
Спасибо за поддержку

Re: Array в KepServer for Wonderware. Доступ из InTouch

СообщениеДобавлено: Пт июн 03, 2011 3:54 pm
Генератор зла
OPC-specific array data type (VT_ARRAY) is not supported in the DDE/SL plug-in. These arrays are converted to HEX strings, which provide legacy behavior.
1. Передавать каждый элемент массива в свой тег.
2. Передать массив как строку и в InTouch на скрипте эту строку "ломать".

Re: Array в KepServer for Wonderware. Доступ из InTouch

СообщениеДобавлено: Пт июн 03, 2011 4:43 pm
LexSL
Эээххх, а зря не поддерживается... :(
Объявил тег-строку I/O Message. на мнемосхеме отображает результат слияния всех word. вот так примерно "001158441740243107174173584182204404611113715702801530"
:))))
глядя то на числа - понимаю примерно, что я принимаю от прибора, но в том то и дело, что например, первый элемент word - он равен первому нулю, второй ворд = второй ноль, третий ворд = 1, ну а дальше четвертый ворд = 15844, и вот так и дальше вперемешку идет. и получается что строка в разные моменты времени имеет разную длину...как ее парсить в скриптах, не представляю. :(





Upd.
Сейчас поставил этот строковый тег в интаче на UserInputs, щелкнул на этом теге на мнемосхеме и обнаружил что числа(эти самые элементы массива) разделены символом типа "Tab".
Вот так:
0 0 1 45489 17401 36228 17417 31232 18062 18237 1 0 0 0 1699

сейчас думаю, может это мне чем то помочь или нет :))..наверно нужно всякими функциями типа StringLen, StringTrim, StringInString и т.п. поиграться...
правда, мне кажется что это не самое изящное решение, громоздко и неуклюже получится...

Re: Array в KepServer for Wonderware. Доступ из InTouch

СообщениеДобавлено: Пт июн 03, 2011 4:50 pm
Генератор зла
Разве я говорил, что будет легко? :)
Word = 2 Байта = 2 символа в строке (по идее).

Re: Array в KepServer for Wonderware. Доступ из InTouch

СообщениеДобавлено: Пт июн 03, 2011 5:13 pm
LexSL
Генератор зла писал(а):Разве я говорил, что будет легко? :)
Word = 2 Байта = 2 символа в строке (по идее).


Word = 0..65535 поэтому в строке от одного до 5 символов может быть. (по идее) :))

Re: Array в KepServer for Wonderware. Доступ из InTouch

СообщениеДобавлено: Пт июн 03, 2011 5:28 pm
Генератор зла
Именно поэтому в таких случаях массив Word-ов описывают в InTouch-е как строку, получая по 2 символа на каждый элемент массива.