This is topic Документ.Таблица архива. in forum Документирование в TRACE MODE 6 и в T-FACTORY 6 / Document generation in TRACE MODE 6 and T-FACTORY 6 at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/39/t/000033.html

Posted by tsssm (Участник № / Member № 3564) on :
 
Уважаемая техподдержка!
Из документации: "Если к каналу CALL.Document привязан атрибут 39, EXEC канала CALL.Program, и документ содержит архивную таблицу ... программа отрабатывается после извлечения каждого архивного среза"
Вопрос1: Как передать в программу время, соответствующее текущему архивному срезу?

Вопрос2: Если для таблицы архива включена опция "обработка", как передать программе (и получить) результат обработки?

Вопрос3: Если я не хочу включать в отчет текущий архивный срез, что я должен вернуть из программы?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1-2. Передавать в программу можно только аргументы. Эти данные туда передать нельзя.

3. Такой операции тоже произвести нельзя.
 
Posted by stepan (Участник № / Member № 3589) on :
 
Доброе время суток, уважаемая служба техподдержки!

сейчас я выложу свои пожелания об улучшении архивной таблицы.

В опциях архивной таблицы есть такая фича: "Обработка". Если выбрать "всего", то в конце таблицы появится строчка с суммой всех значений каждого столбца. - очень полезная вещь, но этого не достаточно.

поясню: у меня в таблицы (да и не только у меня) есть параметр "температура", "давление", согласитесь, не имеет смысла считать сумму значений температур или давлений:  -


Было бы неплохо добавить опцию "Среднее", - среднее арифметическое всех значений столбца, как на этой картинке  -

Причем, нужно чтобы в таблице можно было выбрать обработку "Всего" и "Среднее" одновременно, то есть чтобы в таблице отображалось две строчки с результатами обработки, рис. 3  -

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


сейчас пытаемся решить данную задачу при помощи каналов LocalStatistic, но там возникает много накладок  -
заметьте, если вы посчитаете среднее значение того, что есть в таблице, то оно не совпадет с тем, что написано в строчке среднее. Это связано с тем, что в SIAD архиве у канала под одной меткой времени сохранено много повторяющихся значений, в связи с этим Сумма выходила вообще астрономическая))) чтобы посчитать "правильную" сумму пришлось сначала взять среднее значение, а затем умножить его на количество строчек в таблице.... но всё равно получается весьма криво...

что Вы думаете об этом? ))
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
У Вас таблица документа, это всего лишь таблица срезов. И среднее Вы пытаетесь по считать по срезам. Это необъективная информация.

Пример.

Канал меняется раз в полчаса.
1:00 5
1:30 15
2:00 5
2:30 15
3:00 5
3:30 15
4:00 5
4:30 15
5:00 5
5:30 15

Среднее по каналу 10. Но если вы возьмете часовые срезы на 0 минут и на полчаса, то у Вас средние получатся 15 и 5.

Думаю идея ясна.

LocalStatistics дает более объективную информацию.
 
Posted by stepan (Участник № / Member № 3589) on :
 
здесь другая идея

у меня есть спад архив_1 - в нём лежат среднечасовые значения, считанные с прибора, с оригинальной меткой времени.

13:00 5
14:00 15
15:00 10
16:00 5

Для этих данных у меня специальный отчет со специальной архивной таблицей, у которой шаг равен 1 часу.

но в спад архиве с одной меткой времени несколько значений

13:00 15
13:00 15.87
13:00 15
13:00 15.87
14:00 10
14:00 10.23

Localstatistic при своих вычислениях берет все значения, а этого делать не нужно. нужно брать только одно значение для каждый конкретной метки времени.

значения в спад архиве дублируются по нескольким причинам:
во-первых при однократном чтении архивных значений с OPC HDA в архиве получаются такие дубли типа:
13:00 15
13:00 15.83
14:00 10
14:00 10.72

