Sie verwenden Rezepturen, um gleichzeitig die Werte für einen bestimmten Satz an Variablen (Rezepturdefinition) auf der Steuerung zu verändern oder auszulesen.
Die Grundeinstellungen zu Rezepturen, wie der Speicherort und das Speicherformat, legen Sie im Objekt „Rezepturverwalter“ fest. Unterhalb dieses Objekts fügen Sie eine oder mehrere Rezepturdefinitionen ein. Eine Rezepturdefinition umfasst eine oder mehrere Rezepturen für die enthaltenen Variablen. Die Rezeptur besteht aus bestimmten Variablenwerten.
Sie können die Rezepturen in Dateien speichern oder direkt von Dateien in die Steuerung schreiben.
Rezepturen können über die Programmieroberfläche von CODESYS, über Visualisierungselemente oder über das Applikationsprogramm geladen werden.
Verwendung von Rezepturen auf entfernten Geräten
Verwendung von Rezepturen auf entfernten Geräten
Die Variablenwerte aus Rezepturen werden automatisch zu/von einer anderen Steuerung
übertragen, wenn es sich um Datenquellenvariablen handelt und ein Datenquellenaustausch
konfiguriert ist. Das Lesen/Schreiben erfolgt synchron. Also aktualisiert CODESYS alle in einer Rezeptur vorhandenen Variablen zum selben Zeitpunkt. Durch einen Aufruf
von g_RecipeManager.LastError
nach dem Lesen/Schreiben können Sie überprüfen, ob die Übertragung funktioniert hat
(g_RecipeManager.LastError = 0
).
Handhaben von Rezepturen in der CODESYS Benutzeroberfläche
Die Programmieroberfläche von CODESYS bietet Ihnen Befehle zum Erzeugen von Rezepturen sowie zum Lesen/Schreiben im Onlinebetrieb.
Siehe auch
Verwenden von Rezepturen in der Applikation
Sie können Rezepturen zur Laufzeit im Anwenderprogramm oder über Visualisierungselemente nutzen.
Im Anwenderprogramm verwenden Sie die Methoden des Funktionsbausteins RecipeManCommands
aus der Bibliothek RecipeManagement
. In der Visualisierung erfolgt die Verwendung von Rezepturen über die Eingabekonfiguration
(Internes Kommando) von Visualisierungselementen.
Die Rezepturverwaltung liest beim Initialisierungsvorgang die Werte der Variablen, die in der Rezepturdefinition festgelegt sind. Dieser Vorgang findet am Ende der Initialisierungsphase der Applikation statt. Zu diesem Zeitpunkt sind alle Initialwerte der Applikationsvariablen gesetzt. Dies wird durchgeführt, um fehlende Werte aus Rezepturdateien richtig initialisieren zu können.
Siehe auch
Erstellen einer Rezeptur
-
Selektieren Sie im Gerätebaum das Objekt „Applikation“.
-
Wählen Sie den Befehl „Projekt Objekt hinzufügen Rezepturverwalter“.
CODESYS fügt den Rezepturverwalter zum Gerätebaum hinzu.
-
Selektieren Sie im Gerätebaum das Objekt „Rezepturverwalter“.
-
Wählen Sie den Befehl „Projekt Objekt hinzufügen Rezepturdefinition“.
CODESYS fügt die Rezepturdefinition unterhalb des Rezepturverwalters hinzu.
-
Öffnen Sie den Editor der Rezepturdefinition durch einen Doppelklick auf das Objekt.
-
Führen Sie einen Doppelklick im Editor auf das leere Feld unterhalb „Variable“ aus. Geben Sie den Namen einer Variablen an, für die Sie eine Rezeptur definieren wollen. Die Eingabehilfe steht dazu bereit: Schaltfläche
.
-
Wählen Sie den Befehl „Rezepturen Rezeptur einfügen“ und geben Sie einen Namen für die neue Rezeptur an.
Im Editor erscheint eine Spalte mit dem Rezepturnamen.
-
Geben Sie in diesem Feld den Wert der Variable für diese Rezeptur ein.
-
Fügen Sie bei Bedarf weitere Variablen ein.
-
Selektieren Sie einen Variablenwert der Rezeptur und führen Sie den Befehl „Rezepturen Rezeptur speichern“ aus. Wählen Sie einen Speicherort und einen Dateinamen aus.
CODESYS speichert die Rezeptur im dem Format, das im Rezepturverwalter definiert ist.
Laden einer Rezeptur aus einer Datei
Voraussetzung: In der Applikation gibt es eine Rezepturverwaltung. In einer Rezepturdefinition
gibt es eine Rezeptur „myRec“ mit Variablenwerten. Eine Rezepturdatei myRec.txt
, die Einträge für diese Rezeptur enthält, liegt im Dateisystem vor.
Beispiel der Rezepturdatei:
PLC_PRG.bVar:=0 PLC_PRG.iVar:=2 PLC_PRG.dwVar:=35232 PLC_PRG.stVar:='first' PLC_PRG.wstVar:='123443245'
-
Öffnen Sie mit Doppelklick auf das Objekt „Rezepturdefinition“ im Gerätebaum den Tabelleneditor für die Definition der einzelnen Rezepturen.
Sie sehen eine Spalte
myRec
mit den aktuellen Werte für diese Rezeptur. -
Bearbeiten Sie die Datei
myRec.txt
in einem externen Texteditor und ersetzen die Variablenwerte durch andere, die sie in die Rezepturdefinition in CODESYS laden möchten. Speichern Sie die Datei. -
Klicken Sie in der Rezepturdefinition in die Spalte von „myRec“ und wählen im Kontextmenü den Befehl „Rezeptur laden“.
Ein Hinweis auf die mögliche Notwendigkeit, eines Online-Change beim nächsten Einloggen erscheint. Online-Change wird nötig, falls Sie durch das Laden der Rezeptur die aktuellen Werte der Rezepturvariablen verändern.
-
Schließen Sie den Hinweisdialog mit „Ja“ (Fortfahren). Wählen Sie die Datei
myRec.txt
aus dem Datei-Explorer zum Laden aus.Die Rezepturwerte in der Rezepturdefinition werden entsprechend den in der Datei gelesenen Werten aktualisiert.
Wenn Sie nur einzelne Variablen der Rezeptur mit neuen Werten überschreiben möchten, entfernen Sie vor dem Laden in der Rezepturdatei die Werte für die restlichen Variablen. Einträge ohne Wertangabe werden nicht eingelesen und somit bleiben diese Variablen auf der Steuerung und im Projekt durch die Aktualisierung unberührt.
Bei Werten vom Datentyp REAL/LREAL wird in manchen Fällen auch der Hexadezimalwert in die Rezepturdatei geschrieben. Dies ist notwendig, damit bei der Rückkonvertierung der exakt identische Wert wiederhergestellt wird. In diesem Fall ändern Sie den Dezimalwert und löschen Sie den Hexadezimalwert.
Rezepturverwaltung auf der Steuerung, Speicherverbrauch
Wenn Sie die Option „Rezepturverwaltung in der SPS“ deaktiviert haben, verbraucht der Rezepturverwalter und die Rezepturdefinitionen keinen Speicher auf der Steuerung.
Wenn Sie die Option aktiviert haben, so wird für den Rezepturverwalter und alle Rezepturdefinitionen Code erzeugt, der auf der Steuerung Speicher belegt. Die Größe des Speicherverbrauchs hängt hauptsächlich von der Anzahl der Rezepturen und deren Variablen sowie vom Datentyp der Variablen ab. Dabei ist ebenfalls von Bedeutung, ob die Felder der Rezepturdefinition mit Werten besetzt sind oder nicht. Der Speicherverbrauch von Rezepturen kann nicht berechnet werden - dieser muss bei Bedarf empirisch ermittelt werden. Die nachfolgende Tabelle soll hier nur ein Anhaltspunkt sein.
Codegröße (Byte) |
Datengröße (Byte) |
Gesamt (Byte) |
|
---|---|---|---|
Eine Rezepturdefinition mit 100 INT-Variablen |
194406 |
79400 |
267352 |
Eine Rezepturdefinition mit 200 INT-Variablen |
238318 |
121284 |
459344 |
Eine Rezepturdefinition mit 300 INT-Variablen |
282230 |
163084 |
543856 |
Eine Rezepturdefinition mit 100 BOOL-Variablen |
192742 |
69884 |
343168 |
Eine Rezepturdefinition mit 200 BOOL-Variablen |
235446 |
101568 |
436872 |
Eine Rezepturdefinition mit 300 BOOL-Variablen |
278146 |
133284 |
510072 |
Eine Rezepturdefinition mit 100 Stringvariablen |
203278 |
870084 |
1154000 |
Eine Rezepturdefinition mit 200 Stringvariablen |
255570 |
1709784 |
2973296 |
Eine Rezepturdefinition mit 300 Stringvariablen |
307886 |
2549484 |
2964112 |
Rezepturwerte von der Steuerung laden
Sie können Rezepturwerte, die auf dem Steuerungsgerät vorliegen, in die im Projekt vorliegenden Rezepturdefinitionen übernehmen, auch wenn diese Definitionen im Projekt mittlerweile erweitert wurden.
Voraussetzung: Die Option „Rezepturverwaltung in der SPS“ im Rezepturverwalter ist aktiviert.
-
Erstellen Sie im Projekt eine Rezepturdefinition
RecDef1
, die die VariablenPLC_PRG.ivar
undPLC_PRG.bvar
enthält. Fügen Sie eine Rezeptur „R1“ ein: Wert fürPLC_PRG.ivar
:33
, Wert fürPLC_PRG.bvar
:TRUE
. -
Loggen Sie auf die Steuerung ein und laden Sie die Applikation.
Die Rezepturdatei
R1.RecDef1.txtrecipe
wird im Standardverzeichnis der Steuerung ($PlcLogic$) abgelegt. -
Loggen Sie wieder aus und fügen Sie in der Rezepturdefinition im Projekt eine weitere Variable hinzu:
PLC_PRG.dwvar
. -
Editieren Sie die Rezepturdefinitionsdatei
R1.RecDef1.txtrecipe
auf dem Gerät und ändern Sie den Wert fürPLC_PRG.ivar
von33
auf34
.Fügen Sie außerdem auf dem Gerät eine weitere Rezeptur „R2“ hinzu. Dazu kopieren Sie die Datei
R1.RecDef1.txtrecipe
und benennen sie um inR2.RecDef1.txtrecipe
. Dann editieren Sie diese Datei und ändern die Rezepturwerte:PLC_PRG.ivar
:1
,PLC_PRG.bvar
:FALSE
.Nun liegen auf dem Gerät zwei Rezepturen „R1“ und „R2“ bereit. Im Projekt gibt es nur „R1“ und sie enthält außerdem andere Werte als „R1“ auf dem Gerät..
-
Loggen Sie mit Online-Change wieder auf die Steuerung ein.
-
Wählen Sie den Befehl „Rezepturen vom Gerät laden“ aus dem Kontextmenü.
Eine Meldungsbox informiert, dass das Ausführen des Befehls beim nächsten Einloggen einen Online-Change auslösen kann, und dass die Rezepturen der aktuellen Rezepturdefinition mit den Rezepturen aus dem Laufzeitsystem überschrieben werden.
-
Bestätigen Sie, dass Sie fortfahren wollen.
Eine Meldungsbox informiert, dass die vom Gerät geladene Rezeptur für
PLC_PRG.dwvar
keinen Wert aus der Steuerung liefern kann. -
Bestätigen Sie, dass Sie fortfahren wollen.
Der Wert von
PLC_PRG.ivar
in Rezeptur „R1“ in der Rezepturdefinition im Projekt ändert sich auf34
. Die Rezeptur „R2“ mit den Werten1
undFALSE
erscheint nun ebenfalls in der Rezepturdefinition.PLC_PRG.dwvar
bleibt in der Rezepturdefinition.