Страница 1 из 1

Архивные данные

СообщениеДобавлено: Пн апр 20, 2009 2:58 pm
Din
Доброго времени суток.
Не могу реализовать архивирование данных. Все мануалы перечитал по сотню раз, все без толку. Выручайте.

Задача:
Архивировать аналоговый тег и записывать в базу его значение каждые 10 секунд.

Для решения задачи использую inSQL.
Создаю IDAS I/O Server c I/O Server Type: mbenet
добавляю аналоговый тег (импортированный с базы InTouch, Log Data поставлено), в свойствах указываю Currebt Editor InTouch, Storage: Cyclic 10 sec.

Смотрю Data Acquisition Показывает что все отлично, все работает.

Далее запускаю SQL Managment чтобы просмотреть содержимое таблиц. Наблюдаю следующую картину. DataBase Runtime, создано много... ОЧЕНЬ много разных таблиц. Открываю таблицу _. Все в норме, созданный аналоговый тег включен в таблицу. НО его значение там не указано.

Вопрос. Где храняться накопленные значения этого тега??? Просмотрел содержимое всех таблиц. Ни чего о значениях этого тега там нет. В таблицах Historian тоже пусто.

СообщениеДобавлено: Вт апр 21, 2009 3:02 pm
beachbear
Проверьте если в Live таблице видно последнее полученное значение и оно изменяется при повторном запросе:

USE Runtime
SELECT * FROM Live WHERE TagName = 'Имя-тэга'

Если нет значений в Live или значение не меняется,
то проверьте синхронизацию системного времени I/O сервера и InSQL-сервера, проверьте свойтства тэга на time/value deadband, и т.д.

СообщениеДобавлено: Ср апр 22, 2009 1:15 pm
Din
Значений в таблице LIVE нет. (((

А при обращении к таблице выводиться следующее сообщение:
OLE DB provider "INSQL" for linked server "INSQL" returned message "MDASOpen() faild! Please confirm that the Historian Configuration service is running on this server." Cannot open the table "Runtime.dbo._" from OLE DB provider "INSQL" for linked server "INSQL".

"Please confirm that the Historian Configuration service is running on this server" - где это проверить?

"проверьте синхронизацию системного времени I/O сервера и InSQL-сервера" - тоже не понятно где настраивается эта синхронизация.

СообщениеДобавлено: Ср апр 22, 2009 4:45 pm
beachbear
Похоже, что-то не в порядке с инсталляцией InSQL-сервера.

Ну а системные тэги какие-нибудь показывает?
Например SysTimeSec, который каждую секудну меняться должен.

USE Runtime
SELECT * FROM _ WHERE TagName = 'SysTimeSec'
AND DateTime >= '2009/04/22 00:00:00.000'

**** Не пойму, почему у меня вместо
A n a l o g H i s t o r y форум показывает подчерк *****

СообщениеДобавлено: Ср апр 22, 2009 6:34 pm
Din
Забавно....

когда в Екселе делаю запрос внешних данных с таблицы History, то возвращает мне ошибку.
А когда в SQL Manager пишу запрос:
USE Runtime
SELECT * FROM History WHERE TagName = 'Pereda4a'

То все нормально, отображает исторические значения. Только эти значения записываются по изменению, а не по времени (но думаю это дело в настройках)

Это так и должно быть? :)

СообщениеДобавлено: Ср апр 22, 2009 10:05 pm
beachbear
Сравните результаты SQL запросов:

SELECT * FROM History WHERE TagName = 'Pereda4a'
AND DateTime >= '2008/04/20 00:00:00.000'
AND wwRetrievalMode = 'DELTA'

и

SELECT * FROM History WHERE TagName = 'Pereda4a'
AND DateTime >= '2008/04/20 00:00:00.000'
AND wwRetrievalMode = 'CYCLIC'

потом то же самое, но вместо
H i s t o r y возьмите A n a l o g H i s t o r y

Режим wwRetrievalMode по-умолчaнию разный для
H i s t o r y и А n a l o g H i s t o r y

Попробуйте также wwRetrievalMode = 'FULL'

СообщениеДобавлено: Чт апр 23, 2009 5:46 pm
Din
Сравнил значения, как вы и советовали. Значения одинаковые.

Вот только есть одна особенность. Почемуто в таблицу както странно записываются данные. Идет чередование с NULL.

2009-04-23 13:28:58.157 Pereda4a 55 55
2009-04-23 13:29:59.377 Pereda4a NULL NULL
2009-04-23 13:30:06.390 Pereda4a 5 5
2009-04-23 13:31:07.517 Pereda4a NULL NULL
2009-04-23 13:31:14.640 Pereda4a 5 5
2009-04-23 13:32:15.767 Pereda4a NULL NULL
2009-04-23 13:32:22.953 Pereda4a 5 5

Мой мозг скоро взорвется....[/img]

СообщениеДобавлено: Пт апр 24, 2009 10:57 am
beachbear
Если данные поступают с I/O сервера, то InSQL записывает все разрывы состоянние коммуникационного канала как NULLs с различными значениями QualityDetail. Так-же как и таймауты топиков (1 минута по умолчанию, см. свойства топиков на IDAS-е) и перезапуски сервера. Это обычно нужно, чтобы видеть отсоединие источника данных на графике-тренде. Еслм состояние канала не важно, то можно пометить топик как Late Data, тогда NULL-ов в DELTA-режиме запросов не будет, но и при отсоединении I/O сервера/удаленного IDAS-а тренд будет показывать горизонтальную линию.

СообщениеДобавлено: Пт апр 24, 2009 12:11 pm
Din
Не знал об этом, полезная информация. Спасибо.

И так, что мы имеем в конечном итоге:
Данные в таблицу записываются. Но в Экселе запросы возвращают ошибку (пока мне не понятную).

Обычно я делаю отчыты следующим образом:
В экселе делаю запрос через импорт внешних данных и вывожу все необходимые значения тегов на отдельный лист, а после раскидываю принятые данные в форму отчета.

Похоже если не получится исправить экселевскую ошибку придется каждому тэгу, который принимает участие в отчете, делать отдельный запрос. Както не позитивно...

СообщениеДобавлено: Пт апр 24, 2009 1:48 pm
beachbear
Может быть, что та MDASOpen ошибка вызвана проблемами с аутентификацией юзера в InSQL-сервере под аккаутом которого исполняется SQL запрос из Excel-я.

Посмотрите, какой юзер установлен в Wonderware\Common Components\Change User Account Utility как админ всего.
Попробуйте залогиниться под ним (если от отличается от текущего) и запустить Excel-запрос.

СообщениеДобавлено: Пн апр 27, 2009 2:07 pm
Din
Сравнил имена юзеров, все в норме.
В экселе данные по прежднему не выдергиваются.
Возможно у меня не установлен какойто дополнительный драйвер? Или же запросы в Экселе нужно делать какимто другим способом?

СообщениеДобавлено: Пн апр 27, 2009 3:53 pm
Din
Эм... Стоп игра! )))

