Hallo, vorerst kurz mein Kenntnis-stand: ich bin etwas bewandert unter C++ und VB, damals habe ich da etwas unter Win XP programmiert und die entstandene exe-file dann unter Win XP ausgeführt. Dabei wurden auch Schnittstellen angesprochen, jedoch nur Seriell und Can-Port, beides lief wirklich sehr einfach über eingebundene Treiber. Ich habe keine Ahnung von Microkontrollern, bin aber gewillt mich einzuarbeiten. Jetzt mein Problem. Ich habe in einer Firma angefangen und baue eine Station welche diverse Sensoren ausliest, etwas berechnet und dann zwei Motoren über eine CAN-Motorsteuerkarte steuert. Die 6 Sensoren sind alle seriel und werden an einem Multiplexer angeschlossen, der über LAN abgefragt wird (damit ein anderer Rechner auch noch darauf zugreifen kann). Folgende Vorrausetzung muss gegeben sein: - Die Station muss bei Stromzufuhr starten, selbstständig das Programm ausführen und dabei Statusberichte über ein kleines ein oder zweizeiliges Display liefern. - Die Station soll in der Lage sein, sich die Daten über LAN vom Multiplexer zu holen. - Es soll die PPS-Zeit des GPS benutzt werden (will mein Chef so, vielleicht red ich ihm das nochmal aus) und dafür wird ein Interrupt benötigt. Durch Einlesen auf dieser (übrigens super guten) Seite hab ich schon herausgefunden wie das bei einem Mikrocontroller funktioniert, aber ist es auch unter Windows möglich? Meine Frage ist jetzt, 1) ist es für einen Laien möglich, so ein Projekt anzufangen? Wie schwer ist LAN Programmierung, bzw so etwas auf einem Controller zu realisieren? Ich dachte da an so etwas: http://www.steitec.net/ARM/ARM-LPC1768-Cortex-M3-LCD-Board.html Auf dem LAN kommunizieren noch andere Geräte, einen Teil der Infos soll das Gerät auch von dort abhören (geht sowas überhaupt?) 2) Gibt es für so ein Board eine ähnliche Entwicklungsumgebung wie für C++ in Windows? Da konnte ich alles recht einfach nachvollziehen, an die tiefere Programmierschicht habe ich mich jedoch nie herangewagt. Im Prinzip möchte ich also folgendes: -So eine einfach Programmierumgebung wie Visual Studio. -LAN Protokolle und den ganzen Verbindungs-krams am besten nicht selber schreiben. Diese Schnittstellen wie einen Com-port bzw mit einfachen Befehlen ansprechen. -Am Schluss so etwas wie eine exe file erstellen, die selbstständig lauffähig ist und nicht erst Windows zum Ausführen braucht. Wäre total dankbar wenn mir jemand helfen könnte oder eine Idee hätte wie sich mein Problem lösen lässt. Und tut mir leid dass mein Beitrag so ein Roman geworden ist.... Gruß, Sebastian Edit: Geld spielt (fast) keine Rolle...
> 1) ist es für einen Laien möglich, so ein Projekt anzufangen? Alles ist moeglich, es ist nur eine Frage wieviel Zeit du da reinstecken darfst. :-) > Wie schwer ist LAN Programmierung, bzw so etwas auf einem > Controller zu realisieren? Das ist extrem aufwaendig! Zum einen ist die ganze Thematik an sich schon aufwaendig, zum anderen musst du dann an einem Bus mit dir vielleicht unbekannten Teilnehmen friedvoll zusammenarbeiten. Darum ist das normalweise ein Wissen das man von Spezialisten zukauft. Da gibt es dann IMHO drei Moeglichkeiten: 1. Du kaufst dir von irgendwen den Source eines TCP-IP Stacks und verwendest den. 2. Du kaufst eine Hardware welche die Umsetzung LAN auf ein andere Protokoll (z.B RS232) macht. Sowas gibt es von irgendeiner Firma in Form eines kleinen Bausteins der wie eine Lanbuchse aussieht, aber in wirklichkeit einen ganzen Computer enthaelt. Ich hab nur leider den Namen vergessen. 3. Du verwendest Linux auf deinem System und kannst dann dort die ganze Arbeit in der Netzwerkumgebung weiterverwenden. Erfordert aber auch einiges an Einarbeitung. > Edit: Geld spielt (fast) keine Rolle... 4. Beauftrage einen externen Dienstleister und lehne dich entspannt zurueck. :-) Im Ernst, ich wuerde Loesung zwei verwenden. Olaf
> Sowas gibt es von irgendeiner Firma in Form eines kleinen Bausteins > der wie eine Lanbuchse aussieht, aber in wirklichkeit einen ganzen > Computer enthaelt. Ich hab nur leider den Namen vergessen. Xport heißt das Projekt und wird auf heise sehr gut beschrieben: http://www.heise.de/ct/artikel/Bruecken-bauen-289414.html
Hi, danke erstmal für die schnellen Antworten! Also ich habe nun wirklich keine Ahnung davon, aber gibt es nicht fertige Treiber für einen ARM Prozessor? Sodass ich nur noch meinen Code schreibe und auf die Schnittstellen zugreife? Also z.B. eine LAN-Adresse eingebe und welchen seriellen Code ich sende möchte? Ich kenne das eben nur aus der Visual Studio Umgebung, die fertige exe haben wir einfach unter Windows laufen lassen und hatten virtuelle Com-Ports (wegen Adapter) Gibt es so etwas nicht auch für ARM Prozessoren? So einen LANtoRS232-Adapter wollte ich für serielle Geräte nutzen,nur dass ich mal davon ausgehe dass ich von der seriellen Schnittstelle aus nicht ins LAN zugreifen kann, oder? Leider bin ich schon der dazugekaufte "Experte" :-) den mechanischen Teil des Gerätes krieg ich auch wunderbar hin. Das Projekt ist nur unglaublich groß geworden und diese (dazugekommene) LAN-Sache bereitet mir Kopfzerbrechen.
Kannst ja mal bei ST (www.st.com) in die STM32 Bibliotheken schauen, ob das das richtige für Dich ist. Unter Windows brauchst Du Treiber, die bei jedem Windowswechsel vom Hersteller bereitgestellt werden müssen. Die Anwendung soll ja auch ein paar Jahre laufen, oder? Vielleicht wird die Sache etwas einfacher, wenn Du ein Linux-Board mit ARM-Prozessor kaufst, aber da habe ich keine praktische Erfahrung.
Sebastian H. schrieb: > Hallo, > > vorerst kurz mein Kenntnis-stand: > ich bin etwas bewandert unter C++ und VB, damals habe ich da etwas unter > Win XP programmiert und die entstandene exe-file dann unter Win XP > ausgeführt. ... Hallo, da hast du dir ja schon mehr Probleme aufgehalst als selbst für einen erfahrenen Entwickler angenehm wäre. Ich sage nur zu ein paar Punkten was, eine vollständige Stellungnahme wäre schon eine eigenständige Entwicklungsarbeit: > .... Die 6 Sensoren sind alle > seriel und werden an einem Multiplexer angeschlossen, der über LAN > abgefragt wird (damit ein anderer Rechner auch noch darauf zugreifen > kann). Das ist schon viel komplexer als es sich zunächst anhört - irgendwie muss ja geregelt sein, wer wann zugreifen kann (also mindestens eine Kollisionsdetektion und -Regelung), und das darf nicht zu Zeitproblemen führen. Ich nehme an, die Motoren sind nach den Werten der Sensoren zu steuern, und zwar in Echtzeit, man kann also nicht einfach einen Motor so weiterlaufen lassen bloss weil kein neuer Messwert zur Verfügung steht, das führt irgendwann zum Crash. Übrigens macht das auch die Verwendung von Windows oder Linux fragwürdig, das sind keine Echtzeitsysteme. > Folgende Vorrausetzung muss gegeben sein: > - Die Station muss bei Stromzufuhr starten, selbstständig das Programm > ausführen und dabei Statusberichte über ein kleines ein oder > zweizeiliges Display liefern. Kein Problem für ein Mikrokontrollersystem. > - Es soll die PPS-Zeit des GPS benutzt werden (will mein Chef so, > vielleicht red ich ihm das nochmal aus) und dafür wird ein Interrupt > benötigt. Durch Einlesen auf dieser (übrigens super guten) Seite hab ich > schon herausgefunden wie das bei einem Mikrocontroller funktioniert, > aber ist es auch unter Windows möglich? Nur indirekt - Windows verwaltet seine eigene Zeit. Man kann nur einen "Service" schreiben (ein Hintergrundprogramm), das in regelmässigen Abständen die Uhr nachstellt. Bei einem Ebedded-System ist das nicht viel anders, jedes System hat eine durchgehend laufende Zeitbasis. > -LAN Protokolle und den ganzen Verbindungs-krams am besten nicht selber > schreiben. Diese Schnittstellen wie einen Com-port bzw mit einfachen > Befehlen ansprechen. Naja, die Programmierforen sind voller Leute, die mit den seriellen Schnittstellen Probleme haben (sowohl embedded als auch unter Windows). Aber einfacher als LAN ist es schon, ich verwende dazu auch XPORT von Lantronix (auf der Microcontrollerseite, nicht auf dem PC, da geht es natürlich über den TCP/IP-Stack des BS). > Auf dem LAN kommunizieren noch andere Geräte, einen Teil der Infos soll > das Gerät auch von dort abhören (geht sowas überhaupt?) Im Prinzip ja, aber man muss recht tief einsteigen, und mit dem erwähnten XPORT geht das mit Sicherheit garnicht. Ethernet ist Punkt zu Punkt, Abhören ist da garnicht vorgesehen, und der XPORT kümmert sich ausschliesslich um seine eigene TCP/IP-Verbindung. Zum Abhören anderer Verbindungen braucht man geeignete Hardware, das geht auch mit dem PC nicht mit jeder LAN-Schnittstelle. > 2) Gibt es für so ein Board eine ähnliche Entwicklungsumgebung wie für > C++ in Windows? Da konnte ich alles recht einfach nachvollziehen, an die > tiefere Programmierschicht habe ich mich jedoch nie herangewagt. Je nach dem welches Board - manche liefern ein Real Time BS und Entwicklungssystem dazu, bei anderen hast du nur ein Datenblatt. Ist natürlich wesentlich für eine Kaufentscheidung. Auch die Preise für Software sind sehr unterschiedlich, von kostenlos bis 5stellig. > -Am Schluss so etwas wie eine exe file erstellen, die selbstständig > lauffähig ist und nicht erst Windows zum Ausführen braucht. Bei einem Microcontroller kann man Zeitinterrupts usw. selbst programmieren und so ohne explizites Betriebssystem auskommen, dabei kann man auch Echtzeitbedingungen einhalten (wenn man es denn kann). Dazu muss man i.A. auch in Assembler programmieren. Sonst braucht man IMMER ein Betriebssystem. Das kann auf dem PC auch etwas anderes als Windows sein, aber ohne geht es nicht. Wenn du nur "Hallo World" ausgeben willst, benutzt du schon Hunderte von Windowsroutinen bis der Text gepixelt auf dem Display landet. Soviel wollte ich garnicht schreiben, aber was solls. Zu deiner Frage Nr. 1: auch ein guter Entwickler stünde da noch vor einem Berg Arbeit. Gruss Reinhard
Hallo Reinhard, vielen Dank für die ausführliche Antwort! Der Multiplexer wird natürlich gekauft, damit ist jeder serielle Port über Ethernet als virtueller Com-Port verfügbar (solange man denn auf dem ausführenden Rechner Windows hat und die entsprechenden Treiber installiert hat, das ist ja genau der Knackpunkt) Bei der PPS-Zeit (Pulse per second) des GPS kommt jede Sekunde ein genaues Ping-Signal auf einen Interrupt, damit wird die Zeit auf 1/10000 sekunde genau. Wozu man das in meiner Anwendung braucht weiß ich allerdings nicht... Echtzeitfähig ist ja immer ein dehnbarer Begriff, da sich die Motoren nur langsam bewegen und über Regelbausteine gesteuert werden, ist es nicht schlimm wenn der Stop-Befehl eine halbe Sekunde später ankommt. ................. Also gut, ich seh ein, dass es so nicht geht. Das System muss also stark vereinfacht werden, das bedeutet keinen Zugriff aufs LAN, sondern alle Geräte direkt seriell am Microkontroller. Weiterhin muss ein Wert zweimal pro Sekunde von aussen übers LAN zum Controller gesendet werden (damit würde das Abhören des LANs entfallen), dafür könnte ich bestimmt einen LAN-to-RS232 Adapter nehmen. Bedeutet also ich brauche ein Board welches ca. 8 serielle Schnittstellen unterstützt da ich für den CAN auch einen RS232-CAN-Adapter nehmen kann. Würde es so funktionieren und kann mir jemand ein ARM Board empfehlen? Sollte (natürlich) möglichst einfach zu programmieren sein...
Ich wuerd's sein lassen. Die Aufgabenstellung ist inkohaerent und macht so wenig Sinn.
Wenn Du wüsstest was sich Menschen vorstellen und fordern wenn sie ÜBERHAUPT keine Ahnung vom Programmieren haben... (wo ist hier der Smiley der seinen Kopf gegen die Wand haut?) Aber konkret: Ist es nicht kohärent genug was ich zuletzt geschrieben habe? Ich will und kann nunmal keine eigene Platine entwickeln, daher muss ich jedes Modul irgendwie so "anstecken".
Reinhard Kern schrieb: > Zum Abhören anderer > Verbindungen braucht man geeignete Hardware, das geht auch mit dem PC > nicht mit jeder LAN-Schnittstelle. Naja, aber mit fast jeder. Sonst würden Tools wie z.B. Ethereal kaum den gesamten Netwerkverkehr mitschneiden können.
Zu Begin. Ein PPS braucht man genau einmal, dann kann der lokale Quarz uebernehmen. Ein PPS kann man auch fuer einen Synthesizer verwenden, aber sonst macht es wenig Sinn ein Netzwerk damit zu belasten, einen PC schon gar nicht.
Sebastian H. schrieb: > ... Ich will und kann nunmal keine eigene Platine entwickeln, daher > muss ich jedes Modul irgendwie so "anstecken". Meine Einschätzung: ein Board mit 8 seriellen Schnittstellen wirst du fertig nicht finden - ich würde daher eine Zusatzplatine mit den 8 Schnittstellen entwerfen (oder mit 2 oder 4). Wenn die Sensoren galvanisch getrennt sein sollen erst recht. Da sonst nichts Besonderes mehr gebraucht wird, kannst du fast jedes Board nehmen, das Stecker für Erweiterungen hat, und auch so ziemlich jede Prozessorarchitektur von 8 bis 32 bit. Gruss Reinhard PS falls jemand vorschlägt, 8 USB-RS232C-Wandler zu nehmen - vergiss es. Der Umweg über USB ist völlig überflüssig, das Ganze gibt ein Kabelwirrwar und die Entwicklung des USB Host wird teurer als die seriellen Schnittstellen. Ausserdem bekommst du nie 2mal die gleichen Adapter, das ist im industriellen Umfeld untragbar.
Ja, so ein Board habe ich gestern auch nicht gefunden... aber ich finde nicht einmal ein Erweiterungsboard für mehr serielle Schnittstellen. Weiß jemand wo es so etwas gibt? Selber bauen kommt hier (leider) nicht in Frage. Der Erweiterungsstecker, ist das der I2C-Bus? Gruß, Sebastian
> Meine Einschätzung: ein Board mit 8 seriellen Schnittstellen wirst du > fertig nicht finden Warum nicht einfach einen Controller nehmen der die bereits eingebaut hat? (z.B R32C116) Aber einfach wird der Rest dadurch auch nicht unbedingt. .-) Olaf
Sebastian H. schrieb: > Ja, so ein Board habe ich gestern auch nicht gefunden... aber ich finde > nicht einmal ein Erweiterungsboard für mehr serielle Schnittstellen. > Weiß jemand wo es so etwas gibt? Selber bauen kommt hier (leider) nicht > in Frage. > Der Erweiterungsstecker, ist das der I2C-Bus? Ja, I2C ist eine der Möglichkeiten. Ein paar einfache I/O-Pins tun's auch, ein kompletter Adress/Datenbus sowieso. Man kann nicht immer alles fertig kaufen, und selbst wenn ist es oft nicht sinnvoll. Eine Menge Leute (ich auch) leben davon, dass immer wieder mal ein Stück nichtstandardisierte Peripherie gebraucht wird oder eine bestimmte Zusammenstellung davon. Nach meiner Erfahrung sitzt in jeder Maschine die eine oder andere Leiterplatte, die speziell dafür entworfen wurde, und wenn's nur ein paar LEDs oder Relais sind. Panische Angst davor ist ein schlechter Ratgeber. Beispiel ist die Bedienung, mit einer Standardtastatur und einem TFT aus dem Computerladen kriegst du kein vernünftiges Maschineninterface hin. Zumindest sieht es dann genau so zusammengebastelt aus wie es ja auch ist, weil du etwa eine Telefon-Tastatur verwendet hast. Eine Tastatur mit genau den nötigen Tasten in sinnvoller Anordnung sollte man dem Benutzer schon gönnen. Gruss Reinhard
Hallo, sieh dir mal das an: http://www.embeddedarm.com/products/board-detail.php?product=TS-COMBOX Gruss Reinhard
Im Moment wundere ich mich wirklich dass so ein Baustein-system scheinbar GARnicht existiert. Wie kann das sein? Der Markt für so etwas ist doch RIESIG! Und dann gibts nichtmal ein Board dass so viele serielle Ports unterstützt? Eigenes Board entwickeln kommt zeitlich wirklich nicht hin (wer hat hier Angst? :-) ), man möchte hier einfach nur die Module ineinanderstecken und anfangen. Das zu schreibende Programm ist sooo einfach, nur die Hardware anzuschließen wird ein immer größeres Problem. Ich danke erstmal allen für die vielen hilfreichen Antworten und melde mich bei Bedarf nochmal, erstmal habe ich keine weiteren Fragen. Jetzt heul ich und geh nach Hause. Gruß, Sebastian
> Der Markt für so etwas ist doch RIESIG! Noe, ist er nicht. Jeder der mehr als 100Stk braucht kann sich sowas selber machen lassen. Und bei Kleinstueckzahlen kannst du dir ein fertiges Board nehmen das ein bisschen Standardkram hat und ansonsten alles als Pfostenstecker rausgefuehrt hat. Das steckst du dann einfach auf eine Platine mit der notwendigen IO drauf. Ansonsten gibt es natuerlich noch PC104, aber da verlaesst man IMHO auch sehr schnell den Bereich der Wirtschaftlichkeit. > Und dann gibts nichtmal ein Board dass so viele serielle Ports > unterstützt? Ach wirklich? Wie denn? RS422, RS485? RS232? Sonderwuensche wie VCC auf einem Pin? SubD Anschluss? WD? Potentialfrei? Du wirst keine zwei Leute finden die da ein aehnliches Beduerfnis haben. Olaf
Reinhard Kern schrieb: > Sebastian H. schrieb: >> ... Ich will und kann nunmal keine eigene Platine entwickeln, daher >> muss ich jedes Modul irgendwie so "anstecken". > > Meine Einschätzung: ein Board mit 8 seriellen Schnittstellen wirst du > fertig nicht finden - ich würde daher eine Zusatzplatine mit den 8 > Schnittstellen entwerfen (oder mit 2 oder 4). Wenn die Sensoren > galvanisch getrennt sein sollen erst recht. > PS falls jemand vorschlägt, 8 USB-RS232C-Wandler zu nehmen - vergiss es. > Der Umweg über USB ist völlig überflüssig, das Ganze gibt ein > Kabelwirrwar und die Entwicklung des USB Host wird teurer als die > seriellen Schnittstellen. Ausserdem bekommst du nie 2mal die gleichen > Adapter, das ist im industriellen Umfeld untragbar. http://www.sena.com/products/device_servers/hd_ps_x10.php dazu noch ein paar Isolatoren z.B. von http://www.wut.de/e-8wwww-11-inde-000.php. Falls das mit dem Multi-Host nicht funktioniert, kann der "Hauptserver" auch ganz einfach die Daten zum zweiten Rechner weiterleiten. Bzw. man könnte das ganze mit zwei USB-COM232-PLUS-4 (4-Fach-USB-Seriell-Wandler von FTDI) und einem kleinem IPC (z.B. sowas inkl. Display und CAN http://de.kontron.com/products/hmis+and+displays/panel+pc++micro+client/micro+client+iia/ ) aufbauen. In die größere Variante http://de.kontron.com/products/hmis+and+displays/panel+pc++micro+client/v+panel+express/v+panel+express+121.html passt auch eine PCI-8-Fach-Serielle (http://www.digi.com/products/serialcards/classicboard.jsp#overview) und die CAN-Motorsteuerkarte. Geld soll ja fast keine Rolle spielen. > > Da sonst nichts Besonderes mehr gebraucht wird, kannst du fast jedes > Board nehmen, das Stecker für Erweiterungen hat, und auch so ziemlich > jede Prozessorarchitektur von 8 bis 32 bit. > > Gruss Reinhard >
Hallo, mittlerweile hatte ich mir überlegt, dass ich ein Board mit Windows CE kaufe und dort einfach meine Visual Studio Anwendung drauf laufen lasse. Über Windows sollte es ja möglich sein übers Ethernet zu kommunizieren... Nun hat mein Chef (der auch die Atom-uhrzeit haben wollte) sich gedacht, wäre doch viel besser mit Linux zu arbeiten und möchte jetzt unbedingt das Fox G20 haben (http://elmicro.com/de/fox-board-g20.html). Ich bin mir recht sicher, dass man auch von diesem Board nicht so einfach ins Ethernet zugreifen kann, stimmt das? Nochmal zum Problem: ich brauche ein Board mit dem ich aktiv ins Ethernet kann um dort Daten abzuholen. Es reicht nicht mit Ethernet von aussen auf das Board zuzugreifen. Wäre total gut wenn sich jemand mal kurz das G20 ansehen würde und mich bestätigen würde. Vielen Dank, Sebastian
Sebastian H. schrieb: > Ich bin mir recht sicher, dass man auch von diesem Board nicht so > einfach ins Ethernet zugreifen kann, stimmt das? Warum nicht? Läuft Linux drauf, und hat eine Ethernet-Buchse, die man bestimmt nicht bestückt hätte, wenn sie funktionslos ist. Was soll also nicht funtkionieren? Wär vielleicht auch was für dich: http://www.igep-platform.com/index.php?option=com_content&view=article&id=46&Itemid=55 RS232 und RS485 on board, ethernet, 2xUSB (Host + OTG), Sound, Anschluss für eine Tastaturmatrix, HDMI, 3D-Chip (PowerVR), Schneller DSP-Coprozessor, Bluetooth, WLAN, LCD.... Und auch noch billiger als das FOX-Board
Das Ding ist ja mal der HAMMER! Auf youtube gibts sogar ein Video wie man damit einen Film guckt... genial! Ich werde das hier mal vorschlagen, dann gehts (endlich) mal vorwärts. Vielen Dank!
Hahahaha, mein Chef findets AWESOME !!! :-) Ich weiß zwar nicht wozu man Videos abspielen braucht für ein paar Sensoren einlesen und zwei Motoren steuern, aber es wird wohl heute noch bestellt! Vielen vielen Dank!!!! (unerhört glücklicher) Sebastian
Sebastian H. schrieb: > Hahahaha, mein Chef findets AWESOME !!! :-) > > Ich weiß zwar nicht wozu man Videos abspielen braucht für ein paar > Sensoren einlesen und zwei Motoren steuern, aber es wird wohl heute noch > bestellt! > > Vielen vielen Dank!!!! > > (unerhört glücklicher) Sebastian Hallo, betrachte es als Einführung in die industriellen Entscheidungsfindungsprozesse. Natürlich gibt es auch noch andere Methoden wie gemeinsames Golfspielen der Chefs, verwandschaftliche Beziehungen der Entwicklungsleiter usw. usw. Auf die hässlicheren Versionen gehe ich lieber nicht ein. Gruss Reinhard
Och ne, ist das etwa überall so? Ich mache gerade Praktikum in Skandinavien und dachte mir, hier ist es ganz besonders extrem. Entscheidungsfindung in Slow-motion könnte man sagen... Gegen Golfspielen hätte ich aber nichts einzuwenden :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.