This is topic Из БД в тренд in forum Работа с приложениями (ODBC-SQL/OPC/DDE) at Форум TRACE MODE: техническая поддержка.


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

Posted by Катя (Участник № / Member № 5756) on :
 
Здравствуйте! У меня есть база данных SQL в которую средствами трейсмод пишутся раз в 2 минуты значения переменной + текущее время. Из этой базы я хочу построить тренд. Я создаю 2 канала ChGroupReq, на 720 аргументов каждый (один для переменной, другой для метки времени) чтобы вывести данные за последние сутки.
Делаю как в примере запрос в базу данных,
посылаю во входное значение число 65535. После этого в канале ChGroupReq, вместо заданных мной 720 аргуметов оказывается больше аргументов, например 850 - что соответствует количеству всех строчек БД на настоящий момент. Т.е. в канал читаются все строчки БД, а не заданное мной количество.
Так и должно быть или я что-то сделала не правильно?
Спасибо

пример на который я ориентируюсь http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/52/t/000003.html
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
При выполнении SQL-запроса в каналах Call.ChGroupReq автоматически создаются аргументы, количество которых соответствуют числу строк, возвращенных оператором SELECT.

Пример несколько устарел (в ближайшее время мы его обновим). В Вашем случае проще сразу из канала вызова SQL-запроса передавать считанные значения в канал Call.TVC (смотрите параграф "Формирование кривых в CALL.TVC" в разделе справочной системы "Выполнение SQL-запросов в реальном времени").
 
Posted by Катя (Участник № / Member № 5756) on :
 
Я сделала как написано в справочной системе. Но получилось что-то не то. У меня в канале TVC на местах метки времени почему-то оказывается вот эта дата: 01.01.1970 4:00:55.000. Этой даты в моей БД нету. Значение переменной которую я считываю из БД для таких меток времени какое-то есть, похоже взятое из БД. Где-то в середине аргументов канала TVC оказываются метки времени, взятые из БД, например 05.09.2012 16:54:00.000. Но значение переменной для такой метки времени - 0, хотя в БД с этой меткой времени лежит не 0, а какое-то число. С чем это может быть связано?
Спасибо
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Нужно посмотреть проект, чтобы ответить.
Вышлите файл проекта вместе с файлом базы данных на hotline3@adastra.ru.
 
Posted by Катя (Участник № / Member № 5756) on :
 
отправила, спасибо
 
Posted by Катя (Участник № / Member № 5756) on :
 
и еще один вопрос - можно ли данные хранящиеся в БД при помощи trace mode читать из БД и экспортировать в excel?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В принципе задача решаемая. С Excel есть возможность связаться через DDE и ODBC.

Однако нам кажется такое решение громоздким и нерациональным. Не понятно, зачем требуется использовать Trace Mode в качестве шлюза между базой данных и Excel.
 
Posted by Катя (Участник № / Member № 5756) on :
 
Спасибо, получила ответ на почту. Но у меня есть база данных, я бы хотела вывести значения из нее в какой-то документ который можно посмотреть, сохранить и распечатать. Раз с Excel'ем это сложно, в Trace Mode существует "Документ". А в такой документ я могу как-то вывести данные из моей БД?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Данные из канала Call.TVC Можно вывести в html-документ в табличной форме (через механизм SubNum) либо в виде тренда.
В таком случае МРВ должен поддерживать функцию документирования.
 
Posted by Катя (Участник № / Member № 5756) on :
 
Здравствуйте! В конце-концов я построила график по данным из БД. Но у меня появилось несколько вопросов, ответьте на них пожалуйста.
На экране трендов мной нарисована кнопка "Показать", а также указывются сутки за которые надо показать график. По нажатию на кнопку делается запрос в БД с выборкой по времени и данные появляются в канале TVC. Но на тренде они отображаются только после нажатия какой-нибудь кнопки типа "на час назад", "на день назад". А как сделать так, чтобы по обновлению канала TVC график сразу отображался?

И еще вопрос - я делаю запрос в БД с выборкой данных за сутки. Если например за первые сутки у меня в БД будет 200 строчек, а за вторые только 50. Тогда при запросе за вторые сутки в канал TVC запишутся 50 строчек относящиеся к запрошенным суткам (ARG_002 - ARG_052), а в аргументах ARG_053 - ARG_0200 останутся данные от первого запроса?

Пока я вижу на своем тренде следующее: делаю запрос за (13 сентября 12 00 - 14 сентября 12 00) - вижу его. Делаю следующий запрос за (12 сентября 12 00 - 13 сентября 12 00) - вижу его на тренде, но предыдущий график (за 13-14) сентября никуда не пропадает. Аргументя канала TVC ARG_000 и ARG_001, отвечающие за временнной диапазон отображения тренда, привязаны к 2-м каналам TIME, где хранится начало и конец запрашиваемого из БД временного интервала. Поэтому я не очень понимаю из каких данных строится график на тренде. Ведь БД должна была положить в TVC данные за 12-13 сент, откуда же график за 13-14?
Спасибо
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Чтобы данные на тренде в архивном режиме обновились необходимо изменить отображаемый временной интервал.
Один из вариантов автоматизировать обновление графиков - задать у тренда в свойстве "Ось времени" "Тип привязки" "Input" , а в качестве левой и правой границы использовать два первых аргумента канала Call.TVC.

2. Если канал Call.TVC сконфигурирован на одну кривую, то после каждого выполнения соответствующего SQL-запроса будет автоматически создано нужное число аргументов.

Если в канал Call.TVC сконфигурирован на несколько кривых, то аргументы нужно создавать вручную и их количество будет неизменно в процессе работы проекта.


3. Нужно опять смотреть проект, чтобы ответить.
 
Posted by Катя (Участник № / Member № 5756) on :
 
Спасибо за ответы!
 
Posted by Катя (Участник № / Member № 5756) on :
 
Здравствуйте! Скажите пожалуйста, а возможно ли создать несколько каналов TVC, в каждый записывать данные по одной переменной из БД, но потом все эти каналы вывести на одном ГЭ Тренд одновременно? Т.е. несколько каналов TVC привязать к разным кривым одного тренда? Я пробовала - у меня ничего на тренде не отображается, возможно и не должно?
Спасибо
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В общем случае должно отображаться.
Для конкретного анализа нужно иметь проект и БД.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2