Export/Import strukturierter Typen von SCL-Bausteinen - 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
Export/Import strukturierter Typen von SCL-Bausteinen

Strukturierte SCL-Typen mit XML-Tags für den Export

In die strukturierten SCL-Typen können Sie Leerzeichen, neue Zeilen und Kommentare zu den SCL-Anweisungen einfügen. Die strukturierten SCL-Anweisungen mit ihren entsprechenden exportierten XML-Tags und Attributen sind unten angegeben.

Globaler Zugriff

In SCL-Anweisungen stehen Variablen und Konstanten für globalen Zugriff in Anführungszeichen. Die Kommentare zwischen den Variablen und Adressteilen werden durch das LineComment XML-Tag dargestellt.

SCL-Baustein

XML-Tag

"Datenbaustein_1".(*Kommentare 1*)Statisch_1(*Kommentare 2*).Statisch_2

<Access Scope="GlobalVariable">

    <Symbol>

        <Component Name="Data_block_1" />

        <Token Text="." />

        <LineComment Inserted="True">

            <Text>comment 1</Text>

         </LineComment>

         <Component Name="Static_1" />

          <LineComment Inserted="True">

              <Text>comment 2</Text>

          </LineComment>

          <Token Text="." />

          <Component Name="Static_2" />

    </Symbol>

</Access>

"Data_block_1".Static_1 := 10

Format von XML nach Export mit Einstellung ExportOptions.None

<Access Scope="GlobalVariable">

    <Symbol>

        <Component Name="Data_block_1" />

         <Token Text="." />

         <Component Name="Static_1" />

    </Symbol>

</Access>

Format von XML nach Export mit Einstellung ExportOptions.ReadOnly

<Access Scope="GlobalVariable">

    <Symbol>

        <Component Name="Data_block_1" />

         <Token Text="." />

         <Component Name="Static_1" />

         <Address Area="DB" Type="Word" BlockNumber="1" BitOffset="0" Informative="true" />

    </Symbol>

</Access>

Verwendung von Anführungszeichen und #

Die in der ersten Ebene verwendeten Anführungszeichen beschreiben die Art der Variable und dienen als Escape-Sequenzen für Sonderzeichen in SCL-Anweisungen. Wenn Anführungszeichen in der ersten Ebene verwendet werden, definieren sie die Variable als globale Variable. Wenn die Anführungszeichen nach # verwendet werden, stellen sie die Escape-Sequenz von Sonderzeichen wie # und von Leerzeichen dar.

  • Zum Darstellen der unterschiedlichen Verwendung dient in der XML-Datei das Tag BooleanAttributes mit dem Attribut Name. Der Name enthält Werte wie HasQuotes und HasHash.

  • Um im Scope-Attribut die Struktur zu definieren, wird # festgelegt.

  • Diese Werte gelten nur für SCL.

  • Die Standardwerte für diese Tags sind anfänglich FALSE, aber die Werte werden auch mit der Einstellung ExportOptions.WithDefaults nie exportiert.

SCL-Baustein

XML-Tag

"a".#b."c".#"d"

<Access Scope="GlobalVariable">

    <Symbol>

       <Component Name="a" />

       <Token Text="." />

       <Component Name="b">

       <BooleanAttribute Name=”HasHash”>TRUE</BooleanAttribute>

       </Component>

       <Token Text="." />

       <Component Name="c">

       <BooleanAttribute Name=”HasQuotes”>TRUE</BooleanAttribute>

       </Component>

       <Token Text="." />

       <Component Name="d">

       <BooleanAttribute Name=”HasQuotes”>TRUE</BooleanAttribute>

       <BooleanAttribute Name=”HasHash”>TRUE</BooleanAttribute>

       </Component>

    </Symbol>

<Access />

Array

SCL erlaubt das Einfügen von Kommentaren in die Arrayindizes um "[" und "]". Zum Kennzeichnen des Vorhandenseins eines Arrays dient in der XML-Datei das Attribut AccessModifier im Tag Component.

  • Wenn Accessmodifier den Wert Array enthält, ist ein untergeordnetes Tag Access obligatorisch, um die Indexvariable des Arrays anzuzeigen.

  • Der Standardwert für AccessModifier ist None.

SCL-Baustein

XML-Tag

#a.b[#i+#j,#k+#l].c

<Access Scope="LocalVariable">

    <Symbol>

      <Component Name="a" />

      <Token Text="." />

      <Component Name="b" AccessModifier="Array" />

        <Token Text="[" />

        <Access Scope=LocalVariable>

          <Symbol>

            <Component Name="i" />

          </Symbol>

        </Access>

       <Token Text="+" />

       <Access Scope=LocalVariable>

         <Symbol>

           <Component Name="j" />
