Cosirop 3.0 mit RV-M1 - BRAUCHE HILFE - 5-stellige Bitauswertung

  • Hallo in die Runde,


    ich bin ganz neu auf dem Gebiet der Roboterprogrammierung.
    Leider hat die SuFu mir nicht geholfen.


    Hoffentlich kennt sich einer von euch aus! :hilfe:


    Ich habe ein Projekt aufgebrummt bekommen und muss nun mit einem 5 stelligen Bitmuster 32 verschiedene Positionen anfahren.


    Die Signale bekomme ich von einer externen E/A Karte direkt zum Robi.


    Also für jede Bitkombination z.B. 10110 soll ich die Position 22 anfahren.


    Mein grösstes Problem ist die Auswertung der kompletten Kombination. Ein Bit bekomme ich ja noch hin...


    Kann mir da jemand nen Tipp geben, wie ich das am Besten anstelle?


    Vielen Dank im Voraus und Grüsse aus der Pfalz


    Rally

  • ANZEIGE
  • Hallo,


    das könnte in Movemaster Command ziemlich viel Schreibarbeit werden.


    Leider fehlt mir die Erfahrung mit diesen alten Robotern, außer TBD fällt mir im Moment kein Movemaster Befehl ein, der mit Eingangsbits zu tun hat. Man könnte damit Bit für Bit testen und sich so eine ziemlich lange Fallunterscheidung aufbauen.


    Mit Melfa Basic wäre das ganze kein Problem ...


    Grüße


    Urmel

  • Hallo und Danke erst mal für den Beitrag,


    den Befehl hatte ich auch schon ins Auge gefasst..
    Aber wie Du schon sagst, dass gibt eine menge Schreibarbeit :wallbash:.


    Ich wüsste sonst auch nicht wie ich das sonst Realisieren soll.... Oder gibt es vielleicht noch andere Vorschläge???


    Grüße Ralf :ylsuper:


  • ... Oder gibt es vielleicht noch andere Vorschläge???


    Naja, eine Idee hätte ich schon ... :zwink:


    Man kann den Roboter relativ einfach über die serielle Schnittstelle steuern, das hatten
    wir hier schon in diversen Threads.


    Man könnte sich eine IO-Karte für den PC kaufen (als PCI-Karte oder für den USB),
    da die Bits einlesen und dann den Roboter über die serielle Schnittstelle ansteuern.
    :mrgreen:


    Grüße


    Urmel

  • Ok,
    das hört sich ja gut an. Denke mal so hätte ich mir sehr viel Arbeit mit der Auswertung der Bits gespart.


    Aber wie gesagt ich bin auf dem Gebiet ein Neuling :huh:


    Muss mich da mal Erkundigen in wie Fern das mit dem Rob möglich ist und wie ich das am besten Realisieren könnte.


    :merci:


    Gruß Rally

  • Hi,
    Ich hoffe ich kann dir damit weiterhelfen, kenne aber weder den Robby noch die Programmiersprache. Ist mehr das Prinzip.


    wenn ich das richtig verstehe, bekommkst du direkt am Robbi 5 I/O-Signale.
    Baue dir eine Formel mit Variablen, in etwa so:
    e+d+c+b+a
    Wertigkeit:
    a=1
    b=2
    c=4
    d=8
    e=16


    Frage die I/O ab, für jeden nicht gesetzten Eingang setzt du die dazugehörige Variable auf 0. In deinen Beispiel setzt du die Variablen d und a auf Null.


    Dadurch ergibt sich folgende Formel:
    16+0+4+2+0=22


    Wichtig ist am Anfang die Variablen auf einen definierten Wert zu bringen. Wenn du es mit einer Variablen hinbekommst, ist der Rest nur Schreibarbeit.



    Gruss
    Fallon

  • Hallo Fallon,


    danke für Deinen Beitrag. Das was Du geschrieben hast, ist im Prinzip das was ich meinte, als ich geschrieben habe in Melfa Basic sei das kein Problem.


    Das Problem beim M1 ist nur: Er hat keine Variablen, nur Zähler und wohl auch keine Addition usw. :mrgreen:


    Deswegen muss man wahrscheinlich ziemlich basteln um das hinzukriegen, z.B. eine riesiege Fallunterscheidung über jede mögliche Bitkombination.


    Grüße


    Urmel

  • Basteln wohl nicht, eher schreiben.


    Du sagst, du kannst das mit 1 Bit 2 Fälle unterscheiden. So kannst du weitermachen.


    1.
    Prüfe Bit 1, bei 1 springe unterprogramm a, bei 0 springe unterprogramm b.
    In deinen Beispiel also Programm a.


    2.
    In Programm a prüfe Bit 2, bei 1 springe Unterprogramm c, bei 0 springe Unterprogramm d
    In deinen Beispiel also Programm d, usw.


    Auf dieser weise entsteht eine Baumstruktur, die dich zu den einzelen Positionen bringt. Nicht sehr schwierig, nur nervig.


    Gruss
    Fallon


  • Basteln wohl nicht, eher schreiben.


    Ein Programm was zu über 50 % aus Sprungbefehlen besteht, erfüllt nicht unbedingt meine Kriterien für sauber strukturierte Programme.



    Prüfe Bit 1, bei 1 springe unterprogramm a, bei 0 springe unterprogramm b.


    Er (nicht ich) will mit 5 Bit 32 Unterprogramme aufrufen. Er muss sich also jedesmal alle fünf Bits ansehen, um im richtigen Unterprogramm zu landen. Er braucht also mindestens 2^5-1 Vergleiche.



    Edit:


    Wenn es beim M1 schon so ähnlich wie beim E2 geht, sollte man auch sowas machen können:



    Sind aber auch 32 Vergleiche. In Melfa Basic könnte man die 32 Positionen in ein Array packen und mit dem Bitwert indizieren, das wäre nur ein Vergleich.


    Grüße

    Urmel

    Einmal editiert, zuletzt von Urmel ()

  • Hi,


    danke Leute für die Infos, hat mir schon etwas weiter geholfen, weiß jetzt wenigstens wie ich ran an das Problem ran gehen kann...


    Muss jetzt nur schauen wie ich das ganze noch umsetze. :denk:


    Hier vielleicht mal die Aufgabenbeschreibung des Roboters:


    Ich soll eine 5 Bit Kombination auswerten und diese sind bestimmten Positionen auf einem Schachbrett zugeordnet. Also meine Aufgabe ist es die Figuren auf das Schachbrett zu stellen. Die Signal welche Figur gerade kommt, bekomme ich von einer Auswertstation in vorm eines Binärcodes......


    Im Anhang habe ich mal die Zuordnung, vielleicht klärt das noch fragen....


    Über jede Hilfe bin ich Sehr Dankbar :merci:


    Gruß

  • Hallo,


    ich hab da mal ein Beispiel skizziert.


    Es basiert auf meinen Jahre zurückliegenden Erfahrungen mit dem RV-E2, sollte aber auch so ähnlich mit dem M1 gehen.


    Das Programm wartet darauf, dass das Eingangsbit 10 gesetzt wird. Dann fährt es abhängig von den Eingangsbits 15,14,13,12 und 11 folgende Positionen an:


    Bei der Bitfolge 0,0,0,0,0 die Positionen 1, 10, 11
    Bei der Bitfolge 0,0,0,0,1 die Positionen 1, 12, 13
    usw.



    So sollte es im Prinzip funktionieren. Die Bewegung zum Greifen und Absetzen der Schachfiguren sind natürlich komplizierter, aber das Prinzip bleibt gleich.


    Alles in allem ziemlich viel Schreibarbeit, mehr Numerieren als Programmieren, der Arbeitsspeicher des Robters könnte auch knapp werden ...


    Grüße


    Urmel

    Einmal editiert, zuletzt von Urmel ()

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden