WinCC Prozesswerte archivieren

franzlurch

Level-1
Beiträge
339
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen,

ich muss ein Projekt für einen Kunden machen, welcher bei Änderung einer
Prozessrelevanten Variable alle Prozesswerte als CSV Datei archiviert haben möchte. Bietet sich hierfür das UseArchiv an? Ich arbeite schon mit dem UserArchiv da ich hiermit die Rezeptverwaltung realisiert habe. Ich würde den Export der CSV Datei gerne über ein C-Script starten was aber noch nict so ganz klappen möchte. Hier mal der Quellcode. Da kann mir bestimmt jemand helfen.

Code:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
UAHCONNECT hConnect;              // handle declaration for uaconnect
UAHARCHIVE hArchive;                 // handle declaration for uaarchive
UAConnect(&hConnect);
UAQueryArchiveByName(hConnect,"Programme",&hArchive);
UAArchiveOpen(hArchive);
uaArchiveExport(hArchive,"D:\Export.csv",0,0); 
UAArchiveClose(hArchive);
UAReleaseArchive(hArchive);
UADisconnect(hConnect);
}


Vielleicht hat jemand das ganze ja schon einmal auf eine andere Art und Weise realisiert und kann mir noch ein par Tipps geben.



franzlurch
 
Zuletzt bearbeitet:
Nimm mal dieses Beispiel, das rufe ich immer einmal am Tag auf um alle Rezeptdaten zu sichern.
Die Vorlage dazu habe ich mal von der Siemensseite herunter geladen

Code:
*
#include "apdefap.h"
int UAExport_VAM5(void)
{
#pragma code("kernel32.dll")
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code()

UAHCONNECT hConnect;
UAHARCHIVE hArchive;
BOOL bOK;
int iRet = 0;
char path_date[200] = "";
//char* path_main = "c:\\Temp\\BackupRecepten\\";
SYSTEMTIME sysTime;


///////////////////////////////////////////////////////////
// connect component user archive
//////////////////////////////////////////////////////////
bOK = uaConnect(&hConnect);
if ((bOK == FALSE) || (hConnect == NULL)){
  printf ("#E101: UAExport_VAM5() - uaConnect failed!  error=%d\r\n", uaGetLastError());
  iRet = -101;
  return (iRet);
}

///////////////////////////////////////////////////////////
// connect to  archive via name
//////////////////////////////////////////////////////////
bOK = uaQueryArchiveByName(hConnect, "VAM5", &hArchive);
if ((bOK == FALSE) || (hArchive == NULL)){
  uaDisconnect(hConnect);
  printf ("#E201: UAExport_VAM5() - uaQueryArchiveByName failed!  error=%d\r\n", uaGetLastError());
  iRet = -201;
  return (iRet);
}


///////////////////////////////////////////////////////////
// set sort
//////////////////////////////////////////////////////////
bOK = uaArchiveSetSort(hArchive, "Code desc");
if (bOK == FALSE){
  printf ("#E302: UAExport_VAM5() - uaArchiveSetSort failed!  error=%d\r\n", uaGetLastError());
  iRet = -302;
}

///////////////////////////////////////////////////////////
// open archive
//////////////////////////////////////////////////////////
bOK = uaArchiveOpen(hArchive);
if (bOK == FALSE){
  uaReleaseArchive(hArchive);
  uaDisconnect(hConnect);
  printf ("#E401: UAExport_VAM5() - uaArchiveOpen failed!  error=%d\r\n", uaGetLastError());
  iRet = -401;
  return (iRet);
}

///////////////////////////////////////////////////////////
// export archive
//////////////////////////////////////////////////////////
GetLocalTime(&sysTime);
sprintf(path_date, "D:\\WinCC_HL2_Recept_Data\\Auto_Backups\\Recepten\\HL2_VAM5_%04d%02d%02d_%02d%02d.csv", sysTime.wYear, sysTime.wMonth, sysTime.wDay,sysTime.wHour,sysTime.wMinute);
//bOK = uaArchiveExport(hArchive, "c:\\Temp\\BackupRecepten\\VAM5.csv", 0, 0);
bOK = uaArchiveExport(hArchive, path_date, 0, 0);

if (bOK == FALSE){
  printf ("#E501: UAExport_VAM5() - uaArchiveExport failed!  error=%d\r\n");
  iRet = -501;
}
///////////////////////////////////////////////////////////
// close archive 
//////////////////////////////////////////////////////////
bOK = uaArchiveClose(hArchive);
if (bOK == FALSE){
  printf ("#E801: UAExport_VAM5() - uaArchiveClose failed!  error=%d\r\n", uaGetLastError());
  iRet = -801;
}

///////////////////////////////////////////////////////////
// release archive 
//////////////////////////////////////////////////////////
bOK = uaReleaseArchive(hArchive);
if (bOK == FALSE){
  printf ("#E802: UAExport_VAM5() - uaReleaseArchive failed!  error=%d\r\n", uaGetLastError());
  iRet = -802;
}

///////////////////////////////////////////////////////////
// disconnect component user archive
//////////////////////////////////////////////////////////
bOK = uaDisconnect(hConnect);
if (bOK == FALSE){
  printf ("#E803: UAExport_VAM5() - uaDisconnect failed!  error=%d\r\n", uaGetLastError());
  iRet = -803;
}
return (iRet);
}
 
Zurück
Oben