EnglishУкраїнськаmRussian
Login/New
Topic with no new replies

Запрос значений напрямую из виджета.


Author Message
Written on: 17. 12. 2013 [12:29]
alsyro
Александр Сыропятов
Topic creator
registered since: 24.10.2013
Posts: 14
Здравствуйте, вопрос такой, можно ли запрашивать значения напрямую из виджета, минуя "СВЯЗЬ"? Вот допустим у меня есть в ModBus контроллер типа Hyandai01 в нём есть параметр data01 и есть атрибут frequency. И могу ли я обратиться к этому frequencyнапрямую? Скажем, как-нибудь так:

Button1_value=DAQ.Modbus.Hyandai01.data01.frequency;

При этом, чтобы в value передавалось именно то число, которое находится в frequency. Это нужно для того, чтобы пользователь мог жмакнуть на одну из over 50 кнопок и ему подставился нужный путь до атрибута, а не один из аргументов, из связей =\

[This article was edited 1 times, at last 17.12.2013 at 12:31.]
Written on: 17. 12. 2013 [13:59]
IrmIngeneer
Константин \m/
Contributor
Sponsor
registered since: 16.09.2010
Posts: 185
Мне помогла следующая страничка:

http://wiki.oscada.org/Doc/OpisanieProgrammy?v=x3w#h920-7

Смотрите пункт
5.6. Подсистема "Сбор данных" (SYS.DAQ)

Нужно для атрибута вызвать соответствующую функцию.
Written on: 23. 12. 2013 [09:50]
alsyro
Александр Сыропятов
Topic creator
registered since: 24.10.2013
Posts: 14
"IrmIngeneer" wrote:

Мне помогла следующая страничка:

http://wiki.oscada.org/Doc/OpisanieProgrammy?v=x3w#h920-7

Смотрите пункт
5.6. Подсистема "Сбор данных" (SYS.DAQ)

Нужно для атрибута вызвать соответствующую функцию.

Всё получилось, спасибо!

А для тех кто столкнётся с подобной проблемой - решение на о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");
Written on: 24. 12. 2013 [04:57]
IrmIngeneer
Константин \m/
Contributor
Sponsor
registered since: 16.09.2010
Posts: 185
"alsyro" wrote:

при этом можно смело создать переменную, в которой будет храниться основной путь и дописывать к нему параметры атрибута, например:
var path;

path=SYS.DAQ.Modbus.Hyandai01.data01;

И всё будет выглядеть проще:
Чтение - Frequency_value=path.frequency.get("tm")
Запись - path.frequency.set(Frequency_value,"tm");


И Вам спасибо. Меня всегда откровенно пугали неявные типы, и таким образом переменную у меня использовать не хватило фантазии. А это может быть очень полезно, например, для формирования документов.
Интересно, какого типа в этом случае переменная "path"?

[This article was edited 1 times, at last 24.12.2013 at 05:02.]
Written on: 24. 12. 2013 [07:56]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 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.
Written on: 14. 01. 2014 [07:08]
alsyro
Александр Сыропятов
Topic creator
registered since: 24.10.2013
Posts: 14
"roman" wrote:

P.S. Имя "Modbus" в цепи объектов некорректно!



Да, извиняюсь, там ModBus должно быть написано :)
Written on: 02. 02. 2018 [09:13]
IrmIngeneer
Константин \m/
Contributor
Sponsor
registered since: 16.09.2010
Posts: 185
Приветствую.
Имеется атрибут AddrVal, тип адрес, и атрибут Value вещественного типа. Адрес получается через входную связь. Как в скрипте записать в Value значение атрибута, адрес которого получается в AddrVal?
Attachment

Value.tif (File type: image/tiff, Size: 31.55 kilobytes) — 1682 downloads
Written on: 02. 02. 2018 [12:36]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"IrmIngeneer" wrote:

Приветствую.
Имеется атрибут AddrVal, тип адрес, и атрибут Value вещественного типа. Адрес получается через входную связь. Как в скрипте записать в Value значение атрибута, адрес которого получается в AddrVal?

В API пользователя всё написано!
В данном случае это nodeAt() и get(), set(), объекта атрибута куда указывает адрес.

Learn, learn and learn better than work, work and work.
Written on: 02. 02. 2018 [23:34]
IrmIngeneer
Константин \m/
Contributor
Sponsor
registered since: 16.09.2010
Posts: 185
Роман, спасибо. То, что нужно.
Получилось так:
JAVASCRIPT
Value = SYS.nodeAt(AddrVal).get();



1610