Настройка архивирования
Author |
Message |
Written on: 17. 02. 2013 [14:58]
|
aleax
Alexey Bondarchuk
Topic creator
registered since: 27.01.2010
Posts: 73
|
Помогите разобраться, а то запутался.
Надо вести 2 архива: долгосрочный (глубина ограничена возможностями носителя) и краткосрочный (последние сутки).
Из-за множества источников данных (порядка 2 тысяч датчиков температуры), используется не "стандартный", простой механизм архивирования активного параметра (через простановку галочки на вкладке "Архивация"), а через запись скриптом обработки данных в заранее созданные скриптом "пасивные" архивы.
Для долгосрочного архива необходимо хранить одно значение в сутки. Для краткосрочного достаточно одной записи в минуту (данные с полевого уровня обновляются не быстрее 1 раза в минуту).
Вот пытаюсь понять какие значения параметров необходимо выставить в настройках модуля архиватора значений на ФС (Периодичность значений (сек) и Период архивирования (сек), с ограничением глубины и ротацией вроде все понятно), а также в индивидуальных настройках каждого архива значений при их создании (Период буфера (сек) и Размер буфера (единиц)).
Читаю доку, но меня что-то переклинивает.
Не менее важными параметрами архива являются параметры его буфера. От параметров буфера зависит возможность работы архиваторов. Так, периодичность значений в буфере должна быть не больше периодичности самого быстрого архиватора, а размер буфера не менее двойного размера для самого медленного архиватора. В противном случае возможны потери данных!
На графике, архив должен выглядеть не как ряд точек, раз в сутки, а как линия, соединяющия "суточные" значения.
Помогите пожалуйста разобраться.
|
Written on: 17. 02. 2013 [16:07]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"aleax" wrote:
Из-за множества источников данных (порядка 2 тысяч датчиков температуры), используется не "стандартный", простой механизм архивирования активного параметра (через простановку галочки на вкладке "Архивация"), а через запись скриптом обработки данных в заранее созданные скриптом "пасивные" архивы.
И зачем? Создаёте просто два архиватора с разными лимитами для которых и ставите отдельно по флагу в "Архивация". В той-же ДемоБД создано три архиватора "1s", "1m", "1h" для подобных задач. Концепцию перечитайте, для понимания: http://wiki.oscada.org/Doc/FSArch#h86-6
"aleax" wrote:
Вот пытаюсь понять какие значения параметров необходимо выставить в настройках модуля архиватора значений на ФС (Периодичность значений (сек) и Период архивирования (сек), с ограничением глубины и ротацией вроде все понятно), а также в индивидуальных настройках каждого архива значений при их создании (Период буфера (сек) и Размер буфера (единиц)).
Смотрите пример в ДемоБД.
"aleax" wrote:
На графике, архив должен выглядеть не как ряд точек, раз в сутки, а как линия, соединяющия "суточные" значения.
Создавайте архиватор с периодичностью в сутки, опять-же это чистый случай ДемоБД!
Learn, learn and learn better than work, work and work.
|
Written on: 18. 02. 2013 [17:00]
|
aleax
Alexey Bondarchuk
Topic creator
registered since: 27.01.2010
Posts: 73
|
"roman" wrote:
И зачем? Создаёте просто два архиватора с разными лимитами для которых и ставите отдельно по флагу в "Архивация". В той-же ДемоБД создано три архиватора "1s", "1m", "1h" для подобных задач. Концепцию перечитайте, для понимания: http://wiki.oscada.org/Doc/FSArch#h86-6
Проект выглядит в общих чертах так.
На "нижнем" уровне сбора данных, в контроллерах DAQ.ModBus собираются данные с разнотипных плат, каждая со своими ньюансами на уровне протокола ("карты регистров").
Например с платы где подключенны цифровые датчики температуры далас вычитываетсья большой масив целочисленных регистров, в котором однотипно храннятся ID датчиков, и значения температур. Который обрабатывется скриптом, и приводится к унифицирванному виду. Унифицированный вид, это объект (в терминологии скады) с заранее оговоренной структурой данных, что в нем хранится (сами значения, позция, коды ошиибок и т.д.).
На логичеком уровне в контролерах, которые уже обрабатывают логическую единицу мониторинге (напр склад, силос, силкорпус) заводится через связь _один_ объект с данными.
Тут проводится его обработка, сопоставление границ и т.п. , а так же и "пасивное" архивирование, (так как галочки проставлять негде, да и не удобно для такого большого количества датчиков), которое включает в себя запись значения в соответсвующий архив, создание архива если он отсутсвует, "линковка" его с соответсвующими архиваторами и т.п. (для последних задач, был написан небольшой модуль spec_LowLovelAPI, по примеру модулей spec, для доступа к некоторым сишным функциям API openscada, из скриптов JavaLikeCalk).
На уровне VCAEngine похожиим образом динамически строиться GUI, исходя из содержимого объекта данных, переданого с LogicLev (опять не надо делать много связей).
Потому и не пошли, через стандартную концепцию архивирования.
|
Written on: 18. 02. 2013 [17:21]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"aleax" wrote:
Тут проводится его обработка, сопоставление границ и т.п. , а так же и "пасивное" архивирование, (так как галочки проставлять негде, да и не удобно для такого большого количества датчиков), которое включает в себя запись значения в соответсвующий архив, создание архива если он отсутсвует, "линковка" его с соответсвующими архиваторами и т.п. (для последних задач, был написан небольшой модуль spec_LowLovelAPI, по примеру модулей spec, для доступа к некоторым сишным функциям API openscada, из скриптов JavaLikeCalk).
Графики Вы прямо на архивы линкуете получается?
"aleax" wrote:
Потому и не пошли, через стандартную концепцию архивирования.
Это вовсе не объясняет почему Вы не создаёте архиваторы типа "1s", "1h", которые а в самих пассивных архивах их и выбрать.
Learn, learn and learn better than work, work and work.
|
Written on: 18. 02. 2013 [17:33]
|
aleax
Alexey Bondarchuk
Topic creator
registered since: 27.01.2010
Posts: 73
|
"roman" wrote:
Графики Вы прямо на архивы линкуете получается?
Это вовсе не объясняет почему Вы не создаёте архиваторы типа "1s", "1h", которые а в самих пассивных архивах их и выбрать.
Да, линкуем на архивы. Да создали архиваторы "1d" и "1m".
И все вроде работает.
Просто пытаюсь осмыслить
важными параметрами архива являются параметры его буфера. От параметров буфера зависит возможность работы архиваторов. Так, периодичность значений в буфере должна быть не больше периодичности самого быстрого архиватора, а размер буфера не менее двойного размера для самого медленного архиватора. В противном случае возможны потери данных!
и правильно выставить Период буфера (сек) и Размер буфера (единиц) и Периодичность значений (сек) и Период архивирования (сек). Ну с периодичностью значений вроде понятно: 86400 для 1d и 60 для 1m.
|
Written on: 18. 02. 2013 [21:22]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"roman" wrote:
... которое включает в себя запись значения в соответсвующий архив, создание архива если он отсутсвует, "линковка" его с соответсвующими архиваторами и т.п. (для последних задач, был написан небольшой модуль spec_LowLovelAPI, по примеру модулей spec, для доступа к некоторым сишным функциям API openscada, из скриптов JavaLikeCalk).
Что-же там у Вас в "spec_LowLovelAPI"? В настоящем пользовательском API вроде всё для ваших задач есть.
Learn, learn and learn better than work, work and work.
|
Written on: 18. 02. 2013 [22:04]
|
aleax
Alexey Bondarchuk
Topic creator
registered since: 27.01.2010
Posts: 73
|
"roman" wrote:
Что-же там у Вас в "spec_LowLovelAPI"? В настоящем пользовательском API вроде всё для ваших задач есть.
НазваниеКласса_НазваниеФункции из "C" API:
TArchiveS_valAdd
TArchiveS_valDel
TArchiveS_valList
TArchiveS_valPresent
TController_list
TTipArchivator_valList
TTipDAQ_list
TVArchive_archivatorAttach
|
Written on: 19. 02. 2013 [10:22]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"aleax" wrote:
TArchiveS_valAdd
TArchiveS_valDel
TArchiveS_valList
TArchiveS_valPresent
TController_list
TTipArchivator_valList
TTipDAQ_list
TVArchive_archivatorAttach
Всё это доступно через интерфейс управления OpenSCADA, так-же как и через конфигураторы, посредством функции "SYS.cntrReq()": http://wiki.oscada.org/Doc/OpisanieProgrammy#h920-6
Learn, learn and learn better than work, work and work.
|
Written on: 28. 02. 2013 [15:44]
|
aleax
Alexey Bondarchuk
Topic creator
registered since: 27.01.2010
Posts: 73
|
"roman" wrote:
"aleax" wrote:
На графике, архив должен выглядеть не как ряд точек, раз в сутки, а как линия, соединяющия "суточные" значения.
Создавайте архиватор с периодичностью в сутки, опять-же это чистый случай ДемоБД!
Так и настраивали, работает, но есть некоторые "моменты".
График "рвется" с периодичностью ротации архива (смотри рисунок).
Файлы архивов разбиты следующим образом:
$ ls -al S1_P0_0*
-rw-r--r-- 1 aleax aleax 8120 Фев 28 15:20 S1_P0_0 2013-01-10 02:00:00.val.gz
-rw-r--r-- 1 aleax aleax 48 Фев 28 15:20 S1_P0_0 2013-01-10 02:00:00.val.gz.info
-rw-r--r-- 1 aleax aleax 8620 Фев 28 15:20 S1_P0_0 2013-01-22 02:00:00.val.gz
-rw-r--r-- 1 aleax aleax 48 Фев 28 15:20 S1_P0_0 2013-01-22 02:00:00.val.gz.info
-rw-r--r-- 1 aleax aleax 7540 Фев 28 15:20 S1_P0_0 2013-02-03 02:00:00.val.gz
-rw-r--r-- 1 aleax aleax 48 Фев 28 15:20 S1_P0_0 2013-02-03 02:00:00.val.gz.info
-rw-r--r-- 1 aleax aleax 6575 Фев 28 15:20 S1_P0_0 2013-02-15 02:00:00.val.gz
-rw-r--r-- 1 aleax aleax 48 Фев 28 15:20 S1_P0_0 2013-02-15 02:00:00.val.gz.info
-rw-r--r-- 1 aleax aleax 130 Фев 28 15:20 S1_P0_0 2013-02-27 02:00:00.val.gz
-rw-r--r-- 1 aleax aleax 48 Фев 28 15:20 S1_P0_0 2013-02-27 02:00:00.val.gz.info
т.е. ротация происходила 2013-01-10, 2013-01-22, 2013-02-03, 2013-02-15 и 2013-02-27
Смотрю через соответствующий архив значений:
Thu Jan 10 02:00:00 2013 0 -nan
Fri Jan 11 02:00:00 2013 0 -11.0613419105356
Sat Jan 12 02:00:00 2013 0 -8.09974593756001
Sun Jan 13 02:00:00 2013 0 -8.09954718514705
Mon Jan 14 02:00:00 2013 0 -9.04183217002108
Tue Jan 15 02:00:00 2013 0 -9.04183217002108
Wed Jan 16 02:00:00 2013 0 -9.04183217002108
Thu Jan 17 02:00:00 2013 0 -9.04183217002108
Fri Jan 18 02:00:00 2013 0 -8.67055160513323
Sat Jan 19 02:00:00 2013 0 -4.14263649015417
Sun Jan 20 02:00:00 2013 0 -3.30894618703767
Mon Jan 21 02:00:00 2013 0 -4.94531353027045
Mon Jan 21 02:00:00 2013 1 <EVAL>
Tue Jan 22 02:00:00 2013 0 -3.89882817628896
Wed Jan 23 02:00:00 2013 0 -5.84340964139441
Thu Jan 24 02:00:00 2013 0 -7.22000388339844
Fri Jan 25 02:00:00 2013 0 -7.45035571640593
Sat Jan 26 02:00:00 2013 0 -7.45035571640593
Sun Jan 27 02:00:00 2013 0 -7.8937758339377
Mon Jan 28 02:00:00 2013 0 -10.6593889120163
Tue Jan 29 02:00:00 2013 0 -9.01472536252232
Wed Jan 30 02:00:00 2013 0 -7.95162403586512
Thu Jan 31 02:00:00 2013 0 -6.95520553354439
Fri Feb 1 02:00:00 2013 0 -5.47622479108792
Sat Feb 2 02:00:00 2013 0 -3.99326626694019
Sat Feb 2 02:00:00 2013 1 <EVAL>
Sun Feb 3 02:00:00 2013 0 -2.61389070784391
Mon Feb 4 02:00:00 2013 0 -2.74550504568774
Tue Feb 5 02:00:00 2013 0 -5.22802610286357
Wed Feb 6 02:00:00 2013 0 -4.04985910297557
Thu Feb 7 02:00:00 2013 0 -2.52096765458643
Fri Feb 8 02:00:00 2013 0 -1.58138744278234
Sat Feb 9 02:00:00 2013 0 -0.589523972924572
Sun Feb 10 02:00:00 2013 0 -2.05553212753533
Mon Feb 11 02:00:00 2013 0 -2.50144289163069
Tue Feb 12 02:00:00 2013 0 -2.71802521083265
Wed Feb 13 02:00:00 2013 0 -2.45396445995563
Thu Feb 14 02:00:00 2013 0 -3.06271849378598
Thu Feb 14 02:00:00 2013 1 <EVAL>
Fri Feb 15 02:00:00 2013 0 -3.98205873419988
Sat Feb 16 02:00:00 2013 0 -5.38909624562249
Sun Feb 17 02:00:00 2013 0 -5.6703021637906
Mon Feb 18 02:00:00 2013 0 -6.12113617617705
Tue Feb 19 02:00:00 2013 0 -7.71285104203043
Wed Feb 20 02:00:00 2013 0 -7.16218795787323
Thu Feb 21 02:00:00 2013 0 -6.65209426793822
Fri Feb 22 02:00:00 2013 0 -5.16398128360655
Sat Feb 23 02:00:00 2013 0 -4.66488803468369
Sun Feb 24 02:00:00 2013 0 -3.89590206033206
Mon Feb 25 02:00:00 2013 0 -5.37439173185114
Tue Feb 26 02:00:00 2013 0 -5.04422091224539
Tue Feb 26 02:00:00 2013 1 <EVAL>
Wed Feb 27 02:00:00 2013 0 -6.6507238240193
Thu Feb 28 02:00:00 2013 0 -5.63566322646991
На границе архивных файлов, со смещением 1мкс относительно предідущего валидного значения пишется <EVAL>. По видимому он, то и "рвет" график. (см. рисунок)
Используемая версия скады 0.8.0.4+svn1960.
По видимому связано с способом формирования нового архивного файла http://wiki.oscada.org/Doc/FSArch?v=kqp#h86-7
При создании нового файла архива формируется: заголовок (структура заголовка в таблице 1), нулевая битовая таблица упаковки архива и первое недостоверное значение. Таким образом, получится архив, инициализированный недостоверными значениями.
Как посоветуете обойти данную проблему, и добиться непрерывного графика?
[This article was edited 1 times, at last 28.02.2013 at 15:45.]
Attachment
3812.png (File type: image/png, Size: 36.36 kilobytes) — 2029 downloads
|
Written on: 28. 02. 2013 [16:14]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"aleax" wrote:
График "рвется" с периодичностью ротации архива (смотри рисунок).
Никогда у меня такого не было и нет, если хотите — можете поглядеть здесь: http://oscada.org:10002/WebVision/ses_AGLKS/
Правда часовой там только для "Pi", однако включил для всех на первой группе графиков.
Понаблюдайте, он там уже год работает без каких либо проблем в архивах.
"aleax" wrote:
т.е. ротация происходила 2013-01-10, 2013-01-22, 2013-02-03, 2013-02-15 и 2013-02-27
Нормально — 288 часов
"aleax" wrote:
Смотрю через соответствующий архив значений:
[js]
Thu Jan 10 02:00:00 2013 0 -nan
Fri Jan 11 02:00:00 2013 0 -11.0613419105356
Вы вообще как в архив значения записываете? Нужно через буфер.
"aleax" wrote:
На границе архивных файлов, со смещением 1мкс относительно предідущего валидного значения пишется <EVAL>. По видимому он, то и "рвет" график. (см. рисунок)
Кем пишется?
"aleax" wrote:
По видимому связано с способом формирования нового архивного файла http://wiki.oscada.org/Doc/FSArch#h86-7
При создании нового файла архива формируется: заголовок (структура заголовка в таблице 1), нулевая битовая таблица упаковки архива и первое недостоверное значение. Таким образом, получится архив, инициализированный недостоверными значениями.
Не связано ибо запись нормального значения смещает затем EVAL.
"aleax" wrote:
Как посоветуете обойти данную проблему, и добиться непрерывного графика?
У меня такого нет нигде. Возможно конечно потому-что я не пишу значения прямо в архив минуя буфер. В любом случае я этого не поймаю, поэтому ставьте дампы печати при записи в архив, на время создания нового файла, и смотрите почему туда значение не пишется.
Learn, learn and learn better than work, work and work.
|
|
|