Как восстановить значение тега из архива WinCC ?
Дмитрий; 20.6.02

Как восстановить значение внутреннего тега из архива WinCC при перезапуске RT ?

Re: Как восстановить значение тега из архива WinCC ?
Игорь К; 20.6.02

Привет.


Из какого архива?

Re: Как восстановить значение тега из архива WinCC ?
Евгений Трунов; 20.6.02

Я делал вручную, при открытии главной формы, путем вызова функций TLGGetArchiveDataRaw. Может быть, действительно есть путь попроще?

Re: Как восстановить значение тега из архива WinCC ?
Дмитрий; 21.6.02

А как именно записть ф-ю ( TLGGetArchiveDataRaw )в скрипте, что подключить и т.п., чтобы WinCC её поняла и какие у неё аргументы ?

Re: Как восстановить значение тега из архива WinCC ?
Евгений Трунов; 21.6.02

В принципе, я лучше ODK не расскажу :). Если нет ODK, то смотри файл pdertcli.h, там объявления всех функций. Можно догадаться, что к чему. В общем, примерно так:


PTLG_ARCHIVDATARAW pDataRaw;
SYSTEMTIME stFrom, stTo;
DWORD dwFlags = 0;
DWORD dwNumberOfData = 10000;
CMN_ERROR Error;
//--------------------------------
if (TLGConnect(NULL, &Error)) // подключение к подсистеме TagLogging
{
TLGGetArchivDataEx(szArchiveName /* имя архива */, szTagName /* имя архивного тега */, &stFrom /* с... */, &stTo /* ...по */, &pDataRaw /* куда сохранять */, &dwNumberOfData /* считанное количество записей */, &dwFlags /* вспомогат. флаги */, &Error /* инф-ция о возможной ошибке */);

// Перенос считанного значения в тег szTagName (имя архивного тега совпадает с таким же тегом в пространстве имен DataManager)
SetTagDouble(szTagName, dwNumberOfData ? pDataRaw[dwNumberOfData-1].doValue : 0);

TLGFreeMemory(pDataRaw); // освобождение выделенной ф-ей TLGGetArchivDataEx памяти
}

TLGDisconnect(NULL); // отключение от подсистемы TagLogging
}

Указатель на выделенную ф-ей TLGGetArchivDataEx память, представляющую собой массив структур типа PTLG_ARCHIVDATARAW и количеством dwNumberOfData взвращается в аргументе pDataRaw. Его необходимо освободить. Вроде всё :).