Refactoring/Aktualisieren von FB-Typen
Im Allgemeinen bedeutet Refactoring die Strukturverbesserung von vorhandenem Quellcode unter Beibehaltung des funktionalen Verhaltens. Für das Refactoring unterstützt PLCnext Engineer einen Mechanismus für die automatische und konsistente Änderung von Objekteigenschaften (Variablen, FB-Instanzen etc.). Konsistent bedeutet, die zu ersetzenden Eigenschaften werden Solution-weit berücksichtigt.
Für das Refactoring und die Aktualisierung von Funktionsbaustein-Instanzen und deren Typen gibt es mehrere Modi:
- Instanz-Refactoring - Refactoring einer bestimmten Instanz eines FBs. Die Prozedur wird über den Kontextmenübefehl 'Refactoring' einer FB-Instanz ausgeführt. Details zu der Vorgehensweise entnehmen Sie dem Thema "Refactoring von Variablen und FB-Typen".
- FB-Typen-Update - Aktualisierung aller FB-Instanzen desselben Typs in allen grafischen Arbeitsblättern im Projekt, ohne den FB-Typ selbst und den zugehörigen Typ der Instanzvariablen in der Variablentabelle zu ändern (kann nur für einen im grafischen Arbeitsblatt ausgewählten FB ausgeführt werden). Nützlich, wenn die Schnittstelle eines FB geändert wurde, z. B. durch Hinzufügen/Entfernen von Formalparametern oder nach einer Änderung des Typs von Formalparametern.
- FB-Typen-Refactoring - Ändern des Typs aller FB-Instanzen vom selben Typ in allen grafischen Arbeitsblättern im Projekt sowie des entsprechenden zugehörigen Typs der Instanzvariablen in der Variablentabelle (kann nur für einen im grafischen Arbeitsblatt ausgewählten FB ausgeführt werden). Nützlich, wenn z. B. Aufrufe eines Funktionsbausteins durch eine andere/neuere Version dieses Funktionsbausteins ersetzt werden soll.
Der aktuell eingestellte Refactoring-Modus wird als Untertitel im REFACTORING-Fenster angezeigt.
Besonderheiten beim Refactoring von sicherheitsbezogenen Daten
Die Auswirkungen, die das Refactoring/Aktualisieren von (sicherheitsbezogenen) FB-Typen auf die Sicherheitsanwendung hat, liegen allein in Ihrer Verantwortung als Applikationsentwickler. Sie müssen deshalb vor dem Refactoring/Aktualisieren sicherheitsbezogener FB-Typen Folgendes beachten:
WARNUNG
|
Unbeabsichtigter Betriebszustand des Geräts
|
Aktualisierung von FB-Typen desselben Typs in allen grafischen Arbeitsblättern, ohne den FB-Typ selbst zu aktualisieren
- Wählen Sie im grafischen Arbeitsblatt den FB aus.
- Klicken Sie mit der rechten Maustaste auf den FB und dann auf 'FB-Typ refaktorieren / aktualisieren'.Im Cross-Funktionen-Bereich wird das REFACTORING-Fenster im Modus 'FB-Typen-Update' geöffnet (der Modus wird als Untertitel in der Kopfzeile angezeigt). Das Fenster listet alle Aufrufe des ausgewählten FBs desselben Typs in allen grafischen Arbeitsblättern des Projekts und die entsprechenden Instanzvariablen auf. In der Spalte 'Refactoring' sind alle Kontrollkästchen für die FB-Aufrufe standardmäßig aktiviert (wie in der Abbildung oben dargestellt) und alle Kontrollkästchen für die Instanzvariablen sind nicht aktiviert.Doppelklicken auf einen Ort in der Liste öffnet den entsprechenden Editor und markiert dort das betreffende Objekt.
- Aktivieren oder deaktivieren Sie die Orte der FB-Aufrufe, die Sie aktualisieren möchten.Sie können die Symbole
und
in der Symbolleiste verwenden, um alle Orte zu markieren oder alle Markierungen aufzuheben.
-
Stellen Sie sicher, dass
- Sie die Anweisungen im Gefahrenhinweis am Beginn dieser Vorgehensweise befolgt haben, und
- Ihre Auswahl zu keinem Codefehler aufgrund von Inkonsistenzen führt.
, um das Refactoring an allen gewählten Orten durchzuführen.Alle gewählten FB-Aufrufe werden mit dem im grafischen Arbeitsblatt selektierten FB aktualisiert.
- Nach der Operation:
- Prüfen Sie das MELDUNGEN-Fenster auf Fehler, die durch die Operation aufgetreten sind.
- Validieren und prüfen Sie die Applikation sorgfältig bezüglich der aktualisierten FB-Aufrufe.
Refactoring von FB-Typen in allen grafischen Arbeitsblättern mit Aktualisierung des FB-Typs und des Typs der zugehörigen Instanzvariablen
- Wählen Sie im grafischen Arbeitsblatt den FB aus.
- Klicken Sie mit der rechten Maustaste auf den FB und dann auf 'FB-Typ refaktorieren / aktualisieren'.Im Cross-Funktionen-Bereich wird das REFACTORING-Fenster im Modus 'FB-Typen-Update' geöffnet (der Modus wird als Untertitel in der Kopfzeile angezeigt). Das Fenster listet alle Aufrufe des ausgewählten FBs desselben Typs in allen grafischen Arbeitsblättern des Projekts und die entsprechenden Instanzvariablen auf. In der Spalte 'Refactoring' sind alle Kontrollkästchen für die FB-Aufrufe standardmäßig aktiviert (wie in der Abbildung oben dargestellt) und alle Kontrollkästchen für die Instanzvariablen sind nicht aktiviert.Doppelklicken auf einen Ort in der Liste öffnet den entsprechenden Editor und markiert dort das betreffende Objekt.
- Wählen Sie in der Spalte 'Typ' unter der Gruppe 'Neue Werte' den neuen FB-Typ aus der Auswahlliste aus, der den ursprünglichen FB-Typ ersetzen soll.Sobald Sie einen anderen FB-Typ auswählen, wechselt das REFACTORING-Fenster in den Modus 'FB-Typen-Refactoring' (angezeigt mit dem Untertitel 'FB-Typen-Refactoring' in der Kopfzeile) und die Kontrollkästchen für alle Instanzvariablen werden zusätzlich aktiviert.
- Aktivieren oder deaktivieren Sie die Orte der FB-Aufrufe und die entsprechenden Instanzvariablen, die Sie ändern möchten.Sie können die Symbole
und
in der Symbolleiste verwenden, um alle Orte zu markieren oder alle Markierungen aufzuheben.
-
Stellen Sie sicher, dass
- Sie die Anweisungen im Gefahrenhinweis am Beginn dieser Vorgehensweise befolgt haben, und
- Ihre Auswahl zu keinem Codefehler aufgrund von Inkonsistenzen führt.
in der Symbolleiste, um das Refactoring auf die ausgewählten FB-Aufrufe und Instanzvariablen anzuwenden.Die Typen aller gewählten FB-Aufrufe und die Typen der gewählten Instanzvariablen werden mit dem in der Auswahlliste 'Typ' ausgewählten FB-Typ aktualisiert.
- Nach der Operation:
- Prüfen Sie das MELDUNGEN-Fenster auf Fehler, die durch die Operation aufgetreten sind.
- Validieren und prüfen Sie die Applikation sorgfältig bezüglich der vom Refactoring geänderten FB-Aufrufe und Instanzvariablen.