Könnt Ihr mir sagen ob das Aufrufen einer Funktion im Hauptprogramm so wie ich es im Folgenden gemacht habe richtig ist.
Wenn nicht bitte korrigieren. Bitte Besonderes Augenmerk auf den Term, beim Aufruf im Hauptprogramm, in Klammern legen.
Danke im Vorraus
FUNCTION lichtschranke:BOOL
VAR_INPUT
trig_lichtschranke:BOOL;
lichtgitter:BOOL;
END_VAR
IF ((trig_lichtschranke.Q) AND (lichtgitter = TRUE)) THEN
lichtgitter := FALSE;
ELSIF ((trig_lichtschranke.Q) AND (lichtgitter = FALSE)) THEN
lichtgitter := TRUE;
END_IF;
trig_lichtschranke:= lichtgitter;
END_FUNCTION
Ach ja, was ich noch vergessen habe:
Natürlich solltest Du auch den Ausgang der Funktion beschreiben:
```
Lichtschranke := TRUE;
``` oder was auch immer Du als Ausgang ausgeben möchtest. Ansonsten kannst Du Dir den Aufruf der Funktion einfach nur sparen . Es wird immer FALSE zurückgegeben.
Wichtig ist, dass der Funktionsname selbst innerhalb der Funktion als Funktionsausgang (und nur der) geschrieben wird. Globale Variable kann man zwar innerhalb einer Funktion beschreiben, sind aber eigentlich tabu (sprich unschöner Programmierstil)!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Könnt Ihr mir sagen ob das Aufrufen einer Funktion im Hauptprogramm so wie ich es im Folgenden gemacht habe richtig ist.
Wenn nicht bitte korrigieren. Bitte Besonderes Augenmerk auf den Term, beim Aufruf im Hauptprogramm, in Klammern legen.
Danke im Vorraus
FUNCTION lichtschranke:BOOL
VAR_INPUT
trig_lichtschranke:BOOL;
lichtgitter:BOOL;
END_VAR
IF ((trig_lichtschranke.Q) AND (lichtgitter = TRUE)) THEN
lichtgitter := FALSE;
ELSIF ((trig_lichtschranke.Q) AND (lichtgitter = FALSE)) THEN
lichtgitter := TRUE;
END_IF;
trig_lichtschranke:= lichtgitter;
END_FUNCTION
AUFRUF DER FUNKTION IM HAUPTPROGRAMM
VAR
Licht: BOOL;
END_VAR
Licht:=lichtschranke(trig_lichtschranke(CLK := taster_lichtgitter), lichtgitter)
Na, ich hoffe mal, dass Du nicht gerade in irgendeiner Prüfung sitzt und damit Unterschleif betreiben willst
Was in jedem Fall falsch ist:
Dafür gibt es ja wohl keinen .Q als Ausgang, oder? Nach Deiner Variablen-Deklaration wäre das einfach nur
Und im Aufruf der Funktion vom Hauptprogramm aus musst Du einfach nur die Parameter übergeben
oder z.B. konkret
bzw. statt FALSE/TRUE irgendwelche Übergabe-Variablen.
Und natürlich den Strichpunkt am Ende nicht vergessen!
Ach ja, was ich noch vergessen habe:
Natürlich solltest Du auch den Ausgang der Funktion beschreiben:
```
Lichtschranke := TRUE;
``` oder was auch immer Du als Ausgang ausgeben möchtest. Ansonsten kannst Du Dir den Aufruf der Funktion einfach nur sparen . Es wird immer FALSE zurückgegeben.
Wichtig ist, dass der Funktionsname selbst innerhalb der Funktion als Funktionsausgang (und nur der) geschrieben wird. Globale Variable kann man zwar innerhalb einer Funktion beschreiben, sind aber eigentlich tabu (sprich unschöner Programmierstil)!