Сообщение создано: 10. 01. 2012 [07:20]
|
yozhik
Алексей Николаев
Создатель темы
Зарегистрирован(а) с: 29.11.2010
Сообщения: 127
|
С устройства по Modbus считывается архив сообщений, содержащий точную временную метку каждого сообщений. Можно ли с этой же временной меткой внести сообщение в архив OpenSCADA (например, аналогом функции SYS.message, в которой также передается временная метка)? Искал, но пока способа это сделать не нашел.
|
Сообщение создано: 10. 01. 2012 [08:17]
|
s-s-n
s-s-n
Зарегистрирован(а) с: 16.08.2011
Сообщения: 83
|
"yozhik" wrote:
Можно ли с этой же временной меткой внести сообщение в архив OpenSCADA
Сейчас занимаюсь таким-же архивом. Один из вариантов, добавить свое поле в таблицу и писать туда.
|
Сообщение создано: 10. 01. 2012 [10:41]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
Документацию читаем http://wiki.oscada.org/Doc/OpisanieProgrammy#h920-1
Там есть две функции, первая для записи последнего значения с меткой времени, непосредственно через объект атрибута:
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.
|
Сообщение создано: 10. 01. 2012 [12:42]
|
yozhik
Алексей Николаев
Создатель темы
Зарегистрирован(а) с: 29.11.2010
Сообщения: 127
|
Если я правильно понимаю, то второй способ относится к архиву значений, а не сообщений.
А по поводу первого способа вопрос такой: если я запишу значение объекта атрибута с меткой времени, то в момент выполнения скрипта шаблона и генерации сообщения этому самому сообщению присвоится ведь все равно временная метка момента выполнения скрипта, а не записанная совместно с объектом атрибута?
|
Сообщение создано: 10. 01. 2012 [13:25]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 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.
|
Сообщение создано: 10. 01. 2012 [13:29]
|
yozhik
Алексей Николаев
Создатель темы
Зарегистрирован(а) с: 29.11.2010
Сообщения: 127
|
"roman" wrote:
Зачем вы смешали сообщения и значения?
Так меня изначально и интересовал механизм записи в архив сообщений, а не значений. Речь идет о том, что из устройства по Modbus считываются события с меткой времени. Так вот их и надо с этой меткой сохранить в архиве СООБЩЕНИЙ, а не значений. Пока не придумал только как.
|
Сообщение создано: 10. 01. 2012 [14:15]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 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.
|