УкраїнськаEnglishmRussian
Вхід/Новий
У темі немає нових постів

DAQGate - архивы отраженных параметров


Автор Повідомлення
Повідомлення створено: 23. 10. 2012 [07:06]
IrmIngeneer
Константин \m/
Contributor
Sponsor
Автор теми
Зареєстрован(а) с: 16.09.2010
Повідомлення: 185
Есть две станции - st1 и st2. st1 собирает и архивирует данные, в st2 настроен DAQGate для отражения нужных параметров и реализован графический интерфейс, архивирования нет, так как запускается только тогда, когда надо пользователю. Нужно получить на st2 значения отраженных параметров на опреденное время. Функция атрибута:

"Функции объекта атрибута параметра контроллера (SYS.DAQ["Modul"]["Controller"]["Parameter"]["Attribute"]):
ElTp get( int tm = 0, int utm = 0, bool sys = false ) — запрос значения атрибута на время <tm:utm> и признаком системного доступа <sys>."

возвращает только текущее значение.

Как правильно получить значение отраженного атрибута на указанное время?

[Повідомлення редагувалось 1 раз(ів), останній раз 23.10.2012 в 07:08.]
Повідомлення створено: 23. 10. 2012 [12:50]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"IrmIngeneer" wrote:

Есть две станции - st1 и st2. st1 собирает и архивирует данные, в st2 настроен DAQGate для отражения нужных параметров и реализован графический интерфейс, архивирования нет, так как запускается только тогда, когда надо пользователю. Нужно получить на st2 значения отраженных параметров на опреденное время. Функция атрибута:

Лучше тогда уже было сервер визуализации поднять на st1, а на st2 просто к нему подключаться, раз данных на st2 фактически нет.

"IrmIngeneer" wrote:

"Функции объекта атрибута параметра контроллера (SYS.DAQ["Modul"]["Controller"]["Parameter"]["Attribute"]):
ElTp get( int tm = 0, int utm = 0, bool sys = false ) — запрос значения атрибута на время <tm:utm> и признаком системного доступа <sys>."

возвращает только текущее значение.

Ну да. DAQ.DAQGate эту функцию не шлюзует.

"IrmIngeneer" wrote:

Как правильно получить значение отраженного атрибута на указанное время?

Проще и правильнее через сервер визуализации, но если очень хочеться получать данные из архива то используйте функцию сервисного запроса через интерфейс управления: string cntrReq(); http://wiki.oscada.org/Doc/OpisanieProgrammy#h920-6

Как-то так:
JAVASCRIPT
req = SYS.XMLNode("get").setAttr("path",PathToPrmAttrId+"/%2fserv%2fval").setAttr("tm",ValTime);
SYS.cntrReq(req,StationId);
attrVal = req.text();
attrTm = req.attr("tm");


Learn, learn and learn better than work, work and work.
Повідомлення створено: 25. 10. 2012 [06:40]
IrmIngeneer
Константин \m/
Contributor
Sponsor
Автор теми
Зареєстрован(а) с: 16.09.2010
Повідомлення: 185
Насчет DAQGate понял, спасибо.
Данные из архива получать хочется, попробовал через интерфейс управления:

JAVASCRIPT
TT = Special.FLibMath.floor(Special.FLibSYS.tmTime()/900-1)*900;
req = SYS.XMLNode("get").setAttr("path","/sub_DAQ/mod_LogicLev/cntr_T/prm_Tair/%2fval%2fOut").setAttr("tm",TT);
SYS.cntrReq(req,"Main");
SYS.messDebug (req.text(),req.attr("tm"));


tm устанавливается с привязкой к 15-мин. интервалу.
В req.text опять-таки текущее значение :-(, хотя tm верный.
Повідомлення створено: 25. 10. 2012 [09:01]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"IrmIngeneer" wrote:

JAVASCRIPT
TT = Special.FLibMath.floor(Special.FLibSYS.tmTime()/900-1)*900;
req = SYS.XMLNode("get").setAttr("path","/sub_DAQ/mod_LogicLev/cntr_T/prm_Tair/%2fval%2fOut").setAttr("tm",TT);
SYS.cntrReq(req,"Main");
SYS.messDebug (req.text(),req.attr("tm"));


В req.text опять-таки текущее значение :-(, хотя tm верный.

Запрос неверный, верный я вам записывал:
JAVASCRIPT
req = SYS.XMLNode("get").setAttr("path","/DAQ/LogicLev/T/Tair/Out/%2fserv%2fval").setAttr("tm",TT);


Learn, learn and learn better than work, work and work.
Повідомлення створено: 25. 10. 2012 [11:54]
IrmIngeneer
Константин \m/
Contributor
Sponsor
Автор теми
Зареєстрован(а) с: 16.09.2010
Повідомлення: 185
Спасибо, все получилось как надо, запрос формирую вот так:

JAVASCRIPT
req = SYS.XMLNode("get").setAttr("path","/DAQ/LogicLev/T/Tair/Out/%2fserv%2fval").setAttr("tm",TT.toString() + "000000");



19675