Автор |
Сообщение |
Сообщение создано: 28. 03. 2014 [09:34]
|
Vandrizm
Игорь М
Создатель темы
Зарегистрирован(а) с: 31.07.2010
Сообщения: 55
|
Если записывать значение в атрибут в следующей форме:
bool SYS.DAQ["Modul"]["Controller"]["Parameter"]["Attribute"].set( ElTp val, int tm = 0, int utm = 0, bool sys = false );
то как будет выглядеть запись, если атрибут является массивом и нужно записать значение в i-ый элемент массива?
|
Сообщение создано: 28. 03. 2014 [10:26]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"Vandrizm" wrote:
Если записывать значение в атрибут в следующей форме:
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.
|
Сообщение создано: 28. 03. 2014 [11:33]
|
Vandrizm
Игорь М
Создатель темы
Зарегистрирован(а) с: 31.07.2010
Сообщения: 55
|
"roman" wrote:
"Vandrizm" wrote:
Если записывать значение в атрибут в следующей форме:
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;
Спасибо!
|
Сообщение создано: 28. 09. 2014 [02:25]
|
mictor
Виктор Молькин
Зарегистрирован(а) с: 08.09.2014
Сообщения: 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)
что я делаю не так? Помогите новичку, плз.
|
Сообщение создано: 29. 09. 2014 [13:04]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"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)
Раз чтение того-же атрибута проходит, а запись нет, то очевидно, что он недоступен для записи или перезаписывается там куда пишется.
И потом, зачем так сложно писать то, что записывается просто?
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.
|
Сообщение создано: 29. 09. 2014 [15:29]
|
mictor
Виктор Молькин
Зарегистрирован(а) с: 08.09.2014
Сообщения: 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 ничего не выскакивает.
[Сообщение редактировалось 3 раз(а), в последний раз 30.09.2014 в 07:40.]
|
Сообщение создано: 30. 09. 2014 [11:14]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"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.
|
Сообщение создано: 02. 10. 2014 [15:12]
|
mictor
Виктор Молькин
Зарегистрирован(а) с: 08.09.2014
Сообщения: 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
Уже мысль есть: отказаться от контроллера и обрабатывать данные прямо в виджете. Но с контроллером красивее получилось бы.
Апатия к жизни начинается. Помогите.
[Сообщение редактировалось 2 раз(а), в последний раз 02.10.2014 в 15:21.]
|
Сообщение создано: 02. 10. 2014 [18:17]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"mictor" wrote:
В виджете не кочет записываться в входной параметр контроллера CodeTi
SYS.DAQ.JavaLikeCalc.seeMySQLController.codeTi.codeTi.set(pCODE); // не отрабатывается
Беру ДемоБД, вставляю в тестовый кадр:
if(f_start) SYS.DAQ.LogicLev.experiment.F3.aMin.set(20);
Всё записалось!
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 16. 02. 2016 [16:30]
|
coro
Bkmz Bkmz
Зарегистрирован(а) с: 08.10.2014
Сообщения: 12
|
Добрый день!
Пытаюсь изменить состояния флагов (включен, открыт, обработка) в дереве открытых сессий, через пользовательские страницы: состояния флагов получаются без проблем, выключение (.setText("0");.setText(false);) тоже работает, но включить из JavaCalc (.setText("1");.setText(true);) не получается, причем нет никаких сообщений об ошибке. В то же время запросы через Self Protocol c использованием php и sockets) нормально отрабатывают. Так и задумано?
И никак не могу получить текущий ID при обработке в транспортном протоколе (modbus), аналогов логическому уровню не нашел:
SHIFR — Значение шифра параметра, только чтение.
NAME — Значение имени параметра, только чтение.
DESCR — Значение описания параметра, только чтение.
this — Объект данного параметра, позволяет получить доступ к атрибутам параметра, например, для доступа к архивам.
Есть ли возможность получить его? Спасибо!
[Сообщение редактировалось 1 раз(а), в последний раз 16.02.2016 в 17:13.]
|