Обращение к биту

Системная платформа - продукт для комплексной автоматизации процессов предприятия от Wonderware.

Обращение к биту

Сообщение TEVAS » Пт окт 05, 2012 8:25 pm

Добрый день всем!
В InTouch к, например, первому биту слова можно было обратиться так: <слово>.01.
А как в платформе?
В хелпе написано:

The primary value of the attribute.
Sometimes, a list of numbers is included in the Property list. Those numbers map to single bits in an integer attribute’s Value property. Valid bit field specifiers are:
.00 (least significant bit)
.01 .02 .03 .04 .05 .06 .07 .08 .09 .10 .11 .12 .13 .14 .15 .16 .17 .18 .19 .20 .21 .22 .23 .24 .25 .26 .27 .28 .29 .30
.31 (most significant bit)

Но когда я прописываю привязку к тегу и ставлю в конце .15 - ругается в SMC, что

"CreateItem failed due to invalid item name :Modbus_DRIVER.Modbus_MODICON1.38_1_ALARM.15 "

При этом у меня вход описан как Discrete.
Если я ставлю тип _, то в консоли ошибок нет.
Проверить работу смогу только на следующей неделе, но спрашиваю сейчас, потому что хочется сделать больше заготовок для тестирования.

В-общем, суть такова - я получаю слово алармов. Сделала шаблон от UserDefined объекта, завожу входы. Они все - биты слова, адрес которого описан в топике в драйвере связи в платформе.
В моем объекте не только алармы, но и состояния объекта - это тоже биты. При добавлении входа я описываю его как Discrete и для алармов я сразу указываю условие возникновения. Затем я делаю инстанс от этого шаблона и в нем привязываю значение для входа в виде Modbus_DRIVER.Modbus_MODICON1.38_1_ALARM.15. И что-то видимо не правильно ((

Подскажите, очень прошу!
Последний раз редактировалось TEVAS Пт окт 05, 2012 8:54 pm, всего редактировалось 1 раз.
Лучшее украшение жизни – хорошее настроение! ;-)
TEVAS
 
Сообщения: 89
Зарегистрирован: Пт июл 20, 2012 7:32 pm

Re: Обращение к биту

Сообщение Генератор зла » Пт окт 05, 2012 8:46 pm

Вы 100500-тая такая хитрая, которая хочет прописать вместо 320 дискретов 10 аналогов и сэкономить на лицензионных тегах. И почти все наступают на одни и те же грабли.
Обращение через .00 не работает на переменные DI-объектов.
А вот MyDiscrete (UDA) = _.PV.00 работает. По-моему так.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Обращение к биту

Сообщение TEVAS » Пт окт 05, 2012 9:07 pm

))))))))))) а я всегда считала, что единственная и неповторимая!! А оказалось - "Одна из..." Эх! Ну ладно ))
Я добавила UDA, и на вкладке Extensions указала в строке Input своё Modbus_DRIVER.Modbus_MODICON1.38_1_ALARM.15 и описала условие возникновения аларма.
Правильно вас поняла? А все равно в консоли текст: "Unable to add item 'Modbus_DRIVER.Modbus_MODICON1.38_1_ALARM.15' with access path 'Modbus_MODICON1_MDC1'"...
Лучшее украшение жизни – хорошее настроение! ;-)
TEVAS
 
Сообщения: 89
Зарегистрирован: Пт июл 20, 2012 7:32 pm

Re: Обращение к биту

Сообщение Генератор зла » Пт окт 05, 2012 9:37 pm

TEVAS писал(а):...А оказалось - "Одна из..." Эх! Ну ладно ))

В этом Вы не оригинал :twisted: Не беда ;)
TEVAS писал(а):Я добавила UDA, и на вкладке Extensions указала в строке Input своё Modbus_DRIVER.Modbus_MODICON1.38_1_ALARM.15 и описала условие возникновения аларма.
Правильно вас поняла? А все равно в консоли текст: "Unable to add item 'Modbus_DRIVER.Modbus_MODICON1.38_1_ALARM.15' with access path 'Modbus_MODICON1_MDC1'"...

Ч.т.д.
Придётся повторить:
Генератор зла писал(а):Обращение через .00 не работает на переменные DI-объектов.

Может, выделить болдом? :)
То, что в сервере в,в описано как Integer - описано как Integer в DI-объекте - должнО читаться в _ или в UDA (Integer). А вот потом можно обращаться к _.PV.0x
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Обращение к биту

Сообщение TEVAS » Пн окт 08, 2012 9:37 pm

Смешно, но не выходит.
Вот нашла в хелпе:

