Funktionsaufruf funktioniert nicht - SCL

amateur

Level-1
Beiträge
26
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!
Ich hab mal wieder ein Problem. Ich möchte aus meinem OB1 die Funktion FC1 aufrufen. Kann ja eigentlich nicht so schwer sein, laut Hilfe sieht die Synthax auch recht einfach aus. So weit die Theorie...

Der Aufruf:
FC1(jahr := akt_jahr); // REAL

Jetzt bekomme ich die Fehlermeldung, dass der Funktionstyp fehlt oder ungültig ist. Wo definiere ich denn jetzt den Funktionstyp?
In der Funktion selber ist der Typ wie folgt definiert:

FUNCTION FC1 : REAL

Was könnte jetzt der Fehler sein?
 
Ohne es nun zu testen.
Es könnte sein das der Rückgabewert der Funktion auch verwendet werden muss.
Im OB1:
Code:
myREAL := FC1(jahr := akt_jahr); // REAL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Super, das war's! Vielen Dank :) Meine Funktion soll mir am Ende zwei Werte liefern. Wenn ich das jetzt richtig verstanden habe, kann ich auf diese Weise aber nur einen abrufen. Wie bekomme ich dann den anderen?
 
Viele Wege führen nach Rom.

Am einfachsten einen Bereich VAR_OUTPUT in der Funktion hinzufügen.

Dann kannst Du mehrere Ausgänge definieren. Diese Variablen werden dann wie die Eingabe im Aufruf übergeben.

Um nicht einen RET_VAL und einen VAR_OUTPUT zu haben (wenn Dich das stört) kann man die Funktion den Typ VOID verpassen dann hat sie eben keinen RET_VAL.
 
Danke für die schnelle Antwort! Das hat mich meinem Ziel aber leider nicht näher gebracht. Nachdem ich den VAR_OUTPUT-Bereich definiert und zwei zwei Variablen eingefügt habe(as,ys), bekomme ich nun die Fehlermeldung, dass die Eingangsparameterzuweisung unvollständig ist.

Wenn wir jetzt mal davon ausgingen, dass das jetzt alles schon funktionierte, wie bekomme ich dann die Variablen zu fassen?

as := FC1(jahr := akt_jahr)

oder so

myReal := FC1(as) (was ich nicht glaube, aber man weiß ja nie...)

oder ganz anders?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
FUNCTION FC1 : VOID
//Test FC1
VAR_INPUT
  inReal_1 : REAL;
  inReal_2 : REAL;
END_VAR

VAR_OUTPUT
  outReal_1 : REAL;
  outReal_2 : REAL;
END_VAR

  // Anweisungsteil
  outReal_1 := inReal_1 / inReal_2;
  outReal_2 := inReal_2 / inReal_1;
END_FUNCTION

//Aufruf von FC1
FC1(inReal_1:= 0.5, inReal_2:=0.8, outReal_1:=myRealEXTERN1, outReal_2:=myRealEXTERN2);
 
Zuletzt bearbeitet:
unter SCL gibts in der Menueleiste irgendwas wie -> einfügen Funktionsaufruf oder so.(weiss es grade nicht auswendig).

Damit die Funktion auswählen und dann nur noch deine Variablen anfügen..;)

Gruss Andy
 
Zurück
Oben