Fragensteller
Über USB Messwerte einlesen und Steuersignale senden

Frage
-
Hallo,
habe jetzt schon einige Zeit nicht mehr programmiert. Auf einer Kräuterwanderung fragte mich jemand ob ich ihm ein Programm schreiben könne was über USB Messwerte einliest und, protokolliert und Steuersignale sendet.
Habe es so verstanden dass es darum geht dass Solarmodule über einen Elektromotor etwas antreiben. Dabei werden Messungen vorgenommen. Bei bestimmten Messergebnissen soll die Stromzufuhr zum Elektromotor durch eine Nachricht über USB an das technische Gerät unterbrochen werden. Bei anderen wieder angeschaltet werden. Bin kein Techniker…
Es geht wohl um eine Idee, eine Bastelei und um Versuche damit. Das ist noch nicht gebaut. Ist bisher nur eine Idee. Die Daten sollen aber auf den PC oder Laptop. So kam man auf USB.
Meine Frage wie mache ich das mit Visual Basic am besten? Also ich möchte alle 1/100 Sekunden lesen was über USB hereinkommt. Idealerweise einen Datensatz. Und möchte einen Datensatz an USB senden. Eben den der die Technik die an die USB Schnittstelle angeschlossen ist die Stromzufuhr an- oder auszuschalten.Ist vielleicht WinUSB der Weg?
http://msdn.microsoft.com/en-us/library/ff540283.aspxDanke und Grüße
Markus- Bearbeitet Markus222 Sonntag, 14. Juli 2013 19:12
Alle Antworten
-
Hallo Markus,
im Regelfall stellt der Gerätehersteller Treiber und ein API für das Gerät bereit, damit du per Programm Werte auslesen etc. kannst. So kenne ich es zumindest.
Ansonsten kenn ich es von Messgeräte dass diese über RS232 gehen. Da ist es recht einfach! Da musst du nur die Anschlusskonfiguration kennen.
Viele Grüße Holger M. Rößler
-
Hallo Holger,
vielen Dank für deine Antwort.
Meinst du mit Gerätehersteller den USB Anschluss am Computer oder das externe Gerät?
Falls das externe Gerät. Der Gerätehersteller ist ein Bastler so wie ich über 50. Er kennt sich mit Maschinen und Elektrotechnik aus. Aber eben nicht mit Computertechnik. Gut Excel Tabellen und so etwas geht. Aber die Technik ist erst mal unbekannt.
Die Aufgabenstellung steht oben. RS232 ist das die serielle Schnittstelle? (bitte nicht lachen, er hatte ja nur mal gefragt, und mir würde es Freude machen, nur müsste ich wissen wo und wie ansetzen) Gibt es die überhaupt noch??? :-) Ich weiss es nicht... Habe vergessen wie die Buchse eigentlich aussieht. Es wäre schön wenn es eine Standardbuchse oder ein Standardweg wären wie die Daten vom externen Gerät mit Mess- und Steuerungstechnik in den PC kommen. Und wie der PC oder Laptop die Steuerungssignale in Form von Datensätzen nach aussen gibt.
Was könnte ich da als Weg vorschlagen? Noch ist alles frei planbar.
- Bearbeitet Markus222 Sonntag, 14. Juli 2013 21:28 Korrektur
-
Hallo Markus,
nein, den Hersteller ;-)
Ich halte den Weg über USB als den technisch schwierigsten. Der Weg über die serielle Schnittstelle ist deutlich einfacher. Zumal .net USB ohne separate Libraries nicht unterstützt.
Ich habe das schon mit Messschiebern gemacht. Dort habe ich die Messwerte per RS232 ausgelsen und in ein Excel Sheet geschrieben, dass später Teil ein Messprotokolls war.
Viele Grüße Holger M. Rößler
-
Ja. D.h. so ein Com1 Port, diese Buchse braucht man?
Ich glaube die habe ich nicht am Laptop. Da sind verschiedene Buchsen.
Es wird sich ein Weg finden. Notfalls der schon lange nicht mehr benutzte PC. Also die serielle Schnittstelle und eine Com1 Buchse?
Gibt es vielleicht einen Umsetzer der von aussen erzeugte RS232 Signale (weiss nicht ob das so heisst) umsetzt in irgendetwas was ich in VB empfangen kann und dem ich etwas senden kann? Was einfach zu machen wäre?
Wie gesagt es gilt einen Weg zu finden wie die Daten zwischen Computer und Bastelarbeit hin- und her velaufen.
Wenn du denkst ja RS 232 dann ok. Wie gehe ich da vor?
- Bearbeitet Markus222 Sonntag, 14. Juli 2013 21:48 Man sollte vorher noch mal durchlesen
-
-
Hallo Holger,
das wäre wohl ein gut gangbarer Weg. Nur habe ich so einen Anschluss nicht an meinem Asys Laptop. Den PC möchte ich nicht nehmen.
Ich mag es kaum glauben. Gibt es nicht einen Standardweg in .Net mit der USB Schnittstelle zu kommunizieren? Wenigstens über eine Windows API?
USB ist doch Standard. Hat man hier nicht geschlafen? So etwas müsste es doch geben. Einfach Datensätze nach USB in einem Standardformat ausgeben und einlesen.Wenn also SerialPort wie kann ich das auf meinem Laptop realisieren der keine Com Buchse mehr hat. Gibt es da eine Möglichkeit ein serielles Gerät trotzdem anzuschliessen und damit über die SerialPort Klasse zu kommunizieren?
- Bearbeitet Markus222 Montag, 15. Juli 2013 06:55 Korrektur
-
Bitte entschuldigt das leichte durcheinander. Es ging um den Weg des Datenaustausches. Ich denke über die Serial Port Klasse ist das bestimmt gut zu realisieren. Auch für die Bastelei wird es wie ich vermute viel einfacher diese RS 232 Signale zu geben und zu empfangen als über USB.
Die Frage wäre nur noch ob ich dazu einen Computer mit einem Com1 Anschluss brauche oder ob ich ein serielles Gerät über die SerialPort Klasse auch von meinem Laptop aus ansprechen kann. Der diesen Anschluss nicht hat. Ob es da eine Möglichkeit gibt.
-
Hi Markus,
groben ein Blick über den Zugriff über USB findest du hier.
Ein fertige Library findest du z.B. hier, hab ich aber noch nicht mit gearbeitet.
Wenn dein Bekannter nicht selber einen Controller baut, sondern einen kauft, kann man hier darauf achten, das der Hersteller auch passende APIs anbietet.
Wenn ich dich richtig verstanden habe, geht es um die Ansteuerung eine Solaranlage z.B. ausrichten der Pannels je nach Sonnenstand. Solche Anlagen sind ja meist auf den Dach oder im Freien und USB Kabel können maximal 5 Meter lang sein. Da würde sich RS 232 schon mehr anbieten.
Eine andere Möglichkeit wäre einen Controller mit (W)LAN Anschluss zu verwenden.
MFG
Björn
-
Hallo Björn,
vielen Dank für die Tipps. Es ist wohl so dass von der Bastelei der Kommnikationsweg über RS232 gut zu realisieren wäre. Wäre das dann nicht eine Möglichkeit USB und RS232 zusammenzubringen?
Hier hat wohl jemand das benutzt:
Problem mit USB FTD2dXX.DLL in VB.net 2010
Sieht nach recht komfortabler Programmierung aus. Mir scheint hier wurde diese .dll verwendet:
http://www.ftdichip.com/Drivers/D2XX.htmNur wie das auf einem Laptop zum Laufen gebracht und was es genau bedeutet und heißt wird habe ich auf den ersten Blick noch nicht gesehen.
Markus
-
Das scheint hilfreich in Bezug auf FTDI zu sein:
-
Hi Markus,
RS232 zu USB scheint es mehrere Adapter zu geben. Ich hab da aber noch keine Erfahrung gesammelt.
Sie scheinen unterschiedlich gut zu funktionieren. Schau mal hier.
MFG
Björn
-
Hallo Markus,
die Dinge, die ich bislang per USB angesteuert habe, hatten Treiber, die softwaremäßig wie RS232 behandelt wurden. Um Baudrate, Handshake etc. braucht man sich natürlich nicht kümmern. Geräteseitig sind meist Chips von Silicon Labs verbaut; teilweise läuft die Treiberinstallation bei neueren Windows-Versionen schon automatisch. Man bekommt dann meist mehrere zusätzliche virtuelle RS232-Ports, die man auch im Geräte-Manager sehen kann. Die Software-Ansteuerung ist ein Kinderspiel. Natürlich musst Du die jeweilige Kommandosprache des Interfaces verwenden.
Gruß,
Winfried
-
Hallo Winfried,
danke für deine Antwort. War gerade in gmx und habe sie gesehen.
Wenn ich es wirklich brauche, es war ja nur eine Frage die gestellt wurde, dann würde ich das hier verwenden:
http://www.ftdichip.com/
Scheint in der Handhabung so wie du schreibst einfach zu sein. Ein Stick, eine Dll und eine komfortable Schnittstelle.
Ob es auch gut funktioniert würde sich zeigen müssen. Doch das wäre ein anderes Thema. Der Weg wäre so wie du beschreibst so etwas.Grüße
Markus
- Bearbeitet Markus222 Donnerstag, 18. Juli 2013 21:23 Korrektur 2
-
habe jetzt schon einige Zeit nicht mehr programmiert. Auf einer Kräuterwanderung fragte mich jemand ob ich ihm ein Programm schreiben könne was über USB Messwerte einliest und, protokolliert und Steuersignale sendet.
Die Elektronik selber zu bauen ist wohl etwas schwierig, da nimmt man Fertiges wie
http://www.velleman.eu/products/view/?country=be&lang=de&id=351346
Oder per Ethernet, das erspart Treiber
> http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_AVR_NET_IO.html
-
Danke für den Hinweis mit den Karten. Offen gestanden weiß ich nicht mal was genau dass für Karten sind. Es sollte auch ein Laptop gehen (wegen dem Baumaß) der Karten.
Schreibe noch mal hier hin um was es geht. So wie ich es verstanden habe. (Bin keine Techniker). Der Fragesteller wird noch mal auf mich zukommen. Würde er das Programm haben wollen würde ich versuchen das in Visual Basic Express 2012 for Windows Desktop 2012 mit .Net Framework 4.5 und SQL Server Express 2012 zu schreiben.
Es geht um das Speichern von Solarenergie in einem Schwungrad. Also keine Batterie. Ein Schwungrad als Stromspeicher.
Die Solarmodule treiben einen Elektromotor an. Dieser eine Schwungscheibe. Die Schwungscheibe läuft sehr sehr leicht.
Das Programm soll einerseits die Stromzufuhr zum Elektromotor steuern andererseits die empfangenen Daten dokumentieren und aufbereiten.
Es sollte dazu alle 1/100tel Sekunden die USB Schnittstelle abfragen. Erhält dort einen Datensatz mit Umlaufgeschwindigkeit des Schwungrads, der Speisespannung und anderem.
(Was ich mich frage, welche Drehzahl wird gemessen? Elektromotor oder Schwungrad?)Das Programm dokumentiert die empfangenen Daten und bereitet sie auf.
Ergibt sich aus dem gerade eingelesenen Datensatz das das Schwungrad zu schnell läuft soll das Programm einen entsprechenden Datensatz auf die USB Schnittstelle senden die die Technik veranlasst die Stromzufuhr zum Elektromotor zu unterbrechen.
Das Programm fragt weiter alle 1/100tel Sekunde die Drehzahl ab. Sinkt die Drehzahl unter eine bestimmte Zahl, schaut das Programm im Datensatz nach der Spannung die die Solarmodule liefern. Überschreitet diese einen bestimmten Wert sendet das Programm einen Datensatz zur USB Schnittstelle der die Technik veranlasst die Stromzufuhr zum Elektromotor wieder herzustellen.
Im Programm werden Konfigurationsdaten wie zulässige Geschwindigkeit, Anfahrspannung, Häufigkeit der Abfrage usw. eingegeben.
Es wird also ein Gerät benötigt welches die Drehzahl misst (wie gesagt welche und wo?) und daraus RS232 Signale erzeugen kann.
Als Brückenglied zwischen USB – Schnittstelle des Laptops und seriellem RS232 Datenstrom dachte ich an das oben erwähnte:
http://www.ftdichip.com/
(Weg RS232 - USB Adapter - Programm.) Wie eine solche Kommunikation im Einzelnen genau aussieht weiß ich nicht. Kann man über einen solchen Umsetzer auch Daten vom Computer nach aussen senden oder ist das nur für eingehende Daten?(Ich habe keine Ahnung, habe mich bisher auch nicht weiter darum gekümmert. Es kam gestern halt noch die Antwort von umocom1 so wurde ich noch einmal auf das Thema aufmerksam gemacht.)
Die Frage ist nun wenn das alles ist was ihr wisst oder mache wollt, wie würdet ihr vorgehen wenn ihr das mit VB realisieren wollt?
Welche Anforderungen würdet ihr an die Schnittstelle stellen. Wie sieht so eine Programmierung überhaupt aus…
Falls es sinnvoll ist so etwas zu bauen. Aber andererseits geht es aber auch um Dokumentation der Daten.Die andere Frage ist gibt es das bereits solche Geräte die Solarstrom in einem Schwungradspeicher speichern? Z.B. für die Solaranlage eines Hausen? Oder für freiliegende Gärten? Falls ja wo und von welchem Hersteller gibt es das?
Vielen Dank!
Markus- Bearbeitet Markus222 Freitag, 26. Juli 2013 14:31 Ergänzung
-
Könnte man das Thema wieder auf unbeantwortet setzen? (Ja. Hatte gesehen dass man das selber machen kann.)
Dienstag morgen ist ein Treffen. Dann erfahre ich näheres. Kann selber fragen und sehen welche Fragen es ungefähr gibt.
- Bearbeitet Markus222 Samstag, 27. Juli 2013 10:01 Ergänzen
-
Hallo,
eine einfache Billiglösung für eine Schnittstelle ist ein paralleler Druckerport. Mit so was hab ich vor ca. 15 Jahren mal eine ziemlich komplexe Steuerung für eine Einrichtung mit 30 Schrittmotoren und etliche Sensoren entwickelt.
Aber heute gibt es unzählige, auch kostengünstige Baugruppen, die Signale über PC schalten oder aufnehmen können. Ein bisschen Recherche ist natürlich nötig.
Ansehen würde ich mir auch mal die Haushaltssteuerung der AVM-Fritzboxen. Ähnliche Konzepte gibt es auch noch von anderen Herstellern. Vielleicht reicht das ja schon und Du kannst damit gleich die LAN/WLAN-Infrastruktur nutzen.
Einen Schwungrad-Generator hab ich mal bei der Besichtigung einer Fusions-Energie-Versuchsanlage gesehen. Der Zweck von dem Ding war, über einige Minuten Energie zu sammeln (aus dem Stromnetz) und innerhalb einiger Sekunden abzugeben (in die Anlage). Ich kann mir im Moment nicht vorstellen, dass eine Verwendung zur Pufferung von Solar-Energie damit sinnvoll zu realisieren ist. Ich lerne aber gerne dazu.
Gruß,
Winfried
-
Hallo,
also jetzt weiss ich etwas näher um was es geht.
Es gibt 2 Messgeräte
Diese erzeugen wohl einen Datenstrom für den Druckerport wie ich es verstanden habe. So etwas gibt es doch heute garnicht mehr? Gibt es da einen Umsetzer? LPT1 - USB? Noch immer ist es ein Tappen im Dunklen. Aber: Es ginge darum diese Daten von diesem Gerät zu speichern und aufzubreiten. Soviel ist bekannt.
Das Messgerät hängt es über einen Adapter Druckerschnittstelle - Com1 am seriellen Port.
Wo setzt man an? Am seriellen Port? Doch ein Umsetzr wie oben erwähnt der FTDICHip. Oder ist die Druckerschnittstelle der Weg. Die ich Laptop nicht habe.
Die Mail an den Support von ftdichip war diese:Hello,now i know more it is a Metex M 3850At the time it is on a old Windows 2000 Computer. LPT1 -> Com1 -> Computer. There is a old programm on that Computer. Which schows the Datafrom that device. It schould be that i write a programm on a asys x73E laptop with Windows 7. In Visual Basic Express 2012. Which stores the Data in Excel. Is it possible to take your adapter and stick the Metex to the asys laptop? Metex M-3850 -> LPT1 -> Com1 -> FTDI -> Asys my programm. Which data do i get. What product do i need exactly?Thank you.Markus
- Bearbeitet Markus222 Mittwoch, 31. Juli 2013 12:46 Ergänzen
-
Hallo Markus,
das ist recht simpel. Die Messgeräte haben einen RS232-Port. Du brauchst lediglich 2 USB-RS232-Kabel-Adapter, so was kostet ca. 8 Euro. Achte darauf, dass deren Treiber Deine Windows-Version unterstützt. Auf PC-Seite bekommst Du dann 2 neue RS232-Ports zu sehen, die du direkt vom Programm ansteuern kannst.
Zum testen kannst Du auch irgendein Terminal-Programm nehmen; stimmt die Baudrate, kriegst Du damit schon die Messwerte auf den Bildschirm.
Steuern kannst Du darüber natürlich nichts.
Gruß,
Winfried
- Bearbeitet WiWo Mittwoch, 31. Juli 2013 14:59
-
Hallo Winfried,
vielen Dank! Welchen Adapter würdest du nehmen und wo bestellen? Das mit dem FTDI scheint komfortabel zu sein. Aber ich weiss nicht woher und ob es verschiedene Modelle gibt. Welches ich genau brauche und welche .dll woher.
Erst mal reicht Speichern in Excel aus.
Asys Laptop. Windows 7. Der alte Windows 2000 Rechner steht daneben. Die Metex M-3850 hängen an der seriellen Schnittstelle dort. Ein Programm names Digiscop for Windows zeigt die Messwerte dort an.
Müsste nur umstecken. Brauch dieses Ding :-) Für den Betrag kam auch experimentieren....
- Bearbeitet Markus222 Mittwoch, 31. Juli 2013 15:14 Korrigieren
-
Hallo Markus,
es geht doch nur darum, die Daten von den Messgeräten einzulesen? Dann vergiss doch die Chips und kauf einfach 2 USB-RS232-Adapter. Die gibt's in jedem Kaufhaus, Oder bei Amazon einfach mal nach "usb rs232 Adapter" suchen. Dann nur noch darauf achten, dass Win7 unterstützt wird (ob 32bit oder 64bit ist auch zu beachten!). Ich würde zudem keinen Adapter wählen, der nur USB1.1 kann.
Wenn das Digiscop ein 32-Bit-Windows-Programm ist und die Port-Adressen frei wählbar, wird es wahrscheinlich auch auf Deinem Notebook laufen.
Danach kannst Du Dich ja um die Programmierung kümmern.
Gruß,
WiWo
PS: Sollte der Win2000-Rechner über 25-polige Anschlüsse mit den Messgeräten verbunden sein, so sind das keine Druckerports, sondern auch serielle Anschlüsse (erkennbar an Stiften statt Löchern). Wenn Du Adapter mit Kabel kaufst, kann Du die alten Kabel dann weglassen und die Adapterkabel direkt mit den Messgeräten verbinden.
- Bearbeitet WiWo Mittwoch, 31. Juli 2013 21:37
-
Hallo Winfried,
es geht ja um die Programmierung. Da hatte ich halt was mit FTDI gesehen.
http://www.ftdichip.com/Drivers/D2XX.htm
Das hiesse von VB aus gut machbar.
Nur ein Stecker wäre zu wenig, oder? Weil zu großer Programmieraufwand? Der von FTDI abgefangen würde. Man müsste jetzt halt schauen. Ob es geht.
Wo und welches Modell von FTDI kaufen? Bei den Vertriebspartnern die auf der Homepage genannt sind habe ich angerufen. Damen am Telefon die nichts sagen können und auf Herren verweisen die nicht da sind :-)
Habe soeben deine Ergänzung gesehen. Das sind ein paar Stecker... 25 polig ja. Umsetzer. Aber dann doch an der Com Schnittstelle des Win 2000 Rechners. Wo das Digiscop Programm die Messdaten anzeigt.
- Bearbeitet Markus222 Mittwoch, 31. Juli 2013 22:07 Man mus vorher lesen nicht hinterher korrigieren
-
Hallo Markus,
vielleicht hab ich Dich ja gänzlich missverstanden..
Was ich verstanden habe: Du willst Messwerte von 2 Digimetern mit RS232-Schnittstelle per PC auslesen und die Daten programmatisch verarbeiten. Dazu brauchst du dann nur "SerialPort" aus dem VS-Werkzeugkasten zu nehmen. Die Programmierung ist simpel und das Auswerten nicht aufwändiger als das Auswerten von Tastatureingaben.
Wenn Du zudem noch was steuern willst, würde ich Dir, wie ich schon mal geschrieben hab, zu irgendwelchen einfachen fertigen Gerätesteuerungen greifen, wie z.B. schaltbare Steckdosen, Lichtsteuerungen etc. Oder Google mal nach DMX.
Gruß,
Winfried
-
Hallo Winfried,
am Laptop habe ich ja nur USB. Und wusste nicht was genau ich brauche. Es scheint das zu sein:
http://www.segor.de/#Q=FT%2520232%2520BM-Kabelkonverter&M=1
Dazu diese .dll:
http://www.ftdichip.com/Drivers/D2XX.htm
Oder meintest du den Kabelkonverter von Segor und dann Serial Port von VS für den Virtual Com Port? Der Kabelkonverter muss ja erst von dem der es haben möchte gekauft werden. Es ist ja nichts was dringend ist. Ist nur was privates.
Da muss ich jetzt warten bis der da ist. Und dann mal sehen was da reinkommt an Daten. So eine richtige Vorstellung habe ich nicht. Mal gespannt!
-
hallo
für so was zahlst du bei Amazon, Mediamarkt etc. aber nur einen Bruchteil des Preises. Um Irgendwelche Chipsatz-Treiber brauchst Du Dich auch nicht zu kümmern. Du steckst das Kabel in den PC und fertig! Warum willst Du Dir das Leben bloß so schwer machen?
Gruß,
WiWo
-
Weil ich die seriellen Daten weiterverarbeiten möchte. Z.B. in Excel oder in einer Datenbank speichern. Oder Auswertungen und Zusammenfassungen davon. Also ich möchte die lesbar im Programm haben.
Und es kann sein dass es nicht bei dem einem Messgerät bleibt. Da können noch andere Geräte auf anderen USB Ports hinzukommen. Es sollte ja später auch eine Kommunikation in beide Richtungen sein.
Habe halt noch nicht gesehen wie das eigentlich geht... :-)
- Bearbeitet Markus222 Freitag, 2. August 2013 20:16 Korrigieren
-
Schau Dir mal RX an (http://msdn.microsoft.com/de-de/data/gg577609.aspx) könnte evtl was dafür sein.
Gruß
Frank