Author |
Message |
Written on: 23. 07. 2014 [17:41]
|
adsum
Andrew S
registered since: 03.10.2013
Posts: 31
|
Я тогда только понял ошибку, но не осознал как надо делать. Спасибо, сейчас вроде стало получше. :) Особенно после того, как сообразил сделать запрос info.
Теперь получается динамически создавать и удалять, вроде как любые, объекты. Но не могу понять как из скрипта включить архивирование.
Текущий статус могу получить через get запрос к /%2farch%2farch параметра (кстати, удивило, что результат по столбцам, а не строкам).
Пытался и через "Архив значений". Посредством процедуры динамически создаю объект, выполняю все настойки и "включаю", но как указать архиватор не могу понять.
|
Written on: 23. 07. 2014 [18:36]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"adsum" wrote:
Особенно после того, как сообразил сделать запрос info.
А "info" то Вам зачем?
"adsum" wrote:
Теперь получается динамически создавать и удалять, вроде как любые, объекты. Но не могу понять как из скрипта включить архивирование.
Текущий статус могу получить через get запрос к /%2farch%2farch параметра (кстати, удивило, что результат по столбцам, а не строкам).
Пытался и через "Архив значений". Посредством процедуры динамически создаю объект, выполняю все настойки и "включаю", но как указать архиватор не могу понять.
Ну правильно, "%2farch%2farch" для этого параметра и нужно, а для запросов читайте соответственно по интерфейсу управления, конкретно по запросам к таблице.
Learn, learn and learn better than work, work and work.
|
Written on: 24. 07. 2014 [15:11]
|
adsum
Andrew S
registered since: 03.10.2013
Posts: 31
|
А "info" то Вам зачем? Помогло "собрать" в голове внутреннюю XML структуру. Надеюсь теперь правильно. :)
... конкретно по запросам к таблице. У меня так и не получилось сделать как написано в документе. Но изучив исходники, задачу по установке архиватора решил через команду set с атрибутами col и key_atr.
|
Written on: 24. 07. 2014 [15:41]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"adsum" wrote:
А "info" то Вам зачем? Помогло "собрать" в голове внутреннюю XML структуру. Надеюсь теперь правильно. :)
... конкретно по запросам к таблице. У меня так и не получилось сделать как написано в документе. Но изучив исходники, задачу по установке архиватора решил через команду set с атрибутами col и key_atr.
В документе именно так и написано:
Запрос: команда "set": <set path="/fld_teg" user="user" row='3' col='id'>Test</set> или <set path="/fld_teg" user="user" key_id='Test' col='id'>Test1</set> для ключевого режима
Читается как — установить значение ячейки в строке 3 и колонке 'id' в «Test» или установка колонки с именем 'id' строки в позиции где значение колонки id равно 'Test' в значение 'Test1'. Практически данная команда переименовывает ключевой элемент указанной строки.
Результат: подтверждение или сообщение об ошибке.
Разве только нужно было "key_id", или кто там ключ, узнать из консоли по ручной установке архиватора.
Хотя знакомство с исходником для интерфейса управления подразумевался, поскольку он не позиционируется как пользовательский механизм.
Learn, learn and learn better than work, work and work.
|
Written on: 11. 02. 2015 [16:56]
|
monia
Олег Намятов
Topic creator
registered since: 21.05.2012
Posts: 173
|
Отправляю на станцию XML запрос с Apach-я
удалось подключиться пройти авторизацию и закрыть соединение, а вот выполнить XML запрос не получается
вот что я отправляю на станцию OpenSCADA через сокет
сам запрос: REQDIR root ******* 135 \n XMLNode("get").setAttr("path","/sub_DAQ/mod_LogicLev/cntr_r01k001_LL/prm_r01k001_Lcp/%2fval%2fsTimeChPrm).text()"
долго весит, а потом возвращает пустоту
Вопросы:
1) мне нужно указать количество символов всего сообщение или только самого XML запроса?
2) правильно ли я составил зарос к станции?
|
Written on: 11. 02. 2015 [17:08]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"monia" wrote:
Отправляю на станцию XML запрос с Apach-я
С чего? Разве сам HTTP сервер такое может и какое он к этому отношение вообще имеет.
"monia" wrote:
удалось подключиться пройти авторизацию и закрыть соединение, а вот выполнить XML запрос не получается
сам запрос: REQDIR root ******* 135 \n XMLNode("get").setAttr("path","/sub_DAQ/mod_LogicLev/cntr_r01k001_LL/prm_r01k001_Lcp/%2fval%2fsTimeChPrm).text()"
долго весит, а потом возвращает пустоту
Вопросы:
1) мне нужно указать количество символов всего сообщение или только самого XML запроса?
Запроса, после заголовка.
"monia" wrote:
2) правильно ли я составил зарос к станции?
Не правильно, каким боком это вообще XML?
Запускайте WireShark и смотрите на сеанс конфигуратора QTCfg.
Learn, learn and learn better than work, work and work.
|
Written on: 11. 02. 2015 [18:46]
|
monia
Олег Намятов
Topic creator
registered since: 21.05.2012
Posts: 173
|
Скрипт написан на php
Не правильно, каким боком это вообще XML?
Можешь привести пример запроса к параметру /sub_DAQ/mod_LogicLev/cntr_r01k001_LL/prm_r01k001_Lcp/%2fval%2fsTimeChPrm любым способом.
Желательно, что бы на выполнение запрос затрачивалось как можно меньше времени.
Если не сложно.
Заранее спасибо
|
Written on: 12. 02. 2015 [06:46]
|
monia
Олег Намятов
Topic creator
registered since: 21.05.2012
Posts: 173
|
вроде разобрался с чтением параметров
REQDIR root ******* 132 \n <get path="/sub_DAQ/mod_LogicLev/cntr_r01k001_LL/prm_r01k001_Lcp/%2fval%2fsTimeChPrm"/>
а как можно добавить и удалить контроллер, параметр?
|
Written on: 21. 04. 2015 [12:27]
|
aleax
Alexey Bondarchuk
registered since: 27.01.2010
Posts: 73
|
Подскажите пожалуйста как установить "галочку" в колонке "Обработка" в таблице архива значений.
При установке вручную в лог пишется следующее:
1|/Machine/sub_UI/mod_QTCfg/ | root| Встановлено '/Machine/sub_Archive/va_CPULoad_load/%2farch%2farch' чарунку ('key_arch=DBArch.1m,':proc) у: 1.
Написал такую программку :
Входніе параметры:
aid Arch ID Рядок Вхід false CPULoad_load
arch Arhivator ID Рядок Вхід false DBArch.1m
rez rez Логічний Повернення false 0
aid — ID архива значений в котором надо установить галочку напротив
arch — ID архиватора
// /Machine/sub_Archive/va_CPULoad_load/%2farch%2farch
path="TVArchive_archAttach";
req = SYS.XMLNode("get").setAttr("path","/sub_Archive/va_"+aid+"/%2farch%2farch");
SYS.cntrReq(req);
if(req["rez"] != 0) SYS.messErr(path,req);
SYS.messDebug(path,req);
list_arch=req.childGet( "list", 0 );
//SYS.messDebug(path,list_arch);
var num=EVAL_INT;
for(var i=0; i<list_arch.childSize(); i++)
{
var el=list_arch.childGet( "el", i );
// SYS.messDebug(path,"i="+i+"\t el="+el+"\t el.text()="+el.text());
if(el.text()==arch)
{
num=i;
break;
}
}
//SYS.messDebug(path,"num="+num);
if(num.isEVal())
{
rez=false;
return;
}
list_proc=req.childGet( "list", 2 );
//SYS.messDebug(path,list_proc);
var el=list_proc.childGet( "el", num );
el.setText("1");
//SYS.messDebug(path,req);
req1 = SYS.XMLNode("set").setAttr("path","/sub_Archive/va_"+aid+"/%2farch%2farch");
for(var i=0; i<req.childSize(); i++)
{
//SYS.messDebug(path,req.childGet(i));
req1.childAdd( req.childGet(i) );
}
SYS.cntrReq(req1);
if(req["rez"] != 0) SYS.messErr(path,req1);
SYS.messDebug(path,req1);
Но значение установить не получается.
Подскажите пожалуйста, как можно решить данную проблему.
Версия OpenSCADA 0.8.12 LTS
Attachment
scr1.png (File type: image/png, Size: 108.51 kilobytes) — 931 downloads
|
Written on: 21. 04. 2015 [16:29]
|
aleax
Alexey Bondarchuk
registered since: 27.01.2010
Posts: 73
|
"aleax" wrote:
Подскажите пожалуйста как установить "галочку" в колонке "Обработка" в таблице архива значений.
Оказалось все намного проще чем я нагородил выше.
Подглядел в исходниках QTCfg, как віглядит XML запрос:
<set path="/Machine/sub_Archive/va_CPULoad_load/%2farch%2farch" col="proc" key_arch="DBArch.1m">1</set>
И реализовал простенькую функцию:
// /Machine/sub_Archive/va_CPULoad_load/%2farch%2farch
path="TVArchive_archAttach";
req = SYS.XMLNode("set").setAttr("path","/sub_Archive/va_"+aid+"/%2farch%2farch");
//XMLNodeObj setAttr( string id, string vl ) — Установка атрибута id в значение vl. Возвращает текущий узел.
req.setAttr( "col", "proc" );
req.setAttr( "key_arch", arch );
req.setText("1");
SYS.cntrReq(req);
if(req["rez"] != 0) {
rez=false;
SYS.messErr(path,req);
}
else {
//SYS.messDebug(path,req);
rez=true;
}
|