Автор |
Сообщение |
Сообщение создано: 17. 12. 2013 [12:29]
|
alsyro
Александр Сыропятов
Создатель темы
Зарегистрирован(а) с: 24.10.2013
Сообщения: 14
|
Здравствуйте, вопрос такой, можно ли запрашивать значения напрямую из виджета, минуя "СВЯЗЬ"? Вот допустим у меня есть в ModBus контроллер типа Hyandai01 в нём есть параметр data01 и есть атрибут frequency. И могу ли я обратиться к этому frequencyнапрямую? Скажем, как-нибудь так:
Button1_value=DAQ.Modbus.Hyandai01.data01.frequency;
При этом, чтобы в value передавалось именно то число, которое находится в frequency. Это нужно для того, чтобы пользователь мог жмакнуть на одну из over 50 кнопок и ему подставился нужный путь до атрибута, а не один из аргументов, из связей =\
[Сообщение редактировалось 1 раз(а), в последний раз 17.12.2013 в 12:31.]
|
Сообщение создано: 17. 12. 2013 [13:59]
|
IrmIngeneer
Константин \m/
Contributor Sponsor
Зарегистрирован(а) с: 16.09.2010
Сообщения: 185
|
Мне помогла следующая страничка:
http://wiki.oscada.org/Doc/OpisanieProgrammy?v=x3w#h920-7
Смотрите пункт
5.6. Подсистема "Сбор данных" (SYS.DAQ)
Нужно для атрибута вызвать соответствующую функцию.
|
Сообщение создано: 23. 12. 2013 [09:50]
|
alsyro
Александр Сыропятов
Создатель темы
Зарегистрирован(а) с: 24.10.2013
Сообщения: 14
|
Всё получилось, спасибо!
А для тех кто столкнётся с подобной проблемой - решение на оcнове моего примера:
1. Чтение атрибута частоты и запись его в строковый виджет на основе FormEl : Frequency_value=SYS.DAQ.Modbus.Hyandai01.data01.frequency.get("tm");
2. Запись значений значений виджета в атрибут SYS.DAQ.Modbus.Hyandai01.data01.frequency.set(Frequency_value,"tm");
при этом можно смело создать переменную, в которой будет храниться основной путь и дописывать к нему параметры атрибута, например:
var path;
path=SYS.DAQ.Modbus.Hyandai01.data01;
И всё будет выглядеть проще:
Чтение - Frequency_value=path.frequency.get("tm")
Запись - path.frequency.set(Frequency_value,"tm");
|
Сообщение создано: 24. 12. 2013 [04:57]
|
IrmIngeneer
Константин \m/
Contributor Sponsor
Зарегистрирован(а) с: 16.09.2010
Сообщения: 185
|
"alsyro" wrote:
при этом можно смело создать переменную, в которой будет храниться основной путь и дописывать к нему параметры атрибута, например:
var path;
path=SYS.DAQ.Modbus.Hyandai01.data01;
И всё будет выглядеть проще:
Чтение - Frequency_value=path.frequency.get("tm")
Запись - path.frequency.set(Frequency_value,"tm");
И Вам спасибо. Меня всегда откровенно пугали неявные типы, и таким образом переменную у меня использовать не хватило фантазии. А это может быть очень полезно, например, для формирования документов.
Интересно, какого типа в этом случае переменная "path"?
[Сообщение редактировалось 1 раз(а), в последний раз 24.12.2013 в 05:02.]
|
Сообщение создано: 24. 12. 2013 [07:56]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"IrmIngeneer" wrote:
"alsyro" wrote:
path=SYS.DAQ.Modbus.Hyandai01.data01;
...
Интересно, какого типа в этом случае переменная "path"?
Объектного, а проверить можно напечатав или сравнив typeof(path). Т.е. по сути это не путь, как назвали, а ссылка на объект параметра.
P.S. Имя "Modbus" в цепи объектов некорректно!
P.P.S. Такой оборот вообще можно объединять со связями. Т.е. по связи получить адрес на атрибут, который есть у всех параметров, через этот адрес подключиться к объекту атрибута, подняться выше и получить объект параметра, а далее обращаться к любому другому атрибуту. Думал для этого получать адрес любого узла DAQ, а не только атрибута, в UI.Vision.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 14. 01. 2014 [07:08]
|
alsyro
Александр Сыропятов
Создатель темы
Зарегистрирован(а) с: 24.10.2013
Сообщения: 14
|
"roman" wrote:
P.S. Имя "Modbus" в цепи объектов некорректно!
Да, извиняюсь, там ModBus должно быть написано :)
|
Сообщение создано: 02. 02. 2018 [09:13]
|
IrmIngeneer
Константин \m/
Contributor Sponsor
Зарегистрирован(а) с: 16.09.2010
Сообщения: 185
|
Приветствую.
Имеется атрибут AddrVal, тип адрес, и атрибут Value вещественного типа. Адрес получается через входную связь. Как в скрипте записать в Value значение атрибута, адрес которого получается в AddrVal?
Вложенный файл
Value.tif (Тип файла: image/tiff, Размер: 31.55 килобайт) — 1673 загрузок
|
Сообщение создано: 02. 02. 2018 [12:36]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"IrmIngeneer" wrote:
Приветствую.
Имеется атрибут AddrVal, тип адрес, и атрибут Value вещественного типа. Адрес получается через входную связь. Как в скрипте записать в Value значение атрибута, адрес которого получается в AddrVal?
В API пользователя всё написано!
В данном случае это nodeAt() и get(), set(), объекта атрибута куда указывает адрес.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 02. 02. 2018 [23:34]
|
IrmIngeneer
Константин \m/
Contributor Sponsor
Зарегистрирован(а) с: 16.09.2010
Сообщения: 185
|
Роман, спасибо. То, что нужно.
Получилось так:
Value = SYS.nodeAt(AddrVal).get();
|