This is topic выборка данных из СПАД и запись их в БД in forum SIAD/SQL. Архивирование в TRACE MODE / SIAD/SQL. Data Logging in TRACE MODE at Форум TRACE MODE: техническая поддержка.


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

Posted by KAV (Участник № / Member № 2889) on :
 
Уважаемая поддержка! С Наступающим Вас Новым Годом!
У меня такой вопрос: в моём проекте происходит выборка с ОРС HDA сервера и сохранение данных в локальный СПАД архив, всё работает, данные СПАД архива отображаются на тренде, но теперь встала задача хранить эти данные в другой БД (Оракл). Подскажите какими методами возможно это сделать? если есть простой пример с любой БД хоть Акцесс, пришлите пожалуйста.
Спасибо. [Улыбка / Smile]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Готовых примеров решения таких задач нет. Задача для Trace Mode 6 в некотором смысле экзотическая - использование в качестве шлюза между OPC-сервером и БД.
Возможные варианты.
1. Считывать из OPC HDA сервера данные с помощью каналов ChGroupReq и передавать эти данные SQL-запросами с групповой записью в БД.
2. Делать выборки из СПАД (с обработкой или без) с помощью каналов CALL и передавать эти данные SQL-запросами с групповой записью в БД.
3. Экспортировать данные из СПАД в файлы (txt, xml или html) с последующим импортом их в БД.
 
Posted by Катя (Участник № / Member № 5756) on :
 
Здравствуйте! Не знаю как решить такую задачу: данные нескольких каналов пишутся в спад,
а потом, например раз в сутки данные из этого спада полностью переписываются в Базу данных. Если я правильно понимаю,
то я могу прочитать данные из архива спад при помощи переменной Data_from_SIAD и канала CALL? А потом эти прочитанные данные записать в БД?
Прочитать данные из архива у меня не получается, хотя архив пишется.
Таким ли способом вообще надо решать эту задачу? Объясните пожалуйста.
Тоже самое мне нужно сделать с архивом тревог, то есть через определенные промежутки времени переписывать архив тревог в Базу данных.
Спасибо
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Экспортировать в БД все архивированные в СПАД данные по каким-то каналам - задача очень ресурсоемкая. И по производительности ODBC-драйвера, возможно, трудно реализуемая.
Целесообразнее передавать данные в БД "на лету", а не из архива.
Возможно, есть смысл более детально обсдить решаемую задачу в рабочем порядке по hotline@adastra.ru. Опишите задачу, характеристики потоков данных. Если есть попытки решения, пришлите соответствующие проекты, тесты, примеры.

Отчет тревог представляет собой текстовый файл с разделителями. Экспорт из этого файл не предусмотрен.
Можно штатными средствами Trace Mode 6 делать в реальном времени копии ОТ и их импортировать в БД с соответствующими фильтрами системными средствами или дополнительными приложениями.
 
Posted by Алексей Шелепов (Участник № / Member № 6361) on :
 
Здравствуйте!
Разъясните, пожалуйста. На данный момент производится запись одного канала в СПАД с последуюшей выборкой по времени и записью в БД Access SQL запросом. Для выборки из СПАД используется канал CALL с типом вызова LocalStatistic. Необходимо произвести выборку из СПАД двух каналов по одному времени с последующей записью в БД. Как наиболее рационально это реализоать?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Канал LocalStatistic может делать выборку только по одному каналу.
Групповую выборку с усреднением может делать канал LocalList.
Выборки осуществляются асинхронно, поэтому надо осуществлять запись в БД только после завершения выборки (см. описание канала LocalList).
 
Posted by Алексей Шелепов (Участник № / Member № 6361) on :
 
Если можно поподробней.
1. Каждый канал из СПАД привязывается к отдельному ChGroupReq?
2. Временной диапазон в ARG000 и ARG001 канала LocalList?
3. Какие аргументы в ChGroupReq и LocalList связывать?
4. Какие значения записывать в параметр каналов?
5. Какие каналы "активировать" входным значением.
Извиняюсь за возможно банальные вопросы, но информация в справке очень скудна.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Ответы на все поставленные вопросы содержатся в разделе справочной системы "Архивирование/Архивы СПАД/Выборка и обработка.../Выборка данных из локального архива по каналу".
Там же имеется ссылка на описание системы задания временного диапазона и свойства ПАРАМЕТР.
 
Posted by Алексей Шелепов (Участник № / Member № 6361) on :
 
Если информация в справочной системе не совсем понятна ПОКУПАТЕЛЮ Trace Mode, то кому, как не тех. поддержке поддержать свой продукт и разъяснить в доступной для восприятия форме ответы на поставленные вопросы. Всвязи с этим прошу ответить на предыдущие вопросы, тем более что часть вопросов в справке не раскрывается.
 
Posted by Nico (Участник № / Member № 5342) on :
 
1 да
2 да t_from / t_to (астроном время)
3 привязка D&D
4 LocalList: (0x10 ver <6.09) мл 4 бита рериод усреднения
5 только LocalList
 
Posted by Алексей Шелепов (Участник № / Member № 6361) on :
 
Спасибо, Nico.
 
Posted by BUJH (Участник № / Member № 6737) on :
 
Добрый день!
Подскажите как можно организовать запись данных в БД "на лету" без использования СПАД.

Сделал проект по видео примеру Перенаправление данных в БД.
Данные записываются по изменению реального значения, но не успевают записываться все.Примерно 3 значения из 14 попадают в БД. Скорость изменения значений довольно медленная для того чтобы успевали записываться данные в БД.

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

Вообщем посоветуйте что-нибудь
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
А если вместо "реальных переменных" использовать значения генераторов с типом данных FLOAT, запись будет осуществляться в нужном темпе?

Как Вы получаете значения "реальных переменных"?
Где Вы увидели, что значение "реальной переменной" изменилось именно 14 раз?
 
Posted by BUJH (Участник № / Member № 6737) on :
 
Да, если использовать значения генераторов с типом данных FLOAT то значения переменных изменяются согласно периоду пересчета 1 сек, как настроено.

Значение реальных переменных получаю из ОРС сервера, слежу за их изменением на МРВ и записываю приблизительно сколько раз значение изменилось за данный промежуток времени. Потом делаю выборку из БД за этот промежуток и смотрю что число изменений сильно не соответствует.
 
Posted by Nico (Участник № / Member № 5342) on :
 
.при перенаправлении данных из архива в базу данных ничего не надо записывать !!!!!!!!!!
TM это делает автоматически по изменению реального значения
..посмотрите i2(92 атрибут) -> среднее число строк
ожидающих записи
 
Posted by BUJH (Участник № / Member № 6737) on :
 
Хорошо, посмотрел атрибут 92 канала по изменению которого записываются данные в БД. Там значение равно 65535(ffff), т.е. среднее число строк ожидающих записи равно 65535?
Почему тогда реальное количество строк, записанных в БД, гораздо меньше этого значения? Я скорее всего что то не так понимаю, объясните.

Nico, что Вы имели ввиду, когда написали что :
"при перенаправлении данных из архива в базу данных ничего не надо записывать!" ... TM делает это автоматически по изменению реального значения. Вы думали как и куда я записываю эти изменения?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Имеется в виду атрибут 92 канала CALL.SQL, который осуществляет перенаправление архивируемых параметров в БД. Этим каналом не надо управлять.

Пришлите, пожалуйста, Ваш проект, в котором реализовано "перенаправление архива" и укажите "генераторы", которые архивируются в БД корректно некорректно архивируемые "реальные переменные".
 
Posted by Nico (Участник № / Member № 5342) on :
 
"слежу за их изменением на МРВ и записываю"
CALL.SQL не надо управлять
 
Posted by BUJH (Участник № / Member № 6737) on :
 
Уже сообразил что имеется ввиду Call.SQL.
Значение атрибута 92 = 0.
Вроде все работает нормально. Не знаю что было когда в первый раз тестировал.

