# Rezepturverwaltung Anleitung gesucht/Verständnisfrage



## bbm1995 (17 August 2021)

Hallo zusammen!
Ich möchte den Rezepturverwalter zusätzlich zu "Retain Persistent"-Variablendefinition verwenden um Zählerwerte (Betriebsstunden) und Zeitschaltpläne sicher auf dem PLC abzuspeichern, aber ich verstehe nicht genau, wie ich folgendes machen könnte oder welche Befehle ich dazu bräuchte, vorallem konnte ich über die Simulation nicht nachvollziehen ob überhaupt die Rezepte abgespeichert werden.

Ich habe im Normalfall zwei Rezepte: R0_Recovery (Backup beim Herunterfahren) und R1_Default (Standart/voreingestellte Werte).
Beim Start sollen die Werte von der Rezeptdatei in die Variablen geschrieben werden und beim Stop sollen die Werte von den Variablen in die Rezeptdatei zurückgespeichert werden.
Mit diesem Code habe ich es versucht (hat nicht geklappt...):

```
(* Wird beim onStart Event ausgeführt *)
    RecipeManCommands.LoadAndWriteRecipe(
        RecipeDefinitionName    := 'Zaehler',
        RecipeName              := 'R0_Recovery'
        );

(* Wird beim onStop Event ausgeführt *)
    RecipeManCommands.ReadAndSaveRecipe(
        RecipeDefinitionName    := 'Zaehler',
        RecipeName              := 'R0_Recovery'
        );
```
Das Beispiel von Codesys hilft mir bei meinem Problem nicht weiter, dort wird etwas anderes gemacht als das was ich möchte.
Auch das Lesen in der Rezepturdefinition in e!Cockpit macht mir keinen Sinn mit dem Fehler "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt" und "Interactive call not allowed in this state", ich komm überhaupt nicht weiter was ich falsch mache.

TL;DR meine Fragen:

Wie kann man Variablenwerte auf dem PLC in eine Rezeptur(datei) in der PLC abspeichern und dann wieder bei Bedarf auf die Variable zurückschreiben?
Kann man die Funktionen auch simulieren z.B. dass die Rezeptdatei (.csv) in den Projektordner geschrieben wird? Dann müsste ich keine PLC zur Hand haben.
Hat jemand ein einfaches Beispiel? @JanB1
Freundlich grüsst
BBM


----------



## KLM (18 August 2021)

Für das, was Du da machen willst, habe ich vor einiger Zeit mal einen fertigen Baustein vom Support bekommen. Ich glaube aus Österreich, frag einfach mal dort (support.at@wago.com).
Nein, simulieren kannst Du das Dateisystem nicht und damit auch nicht die Rezepturen. Ich glaube auch die Systemevents gehen in der Simulation nicht. Aber um einen pyhsischen Controller kommst Du nicht herum.


----------



## bbm1995 (13 September 2021)

So, nach den Ferien und einer Weiterbildung bin ich endlich dazu gekommen, das Projekt vom Wago Support zu testen und ein Beispielprojekt zu erstellen. Ich hatte lange mit der Rezepturverwaltung gekämpft weil die zurückgegebenen Werte von RecipeManCommands.GetRecipeValues zerstört gewesen sind, obwohl die .csv die korrekten Werte enthält. Siehe im Bild bei "Rezeptwerte" die Zeilen 0 und 5 bei der Spalte "Value".


Spoiler: Falsche/Fehlende Tabellendaten








Bis ich mal den Fehler gefunden habe, hatte ich so viel verschiedenes versucht, letztendlich lag es daran dass bei RecipeManCommands.GetRecipeValues die "iStringLength" maximal auf 80 setzen kannst...

Im Anhang ein Beispielprojekt für diejenigen, die es gebrauchen können. Funktioniert, ist aber noch nicht sauber geschrieben/bereinigt.

Edit: Ich kann komischerweise nicht den ersten Beitrag editieren, den kann man auf [Gelöst] setzen...


----------

