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!
Ich habe ein PREMA 5017 Multimeter, mit dessen Hilfe ich Temperaturen an einem Testaufbau auslesen möchte, und diese in eine Datei abspeichern. Die Temperatursteuerung wird ebenfalls mit Hilfe dieser Sensoren bewerkstelligt.
Das Lesen der einzelnen Meßkanäle über RS232 geht ganz gut, das Umschalten der Meßkanäle bringe ich bis jetzt nur das Frontpanel hin, soll aber automatisch erfolgen.
Ich will, gesteuert durch ein Zeitintervall, oder durch ein Ereignis die Zahlen 1 bis 5 (oder mehr) erzeugen. Diese dann an einen anderen Programmteil weitergeben, und zusätzlich ein Steuersignal erzeugen, welches an eine Case-Struktur übergeben wird.
Ich schreibe "Mxx" für die Kanalwahl, und "RD?", um das Multimeter zur Ausgabe des Meßwertes zu veranlassen.
Eine For-Schleife erzeugt zwar die Zahlen, gibt diese aber nicht direkt weiter. Gibt es eine Lösung?
Vielen Dank für die Mühe. Der Vorschlag zeigt nur die Konvertierung und das Einfügen des Zustandes der For-Schleife in den String. Ich möchte aber den Wert außerhalb der For-Schleife weiterverwenden. Dieser wird in der Schleife indiziert, und wenn ich das Auto-Indizieren abschalte, bin ich genauso naß wie vorher: Es funktioniert nicht! Ich habe hier ein Beispiel angefügt: schleife.vi
Unter einer Programmiersprache ist die Lösung simpel in einer For-Schleife zu lösen:
for n=1 to 5 (5 als Beispiel)
n in den Write-String einfügen (hier M01 bis M05)
Write-String in die serielle Schnittstelle schreiben
Lesebefehl abschicken (RD?)
übertragenen Wert aus Schnittstelle in Datei schreiben
Abfrage ob Schnittstelle einen String geliefert hat
end
Vielleicht kann sinnvollerweise auch ein Script eingefügt werden, der die Arbeit erledigt? Nur wo finde ich eine Beschreibung (tutorial) der Script-Sprache?
' schrieb:for n=1 to 5 (5 als Beispiel)
n in den Write-String einfügen (hier M01 bis M05)
Write-String in die serielle Schnittstelle schreiben
Lesebefehl abschicken (RD?)
übertragenen Wert aus Schnittstelle in Datei schreiben
Abfrage ob Schnittstelle einen String geliefert hat end
So, den rot dargestellten Teil hast du in LV erstellt. Jetzt machste noch deine For-Schleife a weng größer und packst den Rest auch rein. Fertig. Wozu soll man da eine Script-Sprache brauchen?
Und wenn du alle 5 Strings für später brauchst, dann lass dir ein Array of Strings erstellen, indem du Auto-Indexing (Rechtsklick auf die Verdrahtung am Rand der Schleife) aktivierst.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
' schrieb:So, den rot dargestellten Teil hast du in LV erstellt. Jetzt machste noch deine For-Schleife a weng größer und packst den Rest auch rein. Fertig. Wozu soll man da eine Script-Sprache brauchen?
Und wenn du alle 5 Strings für später brauchst, dann lass dir ein Array of Strings erstellen, indem du Auto-Indexing (Rechtsklick auf die Verdrahtung am Rand der Schleife) aktivierst.
Gruß, Jens
Das ist ja das Problem, ich brauche die 5 Strings sofort, wenn sie in der Schleife anstehen. Ich bekomme erst Ergebnisse, wenn die FOR-Schleife abgelaufen ist. Dann ist aber alles zu spät. Oder gibt es eine Möglichkeit, eine entsprechende Schleife "zu Fuß" aufzubauen? Ich dachte, ein Script könnte eine Lösung sein.
Ich muß immer: 2 x String senden - Lesen - warten - geänderten String senden - etc. Die Änderung des Strings erfolgt mit der Gesetzmäßigkeit einer FOR-Schleife, so wie Jens es gezeigt hatte (meine Lösung funktionierte ähnlich).
Ich habe auch versucht, die RS232-Teile in die FOR-Schleife einzubringen. Das funktionierte auch nicht.
Hmm, die Links hatte ich so direkt nicht gefunden -_-
Jedenfalls: Vielen Dank!
das hat mir sehr geholfen!
Einen ähnlichen Aufbau hatte ich schon einmal, aber ich kann nicht mehr nachvollziehen, warum er nicht funktionierte.
Jetzt ist mir auch klar, daß die Ausgabe der FOR-Schleife als Array sinnvoll ist. Diese wird ja verwendet, um eine Sammlung von Daten zu produzieren, und diese steht am Ende am Ausgang der Schleife als Array!
Das war eigentlich nur der erste Schritt: Jetzt muß ich aus dem Array einen Wert, oder mehrer auswählen, um damit die Temperatur zu regeln. Dazu werde ich aber neu posten.
Nebenbei, für Mitleser:
Zum Einfügen des Schleifenwertes hatte ich die Funktion "String Konvertieren" verwendet. Jetzt heißt es, die Zahl der angezeigten Werte soll zweistellig sein. Diese Funktion liefert aber führende Leerzeichen bei mehrstelliger Ausgabe. Wie Jens vorher im Beispiel zeigte, ist die Funktion "Wert Formatieren" angesagt. Hier bekomme ich die führenden Nullen, wie ich sie zur Steuerung des Digital-Multimeters benötige.
Die Eigenschft dieser Funktionen ist in den Hilfetexten nicht so deutlich zu erkennen. Auch daß der Integer aus der Schleife anschließend als String erscheinen soll, unter "formatieren" und nicht unter "konvertieren" zu finden ist. Aber zum Glück gibt es dieses Forum!
Jetzt noch das Ergebnis zum Auslesen eines PREMA 5017 über RS232: