Zunächst muss natürlich erst ein passender Filter im Alarmlogging – Fenster in der Runtime erstellt werden.
Anschließend wird mit den Windows-Explorer die Datei „CCAlarmFilterStorage.xml“ kopiert und dann umbenannt. Diese Datei befindet sich im Projektverzeichnis im Unterordner ”MELD“. In den Beispiel nachfolgenden Listing habe ich diese Datei in ”CCAlarmFilterStorage.xxx“ umbenannt. Die Frage Umbenennen der Dateinamenerweiterung einfach mit ja bestätigen und schon ist eine Datei für die Werkseinstellung vorhanden. Anschließend muss noch das nachfolgende Script an einen Button (Klick – Ereignis) gebunden werden.
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code ("Kernel32.dll")
BOOL CopyFileA( LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists);
#pragma code ()
char path[255], srcFile[255], desFile[255];
CMN_ERROR er;
DM_DIRECTORY_INFO info;
BOOL rt;
memset(path, 0, sizeof(path));
memset(srcFile, 0, sizeof(srcFile));
memset(desFile, 0, sizeof(desFile));
memset(&er, 0, sizeof(CMN_ERROR));
memset(&info, 0, sizeof(DM_DIRECTORY_INFO));
if(DMGetRuntimeProject(path, sizeof(path), &er)) //Runtimeproject abrufen
{
if(DMGetProjectDirectory("bla", path, &info, &er)) //Projektpfad ermitteln
{
sprintf(srcFile, "%s\\MELD\\CCAlarmFilterStorage.xxx", info.szProjectDir);
sprintf(desFile, "%s\\MELD\\CCAlarmFilterStorage.xml", info.szProjectDir);
rt = CopyFileA(srcFile, desFile, FALSE);
}
}
}
Funktionsbeschreibung: Bei Buttonklick wird zunächst das aktuell laufende WinCC-Projekt ermittelt. Daraufhin wird das Projektverzeichnis abgerufen. Nun wird für die Quell- und Zieldatei der absolute Dateipfad erstellt und die vorher umbenannte Datei (srcFile) kopiert und die „alte“ Filterdatei (desFile) damit überschrieben.
HINWEIS! Die Funktion „CopyFileA“ ist eine mit #pragma Code.. importierte Funktion. Der Rückgabewert ist TRUE wenn erfolgreich kopiert wurde.