For example, you have an Integer address in a PLC that represents 16
different alarm states. You assign ObjA.UDA_Integer to point to the
PLC address. You then split the bits to different alarm attributes,
adding a field attribute for each alarm and naming them
ObjA.FA_Alarm00 to ObjA.FA_Alarm15. Each field attribute has an
input source that refers to a different bit of ObjA.UDA_Integer. For
example, ObjA.FA_00.InputSource -> me.UDA_Int.00, and so on.

Что я сейчас сделала. Есть шаблон. В нем я на вкладке UDAs добавила слово алармов - ALARM_WORD типа integer, значение равно 0 - оставила по умолчанию. У меня есть еще шаблон, в котором есть набор констант значений и константа типа integer равна 10. Я в шаблоне, где рассматриваю алармы, перехожу на вкладку Extensions, нахожу ALARM_WORD и в качестве InputSource привязываю с инстанса констант значение integer, то есть так: Constants.integer, (где integer - это другой UDA другого шаблона и равен 10). То есть я подозреваю, что в ALARM_WORD лежит значение 10.
Далее я раскрываю кладку Field attributes, завожу дискретный атрибут - Alarm1, ставлю ему AccessMode - Input, в качестве InputValue пишу Me.ALARM_WORD.01 - вроде все по хелпу!
То есть, если все правильно, то в первом бите слова ALARM_WORD у меня должна быть единица! А ее там нет!
Более того, значение 10 в ALARM_WORD тоже не записалось!
Чувствую, что просто что-то - не вижу ошибки и всё тут!!!!!!!!!!!! :cry:

Про
Генератор зла писал(а):То, что в сервере в,в описано как Integer - описано как Integer в DI-объекте - должнО читаться в _ или в UDA (Integer). А вот потом можно обращаться к _.PV.0x

простите, но не поняла тоже, уж зашифровали так зашифровали!!!!!!!!!!!! )))))))) :oops: :cry:
Лучшее украшение жизни – хорошее настроение! ;-)
TEVAS
 
Сообщения: 89
Зарегистрирован: Пт июл 20, 2012 7:32 pm

Re: Обращение к биту

Сообщение TEVAS » Пн окт 08, 2012 9:44 pm

Нашла до боли похожую тему (viewtopic.php?f=5&t=3815), где Вы в финале ответили
Генератор зла писал(а):В скрипте.

Так это все скриптами присваивается оказывается???? Как примерно будет выглядеть строка? и по какому условию скрипт? по изменению бита UDA ?
Лучшее украшение жизни – хорошее настроение! ;-)
TEVAS
 
Сообщения: 89
Зарегистрирован: Пт июл 20, 2012 7:32 pm

Re: Обращение к биту

Сообщение Генератор зла » Пн окт 08, 2012 11:46 pm

Как это сделать элегантно - не знаю, никогда не заморачивался именно этой проблемой.
Топорно - примерно так:
1. В DI-объекте описать аналоговую Int-переменную.
2. В аналог-девайсе в ИнпутСоурсе дать на неё ссылку.
3. Проверить, что поле PV аналог-девайса корректно отображает значение Int
4. В аналог-девайсе создать UDA (Bool)
5. В аналог-девайсе создать скрипт (DataChange (PV), Periodic), а в скрипте:
UDA = аналог-девайс.PV.00

Должно работать.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Обращение к биту

Сообщение TEVAS » Вт окт 09, 2012 3:41 pm

ДОБРОЕ УТРО!!!!!!!!
Я победила! :) Рассказываю!

Ошибка моя заключалась в том, что я слово алармов добавила в UDAs, а привязывала его биты к созданным мной битовым Field Attributes.
Сейчас поступила, как Вы подсказали)) - завела в Field Attributes слово алармов типа Integer, для него указала источник данных (пока проверяю работу на внутренних тегах, поэтому привязала UDA созданного для других целей экземпляра): MyInstance.IntValue. В UDAs создала дискретный тег BIT, на вход которого (Input Source) привязала MyInstance.IntValue.01 (желаемый бит)))
И всё! :)
Создала кнопочку, которой меняю значение MyInstance.IntValue и соответственно в Object Viewer'e вижу, что моему UDAs'у BIT передается то 0, то 1 в зависимости от значения MyInstance.IntValue (чередую значения 8 <-> 10 и получаю то "TRUE", то "FALSE" в первом бите))))))))
Теперь думаю, что заменив внутреннее значение MyInstance.IntValue на внешнее из объекта DI, я получу, что мне нужно ))))))))))))
Заработало и без скриптов. :D
СПАСИБО, УВАЖАЕМЫЙ ГЕНЕРАТОР ЗЛА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

P.S. По-моему в хелпе, пример которого я привела выше, описано как-раз ошибочное решение этого вопроса...
Лучшее украшение жизни – хорошее настроение! ;-)
TEVAS
 
Сообщения: 89
Зарегистрирован: Пт июл 20, 2012 7:32 pm


Вернуться в Wonderware System Platform

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 6