TIA Andere Bezeichnung für LIMIT

C

chipchap

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute.

Ich habe im Simatic Manager STEP 7 ein Stellglied programmiert. Diese siehr so aus:

FUNCTION_BLOCK STGRAD
VAR_INPUT
YA: REAL; (* analoges Eingangssignal *)
Yneg: REAL; (* Y-Wert für STGneg = 0 *)
Ypos: REAL; (* Y-Wert für STGpos = 0 *)
END_VAR
VAR_OUTPUT
STGneg: REAL; (* negativer Stellgrad *)
STGpos: REAL; (* positiver Stellgrad *)
END_VAR

STGpos := (YA - Ypos) / (100 - Ypos);
STGpos := LIMIT(MN:=0.0, IN:=STGpos, MX:=1.0);
IF Yneg > 0.001 THEN
STGneg := (Yneg - YA) / Yneg;
ELSE
STGneg := 0.0;
END_IF;
STGneg := LIMIT(MN:=0.0, IN:=STGneg, MX:=1.0);

END_FUNCTION_BLOCK


Das Ganze möchte ich nun im TIA POrtal machen, bekomme nach dem Übersetzten folgenden Fehler angezeigt:

Parameter der Funktion oder des Funktionsbausteins stimmen nicht mit den übergebenen formalen Parametern überein.

In der Hilfe habe ich schon nachgeschaut, kann aber nicht so richtig was mit anfangen.
Vor einiger Zeit hatte ich schon einmal ein ähnliches Problem. Dort mußte ich anstatt einer Buchstabenkombi das Zeichen für größer / kleiner eingeben. In dem Fall hier geht das aber nicht.

Gibt es eine alternative für die Eingabe LIMIT?

Limit steht ohne alles da. Keine ".." oder #

Velen Dank schonmal für Eure Hilfe

MfG
 
Moin,

Kenne mich mit SCL nicht so richtig aus, aber in der Zeile
Code:
[COLOR=#333333]LIMIT(MN:=0.0, IN:=STGpos, MX:=1.0)[/COLOR]
liest Du den Wert. Da Du aber STGpos als Output deklariert hast, kannst Du diesen nur schreiben.
Wenn Du diesen und natürlich den STGneg als Var In_out schreibst , sollte die Fehlermeldung weg sein.

Raik
 
Punkt 1: Du hast Glück das deine Funktion überhaupt in Step7 funktioniert hat. Lese bei einem FC niemals nie die Ausgänge zurück.

Der FC bekommt nämlich nur einen Pointer auf einen TEMP-Wert des aufrufenden Bausteins übergeben. Das bedeutet das du im FC keinen Zugriff auf
die tatsächlich Variable hast, sondern nur diesen TEMP-Wert liest oder schreibst.
Nachdem der FC beendet und verlassen wurde werden die TEMP-Werte, die der FC bearbeitet hat, auf die tatsächlichen Variablen geschrieben.

Dein Code funktioniert nur da du STGpos/STGneg zuerst beschreibst und dann wieder liest.
Du arbeitest aber immer im TEMP des aufrufenden Bausteins, aber nie mit der Variable (außer es der Merkerbereich) die am OUT des FC dran geschrieben hast.
Beim FC-Aufruf wird der Istwert der Variable die du am Ausgang hast nämlich nicht in diesen TEMP-kopiert.
Das bedeutet: Wenn du zum Beispiel als ersten Befehl STGpos liest, dann bekommst du ne Zufallszahl. ;)

Gewöhne dir das dringend ab, auf so was drauf zu kommen wenn man es nicht weiß kann schwer sein.
Verwende als IN/OUT oder TEMP-Zwischenwerte.

Punkt 2: IN TIA wird die Schnittstelle im Menü oben definiert.
TIA-SCL-Parameter.jpg
Ich habe mir übrigens die Freiheit genommen ein paar Korrekturen einzutragen um dem Rücklesen der OUT-Parameter entgegen zu wirken. :p
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich muß mich mal wieder sehr für solch eine super Beschreibung bedanken.
Ich werde es mir morgen anschaun. Bin noch unterwegs.
Meld mich dann nochmal ob es funktionirt hat.
 
Chipchap hat doch einen FB (FUNCTION_BLOCK) und keinen FC, da darf man OUTPUTs eigentlich auch lesen.
Ist das von TIA eine Warnung oder eine Fehlermeldung?

Harald
 
Diser angezeigte Text oben ist aus dem Simatic Manager. Jetzt soll im Tia erstellt werden. Dort wird natürlich nicht mit Function Block gearbeitet.

Es ist eine Fehlermeldung
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So, habe jetzt mal die Änderung eingegeben. Die 2 Fehler sind immernoch da.:confused::confused:

LIMIT wird nach dem Übersetzen immer rot unterstrichen.
 

Anhänge

  • Fehlermeldung STGRAD.PNG
    Fehlermeldung STGRAD.PNG
    8,7 KB · Aufrufe: 50
Limit ist doch bei Step 7 ein Baustein aus der Bibliothek. Dann darfst du unter TIA schauen, ob es solch einen Baustein dort auch gibt. bike
 
Dort gibt es einen. Das ist ja das was mich wundert. In STEP 7 gibt es auch einen und da gab es keine Probleme beim Übersetzen.
 
Chipchap hat doch einen FB (FUNCTION_BLOCK) und keinen FC, da darf man OUTPUTs eigentlich auch lesen.
Aarrrghhh!!!! Hab das "Block" komplett übersehen.
Da hab ich wieder umsonst gepredigt wie ein Heiliger.... :oops::oops::oops:

So, habe jetzt mal die Änderung eingegeben. Die 2 Fehler sind immernoch da.:confused::confused:
LIMIT wird nach dem Übersetzen immer rot unterstrichen.
:icon_confused: Hmmm...

Sehr merkwürdig. Wie du an meinem Screenshot gesehen hast hab ich eigentlich nur ein kleines Testprojekt mit einem FC erstellt, den Code reinkopiert und dann übersetzt.....
Bei mir ging der LIMIT-Befehl ohne das ich ihn manuell einfügen musste.
 
Hey Leute, auch wenn das Thema hier schon einwenig betagt ist.... jetzt stehe ich exakt vor dem selben Problem.
Die Syntax passt, Datentypen auch....
@chipchap: hast du das Problem gelöst bekommen?

Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habs gerade geknackt bekommen .... nach einer Ewigkeit. Aus irgendeinem Grund akzeptiert TIA den REAL Datentyp nicht. Mit LREAL funktioniert es komischer Weise.
 
In meine V15.1.2 kan ich alle möchliche Datentyp wahlen.
In FUP must man oben auf das LIMIT block das Datatyp wahlen und in SCL type man LIMIT_ und man bekomt die ganse liste mochliche Datentype. Aber wenn ich nur LIMIT eingibt und meine variable sind alle von derselbe Datentyp gibt er auch keine Fehler
 
Zurück
Oben