drmors
Junior Member / Новичок
Участник № / Member № 5834
отправлено / posted
Подскажите пожалуйста: Имеется SQL таблица данных с меткой времени. Пусть в ней имеются записи с 1.01.2011 по настоящее время. Как сделать выборку данных для отображения на архивном тренде в произвольно заданном интервале времени. Т.е. чтобы на графическом интерфейсе можно было задать дату с которой я хочу вытащить из архива данные и величину выборки (например с 1.03.12 по 1.04.12). В примере, который приведен на вашем форуме выборка начинается с самой первой записи и ограничена количеством аргументов, т.е., как я понял (возможно я ошибаюсь) если я хочу построить тренд на 300000 точек, то мне нужно создать столько же аргументов для канала, к которому привязывается тренд. Еще один вопрос: Почему при выборке данных из БД, чтобы они отображались на архивном тренде в профайлере на тренде нужно сначала нажать кнопку "в конец" затем "к началу"? Как сделать, чтобы кривая строилась и отображалась без дополнительных манипуляций?
Сообщения / Posts 16 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
1. Задание условий выборки из БД выполняется в SQL-запросе путем использования в нем "Where"(смотрите раздел справочной системы "Подстановки в SQL-запросе").
2. Пример, который Вы смотрели, немного устарел. В текущем релизе аргументы в каналах Call, участвующих в SQL-запросах, создаются при работе проекта автоматически и их количество изменяется в зависимости от результата выборки (тут же стоит заметить, что по умолчанию в каналах Call.ChGroupReq и Call.TVC может быть создано 1024 аргумента). Для выборок из БД с целью последующего вывода данных на тренд используйте канал Call.TVC (смотрите раздел справки "Выполнение SQL-запросов в реальном времени" и "Канал CALL.TVC"). Чтобы данные обновились, нужно выполнить переход к новому диапазону. Сделать это можно либо c помощью средств навигации тренда, либо путем задания границ через аргументы, привязанные к соответствующим свойствам тренда.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
drmors
Junior Member / Новичок
Участник № / Member № 5834
отправлено / posted
Подскажите, какие каналы необходимо создать, чтобы из БД построить тренд? Т.е. я создаю каналы: 1) CALL.SQLQuery (INPUT, Параметр=0) с конструкцией SELECT и с двумя аргументами: TVC_T;IN;Date_and_time TVC_ARG02;in;real которые привязаны к соответствующим аргументам канала Call.TVC
2) Call.TVC
3) Экран с архивным трендом. Аргумент тренда привязан к каналу Call.TVC:Реальное значение; Экран так же содержит аргумент ARG_000;OUT;DINT, привязанный к каналу CALL.SQLQuery:Входное значение, куда с помощью ГЭ текст передается значение 65535
Вроде всё должно быть так, но тренд не строится. Вероятно чего-то не хватает. Подскажите пожалуйста чего именно?
Сообщения / Posts 16 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Следует поэтапно искать ошибку.
Сначала нужно убедиться, что SQL-запрос выполняется и в аргументы канала Call.TVC приходят данные ( то есть, в реальном времени через "Окно компонентов" проверьте , что в аргументах канала Call.TVC появились значения из базы данных).
Если с этим проблем нет, то дальше нужно разбираться с выводом данных из канала Call.TVC на тренд. В этой части стоит отметить, что тренд должен быть переключен в архивный режим.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
drmors
Junior Member / Новичок
Участник № / Member № 5834
drmors
Junior Member / Новичок
Участник № / Member № 5834
отправлено / posted
Для одного графика вроде получилось, но теперь у меня не выходит сделать два графика: В конструкции Select канала SQLQuery: SELECT [Time] #TVC_T01# ,[Data] #TVC_ARG05# ,[D2] #TVC_ARG06# FROM [diman].[dbo].[Table1]
Где [Time] - столбец БД, содержащий временные метки; [Data] и [D2] - столбцы БД, содержащие данные (данные в столбцах РАЗНЫЕ); TVC_T01 - аргумент канала Call.SQLQuery, привязанный к параметру 47(Т) канала Call.TVC TVC_ARG05 и TVC_ARG06 - аргументы канала Call.SQLQuery, привязанные к параметрам 145(ARG05) и 146(ARG06) канала Call.TVC соответственно. Канал ЭКРАН1 содержит аргументы TVC_ARG05:IN:REAL - к нему привязан первый график АРХИВНОГО ТРЕНДА TVC_ARG06:IN:REAL - к нему привязан второй график АРХИВНОГО ТРЕНДА ARG01:OUT:REAL - привязан к SQLQuery.Входное значение - сюда я передаю 65535 при формировании выборки.
Вроде всё работает, НО!!! Графики совпадают! Т.е. оба графика берут данные из этой строки: [Data] #TVC_ARG05#, а эта строка: [D2] #TVC_ARG06# как будто игнорируется, хотя когда я в браузере запросов нажимаю кнопку выполнить запрос, то получаю следующие данные: задать TVC_T01=2009-04-20 15:00:00 задать TVC_ARG04=10 задать TVC_ARG06=1 задать TVC_T01=2009-04-20 15:10:05 задать TVC_ARG04=20 задать TVC_ARG06=2 задать TVC_T01=2009-04-20 15:20:10 задать TVC_ARG04=30 задать TVC_ARG06=3 ......
Вы мне говорили, что можно посмотреть состояние аргументов канала CALL.TVC в "ОКНЕ КОМПОНЕНТОВ" - это окно находится в профайлере? "Вид-компоненты"? Если да, то там параметры с 130 по 186 канала Call.TVC не отображаются. Поясните пожалуйста по подробнее, как можно отследить их состояние (интересуют параметры 140, 141, 142...) Заранее спасибо.
Сообщения / Posts 16 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Да. Окно вызывается через меню "Вид", "Компоненты". В нем двойным кликом по 124 атрибуту каналов Call раскрывается дерево со значениями аргументов.
Скорей всего, ошибка в привязках. Если, через окно "Просмотр компонентов" увидите, что в аргументы каналов Call.TVC поступают верные значения, то проверьте привязки аргументов канала вызова шаблона экрана.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
drmors
Junior Member / Новичок
Участник № / Member № 5834
отправлено / posted
Задача решилась: для каждого графика пришлось использовать отдельный CALL.VTC канал (VTC1 и VTC2). Так как я чайник, то задаю глупый вопрос: это так и должно быть, или можно решить данную задачу (построение двух и более графиков из таблицы БД) используя один канал CALL.VTC?
Сообщения / Posts 16 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Реализовать можно, но механизм передачи считанных из базы данных величин в аргументы канала Call.TVC будет работать несколько иначе, что потребуется учесть при проектировании.
Главное отличие заключается в том, что в канале Call.TVC не будут автоматически создаваться аргументы в зависимости от результата выборки. Поэтому для такого случая в инструментальной среде необходимо полностью сконфигурировать канал Call.TVC (задать правильное значение атрибута "Параметр" и создать достаточное количество аргументов с нужным типом данных). Замечу, что если аргументов в канале Call.TVC окажется не достаточно для передачи в них результата выборки, то кривые на тренде не построятся. Также возможны некоторые трудности при изменении объема выборки в меньшую сторону. В таком случае в "последних" аргументах останутся "старые" данные. Но конкретно на построение тренда эта особенность никак не скажется, поскольку границы кривых на нем будут определяться по первым 2-м аргументам канала Call.TVC.
Есть пара замечаний по Вашему предыдущему посту: 1. "TVC_T01 - аргумент канала Call.SQLQuery, привязанный к параметру 47(Т) канала Call.TVC"
Если в аргумент поступает временная метка из базы данных, то привязывать его нужно к 45 атрибуту, а не 47.
2. "TVC_ARG05 и TVC_ARG06 - аргументы канала Call.SQLQuery, привязанные к параметрам 145(ARG05) и 146(ARG06) канала Call.TVC соответственно."
drmors
Junior Member / Новичок
Участник № / Member № 5834
отправлено / posted
quote:Отправитель / Originally posted by AdAstra Technical Support: Если в аргумент поступает временная метка из базы данных, то привязывать его нужно к 45 атрибуту, а не 47.
Конечно же 45 - я опечатался.
quote:Отправитель / Originally posted by AdAstra Technical Support:
2. "TVC_ARG05 и TVC_ARG06 - аргументы канала Call.SQLQuery, привязанные к параметрам 145(ARG05) и 146(ARG06) канала Call.TVC соответственно."
Привяжите первый аргумент к атрибуту 142, а второй к атрибуту 143 канала Call.TVC.
Изначально я так и делал. Это уже потом, в процессе экспериментов я уже привязывал аргументы к параметру 145 и 146 - в общем-то разницы я не заметил. Спасибо за помощь.
Сообщения / Posts 16 | Из / From: Россия
| IP / IP: IP адрес / IP address |
drmors
Junior Member / Новичок
Участник № / Member № 5834
отправлено / posted
Сейчас пытаюсь решить вопрос с обновлением тренда: Для этого в канале экран я создал два аргумента: Left и Right - левая и правая граница тренда и привязал их к соответствующим границам оси времени тренда, так же привязал к этим аргументам соответственно параметры 140 и 141 канала TVC. Таким образом при запуске проекта, эти аргументы равны 0, границы тренда получаются текущая дата+-год. После выборки границы тренда становятся равны границам выборки, тренд отображает ось времени в соответствии с ней, но графики не видны. Как сделать так, чтобы нажав на одну кнопку (Кнопку выборки) Тренд корректно отобразил выборку без дополнительных манипуляций?
Сообщения / Posts 16 | Из / From: Россия
| IP / IP: IP адрес / IP address |
drmors
Junior Member / Новичок
Участник № / Member № 5834
отправлено / posted
То есть, я пытаюсь обновлять тренд после выборки с помощью двух аргументов экрана, привязанных к границам временного диапазона тренда, эти аргументы после выборки изменяют свое, значение, однако данные тренда не обновляются.
Сообщения / Posts 16 | Из / From: Россия
| IP / IP: IP адрес / IP address |
drmors
Junior Member / Новичок
Участник № / Member № 5834
отправлено / posted
При этом в окне компонентов четко видно, что в параметре 124 каналов TVC данные появляются, то есть выборка осуществлена корректно.
Сообщения / Posts 16 | Из / From: Россия
| IP / IP: IP адрес / IP address |
drmors
Junior Member / Новичок
Участник № / Member № 5834
отправлено / posted
Еще такой вопрос: как-нибудь можно управлять положением визира тренда с помощью аргументов?
Сообщения / Posts 16 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Ошибок в проекте нет. Для отображения кривых на архивном тренде нужна поддержка архивов. В профайлере базовой версии существует ограничение на максимальную глубину выборки из архива – 1 сутки. Если Вы измените временные метки у данных в базе (таким образом, чтобы они были не "старее" суток), то на тренде построятся кривые.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
drmors
Junior Member / Новичок
Участник № / Member № 5834
отправлено / posted
Не "Старее" суток - это относительно текущего системного времени? Или выборка должна быть в интервале 24 часов?
Сообщения / Posts 16 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Как уже отмечалось выше, по умолчанию в каналах Call.ChGroupReq и Call.TVC может быть создано 1024 аргумента. Величину можно изменить заданием в cnf-файле узла проекта ключа "TVC_RSZ=<n>" (максимальное значение 12000). Однако, сначала стоит подумать над целесообразностью таких больших объемов выборки.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Ха Муон
Junior Member / Новичок
Участник № / Member № 5745
отправлено / posted
Добрый день! я уже делал как ваш пример ну у меня не получается .Имено что у меня база данных ,в котором сохранить данные и время .Все делал как пример показано ну когда запустить профейлер резутата нет.Можете ли вы смотрить мой проект и подкажите где обшики?
Сообщения / Posts 1 | Из / From: Россия
| IP / IP: IP адрес / IP address |
SATER
Forum Haunter / Завсегдатай форума
Участник № / Member № 1414
отправлено / posted
Здравствуйте! А можете выслать на почту xxx@yyy.ru новый пример примера "Trend_из_БД_6_07" (на форуме в разделе "тестовые примеры" по Вашим словам, старая версия). Мне нужно чтобы вместо 15 аргументов выборки было хотя-бы 1024. Заранее спасибо.
[ 01.08.2013, 12:28: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
Сообщения / Posts 141 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
Более нового готового примера нет. Надо учитывать, что аргументы в канале ChGroupReq, принимающем ответ на групповойц запрос из БД, создаются на лету в количестве, соответствующем количеству считанных строк. Если считывание из БД осуществляется в канал TVC, то аргументы надо создавать изначально, но в реальном времени их количество может быть изменено подачей в атрибут Q(9) строки @size=<n> где n - количество аргументов (или пар аргументов - для TVC). Максимальное количество аргументов в TVC по умолчанию равно 1024 и может быть измененов ключом TVC_RSZ=<n> в файле *.cnf.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
SATER
Forum Haunter / Завсегдатай форума
Участник № / Member № 1414
отправлено / posted
Здравствуйте, drmors! У Вас случайно нет новой версии примера "Trend_из_БД_6_07"? Заранее благодарен.
Сообщения / Posts 141 | Из / From: Украина
| IP / IP: IP адрес / IP address |
arkos
Forum Haunter / Завсегдатай форума
Участник № / Member № 6144
отправлено / posted
Если можно то и мне вышлите новый пример (arkos13070.11@gmail.com). Спасибо.
Сообщения / Posts 143 | Из / From: Украина
| IP / IP: IP адрес / IP address |
Алексей Шелепов
Forum Member / Участник форума
Участник № / Member № 6361
отправлено / posted
Здравствуйте! Подскажите пожалуйста как считать значение визира тренда? В справке упоминается атрибут "Значение – значение кривой в точке, указанной визиром", по факту этот атрибут в свойствах тренда отсутствует.
Сообщения / Posts 49 | Из / From: РФ
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
ProKa
Junior Member / Новичок
Участник № / Member № 6538
отправлено / posted
Добрый день! Подскажите, пожалуйста, возможно ли реализовать на тренде отображение текущих значений, поступающих с генератора(данные также пишутся во внешнюю БД) и данных из архива (данные берутся из БД) при нажатие на кнопку "Запрос на выборку"?
Сообщения / Posts 15 | Из / From: Российская Федерация
| IP / IP: IP адрес / IP address |
отправлено / posted
Данные из архива - данные прошлые, выбираются из архива в "архивном режиме" тренда, исключающем наблюдение данных текущего времени.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ProKa
Junior Member / Новичок
Участник № / Member № 6538
отправлено / posted
Т.е. из внешней БД этого осуществить нельзя, только из архива SIAD?? А если можно, то подскажите, пожалуйста, как это сделать?
Сообщения / Posts 15 | Из / From: Российская Федерация
| IP / IP: IP адрес / IP address |
отправлено / posted
Не существенно, откуда приходят данные текущего времени. Нельзя на тренде одновременно показать данные, считанные из архива, и данные текущего времени.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ProKa
Junior Member / Новичок
Участник № / Member № 6538
отправлено / posted
Необходимо, чтобы данные текущего времени шли с генератора, а архивные данные из внешней БД при переключении тренда в архивный режим.( релиз 6.08) И у вас указанно: "Перенаправление архива во внешнюю базу данных SQL. Поток записей в один из штатных СПАД архивов (задается при настройках) перенаправляется во внешнюю базу данных SQL, подключаемую по ODBC-интерфейс" Каким образом это осуществляется? (релиз 6.09 )
Сообщения / Posts 15 | Из / From: Российская Федерация
| IP / IP: IP адрес / IP address |
ProKa
Junior Member / Новичок
Участник № / Member № 6538
отправлено / posted
Не могли бы вы отправить пример программы (если такой есть), где осуществляется выборка из БД SQL в зависимости от времени, которое вводит оператор с экрана. Данные из выборки отображаются на архивном тренде. xxxxxxxx@yyyyyyyy
[ 04.12.2014, 09:58: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
Сообщения / Posts 15 | Из / From: Российская Федерация
| IP / IP: IP адрес / IP address |
отправлено / posted
Пример перенаправления архива в БД приведен в соответствующем видео-уроке на сайте. Этот пример будет актуален, начиная со следующего релиза.
Организация выборки из БД с подстановкой в качестве критериев даты-времени предполагает введение в CALL.SQL D&T-аргументов, которые могут задаваться, в том числе, оператором с экрана.
Создание примеров проектов в соответствии с задачами пользователей не входит в функции службы техподдержки. Надеемся на понимание.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |