easy-forum

Deutsch - Software => Galileo => Thema gestartet von: DerE4Jan am März 14, 2025, 08:41:12 Vormittag

Titel: Kontrolle vom Skript fehlerhaft
Beitrag von: DerE4Jan am März 14, 2025, 08:41:12 Vormittag
Guten Morgen,

im Prinzip geht es um eine Bedingung, wenn Wert X zwischen 20-30 liegt, kommt ein Signal, alles über 30 natürlich nicht.

Das Programm fühlt sich nun durch den Ausdruck then gestört. If ... then...else müsste doch eine gängige Bezeichnung sein, oder übersehe ich hier eine Kleinigkeit?

Habe mal ein Screenshot beigefügt.

Andere Skripte oder Ergänzungen sind natürlich gerne gesehen und man trifft sich bei der richtigen Lösung :)

Vielen Dank : )
Titel: Antw:Kontrolle vom Skript fehlerhaft
Beitrag von: ELWMS am März 14, 2025, 09:20:57 Vormittag
Hallo!

Warum setzt du die Zuweisung nach THEN in Klammern? Lass sie weg! bringt nix.

Gruß,

ELWMS
Titel: Antw:Kontrolle vom Skript fehlerhaft
Beitrag von: DerE4Jan am März 14, 2025, 09:24:41 Vormittag
Hallo ELWMS,

okay habe ich geändert, danke! Jetzt meldet er Zuweisung oder Funktionsaufruf erwartet für then. ???
Titel: Antw:Kontrolle vom Skript fehlerhaft
Beitrag von: radar17892 am März 14, 2025, 13:16:18 Nachmittag
Bitte auf die Bindungsstärken der Operatoren achten. Dann hast du hinter then den Doppelpunkt der Zuweisung vergessen. Hast do evtl zwischen der ersten Zeile und dem then kein Leerzeichen? Kann sonst nicht erkennen warum der Compiler meckert.
Es muss hier nicht unbedingt eine IF Anweisung sein. Eine normale Zuweisung tut es auch und ist kürzer.
0.M049_M064[51] := (2.Istwert_Drehzahl_Pumpe1 >= 20) and (
2.Istwert_Drehzahl_Pumpe1 =< 30);
Titel: Antw:Kontrolle vom Skript fehlerhaft
Beitrag von: DerE4Jan am März 17, 2025, 08:04:46 Vormittag
Hallo,

also mit den korrigierten Zeilen meldet er trotzdem einen Fehler.

Habe jetzt die Zuweisung genommen, =< auf <= geändert und es klappt super.

Vielen Dank und einen guten Start in die Woche
Titel: Antw:Kontrolle vom Skript fehlerhaft
Beitrag von: radar17892 am März 18, 2025, 12:41:38 Nachmittag
Also der korrekte Audruck mit einer IF wäre so:

if ((Istwert_Drehzahl_Pumpe1 >= 20) and (Istwert_Drehzahl_Pumpe1 <= 30))
   0.M049_M064[51] := true;   
else
   0.M049_M064[51] := false;
endif


Das 'THEN' braucht es in Galileo nicht. Ich muss da auch immer umdenken weil ich es von ST anders gewöhnt bin.