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

Запись сообщений в архив с произвольной временной меткой


Author Message
Written on: 10. 01. 2012 [07:20]
yozhik
Алексей Николаев
Topic creator
registered since: 29.11.2010
Posts: 127
С устройства по Modbus считывается архив сообщений, содержащий точную временную метку каждого сообщений. Можно ли с этой же временной меткой внести сообщение в архив OpenSCADA (например, аналогом функции SYS.message, в которой также передается временная метка)? Искал, но пока способа это сделать не нашел.
Written on: 10. 01. 2012 [08:17]
s-s-n
s-s-n
registered since: 16.08.2011
Posts: 83
"yozhik" wrote:

Можно ли с этой же временной меткой внести сообщение в архив OpenSCADA


Сейчас занимаюсь таким-же архивом. Один из вариантов, добавить свое поле в таблицу и писать туда.
Written on: 10. 01. 2012 [10:41]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
Документацию читаем http://wiki.oscada.org/Doc/OpisanieProgrammy#h920-1
Там есть две функции, первая для записи последнего значения с меткой времени, непосредственно через объект атрибута:
JAVASCRIPT
bool set( ElTp val, int tm = 0, int utm = 0, bool sys = false ) — запись значения <val> в атрибут с меткой времени <tm:utm> и признаком системного доступа <sys>.


И непосредственно запись в архив через объект буфера "VArchObj", о чём здесь:
http://wiki.oscada.org/Doc/FLibSYS#h378-3

Learn, learn and learn better than work, work and work.
Written on: 10. 01. 2012 [12:42]
yozhik
Алексей Николаев
Topic creator
registered since: 29.11.2010
Posts: 127
Если я правильно понимаю, то второй способ относится к архиву значений, а не сообщений.

А по поводу первого способа вопрос такой: если я запишу значение объекта атрибута с меткой времени, то в момент выполнения скрипта шаблона и генерации сообщения этому самому сообщению присвоится ведь все равно временная метка момента выполнения скрипта, а не записанная совместно с объектом атрибута?
Written on: 10. 01. 2012 [13:25]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"yozhik" wrote:

Если я правильно понимаю, то второй способ относится к архиву значений, а не сообщений.

Да

"yozhik" wrote:

А по поводу первого способа вопрос такой: если я запишу значение объекта атрибута с меткой времени, то в момент выполнения скрипта шаблона и генерации сообщения этому самому сообщению присвоится ведь все равно временная метка момента выполнения скрипта, а не записанная совместно с объектом атрибута?

Зачем вы смешали сообщения и значения?
При записи значения указанной функцией, с меткой времени, происходит то что и ожидается, а именно установка текущего значения атрибута с указанной меткой времени, а как это попадёт в архив зависит от способа архивирования http://wiki.oscada.org/Doc/OpisanieProgrammy/part4/files?get=subsys_arch_va_arch.png.
Если это пассивный механизм, то в буфер архива значение попадет с указанной меткой времени, непосредственно в момент записи. При активном механизме архиватор сходит за значением сам и положит его в буфер архива с текущим временем, проигнорировав указанную метку времени.

Learn, learn and learn better than work, work and work.
Written on: 10. 01. 2012 [13:29]
yozhik
Алексей Николаев
Topic creator
registered since: 29.11.2010
Posts: 127
"roman" wrote:

Зачем вы смешали сообщения и значения?

Так меня изначально и интересовал механизм записи в архив сообщений, а не значений. Речь идет о том, что из устройства по Modbus считываются события с меткой времени. Так вот их и надо с этой меткой сохранить в архиве СООБЩЕНИЙ, а не значений. Пока не придумал только как.
Written on: 10. 01. 2012 [14:15]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"yozhik" wrote:

Так меня изначально и интересовал механизм записи в архив сообщений, а не значений. Речь идет о том, что из устройства по Modbus считываются события с меткой времени. Так вот их и надо с этой меткой сохранить в архиве СООБЩЕНИЙ, а не значений. Пока не придумал только как.

Про эту функцию забыл совсем. Добавил:
bool messPut(int tm, int utm, string cat, int lev, string mess); — запись сообщения <mess> с категорией <cat>, уровнем <lev> и временем <tm>.<utm> в архив и/или список нарушений.


Learn, learn and learn better than work, work and work.



14288