LabVIEWForum.de
Keithley2000 Messdatenerfassung - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Keithley2000 Messdatenerfassung (/Thread-Keithley2000-Messdatenerfassung)

Seiten: 1 2 3 4 5 6 7 8 9 10 11


RE: Keithley2000 Messdatenerfassung - GerdW - 27.07.2020 08:13

Hallo K2000,

Zitat:wie kann ich denn da mehrere Konstanten an ein Icon heften?
Liest du auch manchmal die Antworten, die du so bekommst?
Das hatten wir doch letzte Woche schon für die Polynomberechnung geklärt!

P.S.: In deiner Formel für rho fehlen etliche Klammern - noch so ein Grund, nicht den Formelknoten zu verwenden…


RE: Keithley2000 Messdatenerfassung - Keithley2000 - 27.07.2020 10:26

Hallo GerdW,

tut mir leid. Hab teilweise immer noch meine Schwierigkeiten damit was die einzelnen Icons wirklichen machen. Muss mich da mehr einlesen und dann bekomme ich das alleine auch hin. Hab allerdings noch eine letzte Frage un wäre froh wenn du mir helfen könntest. In dem angehängten VI hab ich ein paar Formeln eingegeben mit denen ich verschieden Parameter berechne. Ich hab diese "Taschenrechner" Funktion häufiger verwendet was auch gut funktioniert. Wie kann ich aber in der Formel selber einstellen dass er mir den Cosinus in Gradmaß und nicht im Bogenmaß rechnet. Diese beiden Icon mit denen man ein fertiges Ergebnis umrechnen kann hab ich schon gesehen, und mit denen bekomme ich es nicht hin. Die Einzelnen "Cosinus-Terme" in der Formel selbst sollen schon im Gradmaß gerechnet werden. Kann man da einstellen?

[attachment=61085]


RE: Keithley2000 Messdatenerfassung - GerdW - 27.07.2020 10:37

Hallo K2000,

Zitat:Wie kann ich aber in der Formel selber einstellen dass er mir den Cosinus in Gradmaß und nicht im Bogenmaß rechnet. Diese beiden Icon mit denen man ein fertiges Ergebnis umrechnen kann hab ich schon gesehen, und mit denen bekomme ich es nicht hin. Die Einzelnen "Cosinus-Terme" in der Formel selbst sollen schon im Gradmaß gerechnet werden. Kann man da einstellen?
Winkelfunktionen arbeiten immer im Bogenmaß!

Aber man kann LabVIEWs Einheitensystem verwenden und mitteilen, dass man eben Werte im Gradmaß verwenden mag:
[attachment=61086]
Ansonsten sollte dir die Formel "bogen = grad * 2pi/360" schon bekannt sein, oder? Big Grin


RE: Keithley2000 Messdatenerfassung - Keithley2000 - 27.07.2020 13:53

Hallo GerdW,

habe soweit alles Formeln, welche Benutzereingaben verarbeiten fertig und es klappt auch alles. Ganz rechts stehen zwei Formeln für das Sonnenazimut. Je nachdem wie groß mein WOZ ist muss ich eine der Formeln benutzen. Wie kann ich das mit dem "größer gleich" bzw "kleiner gleich" einbringen damit nur eine dieser beiden Formeln ausgerechnet wird und auch nur ein Anzeigeelement auf dem Frontpanel erscheint? Wenn du dir das VI anschaust, versteht du bestimmt besser was ich meine.


[attachment=61087]


RE: Keithley2000 Messdatenerfassung - jg - 27.07.2020 17:06

Na durch einfügen einer Case-Structure:
[attachment=61088]

--

Übrigens, zur Umrechnung Radians<->Degree gibt es zwei fertige VIs in der Palette:
[attachment=61089]

Gruß, Jens


RE: Keithley2000 Messdatenerfassung - GerdW - 28.07.2020 06:25

Hallo K2000,

wenn der einzige Unterschied der Berechnung "vor 12" und "ab 12" der ist, ob man ganz am Ende addiert oder subtrahiert, dann muss man aber doch nicht die komplette Berechnung im Code doppelt ausführen!

Dann reicht es doch aus, wenn man ganz am Ende entscheidet, ob man eben addiert oder subtrahiert:
[attachment=61090]
(Deine bisherige Programmierung nennt man "Rube-Goldberg"…)

Außerdem machst du es dir aber auch besonders kompliziert, wenn du in den Formeln davor Winkel in Bogenmaß bekommst, diese erst in Gradmaß umrechnest und bei der nächsten Formel dann alles wieder in Bogenmaß zurückrechnest! Die andere Vorgehensweise wäre: alle Formeln in Bogenmaß durchrechnen lassen und nur ganz am Ende (bzw. für die Anzeige/Ausgabe) dann alle Bogenmaß-Winkel nach Gradmaß umrechnen!

So könnte die Berechnung auch aussehen, wenn man auf dieses ständige Bogen/Grad-Umrechnen verzichtet:
[attachment=61092]


RE: Keithley2000 Messdatenerfassung - Keithley2000 - 28.07.2020 09:49

Hallo ihr beiden,

danke für eure Lösungsvorschläge. Hab das jetzt mit der Case-Struktur realisiert und es hat auch funktioniert.
@GerdW ich weis, dass das Programm im besten Fall kompakt und übersichtlich sein sollte. Mir geht es zur Zeit aber primär darum, dass alles funktioniert. Werde deine Tipps, die ich allerdings noch nicht immer 100% nachvollziehen kann irgendwann auch einsetzten. Dafür muss ich mich aber weiter in LabView einarbeiten und kann dann das Programm nach und nach verbessern. Zuerst soll das Programm einfach zusammen mit dem aufgebauten Prüfstand laufen und den Rest erledige ich später.


RE: Keithley2000 Messdatenerfassung - Keithley2000 - 30.07.2020 07:57

Hallo Leute,

habe wieder eine Frage. Ich will nun ein HauptVi erstellen in dem meine einzelnen SubVi´s miteinander verbunden sind.

Daten lesen (alle 10 Sekunden) --> Daten berechnen (Ergebnisse sollen auf dem Frontpanel in HauptVi angezeigt werden) --> Rohdaten und berechnete Daten in Textdatei speichern (Jeweils ein SubVi für Rohdaten und eins für berechnete Daten)

Wie bekomme ich die genau verknüpft und schaffe es, dass auf dem Frontpanel das angezeigt wird was ich möchte? Ich füge mal mein Daten lesen, Daten berechnen, und Daten speichern SubVi an. Die beiden SubVi zur Speicherung der Daten sind prinzipiell identisch aufgebaut, nur mit anderen Namen. Ich füge auch mal das HauptVi ein, was zwar noch nicht funktioniert aber damit ihr vielleicht etwas besser sehen könnt was ich meine.

[attachment=61101]

[attachment=61102]

[attachment=61103]

[attachment=61104]


RE: Keithley2000 Messdatenerfassung - GerdW - 30.07.2020 08:38

Hallo K2000,

Zitat:Ich füge mal mein Daten lesen, Daten berechnen, und Daten speichern SubVi an. Die beiden SubVi zur Speicherung der Daten sind prinzipiell identisch aufgebaut, nur mit anderen Namen. Ich füge auch mal das HauptVi ein, was zwar noch nicht funktioniert aber damit ihr vielleicht etwas besser sehen könnt was ich meine.
Ick gloob ick spinne… Big Grin

Wenn du mehrere VIs in einem Projekt verwalten willst, dann solltest du auch ein LabVIEW-Projekt anlegen/verwenden. Wo ist deine lvproj-Datei?
VIs mit Datum und "subVI" im Namen zu benennen finde ich sehr lästig. Warum nicht einfach ein Schema wie "Projektkürzel_Berechnung Daten.vi"?
Wenn du schon VIs anhängst, dann sollten sie auch so benannt sein, wie sie im MainVI erwartet werden!
Wenn du mehrere VIs/Dateien anhängst, dann machst du dir und uns die Arbeit leichter, wenn du alles in einem ZIP verpackst!
Und dann bitte auch gleich das komplette Projekt (bzw. dessen Ordner) in das ZIP packen!
Anstatt im Blockdiagramm die sehr langen VI-Namen anzeigen zu lassen, solltest du eher mal vernünftige VI-Icons erstellen - dann brauchst du diese langen Namen nicht anzeigen zu lassen! (Styleguide/Software-Dokumentation!)

Und:
Wenn du über die Datumsangabe eine Versionierung deiner Softwareentwicklung vornehmen willst, solltest du gleich mal über ein SCC-Tool (Source Code Control) nachdenken!

Zu den VIs selbst:
Viele unserer Vorschläge hast du noch nicht umgesetzt.
Manches wird nicht besser:
Cluster immer typdefinieren. In Cluster, die zur Datenweitergabe zwischen subVIs genutzt werden, gehört mMn keine Grafik…
Wozu überhaupt diese Cluster? Im DatenEinlesen-subVI wird ein Array eingelesen und in einen Cluster umgewandelt. Im Speichern-VI wird dieser Cluster dann wieder in ein Array umgewandelt, um die Textkonvertierung zu vereinfachen…
Wozu muss man ein leeres Array initialisieren, um dann mittels InsertIntoArray Elemente einzufügen? Wenn du ein Array bauen willst, dann verwende einfach BuildArray!
Wozu muss man ein Array aus Stringkonstanten zusammenbauen, wenn man auch einfach eine "Array of String"-Konstante ins Blockdiagramm packen könnte?
Viel zu viele Sequenzstrukturen! Die sind (fast) immer unnötig, wenn man THINK DATAFLOW! beachtet!
Öfter mal Autocleanup benutzen!
Der Standard-Connectorpane ist das 4-2-2-4-Muster, wenn du mehr brauchst, solltest du gut darüber nachdenken.
Wozu benötigst du für eine simple Multiplikation (P_el) ein ExpressVI? Echt jetzt?

Dein DatenSpeichern-subVI könnte auch so aussehen:
[attachment=61106]

Aus deinem MainVI:
Zitat:Daten berechnen Vi funktioiert an sich, auch wenn es etwas umständlich ist. Aber noch kommen die Daten nicht so an wie gedacht und werden auch nicht verarbeitet
Wie sollen die Daten auch im MainVI verarbeitet werden, wenn das DatenLesen-subVI nie Daten liefert? (Das hättest du mit simplem Debugging auch selbst feststellen können!)
Ist halt blöd, wenn ein subVI auf einen Stopp-Button wartet, aber sein Frontpanel nicht angezeigt wird!
Wozu überhaupt die Schleifen mitsamt Stopp-Button im subVI, wenn doch dein MainVI die Kontrolle übernehmen sollte???

Zitat aus dem NI-Forum:
Zitat:Yes, it help to have peers, especially to gain a good "programmer conscience".
Make everything with someone else in mind, even if that person is "future you". Not an easy task...
If it feels stupid to make, it probably is.
Ich stimme dem voll und ganz zu…


RE: Keithley2000 Messdatenerfassung - Keithley2000 - 30.07.2020 09:58

Hallo GerdW,

ohje ohje. Wollte dich nicht aufregen aber das habe ich wohl geschafft.

Zu deinem ersten Abschnitt: Hab ein Projekt angelegt und da sind auch alle VIs drin. Die Dateinamen sind möglicherweise umständlich aber ich komme so am besten zurecht. Wusste nicht dass ich auch das ganze Projekt hochladen kann. Tut mir Leid wegen der unnötigen Arbeit.

Zu deinem zweiten Abschnitt: Also was ich nicht verstehe. Du hast hier jetzt ein neues "Daten speichern" VI gebaut. in Diesem geht vorne ein Cluster rein. Also muss doch aus dem VI "Daten lesen" auch ein Cluster rausgehen, ansonsten kann ich die doch gar nicht verbinden. Und aus dem VI "Berechnung" muss doch auch ein Cluster rausgehen damit ich das mit dem "Daten speichern physikalische Werte" verbinden kann oder?

Zum HauptVI: Also muss ich die While-Schleifen in den SubVIs entfernen und brauch nur eine einzige While-Schleife inkl Zeit-Ansage von 10 Sekunden im HauptVI selbst?