# Initialisierung in "Struct" von  FBDim_Single_Button lässt sich nicht verändern



## sebo_232 (23 Juli 2019)

Hallo zusammen,  Ich habe die WagoAppBuilding geladen und möchte den FB_DimSingleButton
verwenden.


Dieser funktioniert auch tadellos.

Ich arbeite mit E-Cockpit und pfc200 eco
Wenn ich allerdings an den angelegten Variablen den Initialisierungswert verändere, so hat das keine Auswirkungen.

Meine Frage wäre:
1. Ist meine Deklaration korrekt? 
Ich habe 2 persistent/Retain-Variablen, die an 2 Stellen deklariert sind.
Einmal unter Persistent Vars und einmal lokal.

Wo ist der Initialisierungswert zu ändern?
Unter persistent Vars oder im Programm beim FB-Aufruf?

Habe schon viele Kombinationen getestet, ohne Erfolg.

Die Werte, die ich in typconfigparameter/typconfigdim verändert habe, werden,
wenn ich eine Simulation starte immer mit den Defaultwerten überschrieben.

Ebenso die rsetrecovery wird nicht mit dem angegebenen Wert initialisiert.

Was mache ich falsch?


Hier mein Programm:




Anhang anzeigen DimmSingleButton - 001.zip


----------



## KLM (23 Juli 2019)

Sieht auf einen schnellen Blick richtig aus. Ich vermute mal, Du hast die Änderungen per Online Change eingespielt. Da werden die Variablen natürlich nicht neu initialisiert.


----------



## holgermaik (23 Juli 2019)

hallo sebo
So wie du das machst ist es ungünstig und hat mehrere Nachteile. 
1. müsstest du die Reihenfolge der Instanzierung vorgeben damit nicht die default Werte genommen werden.
2. Bist du später unflexibel bei der Änderung bzw. Vorgabe über eine Variable der Visu.
3. Wenn du eine Variable der Structur Persistent setzt, wird die gesamte Struktur Persisten. Du hättest bei deiner Version bereits 32 Byte verbraucht.
Ich habe mal dein Programm angepasst.




> Wo ist der Initialisierungswert zu ändern?


Unter "persistent Vars" liegt nur ein Verweis zu deiner Variablen. Es wäre also egal wo du sie änderst.
Holger


----------



## sebo_232 (23 Juli 2019)

Hallo Holger,
Super Vorschlag Danke.

Ich hab dein Beispiel umgesetzt,
habe allerdings festgestellt, dass die Initialisierungswerte in der Deklaration auch bei 
deinem Beispiel keine Wirkung haben.
Allerdings konnte ich, nach dem Online-gehen in die Spalte"Vorbereiteter Wert" 
einen Eintrag machen, der dann mit "Debug/schreiben oder STRG+F7 gesetzt wurde.
Jedenfalls kann dieses Thema Dank dir als gelöst betrachtet werden.
gracias!!


----------



## sebo_232 (23 Juli 2019)

Für weitere Verbesserungsvorschläge bin ich immer offen.

Anhang anzeigen Wago_Building_001.zip


----------



## holgermaik (24 Juli 2019)

> habe allerdings festgestellt, dass die Initialisierungswerte in der Deklaration auch bei
> deinem Beispiel keine Wirkung haben.


Beim ersten Download auf den Controller (oder Simulation) wird die Variable initialisiert. Im Beispiel mit 10s.
Danach kannst du eintragen was du willst. Es wird immer der Wert aus dem persistent Speicher genommen.
Das ist ja gerade der Sinn von persistent Variablen das sie eben nicht neu initialisiert werden.

Holger


----------



## sebo_232 (24 Juli 2019)

Evtl. reden wir aneinander vorbei.
Ich versuche mich nochmal zu verklären:
Meine Vorgehensweise:

1. Deklaration wie in deinem Beispiel mit 10S,
2. Download auf den Controller
3. Controller auf RUN.
4. Test, ob die 10S wirklich am Controller angekommen sind.
5. Test negativ, Defaultwerte waren alle noch da.
6. Dann einen Wert in Spalte"Vorbereiteter Wert" eingetragen und auf "schreiben"
7. Test positiiv, Wert wurde von Default auf Neuen Wert gesetzt.

Mein Ziel war es, nur einmalig die Werte zu verändern, die ursprünglich eingetragen waren.
Diese Werte sollten dann immer persistent sein / Bestand haben.
Das habe ich Dank dir auch geschafft.


----------



## holgermaik (24 Juli 2019)

Danke für deine Rückmeldung.
Punkt 5 sollte eigentlich nicht sein.
Aber wenns läuft ist ja gut.


----------



## Thruser (24 Juli 2019)

Hallo,


holgermaik schrieb:


> Punkt 5 sollte eigentlich nicht sein.


aufpassen:


> Persistente Variablen
> 
> PERSISTENT-Variablen behalten wie die RETAIN-Variablen ihre Werte bei einem Reset kalt, bei einem erneuten Download der Applikation  und bei einem Reset warm (deshalb entspricht  VAR PERSISTENT immer einer VAR  PERSISTENT RETAIN bzw. VAR RETAIN PERSISTENT  Deklaration) CODESYS initialisiert PERSISTENT-Variablen  somit nur bei Reset Ursprung neu.



Gruß


----------



## holgermaik (25 Juli 2019)

> aufpassen:....


Es geht um den ersten Download auf einen nackten Controller. Da hätte die Variable initialisiert werden müssen.


----------



## Thruser (25 Juli 2019)

Hallo,


holgermaik schrieb:


> Es geht um den ersten Download auf einen nackten Controller. Da hätte die Variable initialisiert werden müssen.



bist Du sicher? 

Er schreibt ja im ersten Post 



> Dieser funktioniert auch tadellos.
> 
> Ich arbeite mit E-Cockpit und pfc200 eco
> Wenn ich allerdings an den angelegten Variablen den Initialisierungswert verändere, so hat das keine Auswirkungen.


Da gehe ich davon aus, daß er mindestens einmal zuvor das Programm schon in die Steuerung geladen und gestertet hat. Danach hat er bestimmt kein Kaltreset/Urlöschen gemacht bevor er das geänderte Programm neu aufgespielt hat.

Gruß

EDIT: Gerade gesehen daß Du in dem Beitrag von *erstem *Download gesprochen hast. Das wird er hier aber nicht gemacht haben, da daß Programm ja bereits schon einmal drauf war.


----------