Как теперь значения, записанные в БД представлять на МРВ в виде графика?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Надо считать из базы нужный массив данных из БД вместе с временными метками в аргументы канала CALL.TVC и вывести на тренд.
См. разделы документации "Выполнение SQL-запросов в реальном времени" и "Канал CALL.TVC".

Есть пример проекта на http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/52/t/000003.html
 
Posted by BUJH (Участник № / Member № 6737) on :
 
Можно ли записывать в БД не по изменению, а по времени, скажем каждую минуту?
Либо контролировать значение изменения и если оно (изменение) превысило определенное dT, установленное пользователем, только тогда записывать контролируемую переменную в БД?

Иначе получается слишком частое изменение (на 0.1) переменных и большое количество значений.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Смысл "перенаправления" архива в БД состоит в том, чтобы получить архив в БД без потерь информации.
Если Вас такой режим не устраивает, Вам надо пользоваться штатным механизмом SQL-запросов.
В этом случае можно запрограммировать (Вашей пользовательской программой) любой регламент записи данных в БД.
 
Posted by BUJH (Участник № / Member № 6737) on :
 
Уважаемая техподдержка, подскажите, у меня по одной переменной сбой записи в БД, как и где посмотреть почему значение по данному каналу не записывается в БД?
Все настроено аналогично как и для остальных каналов, изменение по данной переменной есть, достоверность по каналу _T, должно записываться, но , значений в БД нет. Помогите разобраться.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Если речь идет о перенаправлении архива в БД и все другие подобные переменные записываются в БД, а одна переменная не записывается, надо посмотреть, установлен ли у этой переменной флажок архивирования именно в тот архив, который задан для перенаправления.
 
Posted by BUJH (Участник № / Member № 6737) on :
 
Да, речь идет о перенаправлении в БД, у переменной установлен в редакторе, во вкладке архивирование номер архива 3, как и у остальных. Записи нет.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Все записываемые в БД переменные относятся к одному типу каналов - FLOAT/HEX?
Как заданы привязки у аргументов канала CALL.SQL?

Создайте копию используемого SQL-шаблона и организуйте с его помощью штатную (не перенаправлением архива!) запись именно этой переменной в ту же таблицу БД.
При этом контролируйте SQL-обмен с помощью трассировщика ODBC-драйвера.
 
Posted by BUJH (Участник № / Member № 6737) on :
 
1.Все переменные FLOAT.
2.Не понял про привязки SQL
3.Как контролировать SQL-обмен с помощью трассировщика ODBC-драйвера?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Типы данных и привязки аргументов канала CALL.SQL можно увидеть, если открыть СВОЙСТВА этого канала (именно канала, а не шаблона!) и вкладку АРГУМЕНТЫ.
2. Файл трассировщика ODBC-драйвера задается и запускается в "Администраторе источников данных ODBC".
 
Posted by BUJH (Участник № / Member № 6737) on :
 
Файл трассировщика создал и запустил.
Подскажите как мне контролировать обмен?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Читайте файл и ищите в нем сообщения об ошибках.
 
Posted by BUJH (Участник № / Member № 6737) on :
 
Здравствуйте!
У меня настроен механизм перенаправления данных в БД.
Данные приходят по Com порту (через конвертер USB/rs485), через ОРС сервер.
В какой то момент обнаружил что за определенный период данные в БД отсутствуют.

Как определить что произошло: ошибка в TM6 при передаче данных или зависание драйвера преобразователя USB/RS485?
Может в каком нибудь из конфигурационных файлов можно посмотреть?
Проверял каждый день реальные значения данных, опрос был. Не понятно только запись шла или нет.
 
Posted by BUJH (Участник № / Member № 6737) on :
 
Уважаемая техподдержка, могли бы Вы ответить на мой вопрос, который я задавал выше
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В разделе "Перенаправление архива в базу данных" указаны средства диагностики процесса записи архива в БД через атрибуты канала соответствующего канала CALL.SQL и вкладку "Диагностика" "Панели МРВ".
 
Posted by Andrey Limonchenko (Участник № / Member № 7318) on :
 
Здравствуйте!
Не могли бы вы выслать пример выборки данных из СПАД с помощью CALL.LocalList?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Отправлено.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2