Funktionen aufrufen! Eilig!!

JonnyFlash
2011-06-10
2011-06-10
  • JonnyFlash - 2011-06-10

    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)

     
  • RolandWagner

    RolandWagner - 2011-06-10

    Na, ich hoffe mal, dass Du nicht gerade in irgendeiner Prüfung sitzt und damit Unterschleif betreiben willst

    Was in jedem Fall falsch ist:

    trig_lichtschranke.Q
    

    Dafür gibt es ja wohl keinen .Q als Ausgang, oder? Nach Deiner Variablen-Deklaration wäre das einfach nur

    IF (trig_lichtschranke AND lichtgitter) THEN
    

    Und im Aufruf der Funktion vom Hauptprogramm aus musst Du einfach nur die Parameter übergeben

    Licht:=lichtschranke([1.Parameter-Übergabe], [2.Parameter-Übergabe]);
    

    oder z.B. konkret

    Licht:=Lichtschranke(TRUE, FALSE);
    

    bzw. statt FALSE/TRUE irgendwelche Übergabe-Variablen.

    Und natürlich den Strichpunkt am Ende nicht vergessen!

     
  • RolandWagner

    RolandWagner - 2011-06-10

    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)!

     

Log in to post a comment.