Voraussetzung
-
Die Anwendung TIA Openness ist mit TIA Portal verbunden
Siehe Verbindung zum TIA Portal aufbauen -
Ein Projekt ist geöffnet
Siehe Projekt öffnen
Einleitung
Das Attribut 'Access' ist nur für Bausteine, PLC-Typen und Variablentabellen vorhanden, die sich unter einer Unit befinden. Die XML-Datei des Bausteins, des Typs und der Variablentabelle enthält beim Export in die Unit-Umgebung das Attribut Access
und erhält beim Import den Standardwert Unpublished. Die exportierte XML-Datei des gleichen Bausteins, des gleichen Typs und der gleichen Variablentabelle enthält das Attribut Access in einer Umgebung außerhalb einer Unit nicht
und erhält beim Import keine Werte.
Die allgemeinen XML-Importregeln von Openness lassen den Import von XML-Dateien mit undefinierten Attributen und undefinierten Werten nicht zu. Die Regeln beschränken den Export und Import von XML-Dateien,
die aus einem Objekt in einer Umgebung unterhalb einer Unit stammen, in eine Umgebung außerhalb einer Unit.
Die Regeln beschränken die Nutzung des XML-Exports und -Imports zusätzlich; daher ist die Überladungsmethode import festgelegt, die drei Parameter akzeptiert.
|
Parameter |
Rückgabetyp |
Beschreibung |
|---|---|---|
|
path |
String |
Gibt den Pfad zur SIMATIC ML-Datei an, die importiert werden soll |
|
importOptions |
enum: Siemens.Engineering.ImportOptions |
Gibt die beim Import zu verwendende(n) allgemeine(n) Importoption(en) an. |
|
swImportOptions |
enum: Siemens.Engineering.SW.SWImportOptions |
Gibt die für STEP 7 spezifische(n) Importoption(en) an. |
Die Siemens.Engineering.SW.SWImportOptions vom Typ Enum werden durch die folgende neue Importoption erweitert:
-
IgnoreUnitAttributes: Gibt an, dass der Importvorgang nicht abgebrochen werden soll, falls in der XML-Datei Unit-bezogene Attribute vorhanden sind und der Import in einer Umgebung außerhalb einer Unit stattfindet.
'IgnoreUnitAttributes' wird berücksichtigt, wenn die XML-Datei
-
aus einer Unit exportiert wird
-
das Attribut 'Access' enthält
-
in eine Umgebung außerhalb einer Unit importiert wird
Wenn die exportierte XML-Datei das Openness-Attribut Access nicht enthält und in eine Unit importiert wird, wird die neue Importoption von der Importlogik nicht berücksichtigt.
Programmcode
|
PlcSoftware plcTarget = GetControllerTargetByPLCName(Session.OpnsProject.Devices, PLCName); PlcUnitProvider plcUnitProvider = plcTarget.GetService<PlcUnitProvider>(); PlcSoftware plcSoftware = plcTarget.GetService<SoftwareContainer>() as PlcSoftware; PlcUnit plcUnit1 = plcUnitProvider.UnitGroup.Units[0]; //assuming Unit_1 is already existing PlcUnit plcUnit2 = plcUnitProvider.UnitGroup.Units[1]; //assuming Unit_2 is already existing PlcBlock block1 = plcUnit1.BlockGroup.Blocks.Find("Block_1"); //assuming Block_1 is already existing under Unit_1 PlcBlock block2 = plcUnit2.BlockGroup.Blocks.Find("Block_2"); //assuming Block_2 is already existing under Unit_2 PlcBlock block3 = plcSoftware.BlockGroup.Blocks.Find("Block_3"); //assuming Block_3 is already existing under the PLC |
Programmcode: Objekt wird aus einer Unit exportiert und in eine Unit importiert
Die folgenden Beispiele zeigen das Verhalten der neuen Importoption anhand von Bausteinen. Dasselbe Verhalten gilt jedoch auch für PLC-Typen und Variablentabellen.
Ändern Sie folgenden Programmcode, um einen Baustein zu exportieren, bei dem das Attribut 'Access' auf den Wert 'Unpublished' (Standardwert) gesetzt ist sowie die ExportOptions.WithDefaults und die SWImportOptions.None lauten:
|
block1.SetAttribute("Access", UnitAccessType.Unpublished); block1.Export(new FileInfo("somepath"), ExportOptions.WithDefaults); block1.Delete(); plcUnit2.BlockGroup.Blocks.Import(new FileInfo("somepath"), ImportOptions.None, SWImportOptions.None); |
Ändern Sie folgenden Programmcode, um einen Baustein zu exportieren, bei dem das Attribut 'Access' auf den Wert 'Unpublished' (Standardwert) gesetzt ist sowie die ExportOptions.WithDefaults und die SWImportOptions.IgnoreUnitAttributes lauten:
|
block1.SetAttribute("Access", UnitAccessType.Unpublished); block1.Export(new FileInfo("somepath"), ExportOptions.WithDefaults); block1.Delete(); plcUnit2.BlockGroup.Blocks.Import(new FileInfo("somepath"), ImportOptions.None, SWImportOptions.IgnoreUnitAttributes); |
Ändern Sie folgenden Programmcode, um einen Baustein zu exportieren, bei dem das Attribut 'Access' auf den Wert 'Published' gesetzt ist sowie die ExportOptions.None und die SWImportOptions.None lauten:
|
block1.SetAttribute("Access", UnitAccessType.Published); block1.Export(new FileInfo("somepath"), ExportOptions.None); block1.Delete(); plcUnit2.BlockGroup.Blocks.Import(new FileInfo("somepath"), ImportOptions.None, SWImportOptions.None); |
Ändern Sie folgenden Programmcode, um einen Baustein zu exportieren, bei dem das Attribut 'Access' auf den Wert 'Published' gesetzt ist sowie die ExportOptions.None und die SWImportOptions.IgnoreUnitAttributes lauten:
|
block1.SetAttribute("Access", UnitAccessType.Published); block1.Export(new FileInfo("somepath"), ExportOptions.None); block1.Delete(); plcUnit2.BlockGroup.Blocks.Import(new FileInfo("somepath"), ImportOptions.None, SWImportOptions.IgnoreUnitAttributes); |
|
Hinweis In allen obigen Programmcode-Abschnitten wird keine Ausnahme ausgelöst und der Importvorgang ist erfolgreich. |
Programmcode: Objekt wird aus einer Unit exportiert und in eine Umgebung außerhalb einer Unit importiert
Ändern Sie folgenden Programmcode, um einen Baustein zu exportieren, bei dem das Attribut 'Access' auf den Wert 'Unpublished' (Standardwert) gesetzt ist sowie die ExportOptions.WithDefaults und die SWImportOptions.None lauten:
|
block1.SetAttribute("Access", UnitAccessType.Unpublished); block1.Export(new FileInfo("somepath"), ExportOptions.WithDefaults); block1.Delete(); plcUnit2.BlockGroup.Blocks.Import(new FileInfo("somepath"), ImportOptions.None, SWImportOptions.None); |
|
Hinweis Im obigen Programmcode ist der Importvorgang nicht erfolgreich und es wird eine wiederherstellbare Ausnahme ausgelöst. |
Ändern Sie folgenden Programmcode, um einen Baustein zu exportieren, bei dem das Attribut 'Access' auf den Wert 'Unpublished' (Standardwert) gesetzt ist sowie die ExportOptions.WithDefaults und die SWImportOptions.IgnoreUnitAttributes lauten:
|
block1.SetAttribute("Access", UnitAccessType.Published); block1.Export(new FileInfo(„somepath"), ExportOptions.None); block1.Delete(); plcUnit2.BlockGroup.Blocks.Import(new FileInfo("somepath"), ImportOptions.None, SWImportOptions.None); |
|
Hinweis Im obigen Programmcode ist der Importvorgang erfolgreich und es wird keine Ausnahme ausgelöst. |
Ändern Sie folgenden Programmcode, um einen Baustein zu exportieren, bei dem das Attribut 'Access' auf den Wert 'Published' gesetzt ist sowie die ExportOptions.None und die SWImportOptions.None lauten:
|
block1.SetAttribute("Access", UnitAccessType.Published); block1.Export(new FileInfo(„somepath"), ExportOptions.None); block1.Delete(); plcUnit2.BlockGroup.Blocks.Import(new FileInfo("somepath"), ImportOptions.None, SWImportOptions.None); |
|
Hinweis Im obigen Programmcode ist der Importvorgang erfolgreich und es wird eine wiederherstellbare Ausnahme ausgelöst. |
Ändern Sie folgenden Programmcode, um einen Baustein zu exportieren, bei dem das Attribut 'Access' auf den Wert 'Published' gesetzt ist sowie die ExportOptions.None und die Importoptionen SWImportOptions.IgnoreUnitAttributes lauten:
|
block1.SetAttribute("Access", UnitAccessType.Published); block1.Export(new FileInfo(„somepath"), ExportOptions.None); block1.Delete(); plcUnit2.BlockGroup.Blocks.Import(new FileInfo("somepath"), ImportOptions.None, SWImportOptions.IgnoreUnitAttributes); |
|
Hinweis Im allen obigen Programmcode-Abschnitten wird keine Ausnahme ausgelöst und der Importvorgang ist erfolgreich. |
Objekt wird aus Umgebung außerhalb einer Unit exportiert und in eine Unit importiert
Die exportierte XML-Datei enthält das Openness-Attribut 'Access' nicht; beim Import erhält das Attribut den Standardwert 'Unpublished'.
Objekt wird aus einer Umgebung außerhalb einer Unit exportiert und in eine Umgebung außerhalb einer Unit importiert
Die exportierte XML-Datei enthält das Openness-Attribut 'Access' nicht; beim Import der Datei geschieht nichts.