Один момент.

Use Runtime
Select * from histiry where tagname = '***'

Данным скриптом мы обращаемся к Tables 'History', в DateBase 'Runtime' так ведь?
Но когда мы смотрим список всех tables в программе SQL manager, то в списке данной таблицы нет. dbo.history присутствует лишь во Views. но на сколько я знаю в Views данные формируются в зависимости от самих Tables.
Тем не менее, когда мы обращаемся к таблице history данные отображаются.
Может быть на самом деле вся проблема в том, что при установке InSQL произошел какойто сбой?

(Переустановка InSQL положительных результатов не дает)

СообщениеДобавлено: Вт апр 28, 2009 10:57 am
beachbear
InSQL Server хранит только мета-данные (свойства тэгов, топиков, и т.д.) в настоящих таблицах Runtime. Все-же данные хранятся во внутренних файлах в директориях-блоках). Когда приходит запрос через SQL сервер, то OLE-DB провайдер InSQL-сервера через MDAS перенаправляет запрос в InSQL Retrieval сервис, который собственно и достаёт данные из соотвертсвующих по времени блоков-директорий.

То есть в данной ситуации по какой-то причине InSQL OLE-DB провайдер не может инициализировать соеднинение MDAS через MDASOpen, раз такая ошибка выводится в лог. К сожалению, похоже, что это сообщение не содержит кода ошибки, то есть непонятно, почему MDASOpen не работает когда запрос в Вашем случе идет черех Excel, но работает, когда запрос идет через Q u e r y A n a l y z e r. Должно работать одинаково, если юзер - админ и MS SQL Server и InSQL сервер сконфигурированы как mixed-mode authentication. В обоих случаях выполняется тот-же код, когда InSQL OLE-DB провайдер открывает MDAS-соединение. Я надеюсь, что всё это происходит не под Windows Vista, и InSQL Server версии 9.0 Patch 02?

СообщениеДобавлено: Вт апр 28, 2009 6:02 pm
Din
XP SP2 стоит. InSQL 9. MSSQL 2005.

Похоже придется ручками в экселе писать запросы.
Это кстати самое интересное явление, выявленное мной. Когда в экселе прописываешь ручками запрос все работает. правда долго он обрабатывает его.

Читал на форуме что с InSQL придется позаниматься камасутрой.... прекрассно понимаю автора данного сообщения )))))

СообщениеДобавлено: Ср апр 29, 2009 10:34 am
beachbear
Если пошагово опишете минимально-необходимые действия в Excel-е, которые вызвают проблему, то попытаюсь повторить на своей системе.
В качестве тэга можно взять один из системных, например SysTimeSec.

Если воспроизведу ту-же ситуацию, - отправлю в техсаппорт Wonderware - пусть уменьшают камасутру.

СообщениеДобавлено: Ср апр 29, 2009 12:07 pm
Din
1 открываем эксель.
2 В панели управления: Данные -> Импорт внешних данных -> Создать запрос.
3 Появляется меню "Выбор источника данных", Выбираем тот который настроен на "Runtime".
4 Появляется меню "Вход в сервер SQL"
5 Ставим галку "Использовать доверительное соединение." Кликаем ОК
6 Появляется список всех таблиц, представлений, синонимов.
7 Выбираем необходимую БД, кликаем далее, далее, далее
8 В самом конце выбираем ячейку в экселевской таблице, начиная с которой будут отображаться данные.

Вот и все. Раньше, с другими Скадами всегда работало. На мой взгляд самый простой способ для отображения данных в экселевских таблицах.