SmartController EX mit Raspberry Pi über RS232

  • Guten Tag,


    ich möchte eine Kamera in das Adept Robotersystem integrieren, ohne dabei ACE Sight zu benutzen. Die Kamera soll ein Bild machen und die Information auf einem Raspberry Pi abspeichern. Der SmartController EX holt dann die Daten über RS232 und stellt diese Daten in Omron ACE zur Verfügung, um die Roboter programmieren zu können.

    Für den Pi habe bereits RS232 freigeschaltet und es hat auch funktioniert, wenn ich den Pi über COM-Port mit einem Computer verbindet habe. Nun habe ich mich die letzten Tage damit beschäftigt, die Daten vom Pi auf SmartController zu holen und diese dann in Omron ACE zu importieren, aber leider ohne Erfolg. Ist es überhaupt möglich, über Omron ACE die Daten so abzulesen?


    Vielen Dank im Voraus!

  • ANZEIGE
  • Hallo Panagaru,


    du kannst die Daten über RS 232 an den Controller schicken. Aus den Daten kannst du dir eine Location zusammenbasteln und diese anfahren. Hier ein Beispiel für die RS 232 Schnittstelle:


    PROGRAM a.serial()

    ;

    ;* Copyright (c) 2012 by {company name}

    ; Das Programm unterscheidet sich von der Aufgabenstellung indem es sowohl das Senden als auch das ; Empfangen in einem Programm ausfuehrt. Es sendet ueber die serielle Schnittstelle sobald der Inhalt

    ; der Stringvariablen $ser.send ungleich "" ist (d.h. nicht leer ist)

            LOCAL $c, $ser.input

            LOCAL REAL slun

            GLOBAL $ser.send

            ATTACH (10) ;RS 232 – 1 Schnittstelle

    $ser.send = ""

            WHILE TRUE DO

    c = GETC(slun,1) ; Nicht wartendes GETC da mode = 1

    ; alle Zeichen bis auf Carriage Return und Fehlermeldungen (<= 0) einlesen

                IF (c > 0) AND (c <> 13) THEN

    $c = $CHR(c)

    $ser.input = $ser.input + $c

                END ;IF (c > 0) AND (c <> 13)

    ; ist das Zeichen ein Carriage Return bzw. 128 Zeichen in der Stringvariablen den Text im Monitor

    ; Fenster ausgeben.

                IF (c == 13) OR (LEN($ser.input) == 128) THEN

    TYPE $TIME(0)+” ->” + $ser.input

    $ser.input = ""

                END ;IF (c == 13)

                IF $ser.send <> "" THEN

                    WRITE (slun) $ser.send

    $serial.send = ""

                END ;IF $ser.send <> ""

                WAIT.EVENT , 0.1

         END ;WHILE TRUE

    Die Strings würde ich mit Decode in Häppchen Schneiden um die einzlnen Zahlenwerte zu bekommen.


    $DECODE string function

    Code
    DO 	    
    $temp = $DECODE($string_var," ,",0)     ;Pick off a number string    
    value[i] = VAL($temp)                   ;Convert to real value    $temp = $DECODE($string_var," ,",1)                     ;Discard spaces and commas    
    i = i+1                                 ;Advance the array index
    UNTIL $string_var == ""                     ;Stop when input is empty

    Mit der Instruction "Set" kannst du aus den einelnen Werten dann eine Location machen.


    Was ich nicht verstehe ist, was du in ACE direkt mit den Daten machen möchtest.


    Gruß

    Fabian

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