УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

помогите с XML


Автор Сообщение
Сообщение создано: 23. 07. 2014 [17:41]
adsum
Andrew S
Зарегистрирован(а) с: 03.10.2013
Сообщения: 31
Я тогда только понял ошибку, но не осознал как надо делать. Спасибо, сейчас вроде стало получше. :) Особенно после того, как сообразил сделать запрос info.
Теперь получается динамически создавать и удалять, вроде как любые, объекты. Но не могу понять как из скрипта включить архивирование.
Текущий статус могу получить через get запрос к /%2farch%2farch параметра (кстати, удивило, что результат по столбцам, а не строкам).
Пытался и через "Архив значений". Посредством процедуры динамически создаю объект, выполняю все настойки и "включаю", но как указать архиватор не могу понять.
Сообщение создано: 23. 07. 2014 [18:36]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"adsum" wrote:

Особенно после того, как сообразил сделать запрос info.

А "info" то Вам зачем?

"adsum" wrote:

Теперь получается динамически создавать и удалять, вроде как любые, объекты. Но не могу понять как из скрипта включить архивирование.
Текущий статус могу получить через get запрос к /%2farch%2farch параметра (кстати, удивило, что результат по столбцам, а не строкам).
Пытался и через "Архив значений". Посредством процедуры динамически создаю объект, выполняю все настойки и "включаю", но как указать архиватор не могу понять.

Ну правильно, "%2farch%2farch" для этого параметра и нужно, а для запросов читайте соответственно по интерфейсу управления, конкретно по запросам к таблице.

Learn, learn and learn better than work, work and work.
Сообщение создано: 24. 07. 2014 [15:11]
adsum
Andrew S
Зарегистрирован(а) с: 03.10.2013
Сообщения: 31
А "info" то Вам зачем?
Помогло "собрать" в голове внутреннюю XML структуру. Надеюсь теперь правильно. :)
... конкретно по запросам к таблице.
У меня так и не получилось сделать как написано в документе. Но изучив исходники, задачу по установке архиватора решил через команду set с атрибутами col и key_atr.
Сообщение создано: 24. 07. 2014 [15:41]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"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.
Сообщение создано: 11. 02. 2015 [16:56]
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 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) правильно ли я составил зарос к станции?

Сообщение создано: 11. 02. 2015 [17:08]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"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.
Сообщение создано: 11. 02. 2015 [18:46]
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173
Скрипт написан на php

Не правильно, каким боком это вообще XML?

Можешь привести пример запроса к параметру /sub_DAQ/mod_LogicLev/cntr_r01k001_LL/prm_r01k001_Lcp/%2fval%2fsTimeChPrm любым способом.
Желательно, что бы на выполнение запрос затрачивалось как можно меньше времени.

Если не сложно.

Заранее спасибо


Сообщение создано: 12. 02. 2015 [06:46]
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173
вроде разобрался с чтением параметров

JAVASCRIPT
REQDIR root ******* 132 \n <get path="/sub_DAQ/mod_LogicLev/cntr_r01k001_LL/prm_r01k001_Lcp/%2fval%2fsTimeChPrm"/>


а как можно добавить и удалить контроллер, параметр?
Сообщение создано: 21. 04. 2015 [12:27]
aleax
Alexey Bondarchuk
Зарегистрирован(а) с: 27.01.2010
Сообщения: 73
Подскажите пожалуйста как установить "галочку" в колонке "Обработка" в таблице архива значений.
При установке вручную в лог пишется следующее:
JAVASCRIPT
1|/Machine/sub_UI/mod_QTCfg/ | root| Встановлено '/Machine/sub_Archive/va_CPULoad_load/%2farch%2farch' чарунку ('key_arch=DBArch.1m,':proc) у: 1.


Написал такую программку :
Входніе параметры:
JAVASCRIPT
aid	Arch ID	Рядок	Вхід	false	CPULoad_load
arch	Arhivator ID	Рядок	Вхід	false	DBArch.1m
rez	rez	Логічний	Повернення	false	0

aid — ID архива значений в котором надо установить галочку напротив
arch — ID архиватора

JAVASCRIPT
// /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
Вложенный файл

scr1.png (Тип файла: image/png, Размер: 108.51 килобайт) — 859 загрузок
Сообщение создано: 21. 04. 2015 [16:29]
aleax
Alexey Bondarchuk
Зарегистрирован(а) с: 27.01.2010
Сообщения: 73
"aleax" wrote:

Подскажите пожалуйста как установить "галочку" в колонке "Обработка" в таблице архива значений.


Оказалось все намного проще чем я нагородил выше.
Подглядел в исходниках QTCfg, как віглядит XML запрос:
JAVASCRIPT
<set path="/Machine/sub_Archive/va_CPULoad_load/%2farch%2farch" col="proc" key_arch="DBArch.1m">1</set>


И реализовал простенькую функцию:
JAVASCRIPT
// /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;
}



8738