Querverweise für STEP 7 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
Querverweise für STEP 7 abrufen

Voraussetzung

Einleitung

Sie können mit TIA Portal Openness Querverweisinformationen zu anwendbaren STEP 7-Objekten bereitstellen. Die Openness API gibt das CrossReferenceResult mit den Textwerten der Benutzeroberfläche 'Querverweise' und das tatsächliche IEngineeringObject der anwendbaren STEP 7-Objekte zurück.

'Querverweise' versucht, das STEP 7-Objekt selbst bereitzustellen, für das Sie, unterstützt durch die jeweiligen TIA Portal Openness-Objekte, zusätzliche Aktionen ausführen können.

Hinweis

Derzeit wird der Typ IEngineeringObject von Mitgliedern des STEP 7-Objekts nicht unterstützt (Mitglieder des STEP 7-Objekts – DB-Mitglieder, FB-Mitglieder, FC-Mitglieder, Variablenmitglieder, UDT-Mitglieder); das CrossReferenceResult enthält jedoch sämtliche bereits verfügbaren Textinformationen.

Eigenschaften

Die folgende Tabelle enthält eine Liste mit von STEP 7- und WinCC Unified-Objekten in TIA Portal Openness unterstützten Eigenschaften:

Benutzerdefinierter Typ

Name der Eigenschaft

Datentyp

Lese-/Schreibzugriff

SourceObject

Name

String

Lesen

Address

String

Lesen

TypeName

String

Lesen

Device

String

Lesen

Path

String

Lesen

UnderlyingObject

Object

Lesen

ReferenceObject

Name

String

Lesen

Address

String

Lesen

TypeName

String

Lesen

Device

String

Lesen

Path

String

Lesen

UnderlyingObject

Object

Lesen

Location

Name

String

Lesen

ReferenceLocation 

String

Lesen

ReferenceType

Enum

Lesen

Access

Enum

Lesen

ReferencedAs

Object

Lesen

ReferncedAsName

String

Lesen

Address

String

Lesen

TypeName

String

Lesen

Die folgende Tabelle enthält eine Liste mit von STEP 7- und WinCC Unified-Objekten in TIA Portal Openness unterstützten Navigatoren:

Benutzerdefinierter Typ

Navigator 

Datentyp

CrossReferenceResult

Sources

SourceObjectComposition

SourceObject

References

ReferenceObjectComposition

ReferenceObject

Locations

LocationComposition

Die folgende Tabelle enthält eine Liste mit von STEP 7- und WinCC Unified-Objekten in TIA Portal Openness unterstützten Methoden und Enumerationen:

Name der Funktion mit Signatur

Enum

public CrossReferenceResult GetCrossReferences(CrossReferenceFilter filter)

CrossReferenceFilter

ReferenceType

Access

Die folgende Tabelle enthält eine Liste mit von STEP 7- und WinCC Unified-Objekten in TIA Portal Openness unterstützten Filter-Enumerationen:

Enum

Werte

AllObjects

Alle Objekte anzeigen

ObjectsWithReferences

Objekt mit Verweisen anzeigen

ObjectsWithoutReferences

Objekt ohne Verweise anzeigen

UnusedObjects

Nicht verwendete Objekte anzeigen

Programmcode

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

Public void GetCrossReferences()

{

CrossReferenceService crossReferenceService = MainBlock.GetService<CrossReferenceService >();   CrossReferenceResult rootResultObject = xRefService.GetCrossReferences(CrossReferenceFilter.AllObjects);

SourceObjectComposition rootResultSourceObjects = rootResultObject.Sources; //The API returns a single source object but the type is a composition keeping LTS in mind.

PrintSourceObjects(rootResultSourceObjects);

}

Private void PrintSourceObjects(SourceObjectComposition sourceObjects)

{

foreach(SourceObject source in sourceObjects)

{

// In this approach, cross reference tries to provide the actual client openness object via the "UnderlyingObject"attribute. 

// However, due to the fact that cross reference result can have an object of any type such as OB, FB, DB, Tag etc returned from the CrossReferenceService

// and a limitation in openness that the type cannot be pre-mapped, the user must cast the object before accessing its attributes.

// As a result, the openness user must convert sourceObject.UnderlyingObject to required EOM type (such as OB, DB, FB, Tag etc)

if (source.UnderlyingObject is DataBlock)

{

var db = source.UnderlyingObject as DataBlock;//Perform actions on db.

}

else if(source.UnderlyingObject is CodeBlock)

{

var cb = source.UnderlyingObject as CodeBlock;

//Perform actions on cb.

}

// Every new type for which support is added, the openness user must add the casting logic as shown in the above if-else conditional statement.

// Currently, the EOM support is NOT available for Member objects such as Datablock member, Tag member etc.

// In such cases, the "source.UnderlyingObject" will be null.

Console.WriteLine(source.Name);

//No other attributes are available from the IEngineeringObject. All the remaining values must be given from cross reference separately via SourceObject EOM.     

Console.WriteLine(source.Address);

Console.WriteLine(source.TypeName);

Console.WriteLine(source.Device);

Console.WriteLine(source.Path);

//Get the source object references     

ReferenceObjectComposition referenceObjects = source.References;     

PrintReferences(referenceObjects);

//Get the source object's children     

SourceObjectComposition sourceObjectChildren = source.Children;     

PrintSourceObjects(sourceObjectChildren); 

}

}

private void PrintReferences(ReferenceObjectComposition referenceObjects)

{

foreach (ReferenceObject referenceObject in referenceObjects)

{

// Needs similar casting for each type as seen in source object example snippet     

if (referenceObject.UnderlyingObject is DataBlock)     

{        

var db = referenceObject.UnderlyingObject as DataBlock; 

//Perform actions on db.

else if(referenceObject.UnderlyingObject is CodeBlock)

{

var cb = referenceObject.UnderlyingObject as CodeBlock;

//Perform actions on cb.

}

//No other attributes are available from the IEngineeringObject. All the remaining values must be given from cross reference separately via ReferenceObject EOM.

Console.WriteLine(referenceObject.Name);      

Console.WriteLine(referenceObject.Address);

Console.WriteLine(referenceObject.TypeName);

Console.WriteLine(referenceObject.Device);

Console.WriteLine(referenceObject.Path);

LocationComposition locations = referenceObject.Locations;

//Looping through ReferenceLocations   ​  

foreach (Location location in locations)     

​{

Console.WriteLine(location.Name);

Console.WriteLine(location.ReferenceLocation);

Console.WriteLine(location.ReferenceType);

Console.WriteLine(location.Access);

if(location.ReferencedAs is Tag)

var referencedAsObject = location.ReferencedAs as Tag;

}

// Needs similar casting for each type as seen in source object example snippet          Console.WriteLine(location.ReferncedAsName);

Console.WriteLine(location.Address);

Console.WriteLine(location.TypeName);      ​

}  

}

}