Stelle mich vor und bitte höflich um Hilfe



  • VC++Fee schrieb:

    Wie geschieht aber die Verbindung zwischen PC und Maschine.

    Üblicherweise über Kabel oder Funk. 😕



  • Oh kleveres Männle,
    Das ist mir auch klar.

    Ok, nochmal für Dummies (die eigentlich schlau sind 😉 ):

    Hier der PC mit meinen C++ Prog.
    Dort der Schrittmotor.
    Daneben ein Handtaster (Sensor).

    Dazwischen Kabel, am Gehäuse des PCs, des Schrittmotors und am Sensor angebunden.

    Leider erkennt mein Prog. nicht, dass der Taster betätigt wurde und warum erhält der Motor kein Signal ?

    Wie auch, der Schrittmotor kann nichts mit einem USB / VGA / Serial und wie sie allles heißen - Singal anfangen.

    Und der Sensor liefert auch nur 5,0 V bei Betätigung.

    .....

    Jetzt weißte, was ich meine, oder ? 😉

    LG



  • VC++Fee schrieb:

    Oh kleveres Männle

    Offenbar nicht clever genug, um zu verstehen, was das Maschinenbau dozierende Weible umtreibt.
    Macht aber nix, ich warte einfach darauf, daß jemand anders es versteht.



  • Ok, ganz langsam, zum Verstehen.

    Nehmen wir mal Folgendes an:

    Es gibt eine kleine Maschine, die hat 1 Zylinder und 1 Schrittmotor.
    Der Motor (der ein Förderband antreibt), soll so lange laufen, bis ein istallierter Sensor anschlägt. Ein Teil, dass auf dem Förderband liegt, wird also so lange transportiert, bis es vor dem Sensor kommt.
    Nun soll der Motor stoppen und der Zylinder ausfahren.
    Danach Zylinder wieder zurück und Motor wieder laufen und so weiter und so fort.

    Mit einer SPS-Steuerung ist das kein Problem.
    PC an SPS-Einheit anschließen, erstelltes Programm rüberspielen.
    SPS regelt alles über die Ein- und Ausgänge. Wissen vorhanden und sitzt !

    Nur ist dies bei so einer kleinen "Maschine" wie mit Kanonen auf Spatzen schießen.

    Ich möchte deshalb Gleiches mit dem PC und ´nem C++ - Programm realisieren.
    Aber da es dann hier keine SPS-Einheit als "Vermittlung" zwischen PC und Maschine gibt, suchte ich hier nach Möglichkeiten, dass die Maschine mein C++-Prog. "versteht".

    Nicht mehr, aber auch nicht weniger.

    Update:
    Als ich in den 90ern mit etwas C zu tun hatte, wurde C gepriesen als:
    "Die Sprache, mit der man nahezu alles machen kann. Egal ob man eine Heizung, Maschinenabläufe oder Roboter steuern möchte"
    Nun fragte ich mich seit jeher:
    "Was ist das Verbindungsglied zwischen einem PC (mit dem C Prog.) und z.B. einer Heizungsanlage ?"
    OK, ganz, ganz einfache Steuerungen wurden über die Serielle Schnittstelle angesteuert.
    Heizungen haben oft SPS-Steuereinheiten integriert.
    Aber es geht auch mit C++.
    Wie läuft das in der heutigen Zeit ab?

    2. Update:
    Bin auf folgendes Stichwort gestoßen:
    Relaiskarte
    Da muss ich mal tiefer bohren.

    LG



  • VC++Fee schrieb:

    "Die Sprache, mit der man nahezu alles machen kann.[..]

    VC++Fee schrieb:

    Nun fragte ich mich seit jeher:
    "Was ist das Verbindungsglied zwischen einem PC (mit dem C Prog.)[..]

    Wenn Du z.B. auf einen Sensor in Echtzeit reagieren willst (in der realen Welt mußt Du, sonst zerlegt sich der Roboter selbst!) dann hilft dir ein normales Userspace-Programm unter einem Standard-PC-Betriebssystem herzlich wenig.
    Solche Steuersoftware - oft geschrieben in der gepriesenen Programmiersprache C - läuft deshalb üblicherweise nicht auf einem PC, sondern auf einem Microcontroller (Die Arduino-Plattform wurde genannt), oder auf einer *Trommelwirbel* ... SPS ;).
    Unter DOS mag das noch möglich sein (ich bitte um Korrektur, sollte das falsch sein), aber unter Linux/Win/OSX/... gibt es keinerlei Garantien.
    Es ließe sich vielleicht auf Treiberebene etwas erreichen, aber man ist dann trotzdem auf die Zuverlässigkeit einer Kombination aus - in Relation zur Aufgabe - massiv überkomplexer Hardware(PC) und Software(OS) angewiesen.

    PC-Software ist für Lego-Roboter ok (und die kommen mit ihrer eigenen Schnittstellenhardware), in der realen Welt braucht man ein Echtzeitsystem.

    Wenn ich üben wollte, würde ich mal nach Arduino(Atmel) googlen, oder z.B. PIC.



  • @Caligulaminus
    O komm stell dich mal nicht blöder als du bist.

    @VC++Fee
    Die einfachste Variante bei PCs wäre den Parallelport zu benutzen.
    Dummerweise geht das unter Windows nicht brauchbar, da es keine Befehle gibt mit denen man die einzelnen Pins des Parallelport ansteuern könnte.

    Wenn dir 4 digitale Inputs und 2 digitale Outputs reichen, kannst du auch die Handshakeleitungen der seriellen Schnittstelle dafür verwenden.
    Die Inputs fragt man dabei unter Windows z.B. mit ClearCommError ab. Die Outputs kann man mit EscapeCommFunction steuern.

    Ansonsten brauchst du irgend ein spezielles Teil das diese Anschlüsse drauf hat. Das kann ne Steckkarte sein oder was was man über USB anhängt.
    http://www.amazon.com/USB-Based-24-Channel-Digital-Module/dp/B003DV6W9G
    ...



  • Ok, danke ihr Beiden, das hilft mir schon mal weiter.

    Ich habe zwischenzeitlich mal einen ehemaligen Mitschüler (aus der 90er Jahren - C-Schulung) per Mail erreicht. Er hat sich seit damals auch nicht mehr mit C beschäftigt, konnte mir aber noch den -evt. heißen- Tip geben, dass unser Lehrer damals erzählte, dass er C-Progs auf dem PC schreibt und dann auf einen Chip oder ähnlichem "brennt", also sein C-Prog. fest auf diesem Chip speichert (Stichwort: Eprom, bin mir aber nicht sicher). Dieser Chip sitz dann auf einer kleinen Platine, mit der er die entsprechende Maschine steuert.

    Muss mich da weiter einarbeiten.
    Bin für alle weiteen Tips dankbar.

    Werde erst mal die bisherigen Tips nachlesen / Links besuchen.

    Vielen Dank.

    LG
    Susi



  • hustbaer schrieb:

    O komm stell dich mal nicht blöder als du bist.

    Hmmm *grübel* ... ich nehm' das jetzt einfach mal als Lob.

    hustbaer schrieb:

    [..]Ansonsten brauchst du irgend ein spezielles Teil[..]

    Ich bin mir jetzt nicht sicher, ob Du mein Elaborat überhaupt gelesen hast.



  • Mit dem schon genannten Arduino kann man relativ viel mit Visual Studio machen.
    http://arduino.cc/

    In der Arduino-IDE standardmäßig enthalten ist z.B. die Firmata Library, damit kann man den Microcontroller über USB/RS232 fernsteuern.
    http://arduino.cc/en/Reference/Firmata

    Passenden C++ Code zum Ansteuern unter Windows/Mac/Linux findet man im Quelltext der Firmata Demo Software. Für andere Sprachen, inklusive C#, hier:
    http://firmata.org/wiki/Main_Page

    Braucht man mehr Embedded Power mit Linux, kann man den schon genannten Raspberry PI nehmen, oder besser den hier
    http://beagleboard.org/Products/BeagleBone%20Black
    der hat sogar zwei zusätzliche Microcontroller für harte Echtzeit
    http://elinux.org/Ti_AM33XX_PRUSSv2
    Beide kann man, wenn man nicht mit Linux Tools arbeiten will, auch mit Visual Studio programmieren
    http://visualgdb.com/tutorials/raspberry/
    http://visualgdb.com/tutorials/beaglebone/



  • Suchst du einen Controller als Bindeglied?

    Mikrocontroller wurden schon genannt. Das EProm ist mittlerweile zum Flash-Speicher geworden und sitzt im Mikrocontroller.
    Die kannst du dann aber auch über USB flashen, da man die parallele und serielle Schnittstelle heutzutage fast vergessen kann, da neue Rechner die nicht/kaum mehr haben.

    C sollte man schon (auf dem PC) beherschen, da bei einem Mikrocontroller noch ein paar Besonderheiten dazu kommen. (Interrupt/Timer, kein Betriebssystem, begrenzte Resourcen, Hardwareanschaltung)

    Arduino (wurde auch schon genannt) bietet sich als Einstieg an.
    Beim Raspberry Pi sind die Resourcen nicht so sehr beschränkt, dafür muss man sich noch mit Linux beschäftigen.

    Zum einlesen kannst du ja mal bei http://www.mikrocontroller.net/ und http://www.roboternetz.de/ rein schauen. Da gibt es auch Grundlagenartikel.



  • *snip*



  • Es gibt eine kleine Maschine, die hat 1 Zylinder und 1 Schrittmotor.
    Der Motor (der ein Förderband antreibt), soll so lange laufen, bis ein istallierter Sensor anschlägt. Ein Teil, dass auf dem Förderband liegt, wird also so lange transportiert, bis es vor dem Sensor kommt.
    Nun soll der Motor stoppen und der Zylinder ausfahren.
    Danach Zylinder wieder zurück und Motor wieder laufen und so weiter und so fort.

    Das kannst du ganz einfach mit dem Raspberry-PI realisieren und ist absolut kein Aufwand. Die PI-Scripte werden mit Python (korregiert mich wenn ich Falsch liege) geschrieben.

    Lg



  • Vielen Dank für die Hilfe.

    Die PI-Scripte werden mit Python

    Kann ich das mit dem Raspberry nicht in C/C++ oder C# realisieren?

    LG



  • Die kleinen Linux Rechner sind kleine Linux Rechner. 🤡

    Man kann darauf im Prinzip alle Sprachen verwenden, die es für Linux gibt. Die Scriptsprachen sind einfacher für Anfänger und haben deshalb auf dem Pi die größere Verbreitung.

    Einen eigenen Pi habe ich nicht, kann daher nicht sagen, was vorinstalliert ist. Auf dem Beaglebone sind Node.js, C/C++, Python und Perl vorhanden.



  • Ja klar geht C oder C++ auf dem Pi.
    Allerdings ist die Ansprache der GPIO nicht ganz so einfach wie bei einem Arduino, da du Rücksicht auf das Betriebssystem nehmen musst.
    Beim Arduino wird das alles schon von der Sprache unterstützt.

    C# geht eher nicht, da das ein Sprache für .NET von Microsoft ist.
    Es gibt das Mono Projekt, dass .NET auf andere Platformen bringt. Aber ob das auf den ARM-Prozessor vom Pi gebracht wurde, weiß ich nicht.

    Du musst dir überlegen, was du lernen/machen willst und was du schon kannst.
    Mein Rat: Versuch nicht mehrere Dinge auf einmal zu machen.



  • DirkB schrieb:

    da du Rücksicht auf das Betriebssystem nehmen musst.

    Kann ich bestätigen.

    DirkB schrieb:

    Ja klar geht C oder C++ auf dem Pi.
    Beim Arduino wird das alles schon von der Sprache unterstützt.

    Zumindest gibt es beim Beaglebone das Userspace Arduino Projekt. Damit kann man in C++ unter Linux fast so programmieren, wie auf dem Arduino. Für den Pi ist das aber erst in früher Entwicklung.

    DirkB schrieb:

    Aber ob das auf den ARM-Prozessor vom Pi gebracht wurde, weiß ich nicht.

    Ich weiß von Leuten, die Mono auf ARM benutzen. Scheint aber nicht so einfach zu installieren zu sein. Auf dem Beaglebone liefern die Paketmanager von Ubuntu und Debian jede Menge Fehlermeldungen beim Versuch es zu installieren. Definitiv nichts für Anfänger.

    DirkB schrieb:

    Du musst dir überlegen, was du lernen/machen willst und was du schon kannst.
    Mein Rat: Versuch nicht mehrere Dinge auf einmal zu machen.

    👍



  • VC++Fee schrieb:

    Relaiskarte
    Da muss ich mal tiefer bohren.

    Hallo Susi,

    schau Dir dazu mal die IOWarrior-Serie an. Vorteil: einfach an den USB-Port eines wie auch immer gearteten PCs anschließen und auf der anderen Seite bis zu 32 DIOs - wahlweise als Eingang oder Ausgang nutzbar und Möglichkeiten weitere Elektronik via I2C oder SPI zu treiben.

    Gruß
    Werner



  • Vielen Dank wieder einmal an Euch.

    IO-Warrior ist auch ein heißer Tip. 👍

    Nun habe ich massig Infos, um damit mal meine Aktivitäten zu durchdenken.

    Wie DirkB schon schreibt, werde ich mich jetzt mal win C# einarbeiten und meine C++ Kenntnisse vertiefen.

    Wenn ich da so weit bin, versuche ich mich mal an kleine Steuerungen.

    Liebe Grüße 🙂
    Susi.


Anmelden zum Antworten