во-вторых: в нашем проекте есть 22 узла, работающих на реальных объектах автоматизации, которые собирают информацию с контроллеров и есть 1 центральный узел - сервер, который собирает информацию от 22 объектов и раздает 6 операторским консолям.

связь между узлами организована по tcp/ip радио каналу prewimax. связь неустойчивая. Сервер забирает данные из спад архивов узлов посредством RemoteSIAD. Т.к. гарантии безпрерывной связи у нас нет, а возможности узнать - удалась ли последняя передача данных SIAD или нет, чтобы потом перезапросить недостающие данные, у нас нет, а если и есть то, подозреваю, это чревато большим геморроем.
приходится запрашивать данные через RemoteSIAD с перекрытиями по времени, от этого некоторые данные опять же дублируются.

так что LocalStatistic конечно правильно считает, но он считает не совсем то

а что вы думаете об усовершенствовании архивной таблицы?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В Ваших таблицах нет одинаковых выборок и соответственно нет расхождений. Там где Вы говорите про выборку с помощью LocalStatistics, начальные значения не совпадают со значениями таблиц в документе.
 
Posted by stepan (Участник № / Member № 3589) on :
 
>В Ваших таблицах нет одинаковых выборок и соответственно нет расхождений.

нет каких расхождений? я эти таблицы нарисовал просто для примера, чтобы объяснить суть высказываний.

>Там где Вы говорите про выборку с помощью LocalStatistics, начальные значения не совпадают со значениями таблиц в документе.

я Вас не понимаю. какие начальные значения? как Вы определили, что они не совпадают?

я просто привожу факт, мне нужна строчка: сумма и среднее в конце архивной таблицы. Localstatistic Здесь не подходит. Если у меня будет 30 столбцов в таблице, то для того, чтобы добавить в таблице эти две строчки с помощью настройки таблицы понадобится 1 минута, а если это делать через localstatistic, то на это уйдет 1 день или больше.

уверен, что эта функция интересует не только меня. если кому то из пользователей Trace Mode тоже нужна такая опция в таблице, пусть отпишутся в этой теме.

повторю вопрос:
1. что Вы считаете насчет реализации в архивной таблице опции - тип обработки "Среднее"?
2. Как можно реализовать с помощью LocalStatisitic аналогичный алгоритм вычисления среднего по срезам?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. У Вас не могут быть разные значения в одной и той же метке через RemoteSIAD.

2. Все выборки будут брать только одно значение в одной метке времени. Поэтому сумма в LocalStatistics будет правильная.
 
Posted by stepan (Участник № / Member № 3589) on :
 
хорошо. а какое здесь может быть решение?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Вывести архивную таблицу, а под ней таблицу со значениями из LocalStatistics.
 
Posted by stepan (Участник № / Member № 3589) on :
 
я сейчас так и делаю. ))
задам вопрос в лоб: как с помощью локалстатистик посчитать среднее и сумму по часовым срезам?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Вам отправлен пример.
 
Posted by stepan (Участник № / Member № 3589) on :
 
спасибо, Алексей!
 
Posted by stepan (Участник № / Member № 3589) on :
 
Пример конечно крутой)либо это недокументированная возможность Trace Mode, либо я документацию не внимательно читал. )
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Все сделано с помощью этого механизма

Если к каналу CALL.Document привязан атрибут 39, EXEC канала CALL.Program, и документ содержит архивную таблицу (см. Конфигурирование таблицы архивных значений ), программа отрабатывается после извлечения каждого архивного среза. Для отображения результатов обработки срезов в столбец архивной таблицы нужно поместить выражение <arg>.R, где arg – имя аргумента документа, в который передается результат программы. Передача данных между документом и программой конфигурируется с помощью привязок соответствующих аргументов каналов CALL.Document и CALL.Program.
 
Posted by Michurin (Участник № / Member № 1015) on :
 
Можно мне выслать пример, если он соответствует версии ТМ 6.07
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Отправлено
 
Posted by senatorAV (Участник № / Member № 3513) on :
 
Можно тоже такой пример? Для 6.07. Заранее благодарен.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2