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!
seit einigen Tagen bin ich Labview-Anfänger, genau gesagt seit 3 Wochen. Hoffe das mir jemand behilflich sein kann.
zu meinem Problem (Fragen):
erstmal zum verständnis. Wenn ich Daten über ein rs-232 kabel übertrage, was ist dann Unterschied zu den durch die NI module erfassten Daten?
Hab momentan das Problem, dass ich eine Regelung mit drei Geräten hinbekommen muss. Alle drei geräte(MFC, Spritzenpumpe, Drucksensor) sollen über eine Brainbox mit dem pc über rs232 verbunden werde.
Von diesen drei Geräten habe ich bis jetzt die Spritzenpumpe und über das "visa vi lesen und schreiben" konnte ich befehle, die ich vom Hersteller bekommen habe, an die spritzenpumpe senden. Das habe ich hinbekommen.
Bei den beiden anderen schaue ich noch, aber sollte ebenso klappen.
ist es aber überhaupt theoretisch möglich den volumenstrom von spritzenpumpe und dem mfc in labview so zu regeln, dass sie sich dem druck eines behälters anpassen; wenn alle Komponenten direkt verbunden mit der brainbox über rs232 und dem pc mit labview kommunizeren. sollwert wäre der druck im behälter, denn ich über den drucksensor erhalte und abhänging vom fehler (drucksollwert minus druckistwert) sollen die volumenströme mehr oder weniger werden. aber wie gesagt kommunikation über rs232 und brainbox.
wie kann ich wenn ich digitale werte vom drucksensor erhalte, den volumenstrom von spritzenpumpe und mfc in labview so regeln, dass sie sich dem druck anpassen.
Danke im Vorraus. Hoffe die frage ist micht blöd gestellt bzw. einigermaßen vernunftig gestellt. wie gesagt bin anfänger
Brainbox ist nicht gleich Brainbox. Da solltest Du den Typ noch nennen! Die Boxen die ich bisher kenne, richten im PC einen "normalen" Port (unter Windows im Gerätemanager) ein.
Eine direkte Kommunikation z.B. über TCP/IP (je nach Brainbox) ist zwar möglich, aber war bei mir bisher nicht nötig. Allerdings verwende ich auch eine "statische" Netzwerkumgebung.
Im übrigen ist es bei unbekannten Geräten hilfreich, diese erstmal direkt (z.B. mit Laptop vor Ort) an den PC anzuschliessen um die Grundfunktionen zu testen. Dann kann man bei späteren Verbindungsproblemen ausschließen, dass es sich um ein Verständnisproblem handelt.
Grundsätzlich kannst Du mit LV "alles" regeln und programmieren. Aufpassen muss man immer dann, wenn irgendetwas zeit- und/oder sicherheitskritisch ist.
(Die Notabschaltung eines AKW bei Übertemperatur würde ich nicht einem PC am anderen Ende des Netzwerkes überlassen. Egal mit welcher Software.....)
danke für die schnelle Antwort. Das datasheet der Brainbox ist im Anhang beigefügt. Das ist die US-701 von Brainboxes. Es sollen drei Geräte mit jewiels einem RS232 Anschluss mit der Box verbunden werden, wobei diese über den USB-Anschluss am PC verbunden ist.
Ich werde die beiden anderen Geräte auch direkt am PC anschliessen und ausprobieren. Danke für den Hinweis
Für den Fall, dass alle wunderbar funktionieren, benötige ich auch Tipps, wie ich das mit der Regelung angehen soll. Es geht auch mehr über die Möglichkeit die mir LabVIEW da bietet und welche Ihr für mich am geeignetsten hält.
Über VISA schaffe ich es den Volumenstrom der Spritzenpumpe mit folgendem Befehl zu ändern: set\srate\s20\r\n ....Was bedeutet das der Volumenstrom auf 20 ml/min geändert wird.
Wenn ich mit Labview jedoch die Daten des Drucksensors empfange, die über ein digitales Ausgangssignal über RS282 kommen, möchte ich das der Volumenstrom der Spritzenpumpe sich dementsprechend anpasst; Also bei hohem Druck geringerer Volumenstrom und bei niedriegerem Druck höherer Volumenstrom. Quasi den Volumenstrom der SP in Abhängigkeit vom Druck in dem nach der SP angeordneten Behälter regeln. Wie kann LabVIEW über eine eigene Regelung diese Befehle an die Spritzenpumpe senden. Das verstehe ich nicht ganz. Desweiteren welche Eigenschaften muss die Spritzenpumpe hierfür haben
Ich gehe quasi direkt vom PC an die Geräte. Hat doch wahrscheinlich damit zu tun, dass ich digitale Daten in Analoge umwandeln muss. Oder irgendwie so :\ Hilfe,Messtechnikexperte war ich noch nie
Danke euch,
hassayo
27.01.2015, 09:46 (Dieser Beitrag wurde zuletzt bearbeitet: 27.01.2015 11:02 von Nordvestlys.)
(26.01.2015 19:29 )hassayo schrieb: Das ist die US-701 von Brainboxes. Es sollen drei Geräte mit jewiels einem RS232 Anschluss mit der Box verbunden werden, wobei diese über den USB-Anschluss am PC verbunden ist.
Gut, damit würde ich keine größeren Probleme erwarten. Für den PC sieht es dann einfach so aus, als ob er vier zusätzliche COM-Ports hat, die man dann ganz "normal" benutzen kann.
hassayo schrieb:Über VISA schaffe ich es [...] zu ändern
Auch gut! Erstmal einfache Dinge ausprobieren um zu lernen/testen wie alles funktioniert.
hassayo schrieb:Wenn ich mit Labview jedoch die Daten des Drucksensors empfange, die über ein digitales Ausgangssignal über RS282 kommen, möchte ich[...]
Nachdem Du die "prinzipielle" Kommunikation zu den Geräten getestet hat, geht hier die "eigentliche" (und interessante) Entwicklungsarbeit los. Den ersten Schritt hast Du dabei bereits erledigt: Du hast definiert was das ganze System überhaupt machen soll. Klingt banal, wird aber oft vergessen.
Als zweites wäre zu klären, wie das ganze physikalisch voneinander abhängt. Daraus ergibt sich dann eine Art Vorschrift, bei der es (noch) egal ist, ob sie von einem Menschen oder einem PC abgearbeitet wird. Das könnte eine einfache Tabelle sein (z.B. wenn Messwert X = 1, 2, 3 oder 4 dann Ausgangswert Y = 400, 200, 100 oder 50). Oder eine (beliebig komplizierte) Formel oder eine Regelung (z.B. erhöhe solange Y bis der Messwert X einer Vorgabe entspricht.)
Zu diesem Schritt schreibe ich weiter unten noch mehr.
Der dritte Schritt ist dann ein ganz allgemeiner Programmablaufplan. Dabei ist es gar nicht wichtig, ob das mit Texten, genormten Symbolen oder ein paar freien Kommentaren und Pfeilen gemacht wird. Wichtig ist nur, dass alles in möglichst eindeutige Häppchen zerlegt wird.
Erst dann kommt die "eigentliche" Programmierung. In unserem Fall mit Labview. Und dabei gibt es hier dann auch entsprechende Unterstützung. (inkl. etwaiger Verbesserungsvorschläge zu den vorherigen Schritten.) Aber das "Grundgerüst" sollte schonmal stehen.
Danach kommen "nur" noch Test, Debugging, Test, Verbesserung, Test, noch ein Versuch, Test, Finetuning, ....
Nun noch (m)ein Tipp zum zweiten Schritt: Auch dabei kann Labview helfen: Erstelle Dir erstmal mehrere VIs mit denen Du Deine verschiedenen Geräte bequem(!) steuern bzw. auslesen kannst.
Damit hast Du dann drei Vorteile in einem: Erstens kannst Du schonmal die wichtigsten Kommunikationsbefehle intensiver testen und etwaige Fehler korrigieren bevor es komplizierter wird. Zweitens lernst Du noch mehr Labviewgrundlagen (wiederum bevor es kompliziert wird) und drittens hast Du eine halbwegs einfache Möglichkeit zu erkennen, wie die verschiedenen Geräte und Parameter eigentlich voneinander abhängen.
(Welche Art der Steuerung/Regelung ist sinnvoll, wie schnell muss das gehen, wie genau muss das sein, etc....)
Vielleicht sind diese physikalischen Zusammenhänge ja bereits klar (Glückwunsch!) oder die Geräte lassen sich auch manuell bedienen. Trotzdem würde ich aus Gründen des Lerneffektes zunächst solche einfachen Versuche machen.
Und danach geht es dann weiter zu den komplizierten Sachen.
(26.01.2015 17:12 )hassayo schrieb: Wenn ich Daten über ein rs-232 kabel übertrage, was ist dann Unterschied zu den durch die NI module erfassten Daten?
Wie Du schon selbst sagst: Die Ni-Module erfassen in der Regel Daten und übertragen sie nicht nur, so wie dein Konverter. Das läßt sich nicht vergleichen. Wenn es Dir aber um den direkten Vergleich von Modulen 4*seriell to USB geht, da gibt es eben die Preisgruppe für unter 50$ und die Preisgruppe für einige Hundert $. Ni spielt in der oberen Liga mit, genau so wie Dein Konverter. Was das technisch für einen Unterscheid macht, hätte ich auch gern mal gewußt. Vielleicht kannst Du es sagen, du hast dich ja für dieses edle Teil entschieden.
Gruß Ludwig
Anzeige
29.01.2015, 16:10 (Dieser Beitrag wurde zuletzt bearbeitet: 29.01.2015 16:16 von hassayo.)
Danke erstmal für Eure Tipps. Klingen trivial, aber da sollte man als Anfänger erstmal drauf kommen. Es lebe die Erfahrung
Also die Brainbox habe ich auf Grund des line drivers geholt...ein integrierter Leitungsverstärker, den andere "Billig-Boxen" nicht haben. Verbesserte Übertragung von Signale und Minderung der Störeinflüsse. Ebenso FIFOs von 384 bytes. War auch von den Boxen das seriöseste Angebot.
Bei der Spritzenpumpe die ich habe kann ich den Volumenstrom der in der Spritze sich befindenden Flüssigkeit nicht änderen, während die Pumpe läuft. Daher musste ich zwischen Volumenstromänderung und Pumpenstart ein Stopbefehl einrichten (denke zumindest das ich es muss). Wie kann ich die Zeit, in der die Pumpe stoppt und Den Volumstrom ändert so minimal wie möglich halten. Sodass die Pumpe kontinuierlich fördert, besser gesagt so kontinuierlich wie möglich.
Hatte da an eine Sequenzstruktur gedacht, hab nur keinen Plan, wie ich das umsetzen soll bzw. ob es überhaupt der richtige Gedanke ist.
Ausserdem würde ich gerne als Volumenstrom Fließkommazahlen verwenden. Aber im String erkennt er die Nachkommazahlen nicht; hat wahrscheinlich was mit Punkt und Komma zu tun. Weiss nicht wie ich das ändern kann. Was würdet Ihr mir in dem Punkt empfehlen zu tun.
Danku und
MfG,
hassayo
29.01.2015, 17:10 (Dieser Beitrag wurde zuletzt bearbeitet: 29.01.2015 17:13 von GerdW.)
Zitat:Aber im String erkennt er die Nachkommazahlen nicht; hat wahrscheinlich was mit Punkt und Komma zu tun. Weiss nicht wie ich das ändern kann. Was würdet Ihr mir in dem Punkt empfehlen zu tun.
Ja, das hat sehr wahrscheinlich mit Punkt/Komma zu tun…
1. Empfehlung: Den Rechner komplett auf "englische" Zahlenformate umstellen: Punkt als Dezimaltrennzeichen, Komma als Tausendertrennzeichen.
2. Empfehlung: Den String korrekt formatieren: Die von dir verwendete Funktion hat noch weitere Eingänge und die Hilfe erläutert sie auch. Oder eine andere Stringformatierfunktion mit dem Formatstring "%.;%f" verwenden…
3. Empfehlung: In den LabVIEW-Optionen das Häkchen bei "Dezimaltrennzeichen des Betriebssystems verwenden" wegmachen.
Empfehlungen wirklich in dieser Reihenfolge und Wichtigkeit (mMn).
Die erste gilt für alle Messrechner: Messgeräte verwenden zu 99% englische Zahlenformate.
Die zweite bedeutet: der Programmierer weiß, was er tut und kümmert sich aktiv um Fehlervermeidung.
Die dritte delegiert das an LabVIEW und gilt dann dummerweise nur in der Entwicklungsumgebung…
Zitat:Aber im String erkennt er die Nachkommazahlen nicht; hat wahrscheinlich was mit Punkt und Komma zu tun. Weiss nicht wie ich das ändern kann. Was würdet Ihr mir in dem Punkt empfehlen zu tun.
Ja, das hat sehr wahrscheinlich mit Punkt/Komma zu tun…
1. Empfehlung: Den Rechner komplett auf "englische" Zahlenformate umstellen: Punkt als Dezimaltrennzeichen, Komma als Tausendertrennzeichen.
2. Empfehlung: Den String korrekt formatieren: Die von dir verwendete Funktion hat noch weitere Eingänge und die Hilfe erläutert sie auch. Oder eine andere Stringformatierfunktion mit dem Formatstring "%.;%f" verwenden…
3. Empfehlung: In den LabVIEW-Optionen das Häkchen bei "Dezimaltrennzeichen des Betriebssystems verwenden" wegmachen.
Empfehlungen wirklich in dieser Reihenfolge und Wichtigkeit (mMn).
Die erste gilt für alle Messrechner: Messgeräte verwenden zu 99% englische Zahlenformate.
Die zweite bedeutet: der Programmierer weiß, was er tut und kümmert sich aktiv um Fehlervermeidung.
Die dritte delegiert das an LabVIEW und gilt dann dummerweise nur in der Entwicklungsumgebung…
Persönlich finde ich Option 2 die Beste! Du kommunizierst mit einem bestimmten Device das ein bestimmtes Format erwartet und erstellst einen Treiber dazu. Dann ist es sinnvoll um diesen Treiber auch dahingehend zu programmieren, dass er explizit das Format erzeugt/erwartet, das vom Gerät verwendet wird. Wenn man dann den Treiber später auf einer Hinterwald Version von Windows installiert (oder unter Mac oder Linux oder NI Realtime) funktioniert es noch immer wie gewohnt.
Zu Option 3 ist zu sagen, dass die entsprechende Option ins LabVIEW.INI file eingetragen wird. Indem man diesen Eintrag ins entsprechende <myapp>.ini file übernimmt, kann man das auch für ein Built Executable erreichen.
erstmal danke GerW und rolfk für die Tipps.....ich habe mich für die 2. Option entschieden und die verwendete Funktion ergänzt.
Für das zweite Problem mit der Zeit also;
Zitat:"Bei der Spritzenpumpe die ich habe kann ich den Volumenstrom der in der Spritze sich befindenden Flüssigkeit nicht änderen, während die Pumpe läuft. Daher musste ich zwischen Volumenstromänderung und Pumpenstart ein Stopbefehl einrichten (denke zumindest das ich es muss). Wie kann ich die Zeit, in der die Pumpe stoppt und Den Volumstrom ändert so minimal wie möglich halten, sodass die Pumpe kontinuierlich fördert, besser gesagt so kontinuierlich wie möglich"
Hierfür nochmal die ein Bild als Anlage.
Soll ich hierfür ein anderes Thema in einem anderen Unterforum eröffnen oder bin ich hier schon richtig ???