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!
14.12.2012, 11:46 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2012 11:47 von Selectah83.)
Von einem Vorgänger habe ich ein ähnlich aufgebautes (aber komplexeres) Programm bekommen, welches ich nachgebaut habe um die Systematik zu verstehen.
Verstehe nicht, warum das Scaling mit dem invertierten Polynom notwendig ist. Eigentlich müsste doch eine der beiden Scaling Funktionen ausreichen, oder nicht?
Wenn das Programm eine Wertänderung des Polynoms bekommt, läuft es nicht mehr und es tritt der Error -200077 auf. Dabei sollte der Scaling Wert dem Task doch relativ egal sein, oder nicht?
Zitat:Verstehe nicht, warum das Scaling mit dem invertierten Polynom notwendig ist.
Weil die Funktion "Skalierung erzeugen" dies so verlangt. Steht in der Kontexthilfe...
Zitat:Dabei sollte der Scaling Wert dem Task doch relativ egal sein, oder nicht?
Nicht, solange du beim "Kanal erzeugen" eine Skalierung vorgibst und auch noch deren Einheit verwenden willst...
Zitat:Wenn das Programm eine Wertänderung des Polynoms bekommt, läuft es nicht mehr und es tritt der Error -200077 auf.
Was für eine Änderung? Beispielwerte?
Warum überhaupt die Skalierung per Polynom? Du rechnest doch nur mit 2 Stützstellen, dafür reicht die Skalierung per "Linear" oder "Bereiche umrechnen" locker aus - und die verlangen keine inversen Polynome...
vielen Dank für deine rasche Antwort.
Da es sich im Eigentlichen um ein wesentlich komplexeres Programm handelt bei dem mein Vorgänger in Betracht gezogen hat, komplexere Polynome ebenfalls zu bearbeiten, sieht das Programm vor, Polynomwerte an anderer Stelle einzupflegen. Diese Polynomwerte werden aus einer TDMS Datei ausgelesen und übergeben. Der programmiertechnische Aufwand wäre jetzt zu hoch, das ganze auf Linearität umzuschreiben.
Änder ich jetzt den Wert a0 oder a1 des Polynoms, so tritt sofort der Fehler auf. Ändert man den Wert 7812,5 auf 400 so tritt der besagte Fehler auf. Ich lese über das NI Modul verschiedene Sensoren aus, die unterschiedliche Polynome verlangen. So ganz verstehe ich aber noch nicht den Zusammenhang zwischen dem auftretenden Fehler und dem Polynom.
In dem komplexeren Programm gibt es Sensoren, die mir Temperatur, Druck und Volumenstrom anzeigen sollen. Es wird ebenfalls schon in der TDMS Datei nach den unterschiedlichen SI Einheiten differenziert.
Was genau hat denn das Verwenden der gewünschten Einheit mit der Skalierung des Polynoms zu tun?
Setze ich z.B. zwei verschiedene Drucksensoren für den Bereich von 400 und 600bar ein, so ändert sich doch automatisch bei einem genormten Signal per Stromstärke von 4-20mA das Polynom.
ok, du verwendest anscheinend auch kompliziertere Polynome als nur 1. Ordnung...
Guck dir die Fehlermeldung mal genau an, da wird nicht nur der Fehlercode genannt, sondern auch eine Begründung dafür. Genau genommen kommt diese Fehlermeldung von der Funktion "Kanal erzeugen", da du dort ein festes Min/Max vorgibst. Dieses Min/Max hast du als Stromwert vorgegeben, obwohl du dies aber schon in skalierten Einheiten angeben solltest!
ok. Das macht definitiv auch Sinn. Das hatte ich vorher aber auch schon ausprobiert und es hatte ebenfalls eine Fehlermeldung gegeben. Ich versuchs aber nochmal. Melde mich dann später.
Also ich habe meine Werte jetzt all geändert. Nun schreibt er mir aber beim SensorMin Wert vor, dass der Bereich genau zwischen -199,2 und -200,8 z.B. liegen soll.
Wenn ich jetzt z.B. einen Sensor hätte, der von -100 bis -150 ein verändertes Polynomverhalten hätte, was ich abbilden möchte, ginge das gar nicht!?
Diese Mindest- und Maximalwerte sind mir immer noch ein Rätsel. :/
in den Fällen, wo ich die Skalierung nutze (aber nur mit linearer Skalierung/2Punkt), rechne ich mir immer aus elektr. Messbereich und Skalierung den physikalischen Messbereich aus und gebe den als Min/Max vor. Hat immer funktioniert!
Mit Polynomen habe ich bei DAQmx noch nicht gearbeitet. DAQmx-Skalierungen nutze ich momentan eher selten, da ich bei unseren Prüfständen mit 2 Polynomen pro Messwert arbeite (eines für die Messstrecke ohne Sensor, ein Polynom für den Sensor)...
ich arbeite an dieser Stelle nun auch wie von dir vorgeschlagen mit der Funktion "Linear". Dennoch kann ich immer noch nicht nachvollziehen warum diese Min- und Max-Werte von den DAQmx Treibern erwartet werden. In meinen Augen kann das der Software scheissegal sein, wie groß ein Wert werden kann. Bei 18 unterschiedlichen Sensoren mit diversen Polynomen ist es echt umständlich alle Polynomgrößen (auch wenn sie noch so linear verlaufen) auf den Wert anzupassen, der gewünscht wird. Das sind in meinen Augen Belanglosigkeiten, die unnötig aufhalten. Wüsste gern mal von einem LabVIEW Guru, was für einen tieferen Sinn (den sie wohl hoffentlich auch haben) haben...
ich arbeite an dieser Stelle nun auch wie von dir vorgeschlagen mit der Funktion "Linear". Dennoch kann ich immer noch nicht nachvollziehen warum diese Min- und Max-Werte von den DAQmx Treibern erwartet werden. In meinen Augen kann das der Software scheissegal sein, wie groß ein Wert werden kann. Bei 18 unterschiedlichen Sensoren mit diversen Polynomen ist es echt umständlich alle Polynomgrößen (auch wenn sie noch so linear verlaufen) auf den Wert anzupassen, der gewünscht wird. Das sind in meinen Augen Belanglosigkeiten, die unnötig aufhalten. Wüsste gern mal von einem LabVIEW Guru, was für einen tieferen Sinn (den sie wohl hoffentlich auch haben) haben...
Hallo Selectah,
bin zwar kein Guru aber dennoch mein Erklärungsversuch:
Aus der Hilfe-DAQmx Create Virtual Channel
Input Limits (Maximum and Minimum Values)
Input limits are the maximum and minimum values you expect to measure, after any scaling, including custom scaling. Input limits are sometimes confused with device range. Device range refers only to the input range of a particular device. For instance, the device range for a DAQ device might be 0 to 10 V, but that device might be used with a temperature sensor that outputs 100 mV for every 1 °C. The input limits in that case could be 0 to 100, with 10 V corresponding to 100 °C.
Input limits in a smaller range can improve the precision of your measurement. If, in the previous example, you knew that the temperature would never be higher than 50 °C, you could choose a minimum value of 0 and a maximum value of 50. The device can then detect smaller differences in temperature because it is digitizing a voltage between 0 and 5 V, rather than 0 and 10 V.
Beispiel:
Einige Devices /Module können verschiedene Spannungsbereiche messen z.B. ±60 V, ±15 V, ±4 V, ±1 V, ±125 mV NI9219. Wenn Du 100mV messen willst ist der Spannungsbereich 125mV auszuwählen da dieser die höchste Auflösung/Messgenauigkeit bietet.