</Symbol>

       </Access>

       <Token Text="," />

       <Access Scope=LocalVariable>

       <Symbol>

            <Component Name="k" />

          </Symbol>

        </Access>
      <Token Text="+" />

      <Access Scope=LocalVariable>

       <Symbol>

            <Component Name="l" />

          </Symbol>

        </Access>
<Token Text="]" />

      </Component>

      <Token Text="." />

      <Component Name="c" />

    </Symbol>

</Access>

Absoluter Zugriff

SCL ermöglicht verschiedene Zugriffsarten wie Absolut, Absolut-Offset, Gemischt (Datenbank und Membervariable), Slice, Peripher und Direkt. Der absolute Zugriff wird in XML durch das Tag Address dargestellt.

  • Das Zeichen % in der DB wird in XML nicht geschrieben. Es wird beim Import automatisch erzeugt.

  • Zwischen den Teilen der Adresse sind Leerzeichen zulässig.

SCL-Baustein

XML-Tag

%DB20 . DBW10

<Access Scope="Address">

    <Symbol>

      <Address Area="DB" BlockNumber="20" />

      <Blank />

      <Token Text="." />

      <Blank />

     <Address Area="DB" BitOffset="80" Type="Word"/>

    </Symbol>

</Access>

%DB20.DBX10.3 := true;

Folgende XML gilt für alle Sprachen außer SCL.

<Access Scope="Address">

<Address Area="DB" BlockNumber="20" BitOffset="83" Type="Bool" />

</Access>

Folgende XML gilt für SCL.

<Access Scope="Address">

    <Symbol>

     <Address Area="DB" BlockNumber="20" />

     <Token Text="." />

     <Address Area="DB" BitOffset="83" Type="Bool"/>

    </Symbol>

</Access>

Zugriffsart "Absolut-Offset"

In AWL stellt das Tag AbsoluteOffset die Zugriffsart "Absolut-Offset" dar. In SCL wird das Tag Address für den absoluten Zugriff verwendet.

SCL-Baustein

XML-Tag

#Input_DB_ANY.%DBX2.3 := TRUE;

<Access Scope="LocalVariable">

    <Symbol>

     <Component Name="Input_DB_ANY" />

     <Token Name="." />

     <Address BitOffset="19" Type="Bool" />

    </Symbol>

</Access>

Zugriffsart "Slice"

In SCL wird das Attribut SliceAccessModifier nicht unterstützt, und die Zugriffsart "Slice" wird durch das Tag Token dargestellt.

SCL-Baustein

XML-Tag

"tag_1"(*1*).(*2*)member(*3*).(*4*)%x1

<Access Scope="GlobalVariable">

    <Symbol>

      <Component Name="tag_1" />

      <LineComment Inserted="True">

          <Text>1</Text>

      </LineComment>

      <Token Text="." />

      <LineComment Inserted="True">

          <Text>2</Text>

      </LineComment>

      <Component Name="member"/>

      <LineComment Inserted="True">

          <Text>3</Text>

      </LineComment>

      <Token Text="." />

      <LineComment Inserted="True">

          <Text>4</Text>

      </LineComment>

      <Token Text="%x1" />

    </Symbol>

</Access>

Peripherer Zugriff

Der periphere Zugriff wird durch das Tag Token dargestellt.

SCL-Baustein

XML-Tag

"tag_1"(*1*).(*2*)member:P

<Access Scope="GlobalVariable">

    <Symbol>

       <Component Name="tag_1" />

       <LineComment Inserted="True">

           <Text>1</Text>

       </LineComment>

       <Token Text="." />

       <LineComment Inserted="True">

           <Text>2</Text>

       </LineComment>

       <Component Name="member"/>

       <Token Text=":P" />

    </Symbol>

</Access>

Zugriffsart "Direkt"

Die Anweisungen TypeOf und TypeOfDB werden entweder mit systemdefiniertem oder benutzerdefiertem Typ ausgeführt. Angegeben sind die Typen im Tag Access mit dem Attribut Scope und den Werten SystemType und UserType.

SCL-Baustein

XML-Tag

Beispiel für systemdefinierten Typ

if TypeOf( #inVariant ) = TO_SpeedAxis then … end_if

<Token text="=" />

</Blank>

<Access Scope="SystemType">

    <DataType>TO_SpeedAxis</DataType>

</Access>

Beispiel für benutzerdefinierten Typ

if TypeOf( #inVariant ) = "aUserDefinedType" then … end_if

<Token text="=" />

</Blank>

<Access Scope="UserType">

    <DataType>aUserDefinedType</DataType>

</Access>