Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
01.11.2015, 09:43 (Dieser Beitrag wurde zuletzt bearbeitet: 02.11.2015 09:10 von jg.)
Hab vor kurzem angefangen, LabView in der Technikerschule zu lernen und haben da sone kleine "Hausaufgabe" bekommen.
Aufgabenstellung:
Wie lange benötigt LabView, um herauszufinden, wie viele Iterationen zum Erreichen einer bestimmten Summe notwending sind? Schreiben Sie ein geeignetes VI nach folgendem Muster:
Summe = 1/1 + 1/2 + 1/3 + 1/4 + ... +1/i
Also, die Interationen, Zeit in ms und Zeit in s ist kein Problem, allerdings weiß ich nicht wie ich das mit der Summe anstellen soll? Also ich geb über ein Bedienelement ne Zahl ein und das VI soll dann solange das hier machen:
Summe = 1/1 + 1/2 + 1/3 + 1/4 + ... +1/i
bis es die eingegebene Zahl erreicht hat, nur keine Ahnung wie ich das anstellen soll
(01.11.2015 09:43 )dauce schrieb: LabView in der Technikerschule zu lernen und haben da sone kleine "Hausaufgabe" bekommen.
Hausaufgaben sind zum selber machen - sogar zum selber überlegen ...
Was habt ihr denn schon alles gelernt (bzw. gehört haben sollen): Case-Struktur, Vergleichsoperation, For-Schleifen, Events, Queues, While-Komponente, Melder, Schieberegister, Lokale Variablen?
Mach einen Vorschlag und poste das Blockdiagramm als Bild (oder als VI).
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Ist mir schon klar, bringt mir nur nichts wenn ich nich drauf komm.. Zuletzt haben wir die Schleifen besprochen, Case-Strukturen, Arrays etc hatten wir noch nicht.
Ich hätte einfach den Kehrwertbaustein genommen und dann halt Konstanten angelegt aber da muss ich ja unendlich viel machen, dass muss iwie kürzer bzw einfacher gehen..
(01.11.2015 09:43 )dauce schrieb: Also ich geb über ein Bedienelement ne Zahl ein und das VI soll dann solange das hier machen:
Summe = 1/1 + 1/2 + 1/3 + 1/4 + ... +1/i
bis es die eingegebene Zahl erreicht hat, nur keine Ahnung wie ich das anstellen soll
Ich verstehe zwar die Aufgabenstellung nicht so ganz - grundsätzlich ist es aber so, dass man sich in LV eine Whileschleife nimmt und in ihr die Rechnung solange ausführt, bis das gewünschte Ergebnis erreicht ist. Das sich mit jedem Durchlauf ändernde Zwischenergebnis übergibt man dem nächsten Schleifendurchlauf per Schieberegister.
(01.11.2015 12:16 )dauce schrieb: Zuletzt haben wir die Schleifen besprochen,
Zitat:aber da muss ich ja unendlich viel machen
Da weist du doch schon alles: Eine Schleife kann den Inhalt der Schleife unendlich oft machen. Hast du auch schon gehört, was du mit dem N oben links an der For-Schleife machen kannst? Und in der Schleife befindet sich ein i - das auch noch genauso heißt wie das, was bei dir unter dem Bruchstrich steht.
Sagt die auch Schieberegister was?
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Ach klar, wenn ich zu dem i der schleife 1 addier dann hab ich ja mein 1/i .. i sind in dem fall die Schleifendurchläufe.. hab nich daran gedacht, dass ich das einfach von da abrufen kann.. Danke ich denk so passt es
das ganze hat jetzt nur den Schönheitsfehler, dass deine Zeitberechnung in der Schleife mit ähnlichem Rechenumfang wie deine eigentliche Summenbildung ausgeführt wird. Somit berechnest du nicht nur die Zeit, die für die Summenbildung nötig ist.
nachdem du das Problem schon mal grundlegend selbst gelöst hast, kann ich ja meine Version posten:
Du solltest beachten:
- wenn sich Control/Indicator in der Schleife befinden, wird die Zeitmessung nicht unerheblich beeinflusst. Nicht nur die Rechnung selbst benötigt Zeit, sondern auch das Darstellen der Ergebnisse auf dem FP. Deshalb liegen meine Controls/Indicator nicht in der Schleife…
- die Rechengenauigkeit ist durch den Datentyp begrenzt. Einfach mal die Links in meiner Signatur beachten…
- Es gibt neben der (DBL-)Rechengenauigkeit ein weiteres Limit: das "i" in der Schleife zählt nur bis 2^31-1! Und dieses Limit erreichst du, sobald du die zu ermittelnde Summe auf Werte >22 stellst… (22.06 benötigt 2137246884 Iterationen). Dieses Limit ließe sich mit einem weiteren Schieberegister aber leicht lösen, dies überlasse ich aber dir…
das Problem mit der Zeit versteh ich. Allerdings hatte ich diese Sequenzstruktur noch nicht, es sollte aber auch schon besser werden, wenn ich das in ne extra Schleife packe oder? Wie ich das mit dem limitierten i löse weiß ich noch nicht, muss ich aber, weil in der Angabe der Wert von 36 steht.
01.11.2015, 16:06 (Dieser Beitrag wurde zuletzt bearbeitet: 01.11.2015 16:15 von Lucki.)
Ich würde hier sowieso das fortlaufende i lieber mit einem eigenem Schieberegister erzeugen - man hat dann keine Konvertierung bei jedem Durchlauf, und die von Gerd erwähnte Beschränkung von i entfällt. Die andere Beschränkung bleibt natürlich bestehen. Sie ließe sich mit dem Format ext statt dbl etwas weiter hinausschieben. Aber die Diskussion dieser Problematik geht sowieso über das hinaus, was hier der Lehrer von seinem Schüler erwartet.