TC3: Die Konstanten sind mir etwas zu konstant (Übernahme neuer Werte erst nach Bereinigen)

Beiträge
5.650
Reaktionspunkte
1.153
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich muss zugeben, der erste Teil des Titels des Threads ist etwas verwirrend, denn wie kann eine Kontante zu konstant sein, aber Aufklärung folgt.
In einem Projekt erhalten einige FBs Konfigurationsparameter via FB_init. Die Parameter können einzelne Variablen sein, aber auch Arrays von Strukturen und genau letztere bereiten mir gerade Kopfzerbrechen.
Einzelne Werte kann man ja direkt bei der Deklaration des FBs angeben, bei Arraya geht dies aber nicht, da muss man eine Variable angeben. Diese ist in meinem Fall eine Konstante. Hier mal ein Beispiel der Deklaration der Konstanten und des FBs:
C-ähnlich:
VAR CONSTANT
    asDilutionNames01                                : ARRAY[1..5] OF STRING(20) := ['N2 Stack 1', '', '', '', ''];
    astDilutionValveData01                            : ARRAY[1..5, 1..6] OF ST_DilutionPanelValveData := [    (xPermanentOpen := TRUE, usiValveGroup := 0, usiValve := 4, rFlow := 20.0),
                                                                                                            (xPermanentOpen := FALSE, usiValveGroup := 0, usiValve := 5, rFlow := 50.0),
                                                                                                            (xPermanentOpen := FALSE, usiValveGroup := 0, usiValve := 7, rFlow := 100.0),
                                                                                                            (xPermanentOpen := FALSE, usiValveGroup := 0, usiValve := 8, rFlow := 200.0),
                                                                                                            (xPermanentOpen := FALSE, usiValveGroup := 0, usiValve := 6, rFlow := 400.0),
                                                                                                            (xPermanentOpen := FALSE, usiValveGroup := 0, usiValve := 3, rFlow := 1000.0),
(* Die weitere Deklaration wurde gekürzt *)
                                                                                                        ];
END_VAR

VAR
// Dilution panel
// Devices
    fbDilutionPane01                                : FB_DilutionPanel(asName := asDilutionNames01, astValveData := astDilutionValveData01);
END_VAR
Ich habe nun bei der ersten Struktur xPermanentOpen auf FALSE und bei der Vierten auf TRUE gesetzt. Danach habe ich die Hardware neu aktiviert und gleichzeitig das Bootprojekt geladen. Danach bin ich Online gegangen und musste feststellen, dass die Variable noch Ihren alten Wert hatte. Ich habe einiges probiert, aber nichts hat geholfen. Erst als ich die Projektmappe bereinigt habe waren die neuen Werte da, aber das kann es doch nicht sein, oder?
Hat da einer eine Idee?
 
Hört sich nach Änderungsladen an!? Da bleiben natürlich die "alten" Konstanten erhalten, da das Programm ja weiterläuft.
Im Prinzip sind das ja nur Variablen mit Initialwerten. Irgendwo in den Übersetzungseinstellungen von CoDeSys kannst Du glaube ich auch einen Haken setzen, daß Konstanten ersetzt werden. Damit wärest Du vielleicht glücklicher. Ob/Wo das bei TC3 geht, weiß ich nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hört sich nach Änderungsladen an!? Da bleiben natürlich die "alten" Konstanten erhalten, da das Programm ja weiterläuft.
Im Prinzip sind das ja nur Variablen mit Initialwerten. Irgendwo in den Übersetzungseinstellungen von CoDeSys kannst Du glaube ich auch einen Haken setzen, daß Konstanten ersetzt werden. Damit wärest Du vielleicht glücklicher. Ob/Wo das bei TC3 geht, weiß ich nicht.
Erstmal danke für die Antwort, Das mit dem Online Change ist mir bekannt, aber wenn die Hardware neu aktiviert wird erfolgt kein Online Change, sondern ein Download. Den Haken gibt es bei TC 3 auch bei den Projekteigenschaften, allerdings sollte der in meinem Fall eigentlich keinen Unterschied machen.
 
Hallo Oliver
Bei Codesys ist es so. (wahrscheinlich dann auch in TC3)
CONSTANT Variablen werden in den Übersetzungsinformationen gespeichert und nur bei bereinigen neu initialisiert.
Ich weis ja nicht was du vor hast aber eventuell wäre "VAR_INPUT CONSTANT" eine alternative.
Hier erhältst du im FB einen Button zum Öffnen einer Dialogbox um die Constanten zu ändern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Oliver
Bei Codesys ist es so. (wahrscheinlich dann auch in TC3)
CONSTANT Variablen werden in den Übersetzungsinformationen gespeichert und nur bei bereinigen neu initialisiert.
Ich weis ja nicht was du vor hast aber eventuell wäre "VAR_INPUT CONSTANT" eine alternative.
Hier erhältst du im FB einen Button zum Öffnen einer Dialogbox um die Constanten zu ändern.
OK, danke, trotzdem finde ich das Verhalten oder die Umsetzung etwas seltsam. Ich frage mich gerade, wenn diese Konstanten in den Übersetzungsinfos abgelegt werden, ob die auch dann aktualisiert werden, wenn man "Projektmappe neu erstellen" wählt. Dann wüsste ich endlich wofür diese Option da ist.
Habe es gerade selber im Infosys (Übrigens seht Ihr den Inhaltsbaum auf der linken Seite auch nicht?) herausgefunden, diese Option bereinigt und übersetzt und aktualisiert damit auch die Konstanten.
 
Zurück
Oben