Projekt archivieren und abrufen - TIAPortal

TIA Portal Openness: API für die Automatisierung von Engineering-Workflows

ft:publication_title
TIA Portal Openness: API für die Automatisierung von Engineering-Workflows
Product
TIAPortal
Version
V20
Publication date
01/2025
Language
de-DE
Projekt archivieren und abrufen

Voraussetzung

Einleitung

Mit TIA Portal Openness können Sie den Zustand des geöffneten und gespeicherten Projekts vor dem Durchführen weiterer Änderungen archivieren und später das archivierte Projekt abrufen.

Projekt archivieren

Sie können ein TIA Portal-Projekt mit der am Objekt Siemens.Engineering.Project verfügbaren TIA Openness API archivieren.

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

public void Archive(System.IO.DirectoryInfo targetDirectory, string targetName, Siemens.Engineering.ProjectArchivationMode archivationMode)

'targetName' ist der Name der erstellten Datei, unabhängig davon, ob sie archiviert oder nicht archiviert ist. Diese Datei kann Dateierweiterungen oder keine Dateierweiterungen enthalten. Für den Wert ProjectArchivationMode als Compressed und DiscardRestorableDataAndCompressed, lautet der archivierte Dateiname wie von Ihnen angegeben. Wenn Sie keine Erweiterung oder außer "zap15_1" bzw. "zap14" usw. keine Erweiterung angeben, kann dieses archivierte Projekt nicht außerhalb der Openness API vom TIA Portal abgerufen werden. Wenn Sie weder Compressed noch DiscardRestorableDataAndCompressed wählen, ist das Ergebnis die Standarddateistruktur eines Projekts der aktuellen Version.

Hinweis

Sie müssen das Projekt vor dem Aufrufen der Archivierungs-API speichern. Falls das Projekt nicht gespeicherte Änderungen enthält, löst das Archiv eine EngineeringTargetInvocationException aus.

ProjectArchivationMode

Die Enumeration ProjectArchivationMode hat vier Werte.

ProjectArchivationMode

Beschreibung

None

  • Mit den Originaldateien werden keine speziellen Aktionen durchgeführt. Der Modus ähnelt dem Vorgang "Speichern unter".

  • In diesem Modus wird keine komprimierte ZIP-Datei erstellt.

  • Der Unterschied zu SaveAs besteht in diesem Fall darin, dass das Archiv den persistenten Speicherort nicht auf den neuen Ordner Archived umstellt, was jedoch bei SaveAs der Fall ist.

DiscardRestorableData

  • Bei der Dateispeicherung wird das Projekt in einer internen Datendatei abgelegt. Diese Datei wird anschließend bei jeder Änderung an den Projektdaten größer. Beim Modus DiscardRestorableData wird diese Datendatei reorganisiert (dabei wird nur die neueste Version der Objekte gespeichert und der Verlauf aus der Datei gelöscht). Zwischenzeitlich angefallene Daten, die Dateien des IM-Verzeichnisses und des Verzeichnisses tmp werden nicht an den Archivspeicherort kopiert.

  • In diesem Modus wird keine komprimierte ZIP-Datei erstellt.

Compressed

  • Die vom Archivierungsprozess erstellte Struktur des TMP-Projektordners wird zu einem ZIP-kompatiblen Archiv komprimiert. Nach Erstellung der ZIP-Datei wird die TMP-Ordnerstruktur gelöscht.

DiscardRestorableDataAndCompressed

  • In der vom Archivierungsprozess erstellten Struktur des TMP-Projektordners werden die wiederherstellbaren Daten verworfen und dann zu einem ZIP-kompatiblen Archiv komprimiert. Nach Erstellung der ZIP-Datei wird die TMP-Ordnerstruktur gelöscht.

Programmcode: Projekt archivieren

Ändern Sie den folgenden Programmcode, um ohne Erweiterung auf das Archivprojekt zuzugreifen:

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

public void ArchivingProjectWithoutExtension()

{

    var tiaPortal = new TiaPortal(TiaPortalMode.WithoutUserInterface);

    var projectFilePath = @"E:\Sample1\Sample1.ap15_1";

    var project = tiaPortal.Projects.Open(new FileInfo(projectFilePath));

    var archiveDirectory = @"E:\Archive";

   project.Archive(new DirectoryInfo(archiveDirectory),

   "ArchiveProjectNameWithoutExtension", ProjectArchivationMode.Compressed);

}

Ändern Sie den folgenden Programmcode, um mit der Erweiterung '.archive' auf das Archivprojekt zuzugreifen:

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

public void ArchivingProjectWithExtension()

{

    var tiaPortal = new TiaPortal(TiaPortalMode.WithoutUserInterface);

    var projectFilePath = @"E:\Sample1\Sample1.ap15_1";

    var project = tiaPortal.Projects.Open(new FileInfo(projectFilePath));

    var archiveDirectory = @"E:\Archive";

    project.Archive(new DirectoryInfo (archiveDirectory),

    "ArchiveProjectName.archive", ProjectArchivationMode.Compressed);

}

Hinweis

Sie können jede beliebige Erweiterung verwenden. Das Verhalten des Archivs ist mit und ohne Erweiterung identisch.

Projekt abrufen

Über die Openness API können Sie ein archiviertes TIA Portal-Projekt abrufen. Der Abruf ist nur mit einem komprimierten Archiv möglich. Bei archivierten Projekten mit 'ProjectArchivationMode.None' oder 'ProjectArchivationMode.DiscardRestorableData' kann der Enumerationswert nicht von dieser API abgerufen werden. Diese API ist am Objekt "Siemens.Engineering.ProjectComposition" verfügbar.

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

public Siemens.Engineering.Project Retrieve(System.IO.FileInfo sourcePath, System.IO.DirectoryInfo targetDirectory)

Zum Abrufen eines UMAC-geschützten Projekts steht zum Abfragen der Anmeldedaten eine überlastete API mit UmacDelegate bereit. Dann wird die folgende Definition verwendet:

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

public Siemens.Engineering.Project Retrieve(System.IO.FileInfo sourcePath, System.IO.DirectoryInfo targetDirectory, Siemens.Engineering.UmacDelegate umacDelegate)

Beim Abrufen wird außerdem ProjectOpenMode unterstützt, für das "Primary" oder "Secondary" angegeben werden kann. Dann wird die folgende API-Definition verwendet:

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

public Siemens.Engineering.Project Retrieve(System.IO.FileInfo sourcePath, System.IO.DirectoryInfo targetDirectory,Siemens.Engineering.UmacDelegate umacDelegate, Siemens.Engineering.ProjectOpenMode projectOpenMode)

Hinweis

UmacDelegate kann als null übergeben werden, wenn das Projekt nicht geschützt ist.

Wenn das archivierte Projekt aus einer früheren TIA Portal-Version stammt, müssen Sie die RetrieveWithUpgrade API, aufrufen. Dann wird die folgende API-Definition verwendet:

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

public Siemens.Engineering.Project RetrieveWithUpgrade(System.IO.FileInfo sourcePath, System.IO.DirectoryInfo targetDirectory);

Wenn das archivierte Projekt aus einer früheren TIA Portal-Version stammt und UMAC-geschützt ist, steht eine andere überlastete API mit UmacDelegate zur Verfügung. Dann wird die folgende API-Definition verwendet:

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

public Siemens.Engineering.Project RetrieveWithUpgrade(System.IO.FileInfo sourcePath, System.IO.DirectoryInfo targetDirectory, Siemens.Engineering.UmacDelegate umacDelegate)

Wenn das archivierte Projekt aus einer früheren TIA Portal-Version stammt und auch der Projektöffnungsmodus angegeben werden muss, wird die folgende API-Definition verwendet:

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

public Siemens.Engineering.Project RetrieveWithUpgrade(System.IO.FileInfo sourcePath, System.IO.DirectoryInfo targetDirectory,Siemens.Engineering.UmacDelegate umacDelegate, Siemens.Engineering.ProjectOpenMode projectOpenMode)

Hinweis

UmacDelegate kann als null übergeben werden, wenn das Projekt nicht geschützt ist. Wenn das Projekt geschützt ist, sind die Benutzerdaten eines Administrators erforderlich, um die Aktion RetrieveWithUpgrade durchzuführen.

Programmcode: Projekt abrufen

Um auf das abzurufende Projekt zuzugreifen, ändern Sie folgenden Programmcode:

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

public void RetrieveProject()

{

    var archivePath = @"E:\Archive\Sample1.zap15_1";

    var retrievedProjectsDirectory = @"E:\RetrievedProjects";

    var tiaPortal = new TiaPortal(TiaPortalMode.WithoutUserInterface);

    tiaPortal.Projects.Retrieve(new FileInfo(archivePath),

    new DirectoryInfo(retrievedProjectsDirectory));

}