TwinCAT-2-SPS-Projekt öffnen

TwinCAT XAE ist gestartet. Ein TwinCAT-Projekt ist geöffnet. Ihnen sollten die unterhalb der folgenden Anleitung beschriebenen Einschränkungen bewusst sein.
1. Markieren Sie das SPS-Objekt in der Ansicht Projektmappen-Explorer und wählen Sie im Menü Projekt oder im Kontextmenü den Befehl Vorhandenes Element hinzufügen.
2. Wählen Sie im Dialog Öffnen das gewünschte Plc 2.x-Projekt oder Bibliothek aus dem Dateisystem. Zur Suche können Sie den Dateifilter in der rechten unteren Ecke des Dialogs setzen.
Danach startet automatisch der TwinCAT 2.x-Konverter.
3. Der TwinCAT 2.x-Konverter prüft, ob das Projekt fehlerfrei kompilierbar ist. Wenn ja, bearbeitet er das Projekt automatisch.
Wenn das Projekt Visualisierungsobjekte mit Platzhaltervariablen enthält, die der Konverter nicht auflösen kann, erfolgt ein direktes Einbinden der jeweiligen Visualisierungen als Gruppierung an Stelle der Visualisierungsreferenzen.
4. Bibliothekskonvertierung: Wenn im zu öffnenden Projekt eine Bibliothek referenziert ist, für die noch keine Konvertierungsregel definiert ist, erscheint der Dialog Konvertierung einer Bibliotheksreferenz. Legen Sie hier fest, ob und wie der Konverter die bisherige Bibliotheksreferenz durch eine aktuelle ersetzen soll. Falls Sie dabei eine Bibliothek auswählen, für die Projektinformationen fehlen, erscheint der Dialog Projektinformationen, den Sie ausfüllen müssen.
Der Konverter lädt das angepasste Projekt.

Einschränkungen beim Weiterverwenden eines TwinCAT-2.x-Projekts in TwinCAT 3.1

TwinCAT-2-SPS-Projekt öffnen 1:

Automatische Syntaxanpassungen nur bei vorheriger Übersetzbarkeit

Zwischen TwinCAT 2 (TC2) und TwinCAT 3 (TC3) unterscheidet sich die Syntax an einigen Stellen (z. B. bei der Initialisierung von Arrays). Bitte beachten Sie, dass der Konverter die Syntax an diesen Codestellen nur dann anpasst, wenn das zu konvertierende TC2-Projekt „TC2-seitig“ kompiliert werden kann.

Im Detail bedeutet das:

Bei dem Konvertierungsprozess übersetzt der Konverter, der in TC3 enthalten ist, das ausgewählte TC2-Projekt zunächst mit einem TC2-Compiler. Nur wenn diese „TC2-seitige“ Übersetzung erfolgreich ist, werden bei der Erstellung des TC3-SPS-Projekts Syntaxanpassungen des TC2-Codes vorgenommen. Voraussetzung für eine erfolgreiche „TC2-seitige“ Übersetzung ist, dass dem Konverter alle benötigten TC2-Bibliotheken zur Verfügung gestellt werden. Dies kann z. B. erreicht werden, indem die Bibliotheken, die im TC2-Projekt referenziert werden, in den Ordner C:\TwinCAT\3.1\Components\Plc\Converter\Lib eingefügt werden, oder indem dem Konverter die Speicherorte der TC2-Bibliotheken über die angezeigten Konvertierungsdialoge mitgeteilt werden.

Kompilierung

Das Projekt muss ohne Übersetzungsfehler in TwinCAT 2.x PLC Control kompilierbar sein. TwinCAT gibt bei der Übersetzung dennoch Warnungen aus. Diese werden durch implizite Konvertierungen hervorgerufen, die zu Informationsverlust führen können (beispielsweise durch Vorzeichenwechsel).

TwinCAT 3.1 prüft case-Anweisungen gegen die Switch-Variable: CASE USINT OF INT wird in TwinCAT 2.x nicht überprüft, es gibt jedoch eine Fehlermeldung beim Import in TwinCAT 3.1.

Bibliotheken

Alle Variablen und Konstanten, die in einer Bibliothek verwendet werden, müssen auch in dieser Bibliothek deklariert sein. Die Bibliothek muss in TwinCAT 2.x fehlerfrei übersetzbar sein.

Syntaktische und semantische Einschränkungen

  • FUNCTIONBLOCK ist nicht länger ein gültiges Schlüsselwort anstelle von FUNCTION_BLOCK
  • Nach TYPE (Deklaration einer Struktur) muss ein “:” folgen.
  • ARRAY-Initialisierung muss mit runden Klammern versehen sein.
  • Eine lokale Deklaration einer Enumeration ist nicht länger möglich, außer innerhalb von TYPE; bei einem TwinCAT 2.x-Import wird eine lokale Enumerationsdeklaration automatisch in eine explizite Type-Definition konvertiert.
  • INI wird nicht mehr unterstützt (Sie müssen dies im Code durch die Init-Methode ersetzen).
  • In Funktionsaufrufen ist es nicht länger möglich, explizite Parameterzuweisungen mit impliziten zu mischen. Deshalb kann die Reihenfolge der Parametereingangs-Zuweisungen verändert werden:
    fun(formal1 := actual1, actual2); // → Fehlermeldung
    fun(formal2 := actual2, formal1 := actual1); // gleiche Semantik wie folgende Zeile:
    fun(formal1 := actual1, formal2 := actual2);
  • TwinCAT 2.x-Pragmas werden nicht konvertiert. Sie erzeugen in TwinCAT 3.1 eine Warnung.
  • Der TRUNC-Operator konvertiert nun in den Datentyp DINT, anstelle von INT; bei einem TwinCAT 2.x-Import fügt TwinCAT 3.1 automatisch eine entsprechende Typkonvertierung hinzu.

