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

Запись значения в атрибут


| 1 | 2 | Last
Author Message
Written on: 28. 03. 2014 [09:34]
Vandrizm
Игорь М
Topic creator
registered since: 31.07.2010
Posts: 55
Если записывать значение в атрибут в следующей форме:
JAVASCRIPT
bool SYS.DAQ["Modul"]["Controller"]["Parameter"]["Attribute"].set( ElTp val, int tm = 0, int utm = 0, bool sys = false );


то как будет выглядеть запись, если атрибут является массивом и нужно записать значение в i-ый элемент массива?
Written on: 28. 03. 2014 [10:26]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3742
"Vandrizm" wrote:

Если записывать значение в атрибут в следующей форме:
JAVASCRIPT
bool SYS.DAQ["Modul"]["Controller"]["Parameter"]["Attribute"].set( ElTp val, int tm = 0, int utm = 0, bool sys = false );


то как будет выглядеть запись, если атрибут является массивом и нужно записать значение в i-ый элемент массива?

SYS.Modul.Controller.Parameter.Attribute.get()[i] = 123;

Learn, learn and learn better than work, work and work.
Written on: 28. 03. 2014 [11:33]
Vandrizm
Игорь М
Topic creator
registered since: 31.07.2010
Posts: 55
"roman" wrote:

"Vandrizm" wrote:

Если записывать значение в атрибут в следующей форме:
JAVASCRIPT
bool SYS.DAQ["Modul"]["Controller"]["Parameter"]["Attribute"].set( ElTp val, int tm = 0, int utm = 0, bool sys = false );


то как будет выглядеть запись, если атрибут является массивом и нужно записать значение в i-ый элемент массива?

SYS.Modul.Controller.Parameter.Attribute.get()[i] = 123;


Спасибо!
Written on: 28. 09. 2014 [02:25]
mictor
Виктор Молькин
registered since: 08.09.2014
Posts: 3
Добрый день!
Скажите, пожалуйста, что я делаю не так?
Хочу на мнемосхему выводить аналоговые параметры различных Ti , собранных в одну базу данных. Чтобы для каждого Ti не делать контроллер, решил создать один контроллер с одним входным параметром "codeTi" присваивать виджету - "мой вывод аналога" , у которого связь атрибута "pVal" будет с атрибутом моего контроллера, и буlет атрибут "codeTi" (у каждого виджета это константа val:"необходимый код" ) который должен передаться в контроллер для получения соответствующего значения "valTi"

создал на JavaLikeCalc контроллер , который опрашивает БД на MySQL. По уникальному коду записи (поле "code") выдаёт её заначение (поле "val")
code val
385 55
386 67
387 33
...
QTCfg
в функции на вкладке "Исполнить" и у соответствующего конироллера "MyController" -> "Параметры" -"Атрибуты" видны значения выполнения фукнции при входящем параметре "codeTi" =386 , это значение выставлено в функции по умолчанию.
В Vision разработке
скопировал Виджет "Отбор аналог", назвав "мой вывод аналога", добавил Атрибут "codeTi" .
в обработке виджета получаю значение codeTi и передаю в мой контроллер (например, "387", отличный от значения по умолчанию ):
SYS.DAQ["JavaLikeCalc"]["MyController"]["codeTi"]["codeTi"].set(codeTi,0,0,false );
......

При запуске мнемосхемы в моём аналоге выводится значение val=67, соответствующий code=386 а не code=387!
Получается строчка SYS.DAQ["JavaLikeCalc"]["MyController"]["codeTi"]["codeTi"].set(codeTi,0,0,false ); не отработала?

а SYS.DAQ["JavaLikeCalc"]["MyController"]["codeTi"]["codeTi"]get(0,0,false); отрабатывает! выдаёт значение по умолчанию (386)

что я делаю не так? Помогите новичку, плз.
Written on: 29. 09. 2014 [13:04]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3742
"mictor" wrote:

При запуске мнемосхемы в моём аналоге выводится значение val=67, соответствующий code=386 а не code=387!
Получается строчка SYS.DAQ["JavaLikeCalc"]["MyController"]["codeTi"]["codeTi"].set(codeTi,0,0,false ); не отработала?
а SYS.DAQ["JavaLikeCalc"]["MyController"]["codeTi"]["codeTi"]get(0,0,false); отрабатывает! выдаёт значение по умолчанию (386)

Раз чтение того-же атрибута проходит, а запись нет, то очевидно, что он недоступен для записи или перезаписывается там куда пишется.
И потом, зачем так сложно писать то, что записывается просто?
JAVASCRIPT
SYS.DAQ.JavaLikeCalc.MyController.codeTi.codeTi.set(codeTi);
SYS.DAQ.JavaLikeCalc.MyController.codeTi.codeTi.get();


Learn, learn and learn better than work, work and work.
Written on: 29. 09. 2014 [15:29]
mictor
Виктор Молькин
registered since: 08.09.2014
Posts: 3
Спасибо!
Наврал ! даже не читается. Выводит "0"

А если не читается и не пишиться значение в контроллер из виджета. Хотя на контроллере галочки стоят Включен и Запущен.
Статус: 0:Запущен.Вызовы с периодом:1с. Затрачено времени 30мс.
Из-за чего это может быть?

пробую в "Обработка" библиотечного виджета вывода аналога

SYS.DAQ.JavaLikeCalc.MyController.nameTi.nameTi.set("NameAnalog1");
pName=SYS.DAQ.JavaLikeCalc.MyController.nameTi.nameTi.get();

запускаю мнемосхему - Имя аналога не меняется.

pName="NameAnalog1";

Имя на мнемосхеме меняется!


Еще вопрос: можно ли в openscada всплывающие окна типа MessageBox из VBA / Чтобы туда в место текста вставлять значение переменных. для отладки.
Special.FLibSYS.messPut ничего не выскакивает.


[This article was edited 3 times, at last 30.09.2014 at 07:40.]
Written on: 30. 09. 2014 [11:14]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3742
"mictor" wrote:

А если не читается и не пишиться значение в контроллер из виджета. Хотя на контроллере галочки стоят Включен и Запущен.
Статус: 0:Запущен.Вызовы с периодом:1с. Затрачено времени 30мс.
Из-за чего это может быть?

Что-то делаете не так, в запросах к БД или откуда оно там берётся.

"mictor" wrote:

SYS.DAQ.JavaLikeCalc.MyController.nameTi.nameTi.set("NameAnalog1");
pName=SYS.DAQ.JavaLikeCalc.MyController.nameTi.nameTi.get();
запускаю мнемосхему - Имя аналога не меняется.

Из QTCfg Вы в атрибут вообще записать можете?

"mictor" wrote:

Еще вопрос: можно ли в openscada всплывающие окна типа MessageBox из VBA / Чтобы туда в место текста вставлять значение переменных. для отладки.

Смотрим, например, отчёт о нарушениях в ДемоБД.

"mictor" wrote:

Special.FLibSYS.messPut ничего не выскакивает.

Где написано, что должно?
Для отладки смотрим в "Диагностика" или "Сообщения", в LTS.

Learn, learn and learn better than work, work and work.
Written on: 02. 10. 2014 [15:12]
mictor
Виктор Молькин
registered since: 08.09.2014
Posts: 3
Решил сделать всё сначала. Создал всой проект на базе демо.
в QTCfg и в контроллере и в его функции меняя входной параметр codeTi я получаю правильный valTi.

В виджете не кочет записываться в входной параметр контроллера CodeTi
SYS.DAQ.JavaLikeCalc.seeMySQLController.codeTi.codeTi.set(pCODE); // не отрабатывается

в выходной параметр записывается!
SYS.DAQ.JavaLikeCalc.seeMySQLController.nameTi.nameTi.set(pCODE); // записывает в контроллер_nameTi
pName = SYS.DAQ.JavaLikeCalc.seeMySQLController.nameTi.nameTi.get(); // и выводит его

тут вот в картинках. может понятнее будет.
https://yadi.sk/i/oiQGdpBebn559

Уже мысль есть: отказаться от контроллера и обрабатывать данные прямо в виджете. Но с контроллером красивее получилось бы.

Апатия к жизни начинается. Помогите.

[This article was edited 2 times, at last 02.10.2014 at 15:21.]
Written on: 02. 10. 2014 [18:17]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3742
"mictor" wrote:

В виджете не кочет записываться в входной параметр контроллера CodeTi
SYS.DAQ.JavaLikeCalc.seeMySQLController.codeTi.codeTi.set(pCODE); // не отрабатывается

Беру ДемоБД, вставляю в тестовый кадр:
JAVASCRIPT
if(f_start) SYS.DAQ.LogicLev.experiment.F3.aMin.set(20);

Всё записалось!

Learn, learn and learn better than work, work and work.
Written on: 16. 02. 2016 [16:30]
coro
Bkmz Bkmz
registered since: 08.10.2014
Posts: 12
Добрый день!
Пытаюсь изменить состояния флагов (включен, открыт, обработка) в дереве открытых сессий, через пользовательские страницы: состояния флагов получаются без проблем, выключение (.setText("0");.setText(false);) тоже работает, но включить из JavaCalc (.setText("1");.setText(true);) не получается, причем нет никаких сообщений об ошибке. В то же время запросы через Self Protocol c использованием php и sockets) нормально отрабатывают. Так и задумано?

И никак не могу получить текущий ID при обработке в транспортном протоколе (modbus), аналогов логическому уровню не нашел:
SHIFR — Значение шифра параметра, только чтение.
NAME — Значение имени параметра, только чтение.
DESCR — Значение описания параметра, только чтение.
this — Объект данного параметра, позволяет получить доступ к атрибутам параметра, например, для доступа к архивам.

Есть ли возможность получить его? Спасибо!

[This article was edited 1 times, at last 16.02.2016 at 17:13.]
| 1 | 2 | Last



7834