Доступ к базе архива из C++Builder или Delphi
ion; 28.9.04

Подскажите, плиз, в какую базу и какую таблицу архивируются теги TagLogging'ом, чтоб можно было из C++Builder'а или Delphi (или VB) вытащить архивные теги.

Re: Доступ к базе архива из C++Builder или Delphi
Руденко Алексей Невисс-комплекс; 29.9.04

Попробуй через ODBC соединение - там все поймешь...

Re: Доступ к базе архива из C++Builder или Delphi
ion; 29.9.04

я знаю как подсоединяться.

Вопрос в том:

к чему подсоединяться?!
к какой базе и таблице базы?!

где лежат архивные теги?
Re: Доступ к базе архива из C++Builder или Delphi
Alexis; 30.9.04

Версия то WinCC какая интересует?


А самый простой вариант получения данных TLG - это использовать TLGGetArchivDataEx.
Re: Доступ к базе архива из C++Builder или Delphi
Nick Gashevsky; 30.9.04

Посмотри пример на http://www.automation-drives.ru/as/products/doc.php?l1=SIMATIC%20HMI&l2=WinCC&l3=doc правда на VC++6, но на C++Builder подправить нетрудно+почитай ODK

Re: Доступ к базе архива из C++Builder или Delphi
Руденко Алексей Невисс-комплекс; 30.9.04

При соединении через ODBC - на выбор в списке доступных баз предлагается выбор - и там есть строчка с названием твоего проекта WinCC и датой его создания с приписками RT еще что то.

Так вот выбрать надо RT, после этого нужно выбрать таблицу этой базы данных...
При использовании Delphi и её компонента ADOTable или ADOQuery есть вариант посмотреть все содержание базы - покопайся - найдешь...
Ежли уж совсем не в моготу, то открой эсель (MS Office который) и через вкладку "данные" -> "импорт внешних данных"-> "создать запрос" а там он тебе высветит что есть в этой базе и т.д.
Удачи
Re: Доступ к базе архива из C++Builder или Delphi
Руденко Алексей Невисс-комплекс; 30.9.04

Хотя в 6-ой версии там лежит лишь информация о названии тегов и т.д. - но я думаю если покопаться то, можно найти...

Метод научного тыка еще никто не отменял...
И не забудь запустить ВИНСИСЮ а то тебя не допустят к базе...
Re: Доступ к базе архива из C++Builder или Delphi
ion; 30.9.04



Re: Доступ к базе архива из C++Builder или Delphi
Alexis; 30.9.04

Открываешь RT-шную базу, в таблице AMT берешь нужный DSN (либо для Slow либо для Fast), открываешь базу с нужным DSN и копаешься в табличках Archive (имена переменных и их ID), TagCompressed (сжатые данные Fast-ов) и TagUncompressed (данные Slow архивов).

То что сжато - тебе прийдется ручками расжать :))
Re: Доступ к базе архива из C++Builder или Delphi
Павел Кобелев; 1.10.04

Для доступа к архивным тегам есть WinCC OLEDB Provider for Archives. Драйвер устанавливается вместе с WinCC

Re: Доступ к базе архива из C++Builder или Delphi
ion; 5.10.04

> Открываешь RT-шную базу, в таблице > > AMT берешь нужный DSN (либо для Slow > либо для Fast), открываешь базу с

> нужным DSN и копаешься в табличках
> Archive (имена переменных и их ID),
> TagCompressed (сжатые данные Fast-ов)
> и TagUncompressed (данные Slow
> архивов).
> То что сжато - тебе прийдется ручками > расжать :))


А вот в архивах в этих почему то пусто :(
Re: Доступ к базе архива из C++Builder или Delphi
ion; 5.10.04

> Открываешь RT-шную базу, в таблице > > AMT берешь нужный DSN (либо для Slow > либо для Fast), открываешь базу с

> нужным DSN и копаешься в табличках
> Archive (имена переменных и их ID),
> TagCompressed (сжатые данные Fast-ов)
> и TagUncompressed (данные Slow
> архивов).
> То что сжато - тебе прийдется ручками > расжать :))