Speicher

  • TwinCAT 3.1 besitzt, anders als TwinCAT 2, ein 8-Byte-Alignment. Für weitere Details und Beispiele siehe Referenz Programmierung > Alignment.
  • Instanzen vom Datentyp STRING werden in TwinCAT 2 vorinitialisiert, indem der komplette Speicherbereich genullt wird. In TwinCAT 3.1 wird dagegen nur das erste Byte einer solchen Instanz genullt. Aufgrund der Nullterminierung ist die Instanz ebenso leer.

Visualisierung

Platzhalter und deren Ersetzung

Platzhalter

VAR_INPUT

Verwendung

Ersetzung

 

MAIN.$LocalVar$.aArr[0]

localVar: MyStruct;

localVar.aArr[0]

localVar := MAIN.myStructVar

 

$Var$.aArr[0]

Var : MyStruct;

Var.aArr[0]

Var := MAIN.myStructVar

 

MAIN.myStructVar.aArr[$Index$]

Index : INT;

MAIN.myStructVar.aArr[Index]

Index := 0

Problematische Platzhalter

  • Platzhalter innerhalb eines Textes:
    Text: $axle$-Axis
    Behebung:
    localVar : STRING;
    Text: %s-Axis
    TextVariable : localVar
  • Platzhalter beschreibt nur einen Teil eines Variablennamens:
    axis$axis$spur$spur$.fActPosition
    Behebung:
    Definieren Sie für den Platzhalter axis$axis$spur$spur$ nur einen Platzhalter.
    axis_spur : MyFunctionBlock;
    Übergeben Sie dann direkt die entsprechende Instanz des Funktionsbausteins.
    axis_spur := MAIN.axis1spur2;
  • Platzhalter wird durch einen Ausdruck ersetzt:
    $Expression$ → MAIN.var1 + MAIN.var2
    Behebung:
    Sie müssen den Ausdruck an eine Hilfsvariable übergeben und diese Hilfsvariable dann als Instanz übergeben.
  • Platzhalter beschreibt einen Programmnamen: $Program$.bToggle → MAIN.bToggle D
    Diese Form der Platzhalterersetzung kann der Konverter nicht in TwinCAT 3.1 übertragen. Sie werden sie in der Praxis aber selten verwenden.
  • Platzhalter wird durch verschiedene Typen ersetzt:
    $Var$
    → Ersetzung 1 : MAIN.n (INT)
    → Ersetzung 2 : MAIN.st (STRING)
    Behebung:
    Definieren Sie hierfür zwei verschiedene Platzhalter in der Schnittstelle.
  • Die Visualisierung liegt in einer Bibliothek. Sie ersetzen die Platzhalter erst später aus einem beliebigen Projekt, wenn Sie die Visualisierung dort verwenden.
    Behebung:
    Hier müssen Sie die TYPE_NONE-Datentypen manuell ersetzen. Es gibt aber auch die Möglichkeit, dass Sie die Bibliothek in ein Projekt einbinden und der Platzhalter richtig ersetzt wird. Wenn Sie nun dieses Projekt importieren, dann wird der Datentyp auch in der Bibliothek richtig ermittelt.

Nicht importierbare Elemente

Trend, ActiveX - Der Import ist nicht möglich, weil die Implementierung sehr unterschiedlich ist. In TwinCAT 3.1 wird eine entsprechende Warnung ausgegeben und ein entsprechender manueller Nachbau ist nötig.

Programmiersprachen

ST, AWL, FUP

Keine Einschränkungen

 

KOP

TwinCAT 3.1 importiert Funktionsbausteine mit Parallelverzweigungen so, dass der Teil vor der Verzweigung für jeden Zweig wiederholt wird. Das entspricht dem generierten Code, den TwinCAT 2.x für Parallelverzweigungen erzeugt.

TwinCAT-2-SPS-Projekt öffnen 2:

 

AS

  • Explizit vom Anwender deklarierte Schrittvariablen müssen lokal im AS-Editor deklariert werden. Sie dürfen sie nicht als VAR_INPUT, VAR_OUTPUT oder VAR_INOUT deklarieren, da TwinCAT 3.1 die Aufrufe nicht automatisch anpassen kann. Erklärung: Schritte verwenden zur Verwaltung der internen Zustände in TwinCAT 3.1 keine booleschen Variablen mehr, sondern auch Strukturen vom Typ SFCStepType.
  • Kennzeichner: Nicht mit einem Unterstrich beginnen dürfen folgende Kennzeichner:
    • Namen von IEC-Aktionen im Baum
    • Variablen, die in einer IEC-Assoziationsliste aufgerufen werden
    • Namen von ausprogrammierten Transitionen

Erklärung: In TwinCAT 3.1 erhalten die impliziten Variablen, welche TwinCAT 3.1 für Aktionen anlegt, einen Unterstrich als Präfix. Es würde ein ungültiger Kennzeichner mit doppeltem Unterstrich entstehen.

 

CFC

  • Große Bausteine: Das Layout großer Bausteine kann durch den Import an Qualität verlieren; Die Baustein-Boxen überlappen sich möglicherweise stark.
  • Makros: Makros können nicht importiert werden.

Siehe auch: