Тема / Topic: выборка данных из СПАД и запись их в БД
KAV
Forum Haunter / Завсегдатай форума
Участник № / Member № 2889
отправлено / posted
Уважаемая поддержка! С Наступающим Вас Новым Годом! У меня такой вопрос: в моём проекте происходит выборка с ОРС HDA сервера и сохранение данных в локальный СПАД архив, всё работает, данные СПАД архива отображаются на тренде, но теперь встала задача хранить эти данные в другой БД (Оракл). Подскажите какими методами возможно это сделать? если есть простой пример с любой БД хоть Акцесс, пришлите пожалуйста. Спасибо.
Сообщения / Posts 126 | Из / From: Россия РТ
| IP / IP: IP адрес / IP address |
отправлено / posted
Готовых примеров решения таких задач нет. Задача для Trace Mode 6 в некотором смысле экзотическая - использование в качестве шлюза между OPC-сервером и БД. Возможные варианты. 1. Считывать из OPC HDA сервера данные с помощью каналов ChGroupReq и передавать эти данные SQL-запросами с групповой записью в БД. 2. Делать выборки из СПАД (с обработкой или без) с помощью каналов CALL и передавать эти данные SQL-запросами с групповой записью в БД. 3. Экспортировать данные из СПАД в файлы (txt, xml или html) с последующим импортом их в БД.
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Катя
Junior Member / Новичок
Участник № / Member № 5756
отправлено / posted
Здравствуйте! Не знаю как решить такую задачу: данные нескольких каналов пишутся в спад, а потом, например раз в сутки данные из этого спада полностью переписываются в Базу данных. Если я правильно понимаю, то я могу прочитать данные из архива спад при помощи переменной Data_from_SIAD и канала CALL? А потом эти прочитанные данные записать в БД? Прочитать данные из архива у меня не получается, хотя архив пишется. Таким ли способом вообще надо решать эту задачу? Объясните пожалуйста. Тоже самое мне нужно сделать с архивом тревог, то есть через определенные промежутки времени переписывать архив тревог в Базу данных. Спасибо
Сообщения / Posts 28 | Из / From: россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Экспортировать в БД все архивированные в СПАД данные по каким-то каналам - задача очень ресурсоемкая. И по производительности ODBC-драйвера, возможно, трудно реализуемая. Целесообразнее передавать данные в БД "на лету", а не из архива. Возможно, есть смысл более детально обсдить решаемую задачу в рабочем порядке по hotline@adastra.ru. Опишите задачу, характеристики потоков данных. Если есть попытки решения, пришлите соответствующие проекты, тесты, примеры.
Отчет тревог представляет собой текстовый файл с разделителями. Экспорт из этого файл не предусмотрен. Можно штатными средствами Trace Mode 6 делать в реальном времени копии ОТ и их импортировать в БД с соответствующими фильтрами системными средствами или дополнительными приложениями.
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Алексей Шелепов
Forum Member / Участник форума
Участник № / Member № 6361
отправлено / posted
Здравствуйте! Разъясните, пожалуйста. На данный момент производится запись одного канала в СПАД с последуюшей выборкой по времени и записью в БД Access SQL запросом. Для выборки из СПАД используется канал CALL с типом вызова LocalStatistic. Необходимо произвести выборку из СПАД двух каналов по одному времени с последующей записью в БД. Как наиболее рационально это реализоать?
Сообщения / Posts 49 | Из / From: РФ
| IP / IP: IP адрес / IP address |
отправлено / posted
Канал LocalStatistic может делать выборку только по одному каналу. Групповую выборку с усреднением может делать канал LocalList. Выборки осуществляются асинхронно, поэтому надо осуществлять запись в БД только после завершения выборки (см. описание канала LocalList).
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Алексей Шелепов
Forum Member / Участник форума
Участник № / Member № 6361
отправлено / posted
Если можно поподробней. 1. Каждый канал из СПАД привязывается к отдельному ChGroupReq? 2. Временной диапазон в ARG000 и ARG001 канала LocalList? 3. Какие аргументы в ChGroupReq и LocalList связывать? 4. Какие значения записывать в параметр каналов? 5. Какие каналы "активировать" входным значением. Извиняюсь за возможно банальные вопросы, но информация в справке очень скудна.
Сообщения / Posts 49 | Из / From: РФ
| IP / IP: IP адрес / IP address |
отправлено / posted
Ответы на все поставленные вопросы содержатся в разделе справочной системы "Архивирование/Архивы СПАД/Выборка и обработка.../Выборка данных из локального архива по каналу". Там же имеется ссылка на описание системы задания временного диапазона и свойства ПАРАМЕТР.
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Алексей Шелепов
Forum Member / Участник форума
Участник № / Member № 6361
отправлено / posted
Если информация в справочной системе не совсем понятна ПОКУПАТЕЛЮ Trace Mode, то кому, как не тех. поддержке поддержать свой продукт и разъяснить в доступной для восприятия форме ответы на поставленные вопросы. Всвязи с этим прошу ответить на предыдущие вопросы, тем более что часть вопросов в справке не раскрывается.
Сообщения / Posts 49 | Из / From: РФ
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
1 да 2 да t_from / t_to (астроном время) 3 привязка D&D 4 LocalList: (0x10 ver <6.09) мл 4 бита рериод усреднения 5 только LocalList
Сообщения / Posts 875 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Алексей Шелепов
Forum Member / Участник форума
Участник № / Member № 6361
BUJH
Forum Member / Участник форума
Участник № / Member № 6737
отправлено / posted
Добрый день! Подскажите как можно организовать запись данных в БД "на лету" без использования СПАД.
Сделал проект по видео примеру Перенаправление данных в БД. Данные записываются по изменению реального значения, но не успевают записываться все.Примерно 3 значения из 14 попадают в БД. Скорость изменения значений довольно медленная для того чтобы успевали записываться данные в БД.
Если использовать вместо реальных переменных значения генераторов с целым типом данных, то данные записываются в достаточном объеме, как и обновляются, каждую секунду.
отправлено / posted
А если вместо "реальных переменных" использовать значения генераторов с типом данных FLOAT, запись будет осуществляться в нужном темпе?
Как Вы получаете значения "реальных переменных"? Где Вы увидели, что значение "реальной переменной" изменилось именно 14 раз?
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
BUJH
Forum Member / Участник форума
Участник № / Member № 6737
отправлено / posted
Да, если использовать значения генераторов с типом данных FLOAT то значения переменных изменяются согласно периоду пересчета 1 сек, как настроено.
Значение реальных переменных получаю из ОРС сервера, слежу за их изменением на МРВ и записываю приблизительно сколько раз значение изменилось за данный промежуток времени. Потом делаю выборку из БД за этот промежуток и смотрю что число изменений сильно не соответствует.
Сообщения / Posts 43 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
.при перенаправлении данных из архива в базу данных ничего не надо записывать !!!!!!!!!! TM это делает автоматически по изменению реального значения ..посмотрите i2(92 атрибут) -> среднее число строк ожидающих записи
Сообщения / Posts 875 | Из / From: Россия
| IP / IP: IP адрес / IP address |
BUJH
Forum Member / Участник форума
Участник № / Member № 6737
отправлено / posted
Хорошо, посмотрел атрибут 92 канала по изменению которого записываются данные в БД. Там значение равно 65535(ffff), т.е. среднее число строк ожидающих записи равно 65535? Почему тогда реальное количество строк, записанных в БД, гораздо меньше этого значения? Я скорее всего что то не так понимаю, объясните.
Nico, что Вы имели ввиду, когда написали что : "при перенаправлении данных из архива в базу данных ничего не надо записывать!" ... TM делает это автоматически по изменению реального значения. Вы думали как и куда я записываю эти изменения?
Сообщения / Posts 43 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Имеется в виду атрибут 92 канала CALL.SQL, который осуществляет перенаправление архивируемых параметров в БД. Этим каналом не надо управлять.
Пришлите, пожалуйста, Ваш проект, в котором реализовано "перенаправление архива" и укажите "генераторы", которые архивируются в БД корректно некорректно архивируемые "реальные переменные".
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
BUJH
Forum Member / Участник форума
Участник № / Member № 6737
отправлено / posted
Уже сообразил что имеется ввиду Call.SQL. Значение атрибута 92 = 0. Вроде все работает нормально. Не знаю что было когда в первый раз тестировал.
отправлено / posted
Надо считать из базы нужный массив данных из БД вместе с временными метками в аргументы канала CALL.TVC и вывести на тренд. См. разделы документации "Выполнение SQL-запросов в реальном времени" и "Канал CALL.TVC".
BUJH
Forum Member / Участник форума
Участник № / Member № 6737
отправлено / posted
Можно ли записывать в БД не по изменению, а по времени, скажем каждую минуту? Либо контролировать значение изменения и если оно (изменение) превысило определенное dT, установленное пользователем, только тогда записывать контролируемую переменную в БД?
Иначе получается слишком частое изменение (на 0.1) переменных и большое количество значений.
Сообщения / Posts 43 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Смысл "перенаправления" архива в БД состоит в том, чтобы получить архив в БД без потерь информации. Если Вас такой режим не устраивает, Вам надо пользоваться штатным механизмом SQL-запросов. В этом случае можно запрограммировать (Вашей пользовательской программой) любой регламент записи данных в БД.
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
BUJH
Forum Member / Участник форума
Участник № / Member № 6737
отправлено / posted
Уважаемая техподдержка, подскажите, у меня по одной переменной сбой записи в БД, как и где посмотреть почему значение по данному каналу не записывается в БД? Все настроено аналогично как и для остальных каналов, изменение по данной переменной есть, достоверность по каналу _T, должно записываться, но , значений в БД нет. Помогите разобраться.
Сообщения / Posts 43 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Если речь идет о перенаправлении архива в БД и все другие подобные переменные записываются в БД, а одна переменная не записывается, надо посмотреть, установлен ли у этой переменной флажок архивирования именно в тот архив, который задан для перенаправления.
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
BUJH
Forum Member / Участник форума
Участник № / Member № 6737
отправлено / posted
Да, речь идет о перенаправлении в БД, у переменной установлен в редакторе, во вкладке архивирование номер архива 3, как и у остальных. Записи нет.
Сообщения / Posts 43 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Все записываемые в БД переменные относятся к одному типу каналов - FLOAT/HEX? Как заданы привязки у аргументов канала CALL.SQL?
Создайте копию используемого SQL-шаблона и организуйте с его помощью штатную (не перенаправлением архива!) запись именно этой переменной в ту же таблицу БД. При этом контролируйте SQL-обмен с помощью трассировщика ODBC-драйвера.
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
BUJH
Forum Member / Участник форума
Участник № / Member № 6737
отправлено / posted
1.Все переменные FLOAT. 2.Не понял про привязки SQL 3.Как контролировать SQL-обмен с помощью трассировщика ODBC-драйвера?
Сообщения / Posts 43 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
1. Типы данных и привязки аргументов канала CALL.SQL можно увидеть, если открыть СВОЙСТВА этого канала (именно канала, а не шаблона!) и вкладку АРГУМЕНТЫ. 2. Файл трассировщика ODBC-драйвера задается и запускается в "Администраторе источников данных ODBC".
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
BUJH
Forum Member / Участник форума
Участник № / Member № 6737
отправлено / posted
Файл трассировщика создал и запустил. Подскажите как мне контролировать обмен?
Сообщения / Posts 43 | Из / From: Россия
| IP / IP: IP адрес / IP address |
BUJH
Forum Member / Участник форума
Участник № / Member № 6737
отправлено / posted
Здравствуйте! У меня настроен механизм перенаправления данных в БД. Данные приходят по Com порту (через конвертер USB/rs485), через ОРС сервер. В какой то момент обнаружил что за определенный период данные в БД отсутствуют.
Как определить что произошло: ошибка в TM6 при передаче данных или зависание драйвера преобразователя USB/RS485? Может в каком нибудь из конфигурационных файлов можно посмотреть? Проверял каждый день реальные значения данных, опрос был. Не понятно только запись шла или нет.
Сообщения / Posts 43 | Из / From: Россия
| IP / IP: IP адрес / IP address |
BUJH
Forum Member / Участник форума
Участник № / Member № 6737
отправлено / posted
Уважаемая техподдержка, могли бы Вы ответить на мой вопрос, который я задавал выше
Сообщения / Posts 43 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
В разделе "Перенаправление архива в базу данных" указаны средства диагностики процесса записи архива в БД через атрибуты канала соответствующего канала CALL.SQL и вкладку "Диагностика" "Панели МРВ".
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Здравствуйте! Не могли бы вы выслать пример выборки данных из СПАД с помощью CALL.LocalList?
Сообщения / Posts 5 | Из / From: Россия
| IP / IP: IP адрес / IP address |