AML-Datei mit komplexer Variablenkonfiguration exportieren/importieren - 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
AML-Datei mit komplexer Variablenkonfiguration exportieren/importieren

Voraussetzung

Anwendung

Sie können mit TIA Portal eine AML-Datei, die komplexe Variablen mit benutzerdefinierten Datentypen (UDT) enthält, importieren. Im TIA Portal werden komplexe Variablen erstellt, die in der erwähnten Variablentabelle in der AML-Datei vorhanden sind, jedoch wird kein benutzerdefinierter Datentyp (UDT) erstellt. Die benötigten UDT müssen manuell erstellt werden.

Die logische Adresse einer komplexen Variablen wird aus den Subvariablen der komplexen Variablen berechnet. Aus einer Liste aller Subvariablen einer komplexen Variablen wird die Variable mit der niedrigsten möglichen Adresse ausgewählt und die Adresse dieser Variablen wird der übergeordneten komplexen Variablen zugewiesen. Hat eine Subvariable eine ungültige Adresse, wird die Adresse der übergeordneten komplexen Variablen nicht berechnet und auf leer gesetzt.

Bei einem erfolgreichen Import werden alle gültigen komplexen Variablen, die im TIA Portal angelegt wurden, mit den gültigen logischen Adressen angezeigt. Beim Export gibt es keine Änderungen und nur die Variablen werden exportiert.

AML-Datei mit einem benutzerdefinierten Datentyp (UDT)

Das folgende Beispiel bezieht sich auf eine AML-Datei, die eine komplexe Variable mit einem benutzerdefinierten Datentyp (UDT) enthält.

Kopiert den nachfolgenden Programmcode in die Zwischenablage.

<CAEXFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" FileName="singletag.aml" SchemaVersion="2.15" xsi:noNamespaceSchemaLocation="CAEX_ClassModel_V2.15.xsd">
<AdditionalInformation>

...
</AdditionalInformation>
<InstanceHierarchy Name="APC Sample Instance Hierarchy">
<InternalElement ID="debc8e5c-2cbb-4fa9-afaa-de242e706dff" Name="Project97">

<InternalElement ID="dc142279-d745-432b-8451-4b282b55b3e5" Name="S71500/ET200MP station_2">
...

<InternalElement ID="eedd64da-22f0-4b6e-babe-75e09e5cfc46" Name="Rail_0">
...
<InternalElement ID="a6e21bd8-f58c-4920-89ee-588d0eb34645" Name="PLC_2">
...
<InternalElement Name="TagTable" ID="065F26B8-E5BA-4BF3-A210-4E26E19F8A30">
<Attribute Name="AssignToDefault" AttributeDataType="xs:boolean">
<Value>true</Value>
</Attribute>
<InternalElement Name="M1" ID="4AF292AA-DF8E-4A7A-AC9F-005B4DED47A5">
<Attribute Name="DataType" AttributeDataType="xs:string">
<Value>StructDrive</Value>
</Attribute>
<ExternalInterface Name="On" RefBaseClassPath="AutomationProjectConfigurationInterfaceClassLib/Tag" ID="5FCB82C1-019C-4833-A1DF-16721A5239FC">
<Attribute Name="DataType" AttributeDataType="xs:string">

<Value>BOOL</Value>
</Attribute>
<Attribute Name="LogicalAddress" AttributeDataType="xs:string">
<Value>I0.0</Value>
</Attribute>

<Attribute Name="Comment" AttributeDataType="xs:string">
<Value>Motor drive on</Value>
<Attribute Name="aml-lang=de-DE" AttributeDataType="xs:string">
<Value>Motor drive on</Value>
</Attribute>
</Attribute>
</ExternalInterface>
<ExternalInterface Name="Overheat" RefBaseClassPath="AutomationProjectConfigurationInterfaceClassLib/Tag" ID="331659A8-147B-407A-9629-5D85AE04890D">
<Attribute Name="DataType" AttributeDataType="xs:string">
<Value>BOOL</Value>
</Attribute>
<Attribute Name="IoType" AttributeDataType="xs:string">
<Value>Input</Value>
</Attribute>
<Attribute Name="LogicalAddress" AttributeDataType="xs:string">
<Value>E0.1</Value>

</Attribute>
<Attribute Name="Comment" AttributeDataType="xs:string">
<Value>Motor drive overheat</Value>
<Attribute Name="aml-lang=de-DE" AttributeDataType="xs:string">
<Value>Motor drive overheat</Value>
</Attribute>
</Attribute>

</ExternalInterface>
<SupportedRoleClass RefRoleClassPath="AutomationProjectConfigurationRoleClassLib/ComplexTag" />
</InternalElement>
<SupportedRoleClass RefRoleClassPath="AutomationProjectConfigurationRoleClassLib/TagTable" />
</InternalElement>
<InternalElement ID="5983e7fd-ca6a-4573-8579-9ff323cfa09a" Name="PROFINET interface_1">
...
<InternalElement ID="2240a28c-ba88-4af4-ae6a-03d0ba3ce108" Name="E1">
...>
</InternalElement>
<InternalElement ID="df1d95d3-89ee-4a45-bca8-73e342497bee" Name="Port_1">
...
<SupportedRoleClass RefRoleClassPath="AutomationProjectConfigurationRoleClassLib/CommunicationPort" />
</InternalElement>
<InternalElement ID="25f8dc3c-621d-4659-bb04-2d923df832c4" Name="Port_2">
...
</InternalElemen<SupportedRoleClass RefRoleClassPath="AutomationProjectConfigurationRoleClassLib/CommunicationInterface" />
</InternalElement>
<SupportedRoleClass RefRoleClassPath="AutomationProjectConfigurationRoleClassLib/DeviceItem" />
</InternalElement>
<SupportedRoleClass RefRoleClassPath="AutomationProjectConfigurationRoleClassLib/DeviceItem" />
</InternalElement>

<SupportedRoleClass RefRoleClassPath="AutomationProjectConfigurationRoleClassLib/Device" /></InternalElement>
<SupportedRoleClass RefRoleClassPath="AutomationProjectConfigurationRoleClassLib/AutomationProject" /></InternalElement>
</InstanceHierarchy>
</CAEXFile>

Import komplexer Variablen im TIA Portal ohne Erstellung von UDT

Obige Datei enthält eine komplexe Variable mit zwei Subvariablen 'On' und 'Overheat' Nach dem Importieren in TIA Portal wird eine komplexe Variable wie folgt erstellt:

Import komplexer Variablen im TIA Portal mit Erstellung von UDT

Bei fehlendem oder ungültigem Datentyp wird für 'Data type' eine Fehlermeldung angezeigt. Im oben dargestellten Fall fehlt ein benutzerdefinierter Datentyp, nämlich StructDrive.
Sobald der benutzerdefinierte Datentyp (StructDrive) angelegt ist, würden die komplexen Variablen wie folgt aussehen:

Bei Problemen mit einer der Subvariablen, zum Beispiel wenn deren logische Adresse fehlt, oder bei anderen Problemen in Bezug auf Richtung, IO-Typ usw., ist es nicht möglich, die niedrigste Adresse einer komplexen Variablen zu bestimmen. In diesem Fall werden komplexe Variablen ohne logische Adresse angelegt und dem Benutzer wird eine entsprechende Warnmeldung nach folgendem Beispiel angezeigt: