TIA Baustein Toleranzbereich

berni2020

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich arbeite mit TIA V15.1 an einer S7-1500.

Ich möchte einen Toleranzbereich für eine Soll-Position festlegen, z. B. Soll_Pos +/- 5.00mm.

Gibt es hier in der Library einen Baustein für diese Aufgabe?

Sorry, Anfänger... :icon_rolleyes:

Danke für die Hilfe
 
Ich weiss nicht ob es genau das fertig gibt, aber mit ADD, SUB und IN_RANGE ist das relativ einfach umzusetzen. Am besten alles in einen FC packen, den du dann mehrmals aufrufen kannst.
Ist das verständlich?
 
Berni möchte lediglich einen Toleranzbereich für eine Soll-Position festlegen. Das hat er mit "Soll_Pos +/- 5.00mm" eigentlich schon getan.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Berni möchte lediglich einen Toleranzbereich für eine Soll-Position festlegen. Das hat er mit "Soll_Pos +/- 5.00mm" eigentlich schon getan.
Ei Freilicht, aber nur in seiner Anfrage hier im Forum, nicht in seinem Programm. Für sein Programm sucht er in der Bibliothek nach einem schlüsselfertigen Baustein ...
Lieber andere danach suchen lassen, als eine ProgrammZeile ( z.B.: passt := (Soll - x) <= Ist AND Ist <= (Soll + x) ; ) zu tippen. Selber machen wäre doch zu einfach. ;)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ei Freilicht, aber nur in seiner Anfrage hier im Forum, nicht in seinem Programm. Für sein Programm sucht er in der Bibliothek nach einem schlüsselfertigen Baustein ...
Lieber andere danach suchen lassen, als eine ProgrammZeile ( z.B.: passt := (Soll - x) <= Ist AND Ist <= (Soll + x) ; ) zu tippen. Selber machen wäre doch zu einfach. ;)

Auch hier einen Dank.
Ich hatte schon gesucht sonst hätte ich nicht gefragt. Ich dachte das dieses Forum auch dafür da ist??? War jetzt mein erster Eintrag aber das ist ja schon mal ne nette Erfahrung.

Ihre Programmzeile schaut mir ja sehr nach SCL aus, liege ich da richitg?
Ich hatte Eingangs beiläufig erwähnt, dass ich Anfänger bin. Aus diesem Grund programmiere ich nicht in SCL, da ich es nicht beherrsche. Aber trotzdem Danke.

Ich hoffe das Sie mir dennoch bei anderen Problemen mit Rat und Tat zur Seite stehen.
 
Ihre Programmzeile schaut mir ja sehr nach SCL aus, liege ich da richitg?
Ich hatte Eingangs beiläufig erwähnt, dass ich Anfänger bin. Aus diesem Grund programmiere ich nicht in SCL, da ich es nicht beherrsche. Aber trotzdem Danke.
Das Problem bei uns ist, dass unsere Glaskugeln gerne mal den Dienst versagen und wir nicht voraussehen konnten, dass Du/Sie SCL nicht beherrscht, denn nur weil man Anfänger ist muss das nicht prinzipiell die Konsequenz sein, dass man SCL nicht kann.
Im Falle von FUP könnte man, so nur ermittelt werden soll, ob ein Wert innerhalb einer Toleranz liegt, eine ODER-Verknüpfung mit invertiertem Ausgang und zwei Eingängen nehmen. An die Eingänge hängt man eine >= und eine <= Box. An den Eingang 1 dieser Boxen legst Du den zu prüfenden Wert und an den Eingang 2 eine MUL Box mit der Du den zulässigen Wert inklusive Toleranz berechnest.
 
Das Problem bei uns ist, dass unsere Glaskugeln gerne mal den Dienst versagen und wir nicht voraussehen konnten, dass Du/Sie SCL nicht beherrscht, denn nur weil man Anfänger ist muss das nicht prinzipiell die Konsequenz sein, dass man SCL nicht kann.
Im Falle von FUP könnte man, so nur ermittelt werden soll, ob ein Wert innerhalb einer Toleranz liegt, eine ODER-Verknüpfung mit invertiertem Ausgang und zwei Eingängen nehmen. An die Eingänge hängt man eine >= und eine <= Box. An den Eingang 1 dieser Boxen legst Du den zu prüfenden Wert und an den Eingang 2 eine MUL Box mit der Du den zulässigen Wert inklusive Toleranz berechnest.

Ja da hast du recht, hätte ich vielleicht erwähnen sollen. Mir ging's eigentlich grundsätzlich um die Aussage. Fand ich jetzt nicht so nett.

Danke für den Lösungsvorschlag. So ähnlich hab ich's jetzt auch gemacht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum generell? Es kommt doch darauf an ... will man abfragen, ob ... oder sicherstellen, dass ... der Wert in einem bestimmten Bereich liegt!?
Er will...sicherstellen, dass...
Moin Berni,

dennoch vermutet meine Glaskugel, dass Du "nur" abfragen willst, ob der Istwert im Bereich Sollwert ± Toleranz liegt.
Will sagen, dass Du auf der Suche nach einem BOOLeschen Ausdruck bist, der Dir Deine Frage, ob der Istwert zwischen Sollwert - Toleranz und Sollwert + Toleranz liegt, mit Ja (True) bzw. Nein (False) beantwortet.
Dafür hatte ich in SCL einen LösungsVorschlag angegeben.
Mein Tipp für "Frischlinge": bitte nicht denken "oh, das ist ja SCL und das verstehe ich sowieso [noch] nicht", sondern einfach lesen und versuchen, zu verstehen.
Manchmal bis oft gelingt das auf Anhieb - auch ohne Vorkenntnisse!

Für ProgrammierAnfänger ist es wichtig, den Begriff 'WertZuweisung' (Darstellung in SCL ':=') kennenzulernen und zu verstehen.
'x := x + 1' z.B. ist keine Formel, die darauf wartet, nach 'x' aufgelöst zu werden, sondern eine WertZuweisung, die dem Computer sagt, er soll das, was rechts von ':=' steht, ausrechnen und dann das Ergebnis in die Variable 'x' speichern.
Es ist also nicht eine Gleichung gemeint, die ja in diesem Fall ( x = x + 1 ) so gar nicht stimmen kann.
Für "Umsteiger" von einer "HochSprache" (was auch immer das sein mag) auf die SPS-Programmierung ist auch folgende Erkenntnis wichtig *) :
BOOLesche Werte lassen sich nicht nur in Abfragen ('IF', 'CASE', 'WHILE' u.s.w.) verwenden, sondern man kann damit "rechnen".
Zwar nicht wie mit Zahlen, aber in 'logischen Verknüpfungen' (mit 'NOT', 'AND', 'OR' oder mit daraus zusammengesetzten Operatoren 'NAND, 'NOR', 'XOR' u.s.w.).
Und als Operanden kommen dafür auch alle Funktionen in Frage, die einen BOOLeschen Wert "zurückgeben", z.B. und insbesondere VergleichsErgebnisse ('x > y', 'x >= y', 'x < y', 'x <= y', 'x <> y' und 'x = y').
Wird damit klar, was ich mit 'passt := ((Soll - x) <= Ist) AND (Ist <= (Soll + x)) ;' gemeint habe (habe hier noch zusätzliche Klammern eingefügt)?
Übrigens: die "umgangssprachliche" Formulierung 'der IstWert ist grösser oder gleich dem Sollwert minus Toleranz und kleiner oder gleich dem Sollwert plus Toleranz' wird nicht toleriert - wo wir schonmal von Toleranz sprechen.
Der Istwert soll nämlich mit zwei anderen Werten verglichen werden und muss deshalb auch in beiden Vergleichen vorkommen:
'der IstWert ist grösser oder gleich dem Sollwert minus Toleranz und der IstWert ist kleiner oder gleich dem Sollwert plus Toleranz' muss es also korrekterweise heissen.

Sooo, das war das Thema "abfragen". Was ich mit "sicherstellen" gemeint hatte, ist anscheinend falsch "rübergekommen".
Die Funktion LIMIT gibt keinen BOOLeschen Wert zurück. Sie stellt sicher, dass der ZahlenWert des Ergebnisses im vorgegebenen ZahlenBereich liegt. Sie begrenzt das Ergebnis.
Nur, wenn der Istwert im vorgegebenen Bereich ((Sollwert - Toleranz) <= Istwert <= (Sollwert + Toleranz)) liegt, wird er unverändert "durchgereicht".
Ist er jedoch kleiner als der untere Grenzwert, so erscheint als Ergebnis der untere Grenzwert.
Ist er grösser als der obere Grenzwert, so erscheint als Ergebnis der obere Grenzwert. Das Ergebnis der LIMIT-Funktion liegt immer im ToleranzBereich.
Das Ergebnis ist also so noch keine Antwort auf die Frage 'liegt der Istwert im ToleranzBereich?'. Um das zu erreichen, müsste man das Ergebnis der LIMIT-Funktion noch mit dem Istwert vergleichen.

Sorry vielstmals, wenn ich mich im Ton vergriffen hatte und Du Dich auf die Füsse getreten gefühlt hast. Ich klinge vielleicht hin und wieder etwas bissig, bin es aber gar nicht!
Selbstverständlich darfst Du Dich gerne wieder mit Fragen/Aufgaben ans Forum wenden - schliesslich sind wir alle Anfänger ... nicht auf allen, aber auf vielen Gebieten!

Gruss, Heinileini

*) Eigentlich liegt es nicht an den "HochSprachen" selbst, die dies normalerweise auch alle können - irgendwie scheitert's daran, dass diese Fähigkeiten ziemlich regelmässig in Programmier-Kursen und -Unterlagen zu kurz kommen oder ganz verschwiegen werden.
 
Zuletzt bearbeitet:
Ich möchte einen Toleranzbereich für eine Soll-Position festlegen, z. B. Soll_Pos +/- 5.00mm.

Gibt es hier in der Library einen Baustein für diese Aufgabe?
Deine Frage ist für mich ungenau und missverständlich formuliert. Vielleicht daher die bisherigen Missverständnisse hier?

Suchst Du einen Baustein, der Dir die 5mm zu einem Wert addiert und subtrahiert? Dem Du die Soll-Position und die gewünschte Toleranz (hier 5mm) übergibst und der dann die unteren und oberen Grenzwerte SollPosition-Toleranz und SollPosition+Toleranz liefert? Dafür bräuchtest Du nur eine Subtraktions- und eine Additions-Anweisung.

Oder suchst Du einen Baustein, der einen weiteren Wert (Ist-Position?) vergleicht, ob der innerhalb der Soll-Position +/- Toleranz liegt und ein Ja/Nein-Ergebnis liefert? Dafür könntest Du IN_RANGE und die Subtraktion und die Addition (für MIN und MAX) verwenden.


Warum generell? Es kommt doch darauf an ... will man abfragen, ob ... oder sicherstellen, dass ... der Wert in einem bestimmten Bereich liegt!? :confused:
Er will...sicherstellen, dass...
Was genau willst Du "sicherstellen"? Ein Ja/Nein-Vergleich ist nur eine Feststellung und keine Sicherstellung. In meinem Wortschatz bedeutet "sicherstellen" daß sich ein Wert nach der Sicherstellungs-Operation garantiert in einem vorgegebenen Bereich befindet.


Wo kommt die "Soll-Position" her? Aus einem HMI? Da müsstest Du bei S7-1500 aufpassen, daß Du "Soll-Position" nur ein einziges mal verwendest, weil zwischen den Verwendungsstellen könnte sich der Wert ändern (durch die HMI-Kommunikation). Also wenn Du mehrmals vergleichen oder verrechnen willst (z.B. >= und <=, oder +a und -b), dann müsstest Du vorher den Wert aus der HMI-Variable in eine zweite Variable kopieren und diese Kopie könntest Du dann mehrfach auswerten/vergleichen/verwenden. Und nach den Vergleichen darfst Du nur noch die überprüfte Kopie weiterverwenden, weil sich ja der Wert in der HMI-Variable nach der Prüfung ändern kann.

Vielleicht schreibst Du noch ein kleines bisschen ausführlicher was Du machen und "sicherstellen" willst.

Harald
 
Zurück
Oben