-> Hier kostenlos registrieren
Servus zusammen,
kann es sein, dass sich bei größeren Rezepturen (weit über 5000 Variablen) RecipeManCommands "verschluckt"?
Gleich mal vorweg: ich verwende keine Visu - die Rezepte brauche ich zum speichern aktueller Betriebs- und Einstellparameter, welche ich auf einer Linux SL MC verwende.
Konkretes Beispiel (climatePrg.txtrecipe):
Zu Programmstart initialisiere ich all meine Instanzen, obiges Beispiel eben im CLIMATE_PRG den tempController01 (dieser ist ein FB aus meiner Library).
Danach lese ich all meine Rezeptdateien, wobei jedes PRG eine eigene Rezeptur-Datei verwendet:
dwRes liefert bei allen Rezepten ERR_OK. Variablen werden auch in die laufende Applikation geschrieben, allerdings nicht so wie ich mir das vorstelle.
Beim obigen Beispiel steht dann beim Array-Index 2 (CLIMATE_PRG.tempController01.Perioden_Heizung[2].PeriodName) der Wert vom Index 1 (Nacht). Array-Index 3 passt dann wieder und Array Index 4 hat dann z.B. den Wert vom Index 3.
Lade ich genau diese Datei direkt in die Rezeptur im Codesys Rezepturmanager und wähle "Rezeptur schreiben", werden alle Werte wie es sein soll geschrieben. Nur der Weg per RMC zeigt hier Probleme.
Ist das ein Bug bei längeren Listen, oder ein Fehler bei mir? Alle Rezept-Relevanten Aufrufe laufen in einem eigenen Task, jetzt gerade freilaufend. Hatte auch schon fixe Zyklen verwendet, aber das macht keinen Unterschied.
LG
PS: hier noch die Info, dass ich nicht die übliche Dateibezeichnung (recipename.dateiname.txtrecipe) verwende. Ich speichere jetzt mal alle 120 Sekunden alle Rezepte mit ReadAndSaveRecipeAs und die passen 100% zu den aktuellen Einstellungen. Somit stellt das Speichern kein Problem dar.
Am Bild unten sieht man die Aktuelle Spalte, welche tatsächlich die Datei "current" vom Dateisystem gelesen hat, aber eben mit anderen Werten. Im Rezept runtime und current sind die richtigen Werte hinterlegt, und so stehen sie auch in den Rezeptdateien.

kann es sein, dass sich bei größeren Rezepturen (weit über 5000 Variablen) RecipeManCommands "verschluckt"?
Gleich mal vorweg: ich verwende keine Visu - die Rezepte brauche ich zum speichern aktueller Betriebs- und Einstellparameter, welche ich auf einer Linux SL MC verwende.
Konkretes Beispiel (climatePrg.txtrecipe):
Code:
CLIMATE_PRG.tempController01.Perioden_Heizung[0].PeriodName:="Tag"
...
...
...
CLIMATE_PRG.tempController01.Perioden_Heizung[1].PeriodName:="Nacht"
...
...
...
CLIMATE_PRG.tempController01.Perioden_Heizung[2].PeriodName:="Aufstehen"
...
...
...
Zu Programmstart initialisiere ich all meine Instanzen, obiges Beispiel eben im CLIMATE_PRG den tempController01 (dieser ist ein FB aus meiner Library).
Danach lese ich all meine Rezeptdateien, wobei jedes PRG eine eigene Rezeptur-Datei verwendet:
Code:
dwRes[i]:=rmc.LoadFromAndWriteRecipe(
RecipeDefinitionName:=recipes[i],
RecipeName:=sRecipeName,
FileName:=recipes[i]
);
dwRes liefert bei allen Rezepten ERR_OK. Variablen werden auch in die laufende Applikation geschrieben, allerdings nicht so wie ich mir das vorstelle.
Beim obigen Beispiel steht dann beim Array-Index 2 (CLIMATE_PRG.tempController01.Perioden_Heizung[2].PeriodName) der Wert vom Index 1 (Nacht). Array-Index 3 passt dann wieder und Array Index 4 hat dann z.B. den Wert vom Index 3.
Lade ich genau diese Datei direkt in die Rezeptur im Codesys Rezepturmanager und wähle "Rezeptur schreiben", werden alle Werte wie es sein soll geschrieben. Nur der Weg per RMC zeigt hier Probleme.
Ist das ein Bug bei längeren Listen, oder ein Fehler bei mir? Alle Rezept-Relevanten Aufrufe laufen in einem eigenen Task, jetzt gerade freilaufend. Hatte auch schon fixe Zyklen verwendet, aber das macht keinen Unterschied.
LG
PS: hier noch die Info, dass ich nicht die übliche Dateibezeichnung (recipename.dateiname.txtrecipe) verwende. Ich speichere jetzt mal alle 120 Sekunden alle Rezepte mit ReadAndSaveRecipeAs und die passen 100% zu den aktuellen Einstellungen. Somit stellt das Speichern kein Problem dar.
Am Bild unten sieht man die Aktuelle Spalte, welche tatsächlich die Datei "current" vom Dateisystem gelesen hat, aber eben mit anderen Werten. Im Rezept runtime und current sind die richtigen Werte hinterlegt, und so stehen sie auch in den Rezeptdateien.

Zuletzt bearbeitet: