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

Настройка архивирования


Автор Повідомлення
Повідомлення створено: 17. 02. 2013 [14:58]
aleax
Alexey Bondarchuk
Автор теми
Зареєстрован(а) с: 27.01.2010
Повідомлення: 73
Помогите разобраться, а то запутался.
Надо вести 2 архива: долгосрочный (глубина ограничена возможностями носителя) и краткосрочный (последние сутки).

Из-за множества источников данных (порядка 2 тысяч датчиков температуры), используется не "стандартный", простой механизм архивирования активного параметра (через простановку галочки на вкладке "Архивация"), а через запись скриптом обработки данных в заранее созданные скриптом "пасивные" архивы.

Для долгосрочного архива необходимо хранить одно значение в сутки. Для краткосрочного достаточно одной записи в минуту (данные с полевого уровня обновляются не быстрее 1 раза в минуту).

Вот пытаюсь понять какие значения параметров необходимо выставить в настройках модуля архиватора значений на ФС (Периодичность значений (сек) и Период архивирования (сек), с ограничением глубины и ротацией вроде все понятно), а также в индивидуальных настройках каждого архива значений при их создании (Период буфера (сек) и Размер буфера (единиц)).

Читаю доку, но меня что-то переклинивает.

Не менее важными параметрами архива являются параметры его буфера. От параметров буфера зависит возможность работы архиваторов. Так, периодичность значений в буфере должна быть не больше периодичности самого быстрого архиватора, а размер буфера не менее двойного размера для самого медленного архиватора. В противном случае возможны потери данных!


На графике, архив должен выглядеть не как ряд точек, раз в сутки, а как линия, соединяющия "суточные" значения.

Помогите пожалуйста разобраться.
Повідомлення створено: 17. 02. 2013 [16:07]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 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.
Повідомлення створено: 18. 02. 2013 [17:00]
aleax
Alexey Bondarchuk
Автор теми
Зареєстрован(а) с: 27.01.2010
Повідомлення: 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 (опять не надо делать много связей).

Потому и не пошли, через стандартную концепцию архивирования.
Повідомлення створено: 18. 02. 2013 [17:21]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"aleax" wrote:

Тут проводится его обработка, сопоставление границ и т.п. , а так же и "пасивное" архивирование, (так как галочки проставлять негде, да и не удобно для такого большого количества датчиков), которое включает в себя запись значения в соответсвующий архив, создание архива если он отсутсвует, "линковка" его с соответсвующими архиваторами и т.п. (для последних задач, был написан небольшой модуль spec_LowLovelAPI, по примеру модулей spec, для доступа к некоторым сишным функциям API openscada, из скриптов JavaLikeCalk).

Графики Вы прямо на архивы линкуете получается?

"aleax" wrote:

Потому и не пошли, через стандартную концепцию архивирования.

Это вовсе не объясняет почему Вы не создаёте архиваторы типа "1s", "1h", которые а в самих пассивных архивах их и выбрать.


Learn, learn and learn better than work, work and work.
Повідомлення створено: 18. 02. 2013 [17:33]
aleax
Alexey Bondarchuk
Автор теми
Зареєстрован(а) с: 27.01.2010
Повідомлення: 73
"roman" wrote:

Графики Вы прямо на архивы линкуете получается?

Это вовсе не объясняет почему Вы не создаёте архиваторы типа "1s", "1h", которые а в самих пассивных архивах их и выбрать.


Да, линкуем на архивы. Да создали архиваторы "1d" и "1m".
И все вроде работает.
Просто пытаюсь осмыслить
важными параметрами архива являются параметры его буфера. От параметров буфера зависит возможность работы архиваторов. Так, периодичность значений в буфере должна быть не больше периодичности самого быстрого архиватора, а размер буфера не менее двойного размера для самого медленного архиватора. В противном случае возможны потери данных!

и правильно выставить Период буфера (сек) и Размер буфера (единиц) и Периодичность значений (сек) и Период архивирования (сек). Ну с периодичностью значений вроде понятно: 86400 для 1d и 60 для 1m.
Повідомлення створено: 18. 02. 2013 [21:22]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"roman" wrote:

... которое включает в себя запись значения в соответсвующий архив, создание архива если он отсутсвует, "линковка" его с соответсвующими архиваторами и т.п. (для последних задач, был написан небольшой модуль spec_LowLovelAPI, по примеру модулей spec, для доступа к некоторым сишным функциям API openscada, из скриптов JavaLikeCalk).

Что-же там у Вас в "spec_LowLovelAPI"? В настоящем пользовательском API вроде всё для ваших задач есть.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 18. 02. 2013 [22:04]
aleax
Alexey Bondarchuk
Автор теми
Зареєстрован(а) с: 27.01.2010
Повідомлення: 73
"roman" wrote:

Что-же там у Вас в "spec_LowLovelAPI"? В настоящем пользовательском API вроде всё для ваших задач есть.

НазваниеКласса_НазваниеФункции из "C" API:
TArchiveS_valAdd
TArchiveS_valDel
TArchiveS_valList
TArchiveS_valPresent
TController_list
TTipArchivator_valList
TTipDAQ_list
TVArchive_archivatorAttach
Повідомлення створено: 19. 02. 2013 [10:22]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 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.
Повідомлення створено: 28. 02. 2013 [15:44]
aleax
Alexey Bondarchuk
Автор теми
Зареєстрован(а) с: 27.01.2010
Повідомлення: 73
"roman" wrote:

"aleax" wrote:

На графике, архив должен выглядеть не как ряд точек, раз в сутки, а как линия, соединяющия "суточные" значения.

Создавайте архиватор с периодичностью в сутки, опять-же это чистый случай ДемоБД!


Так и настраивали, работает, но есть некоторые "моменты".
График "рвется" с периодичностью ротации архива (смотри рисунок).

Файлы архивов разбиты следующим образом:
JAVASCRIPT
$ 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

Смотрю через соответствующий архив значений:
JAVASCRIPT
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), нулевая битовая таблица упаковки архива и первое недостоверное значение. Таким образом, получится архив, инициализированный недостоверными значениями.


Как посоветуете обойти данную проблему, и добиться непрерывного графика?

[Повідомлення редагувалось 1 раз(ів), останній раз 28.02.2013 в 15:45.]
Вкладений файл

3812.png (Тип файлу: image/png, Розмір: 36.36 кілобайтів) — 2010 завантажень
Повідомлення створено: 28. 02. 2013 [16:14]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 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.



7213