Speichernd Setzen in ST

Steffen93

Level-1
Beiträge
17
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo allerseits.

Ich bin noch Programmieranfänger, gerade was ST angeht. Ich habe ein einfaches Problem.
Ich möchte in ST etwas speichernd setzen.
Ich möchte im folgenden Beispiel dass, wenn die Bedingung eintritt TStart speichernd gesetzt wird, bis eine andere Bedingung einsetzt und am Anfang automatisch TStart bei 45 ist.

IF FT_F1 AND MenuNo=1 THEN
TStart:=45;
ELSE IF FT_F1 AND MenuNo=2 THEN
TStart:=50;
ELSE IF FT_F1 AND MenuNo=3 THEN
TStart:=55;
ELSE IF FT_F1 AND MenuNo=4 THEN
Tstart:=60;
END_IF
END_IF
END_IF
END_IF

Ich hoffe mir kann jemand helfen.
Vielen Dank.
Gruß
Steffen 93
 
So wie du das geschrieben hast, funktioniert das doch eigentlich.
was meinst du mit :

und am Anfang automatisch TStart bei 45 ist

Übersichtlichere Möglichkeit wäre:

Code:
[COLOR=#333333]IF FT_F1 THEN[/COLOR]
[COLOR=#333333]
    Case MenuNo of

[/COLOR]        1: TStart := 45;
[COLOR=#333333]        2: [/COLOR][COLOR=#333333]TStart := 50;[/COLOR]
[COLOR=#333333]        3: [/COLOR][COLOR=#333333]TStart := 55;
[/COLOR][COLOR=#333333]        4:[/COLOR] [COLOR=#333333]TStart := 60;[/COLOR]
[COLOR=#333333]
    ELSE
[/COLOR]        TStart := 45;[COLOR=#333333]
[/COLOR]
    END_CASE;
[COLOR=#333333]END_IF;[/COLOR]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Problem ist, dass ich auf meinem Display TStart auf einer Seite auswählen kann und sobald ich diese Seite verlasse TStart dann wieder auf 45 springt, aber ich möchte dass der ausgewählte Wert solange bestehen bleibt, bis ich einen anderen Wert auswähle. Und bevor ein Wert ausgewählt wurde (praktisch nach dem Start) hätte ich gerne die 45, was ja im Moment so funktioniert mit der ELSE-Anweisung.
 
Dann ist es so, das die Variable FT_F1 True ist, wenn du die Seite verläßt, warum ist das so?
Denn nur dann, wird TStart mit einem Wert versorgt. Oder hast du noch irgendwo eine Zuweisung
TStart := 45; ?
 
Ja das war mein Fehler ich hatte weiter oben TStart auf 45 gesetzt.
Jetzt hab ich allerdings noch das Problem das TStart solange 0 ist, bis ich einen Wert ausgewählt habe.
Aber normalerweise müsste da ja jetzt 45 wegen der ELSE-Anweisung angezeigt werden, oder???
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt hab ich allerdings noch das Problem das TStart solange 0 ist, bis ich einen Wert ausgewählt habe.
Aber normalerweise müsste da ja jetzt 45 wegen der ELSE-Anweisung angezeigt werden, oder???
Nein, denn das ELSE bezieht sich auf die CASE-Anweisung und die wird nur ausgeführt, wenn FT_F1 TRUE ist.
 
Stimmt. Aber wie schaffe ich es dass TStart am Anfang auf 45 gesetzt wird, aber sobald ein anderer Wert ausgewählt wird, sich ändert?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
Stimmt. Aber wie schaffe ich es dass TStart am Anfang auf 45 gesetzt wird, aber sobald ein anderer Wert ausgewählt wird, sich ändert?

kommt darauf an, wie und wo Du TStart deklariert hast. Wenn das eine lokale Variable ist, kannst Du sie bei der Deklaration gleich mit einem Wert initialisieren.

Code:
 TSart: INT := 45;

Gruß
 
Es ist eine globale Variable, auf die Controller und Display über CAN zurückgreifen können. Mein Problem war dass ich den Startwert TStart nicht im Programm für den Controller definiert hatte, sondern nur im Programm für das Display.
Danke für eure Hilfe.
 
Zurück
Oben