А вот в архивах в этих почему то пусто :(
Re: Доступ к базе архива из C++Builder или Delphi
ASH; 5.10.04

А ведь действительно, эти таблицы пусты. В некоторых базах в TagCompressed лежит непонятно что (названия полей - ValueID, Timebegin, Timeend и BinValues мне ну ничего не говорят, также как и содержащаяся в этой таблице информация), ну да ладно, допустим там действительно надо, как сказали "ручками разжимать". Но таблица TagUncompressed, вроде бы действительно та самая необходимая таблица (поля Timestamp и Realvalue говорят именно об этом) всегда пуста!!! Хотя в рантайме я же с помощью ТрендКонтрола вижу, что теги нормально архивируются и где-то ведь они сохраняются! В Си-Билдере я без проблем получаю доступ с помощью ADO-компонент к любой винсисишной базе, но вот где хранятся архивированные теги и как получить к ним доступ - я так и не понял:( Кто может - помогите, плиз!

Re: Доступ к базе архива из C++Builder или Delphi
Alexis; 6.10.04

Дык в RT-шной базе в таблице AMT лежит как минимум три DSN-а на базу с алармами, на базу Fast-архивов и на базу с Slow-архивами.

Если хотим Slow, то берем нужный DSN, открываем базу и копаемся в табличке TagUncompressed - сопоставление ID и ИмяПеременной в табличке Archive.
Если хотим Fast, то ... и копаемся в табличке TagCompressed - но тут ситуация хуже - данные лежат в бинарном поле (max 2Kb) - с наскока расжать я не смог, но попытаться попробуйте - в шапке (размер не помню) точно есть время, а в теле лежат 32битные floatы и на них накручен сдвиг: 33 байтные отрезки - 8 float-ов + байт, первый флоат чистый, второй получается сдвигом оставшихся 29 байт на один бит (недастающий бит приходит из 33-ого байта) и тд... Но когда наткнулся на 25 байтный отрезок - сказал ООППСС...
Это то до чего я доковырялся когда захотелось данные самому выцарапывать, потом лень стало...
А чем Вас все таки ОДКшная TLGGetArchivDataEx не устраивает? Работает нормально...
Re: Доступ к базе архива из C++Builder или Delphi
ASH; 8.10.04

Да бог с ней, с TLGGetArchivDataEx... И И забудем про компрессирование... Объясните кто-нибудь почему таблица TagUncompressed пуста?? Ведь там же теги Slow-архивов должны храниться?

Re: Доступ к базе архива из C++Builder или Delphi
Alexis; 8.10.04

А ты в базе для Slow-архивов смотришь?

Re: Доступ к базе архива из C++Builder или Delphi
ion; 8.10.04

А можно примерчик на использование ф-ции TLGGetArchivDataEx.


Если конкретнее, то как в ней задавать параметр PTLG_ARCHIVDATARAW* ppTlgData?
Re: Доступ к базе архива из C++Builder или Delphi
ASH; 8.10.04

To Alexis


Да я везде смотрю! И в Фаст, и в Слоу базах, во всех базах ВинСиСи, которые видны в Enterprise Manager'e MS SQL Server'a либо через АДО из VB, таблицы TagUncompressed пусты:(
Re: Доступ к базе архива из C++Builder или Delphi
Alexis; 11.10.04

2 ASH:

Плохо смотришь :) А может у тебя нет переменных которые в Slow пишутся?

2 ion:
TLG_ARCHIVDATARAW *pDataRaw=NULL;
DWORD dwDataCount=10000;
DWORD dwFlag=0;
TLGGetArchivDataEx(lpszArcName, lpszVarName, &stFrom, &stTo, &pDataRaw, &dwDataCount, &dwFlag, &dmError);
...
if ( pDataRaw ) TLGFreeMemory(pDataRaw);
Re: Доступ к базе архива из C++Builder или Delphi
ASH; 11.10.04

To Alexis

Действительно, стормозил:) Эх ручки мои кривенькие - в настройках границу частоты архивирования для быстрых архивов выставил равной частоте архивирования тегов, потому все писалось в фаст, а не в слоу.
Спасибо:)
Re: Доступ к базе архива из C++Builder или Delphi
Маслов Дмитрий; 11.10.04

Предлагаю поставить точку в этой затянувшейся дискуссии.


1. В WinCC 6.0 имеются два типа архивов: быстрые и медленные.

2. Вплоть до версии 6.0 SP1 в быстрые попадали все теги с циклом архивации <= 1 мин., в медленные - остальные.

3. Начиная с версии 6.0 SP2 Вы сами можете сконфигурировать, что попадает в быстрый, а что - в медленный архив.

4. Содержимое медленных архивов пишется в базу данных в таблицу с полями "метка времени", "идентификатор тега", "значение". Вывод: прочитать содержимое медленного архива можно просто обратившись к нужной табличке БД, например, через ODBC.

5. Содержимое быстрых архивов пишется в БД в сжатом виде. Прочитать их можно через WinCC OLE DB Provider, который производит расжатие "на лету". Пример чтения тегов можно скачать с этого сайта, ПРИЧЕМ НИКОЛАЙ ГАШЕВСКИЙ УЖЕ ДАВАЛ ССЫЛКУ НА ЭТОТ ПРИМЕР НЕСКОЛЬКИМИ СООБЩЕНИЯМИ ВЫШЕ!

http://www.automation-drives.ru/as/products/doc.php?l1=SIMATIC%20HMI&l2=WinCC&l3=doc
См. http://www.wincc.ru

Re: Доступ к базе архива из C++Builder или Delphi
Евгений; 12.11.04

Прошу прощения за то что влезаю в разговор. Может кто-нибудь подсказать, как из с++ builder работать с файловым dsn? Компонент Query системные и пользовательские dsn видит, а файловые - нет. А нужен именно файловый.

Заранее спасибо за помощь!
Re: Доступ к базе архива из C++Builder или Delphi
Евгений; 12.11.04

Прошу прощения за то что влезаю в разговор. Может кто-нибудь подсказать, как из с++ builder работать с файловым dsn? Компонент Query системные и пользовательские dsn видит, а файловые - нет. А нужен именно файловый.

Заранее спасибо за помощь!
Re: Доступ к базе архива из C++Builder или Delphi
Евгений; 12.11.04

Прошу прощения за то что влезаю в разговор. Может кто-нибудь подсказать, как из с++ builder работать с файловым dsn? Компонент Query системные и пользовательские dsn видит, а файловые - нет. А нужен именно файловый.

Заранее спасибо за помощь!
Re: Доступ к базе архива из C++Builder или Delphi
Евгений; 12.11.04

Прошу прощения, на кнопку отправить я нажал только один раз - браузер сбоит похоже.