TrendWorX VBA (вычисление значений для точек графика) |
Ответить | Страница 12> |
Автор | |||
Действительный член Присоединился: 28 Февраль 2007 Категория: Russian Federation Online Status: Offline Публикации: 212 |
Опубликовано: 13 Февраль 2008 18:00 |
||
Снова я со своими вопросами. Задача: в зависимости от выбранной дискретности (30 мин., час и т.д.) вычислять потребляемую энергию (Вт/ч) за заданный дискрет. Есть несколько однотипных скриптов вида:
Set obj = ThisDisplay.GetVisibleObjectFromName("TWXViewer1")Set twx = obj.GetOLEObjectSet tset = twx.TimeSettingsrtime = twx.GetRightTime seconds = DatePart("s", rtime) rtime = DateAdd("s", seconds * -1, rtime) twx.FreezeMode = True twx.ChangeWinPeriod (120) If Not twx.SetTrendRightTDate(rtime) ThenMsgBox "Error" End Iftwx.ExitAnimate tset.DataUpdatePeriod = 1800000 twx.EnterAnimate twx.FreezeMode = False Суть их в возможности выбора дискретности отображения архивных данных и области построения графика. Результат выглядит примерно так: выбор работает нормально, но для полного счастья нужно реализовать следующее: в идеале нужно чтобы скрипт брал каждое значение из графика, т.е., предположим: в 14:30 - значение равно 39.78, в 15:00 - значение равно 40.34 и заносил их, допустим, в какие-то массивы. Затем в массиве скрипт умножает все значения на коэффициент. Потом умноженные значения переносит снова на график - получается новый график. Коэффициент устанавливается в зависимости от значения в поле "Дискретность". Вопросы: 1. Я не могу "вытаскивать" из графика значения в определенный момент времени. Предположим, я не могу занести в переменную значение 39.78 соответствующее моменту времени 14:30. Можно ли это сделать вообще? 2. Все это вроде бы решается, если напрямую читать из БД Access архивные данные, преобразовывать их и выводить на график с помощью TWXViewer1.SetPenValues(). Проблема в том, что формат архивации в БД Access не совсем обычный, т.к. хронология событий записывается не в один столбец, а в одну строку (сначала в строку, затем переходит на другую строку и снова в строку). Нет ли у кого-нибудь готового скрипта, выполняющего чтение из БД Access архивных данных (чтение именно из формата, которого придерживается TrendWorX Server)? 3. Есть ли другой способ реализации этой задачи? |
|||
Действительный член Присоединился: 27 Июль 2006 Online Status: Offline Публикации: 304 |
|||
Самым правильным решением здесь было бы, по-моему, следующее: выдирать данные из HDA сервера TrendWorx по интерфейсу OPC HDA, производить их мат обработку и строить по обработанным данным Custom Pen.
С обработкой и построением проблем быть не должно, а вот с получением данных... Теоретически, можно использовать OPC HDA Wrapper под VBA. Но правильнее было бы применить что-то стандартное из Gen32. Так что, хотелось бы обратиться к уважаемым представителям ПроСофт: есть ли в Gen32 стандартный инструментарий для получения HDA-данных в VBA-скрипте? Мне самому этот вопрос весьма интересен. Кстати, по вашему методу есть небольшое замечание: вычисляя энергию на "верху" путем интегрирования значения мощности, вы огребете существенную погрешность. Величина-то интегральная. Более правильный подход - использование прибора, который _измеряет_ энергию, снятие с него величины энергии по цифровому интерфейсу и вычисление потребления энергии на интервалах по разности показаний счетчика прибора. И еще, кстати, активная энергия измеряется в Вт*ч |
|||
Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как. |
|||
Действительный член Присоединился: 28 Февраль 2007 Категория: Russian Federation Online Status: Offline Публикации: 212 |
|||
А где можно почитать про него?
Казалось бы, весьма стандартная задача. Нужно же иногда преобразовывать и архивные данные тоже? Но в документации я не смог ничего найти по этому вопросу.
Прибора, измеряющего энергию нет и не будет. Есть только ток и напряжение. Поэтому делаю под то, что есть. По поводу Вт*ч Вы, конечно, правы (опечатка) |
|||
Действительный член Присоединился: 27 Июль 2006 Online Status: Offline Публикации: 304 |
|||
На счет wrapper. Напишите мне в личку свой e-mail, вечером я отправлю вам халявный враппер и документацию.
На счет измерения энергии. У вас постоянный ток? Если нет, то для вычисления активной энергии по току и напряжению потребуется коэффициент мощности. Его, по идее, тоже нужно измерять. |
|||
Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как. |
|||
Действительный член Присоединился: 27 Июль 2006 Online Status: Offline Публикации: 304 |
|||
В догонку, по поводу стандартности задачи о работе с архивными данными. Да, действительно, задачка типовая. Но! ICONICS продает пакет BizViz, в состав которого входит мощные средства генерации отчетов по архивным данным. Стоимость данного пакета та еще. А что было бы, если бы в комплект Gen32, входил полноценный инструмент для работы с архивными данными из VBA? Тогда бы пресловутый ReportWorX никто бы не покупал. Отсюда вывод...
Мне бы очень хотелось ошибаться по данному вопросу. И надеюсь, представители ICONICS в России развеют мое заблуждение. Но на данный момент я тоже не вижу в Gen32 какого-бы то ни было средства обработки архивных данных. TWX Reporter не в счет. |
|||
Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как. |
|||
Действительный член Присоединился: 28 Февраль 2007 Категория: Russian Federation Online Status: Offline Публикации: 212 |
|||
Получается, что остается только способ с общением с БД Access напрямую через запросы? Или тут тоже будет затруднительно сформировать запрос, учитывая формат архивирования данных? |
|||
Действительный член Присоединился: 27 Июль 2006 Online Status: Offline Публикации: 304 |
|||
Если через OPC HDA wrapper удастся достучаться до Trendworx, то формат БД станет для вас несущественным - вы просто должны будете задать нужный тег и параметры выборки и получить набор значений напрямую от OPC HDA сервера. Другое дело, что все это еще нужно попробовать. Гарантию, что такая схема заработает, я дать не могу. У меня времени разобраться во всем этом и проверить не было. Может быть, у вас получится. Необходимый софт я вышлю сегодня вечером. Удачи!
|
|||
Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как. |
|||
Действительный член Присоединился: 28 Февраль 2007 Категория: Russian Federation Online Status: Offline Публикации: 212 |
|||
Все же решил попробывать написать собственный скрипт. Заметил такую деталь: TrendWorX Server пишет каждый параметр только в 36 колонок, а затем переходит на следующую строку и снова заполняет 36 колонок для каждого параметра. Т.е., формат примерно следующий: V1 T1 M1 Q1 V2 T2 M2 Q2 ... V36 T36 M36 Q36 V37 T37 M37 Q37 V38 T38 M38 Q38 ... V72 T72 M72 Q72 где Vi - значение тега, Ti - дата и время, Mi - миллисекунды, Qi - качество Описал я приблизительно, там, конечно, еще куча информации, но в качестве примера сойдет. Код следующий: Const kol_column_TWX = 36 Можете пользоваться, если кому-то пригодится. Правда там могут всплыть проблемы с подключением библиотек (ADODB, к примеру) и т.д., но это уже другой вопрос. Но вот если формат в 36 колонок не является постоянным, то этот кусок кода оказывается абсолютно бесполезным. Вопрос: действительно ли TrendWorX Server придерживается этого формата (36 колонок) или через пару месяцев их станет 72, затем 144 и т.д. (у меня база накопила пока данных чуть больше чем за неделю)? Если формат все же изменяется, то есть ли функцая которая вычисляет количество колонок в таблице, чтобы можно было отслеживать это в программе? |
|||
Действительный член Присоединился: 27 Июль 2006 Online Status: Offline Публикации: 304 |
|||
Не думаю, что формат таблицы меняется. Но, как правило, при конфигурировании TWX задается формирование нескольких таблиц с данными. Поэтому в скрипте необходимо предварительно читать одну из служебных таблиц и формировать запрос, в общем случае, по нескольким смежным по времени таблицам.
|
|||
Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как. |
|||
Действительный член Присоединился: 28 Февраль 2007 Категория: Russian Federation Online Status: Offline Публикации: 212 |
|||
У меня сконфигурировано так, что таблица одна |
|||
Ответить | Страница 12> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |