tsssm
Junior Member / Новичок
Участник № / Member № 3564
отправлено / posted
Уважаемая техподдержка! Из документации: "Если к каналу CALL.Document привязан атрибут 39, EXEC канала CALL.Program, и документ содержит архивную таблицу ... программа отрабатывается после извлечения каждого архивного среза" Вопрос1: Как передать в программу время, соответствующее текущему архивному срезу?
Вопрос2: Если для таблицы архива включена опция "обработка", как передать программе (и получить) результат обработки?
Вопрос3: Если я не хочу включать в отчет текущий архивный срез, что я должен вернуть из программы?
Сообщения / Posts 13 | Из / From: РФ
| IP / IP: IP адрес / IP address |
stepagrus
Forum Haunter / Завсегдатай форума
Участник № / Member № 3589
отправлено / posted
Доброе время суток, уважаемая служба техподдержки!
сейчас я выложу свои пожелания об улучшении архивной таблицы.
В опциях архивной таблицы есть такая фича: "Обработка". Если выбрать "всего", то в конце таблицы появится строчка с суммой всех значений каждого столбца. - очень полезная вещь, но этого не достаточно.
поясню: у меня в таблицы (да и не только у меня) есть параметр "температура", "давление", согласитесь, не имеет смысла считать сумму значений температур или давлений:
Было бы неплохо добавить опцию "Среднее", - среднее арифметическое всех значений столбца, как на этой картинке
Причем, нужно чтобы в таблице можно было выбрать обработку "Всего" и "Среднее" одновременно, то есть чтобы в таблице отображалось две строчки с результатами обработки, рис. 3
но чтобы не было глупых значений, типа суммы температур юзер при создании таблицы должен выбрать, какие столбцы должны обрабатываться (рис 4)
сейчас пытаемся решить данную задачу при помощи каналов LocalStatistic, но там возникает много накладок заметьте, если вы посчитаете среднее значение того, что есть в таблице, то оно не совпадет с тем, что написано в строчке среднее. Это связано с тем, что в SIAD архиве у канала под одной меткой времени сохранено много повторяющихся значений, в связи с этим Сумма выходила вообще астрономическая))) чтобы посчитать "правильную" сумму пришлось сначала взять среднее значение, а затем умножить его на количество строчек в таблице.... но всё равно получается весьма криво...
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
В Ваших таблицах нет одинаковых выборок и соответственно нет расхождений. Там где Вы говорите про выборку с помощью LocalStatistics, начальные значения не совпадают со значениями таблиц в документе.
Сообщения / Posts 17293 | Из / From: Россия
| IP / IP: IP адрес / IP address |
stepagrus
Forum Haunter / Завсегдатай форума
Участник № / Member № 3589
отправлено / posted
>В Ваших таблицах нет одинаковых выборок и соответственно нет расхождений.
нет каких расхождений? я эти таблицы нарисовал просто для примера, чтобы объяснить суть высказываний.
>Там где Вы говорите про выборку с помощью LocalStatistics, начальные значения не совпадают со значениями таблиц в документе.
я Вас не понимаю. какие начальные значения? как Вы определили, что они не совпадают?
я просто привожу факт, мне нужна строчка: сумма и среднее в конце архивной таблицы. Localstatistic Здесь не подходит. Если у меня будет 30 столбцов в таблице, то для того, чтобы добавить в таблице эти две строчки с помощью настройки таблицы понадобится 1 минута, а если это делать через localstatistic, то на это уйдет 1 день или больше.
уверен, что эта функция интересует не только меня. если кому то из пользователей Trace Mode тоже нужна такая опция в таблице, пусть отпишутся в этой теме.
повторю вопрос: 1. что Вы считаете насчет реализации в архивной таблице опции - тип обработки "Среднее"? 2. Как можно реализовать с помощью LocalStatisitic аналогичный алгоритм вычисления среднего по срезам?
Сообщения / Posts 136 | Из / From: РФ
| IP / IP: IP адрес / IP address |
отправлено / posted
1. У Вас не могут быть разные значения в одной и той же метке через RemoteSIAD.
2. Все выборки будут брать только одно значение в одной метке времени. Поэтому сумма в LocalStatistics будет правильная.
Сообщения / Posts 17293 | Из / From: Россия
| IP / IP: IP адрес / IP address |
stepagrus
Forum Haunter / Завсегдатай форума
Участник № / Member № 3589
отправлено / posted
Вывести архивную таблицу, а под ней таблицу со значениями из LocalStatistics.
Сообщения / Posts 17293 | Из / From: Россия
| IP / IP: IP адрес / IP address |
stepagrus
Forum Haunter / Завсегдатай форума
Участник № / Member № 3589
отправлено / posted
я сейчас так и делаю. )) задам вопрос в лоб: как с помощью локалстатистик посчитать среднее и сумму по часовым срезам?
Сообщения / Posts 136 | Из / From: РФ
| IP / IP: IP адрес / IP address |
stepagrus
Forum Haunter / Завсегдатай форума
Участник № / Member № 3589
отправлено / posted
Пример конечно крутой)либо это недокументированная возможность Trace Mode, либо я документацию не внимательно читал. )
Сообщения / Posts 136 | Из / From: РФ
| IP / IP: IP адрес / IP address |
отправлено / posted
Все сделано с помощью этого механизма
Если к каналу CALL.Document привязан атрибут 39, EXEC канала CALL.Program, и документ содержит архивную таблицу (см. Конфигурирование таблицы архивных значений ), программа отрабатывается после извлечения каждого архивного среза. Для отображения результатов обработки срезов в столбец архивной таблицы нужно поместить выражение <arg>.R, где arg – имя аргумента документа, в который передается результат программы. Передача данных между документом и программой конфигурируется с помощью привязок соответствующих аргументов каналов CALL.Document и CALL.Program.
Сообщения / Posts 17293 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Michurin
Junior Member / Новичок
Участник № / Member № 1015