Refactoring
Im Allgemeinen ist Refactoring eine Methode, bereits geschriebene Software im Design zu verbessern, ohne ihr Verhalten zu ändern.
Refactoring in CODESYS bietet Funktionalitäten zum Umbenennen von Objekt- und Variablennamen und zum Aktualisieren von Bausteinanschlüssen. Sie können alle Verwendungsstellen umbenannter Objekte und Variablen anzeigen lassen und diese dann gesamt oder einzeln ausgewählt umbenennen. Zusätzlich können Sie in konfigurieren, ob und an welchen Stellen CODESYS Sie automatisch zum Refactoring auffordert.
Globale Variablen umbenennen
Voraussetzung: Sie haben ein Projekt geöffnet, das mindestens einen Funktionsbaustein FB und eine globale Variablenliste beinhaltet. Die globale Variablenliste GVL ist in ihrem Editor geöffnet und enthält die Deklaration einer Variablen, beispielsweise iGlobal
. FB verwendet iGlobal
.
Selektieren Sie den Namen einer globalen Variablen, zum Beispiel
iGlobal
.Wählen Sie im Kontextmenü den Befehl
.Geben Sie im Dialog Umbennen in das Eingabefeld Neuer Name einen neuen Namen ein, zum Beispiel
iGlobalOK
und klicken Sie auf OK.Der Dialog Refactoring öffnet sich. Im linken Fenster, im Gerätebaum, sind die Objekte GVL und FB farblich rot gekennzeichnet und gelb hinterlegt. Im rechten Fenster ist FB in seinem Editor geöffnet und
iGlobal
ist bereits iniGlobalOK
umbenannt.Klicken Sie auf OK.
In Ihrem Projekt ist keine globale Variable
iGlobal
. Überall ist nuniGlobalOK
.
Selektieren Sie den Namen einer globalen Variablen, zum Beispiel
iGlobal
.Wählen Sie im Kontextmenü den Befehl
.Geben Sie im Dialog Umbennen in das Eingabefeld Neuer Name einen neuen Namen ein, zum Beispiel
iGlobalTest
und klicken Sie auf OK.Der Dialog Refactoring öffnet sich. Im linken Fenster, im Gerätebaum, sind die Objekte GVL und FB farblich rot gekennzeichnet und gelb hinterlegt. Im rechten Fenster ist der Funktionsbaustein FB in seinem Editor geöffnet. Statt
iGlobal
istiGlobalTest
aufgelistet.Positionieren Sie den Cursor in das rechte Fenster und öffnen Sie das Kontextmenü.
Wählen Sie den Befehl Dieses Objekt verwerfen und klicken Sie auf OK.
In Ihrem Projekt ist die globale Variable
iGlobal
in FB vorhanden. In den Objekten, in denen die Variable sonst vorkam, ist nun die VariableiGlobalTest
angegeben.Im Meldungsfenster erscheint die Fehlermeldung, dass der Bezeichner
iGlobal
nicht definiert ist.
Eingangsvariablen hinzufügen und entfernen
Sie können im Deklarationsteil von Bausteinen über Refactoringbefehle Eingangs- oder Ausgangsvariablen hinzufügen oder entfernen. An den Verwendungsstellen/Aufrufstellen der Bausteine aktualisiert CODESYS entsprechend, wobei Sie dies pro Verwendungsstelle akzeptieren oder verwerfen können. Sie erhalten dazu den Dialog Refactoring.
Voraussetzung: Sie haben die POU FCT
des Typs Funktion im Editor geöffnet. Die Funktion besitzt bereits Eingangsvariablen input1
und input2
und inputx
. Sie wird in den Programmen PLC_PRG
und POU
aufgerufen.
Setzen Sie den Fokus in den Deklarationsteil der Funktion FCT.
Wählen Sie Befehl
.Der Standarddialog zum Deklarieren einer Variablen erscheint.
Deklarieren Sie Variable
input_3
mit GültigkeitsbereichVAR_INPUT
und DatentypINT
. Schließen Sie den Dialog mit OK.Der Dialog Refactoring erscheint (siehe Abbildung unten). Die betroffenen Stellen sind gelb markiert. (1)+(2)
Wählen Sie rechts oben die Option Eingänge mit Platzhaltertext hinzufügen. (3)
Setzen Sie im linken Fenster den Cursor auf einen der gelb hinterlegten Objekte, beispielsweise
PLC_PRG
. Wählen Sie im Kontextmenü den Befehl Das gesamte Projekt annehmen, um die neue Variable an den Verwendungsstellen vonFCT
im gesamten Projekt hinzuzufügen.Im rechten Fenster sehen Sie die Änderung im Implementierungsteil von
PLC_PRG
: Platzhalter_REFACTOR_
erscheint an der Stelle, an der die neue Variable eingefügt wurde.Schließen Sie den Dialog Refactoring mit OK.
Wählen Sie Befehl
. Suchen Sie im Projekt nach „_REFACTOR_“, um die betroffenen Stellen zu überprüfen und entsprechend zu bearbeiten.Hinweis: Alternativ können Sie die neue Variable direkt mit einem gewünschten Initialisierungswert einfügen, ohne zuerst mit einem Platzhalter zu arbeiten. In diesem Fall wählen Sie bei Schritt 4 die Option „:.mit folgendem Wert hinzufügen“ und tragen den Wert rechts davon ein.

Beispiel für neue Variable mit Platzhaltertext in einem CFC-Baustein

Beachten Sie auch die Möglichkeit, Variablen über Refactoring zu entfernen.
Variablen in der Deklaration neu anordnen
Im Deklarationsteil von Bausteinen können Sie über Refactoring die Reihenfolge von Deklarationen verändern. Dies ist möglich bei Deklarationen der Gültigkeitsbereiche VAR_INPUT
, VAR_OUTPUT
oder VAR_IN_OUT
.
Voraussetzung: Sie haben den Deklarationsteil einer POU geöffnet, der beispielsweise folgende Deklarationen enthält:
VAR_INPUT invar2 : INT; invar1 : INT; in : DUT; bvar : BOOL; invar3 : INT; END_VAR
Setzen Sie den Cursor in diesen Deklarationsblock und drücken die rechte Maustaste, um das Kontextmenü zu öffnen.
Wählen Sie den Befehl
.Der Dialog Neu ordnen erscheint mit einer Liste der
VAR_INPUT
-Variablen.Selektieren Sie beispielsweise den Eintrag invar1 : INT; und ziehen ihn mit der Maus vor den Eintrag invar2..
Die Deklaration von
invar1
steht jetzt an oberster Stelle.Schließen Sie den Dialog mit OK.
Der Dialog Refactoring erscheint. Die betroffenen Stellen sind gelb markiert. (Siehe Abbildung oben)
Bestätigen Sie mit OK, um die neue Reihenfolge in den Baustein zu übernehmen.
Variablendeklaration ändern und Refactoring automatisch anwenden
Sie werden in der Deklaration beim Umbenennen von Variablen (mit Hilfe der Autodeklaration) von Refactoring unterstützt.
Voraussetzung: Funktionsbaustein fb_A
.
Wählen Sie den Befehl
.Dialog Optionen öffnet sich.
Wählen Sie die Kategorie Refactoring.
Aktivieren Sie unter Autodeklaration die Optionen Beim Umbenennen von Variablen und Für das Hinzufügen oder Entfernen von Variablen, oder für das Ändern des Namensraums.
Doppelklicken Sie den Funktionsbaustein
fb_A
.Selektieren Sie in der Deklaration von
fb_A
eine Variable beispielsweiseiA
. Alternativ können Sie den Cursor vor oder in die Variable setzen.Geben Sie Umschalt + F2).
ein (Der Dialog Variable deklarieren öffnet sich. Der Dialog enthält die Einstellungen von
iA
.Ändern Sie den Namen von
iA
nachiCounter_A
.Die Option Änderungen mit Hilfe von Refactoring erscheint und ist aktiviert.
Klicken Sie OK.
Der Dialog Refactoring Umbenennen von iA in iCounterA öffnet sich. Dort sind alle von der Variablenumbenennung betroffenen Stellen markiert.
Beenden Sie den Dialog mit OK.
Die Änderungen werden übernommen.