Cognex und KRC1

  • Hallo,


    habe mich gerade neu registriert, da ich gerade versuche, ein Cognex Insight 5400 Bildverarbeitungssystem mit einer Kuka KRC1-Steuerung über eine RS232-Schnittstelle zu verbinden.


    Hat jemand schon Erfahrung mit diesem Thema oder weiss jemand, welches Protokoll sinnvoll ist?


    Woher weiss ich, das beim Cognex-System die beim Befehl "CWRITE" die Schnittstelle RS232 verwendet wird und nicht eine andere (LAN, USB)?


    In welchem Format werden die Werte beim VxWorks-Kernel aufgenommen?



    Grüße und vielen Dank!


    Marc

  • Schritt für Schritt zum Roboterprofi!
  • Hallo MaVe,
    ganz habe ich Deine Fragen nicht verstanden.
    Hat das Cognexsystem eine RS323 Schnittstelle? Wenn ja, welches Protokoll kann es - kein Protokoll, XON/OFF oder 3964R ?
    Das CREAD/CWRITE auf der KRC kann alle Formate verarbeiten (binär, ASCII,..). Kommt darauf an welche Formatparameter zu verwendest. :lol:
    Gruss

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hallo LindePaul,


    beim Cognex Insight 5400 handelt es sich um eine intelligente Kamera, die zur Konfiguration über LAN an einen PC und über COM 2 (RS232) an den KRC1 angeschlossen ist.


    Ich möchte irgendeine Zahl (z.B. "5") über den Befehl "WriteSerial" versenden. Normalerweise geschieht dies, sobald ich die Kamera "online" schalte (Einstellungen sind vorgenommen).


    Ich weiss allerdings nicht, wo man einsehen kann, ob die Zahl im VxWorks angekommen ist...


    Die Cognex-Software unterstützt Xon/Xoff oder kein Protokoll. Das 3964-Protokoll steht uns nicht zur Verfügung.
    Wir wollen nach Möglichkeit lediglich ein Bit (i.d.R. Koordinaten) ohne Protokoll senden und im Programm der KRC1 verarbeiten.


    Wenn ich schon mal einen Wert/eine Zahl empfangen bzw. im VxWorks einsehen und bestätigen könnte, wäre mir für weitere Versuche geholfen....


    Vielen Dank für die Rückmeldung!


    Gruss,


    MaVe

  • Hallo Marc,
    anbei ein Schnellkurs:
    ->hw_inf.ini
    [SERIAL]
    COM2=ENABLE_EX ; ENABLE -> KRC1 (ab V4.1)
    ->serial.ini
    [COM2]
    BAUD=???
    :
    PROC=4 ; 3964R=1, SRVT=2, WTC=3, XONXOFF=4


    nach den Änderungen Kaltstart an der KRC1 durchführen


    DEF CR_CW ( )
    INT HANDLE,OFFSET
    REAL TIMEOUT
    DECL STATE_T STATUS
    DECL MODUS_T WMODUS,RMODUS
    INT ERG
    TIMEOUT=1.0
    WMODUS=#ASYNC
    RMODUS=#ABS


    COPEN(:SER_2,HANDLE)
    IF HANDLE==0 THEN
    HALT
    ENDIF


    WAIT FOR $DATA_SER2>0 ; warte auf Telegramm (Integer) von Kamera
    OFFSET=0


    CREAD(HANDLE,STATUS,RMODUS,TIMEOUT,OFFSET,"%d",ERG)
    IF (STATUS.RET1<>#CMD_OK) THEN
    HALT
    ENDIF


    HALT ; ERG anschauen


    CWRITE(HANDLE,STATUS,WMODUS,"%d",ERG) ;ERG zur Kamera spiegeln
    END


    Bemerk: XON/XOFF oder pure serielle Kommunikation erst ab V4.1 !!!!


    Viel Erfolg

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hallo LindePaul,


    danke für den Hinweis!


    Werte einlesen mit Windows Hyperterminal funktioniert schon mal mit Xon/Xoff.


    Die Werte der Bildverarbeitung nimmt die KRC1-Steuerung allerdings noch nicht...


    Vielleicht liegt es an einem Startbit oder ähnlichem... Xon/Xoff wird von der Bildverarbeitung aber unterstützt...


    Veilleicht benötigt RS232 einen Trigger, den haben wir nicht angeschlossen, unsere RS232 unserer Bildverarbeitung ist lediglich mit Transmit, Receive und die Erdung verdrahtet...


    Gruss,


    Marc

  • Hallo Marc,
    wenn ich richtig verstehe
    - Hyperterm mit KRC1 ok?
    - Hyperterm mit Cognex ?
    - KRC1 mit Cognex geht nicht


    das Kabel mit Rx, Tx und Ground reicht.
    XON/XOFF abschalten kannst Du mit
    [XONXOFF]
    :
    XON_VAL=0 ; 0..255 XON character (decimal)
    XOFF_VAL=0 ; 0..255 XOFF character (decimal)
    ; if XON_VAL=0 and XOFF_VAL=0 then XON/XOFF protocol
    ; is disabled (pure serial communication)
    in der serial.ini.
    Ich glaube aber eher, dass die Einstellung ParityBit oder StopBit in der serial.ini nicht stimmen.
    Muss in der RS232-Beschreibung der Bildverarbeitung stehen.
    !! immer Kaltstart nach Änderung in der serial.ini durchführen !!
    Gruss

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hallo LindePaul,


    danke! Haben es jetzt geschafft!


    Der Datenempfang läuft und löst das Programm aus. Nur wenn der Wert zurückgesendet werden soll (obiges Programm), dann erscheint die Meldung "ERG WERT ungültig" ...


    Woran könnte das liegen?


    Kann man das Programm auch so konfigurieren, das er nur den ersten Wert nimmt, da sonst ein Empfangspufferüberlauf stattfindet (die Kamera sendet permanent Koordinaten) ...?


    Gruss,


    MaVe

  • Der liesst die ohnehin chronologisch aus. In der $DATA_SER-Variable steht die Anzahl der unverarbeiteten Nachrichten drin. Also musst Du um den Puffer zu lesen, einfach ne Schleife machen, die alle Nachrichten ausliest, bis der Puffer leer ist.

    If you and DEAD people can read Hex, how many people can read Hex?

  • uups :huh: wo ist meine Antwort?
    Habe eine Antwort gesendet während Marc mir auch eine Antwort schrieb. Ist die jetzt ganz weg, lieber Moderator ?

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hallo Marc,
    schreib ich halt nochmal :wallbash:


    Hast Du den Profibus konfiguriert? Dieser Fehler hat mit der seriellen Kommunikation nichts zu tun.


    Mein Beispielprogramm liest nur einen Integer ein - was jetzt die kamera schickt weis ich nicht !
    Kann man die Kamera nicht mit einem befehl zum Schweigen bringen ?
    Schreib mir bitte das Telegrammformat der Kamera auf - ich mach dir dann die Formatparameter.
    In welchem zeitlichen Abstand schickt denn die Kamera die telegramme?
    gruss

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hallo LindePaul,


    danke fürs 2x Schreiben :)...


    Die Kamera liefert 5-8 Werte pro Sekunde. Ich kann diese aber auch extern triggern, so das sie nur einen Wert liefert. Das Format Integer habe ich auch bei der Kamera eingestellt, stellt also kein Problem dar.


    Die Spiegelung der Werte kommt leider noch nicht bei der Kamera an, da der Roboter "ERG-Wert ungültig anzeigt".


    Bei Profibus habe ich keine Veränderungen vorgenommen, vielleicht ein zufälliger Fehler beim Kabel? Oder muss ich da etwas extra konfigurieren?


    Noch eine Frage an den [Moderator (kai_n):

    Wie kann man bei der $DATA_SER-Variable die unverarbeiteten Nachrichten einsehen bzw. den Puffer löschen?


    Danke für die Rückmeldung!


    Gruss,
    Marc

  • Hallo Marc,


    es scheint, das die Variable ERG mit einem falschen Format beschrieben wurde. Kontrolliere bitte den Wert ob er stimmt.
    Wenn an der Konfiguration und am Profibus selbst nichts geändert wurde - scheint ein Kabelfehler zu sein.
    $DATA_SERx zeigt die Anzahl der unverarbeiteten Telegramme an. Die Puffer kann man löschen durch lesen mit CREAD, mit CCLOSE, mit COPEN und Abwählen eines Programms(impliziet CCLOSE).
    Nochmal wegen ERG: wie schaut das Telegramm aus das die Kamera schickt? Logged COGNEX das mit? Wenn nicht, müssen wir das ein wenig "umständlich" in der KRC machen. Du benutzt eine KUKA-Software < V5.x, da ist noch kein Datenlogger eingebaut.
    Gruss Paul

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hallo Paul,


    habe beim Cognex-System Integer-Werte eingestellt, die mit Xon/Xoff korrekt übersendet werden und das Roboterprogramm auslösen. :danke:


    Der Pufferüberlauf ist gelöst, da die Kamera nicht mehr ständig, sondern nur über einen externen Trigger einzelne Werte liefert.


    Teste gerade, ob der ungültige ERG-Wert auch an der Kamera liegen kann, die die Werte nicht zum richtigen Zeitpunkt aufnimmt...


    Welche Informationen (außer Integer, Protokoll) enthält das Telegramm genau? :nocheck:


    Gruss,


    Marc

  • Hallo Paul,


    habe die Kamera erstmal zu Testzwecken auf EINEN Integer eingestellt, werde aber später mehrere Koordinaten und Winkel verschicken...


    Das genaue Telegramm der Kamera erfrage ich gerade und warte noch auf Antwort...



    Derzeit habe ich besonders Probleme mit der Meldung:


    "Fehler Konfiguration E/A-Treiber PBMASL" bzw. "...Interbus"


    Obwohl das eigentlich mit der seriellen Schnittstelle nichts zu tun hat, kommt die Fehlermeldung immer, wenn er gerade "SIMULIERE Warte auf DATA " durchführt...
    und zwar genau in dem Moment, wenn er die Daten erhält?!?


    Bin etwas verwundert. :nocheck:


    Gruss,


    Marc

  • Hallo Marc,
    bin auch verwundert. Bitte gib mir die genaue Versionsbezeichnung der KUKA software an.
    Auch die genaue Zeile mit "simuliere warte auf DATA".
    Hat jetzt ERG den richtigen Wert?
    Paul

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Ich hab bei mir nen Programm, das auf

    Code
    WAIT FOR var>0


    wartet. Wenn der in der Zeile Ankommt habe ich auch immer die Meldung "Simuliere Wait for var>0" im Display, bis die Bedingung erfüllt ist. Ich nehme an, das man im T1 Modus irgendeine Taste drücken kann, anstatt zu warten. Im Automatik-Modus geht das aber glücklicherweise nicht.
    Ist das vielleicht was ähnliches?

    If you and DEAD people can read Hex, how many people can read Hex?

  • Hallo Paul, hallo kai_n,


    die Zeile lautet: "Simuliere Warte auf $DATA_SER2>0" (wie im obigen Programm), diese nimmt die Kamera-Werte einwandfrei auf...


    Die Zeile mit der Meldung "ERG-Wert ungültig" lautet:


    CWRITE(HANDLE,STATUS,MODW,"%d",ERG)


    Die Kamera liefert aber Integer-Werte, die vom Roboter erfogreich aufgenommen werden ($DATA:_SER2), d.h. es gibt Probleme beim Senden bzw. Wert spiegeln, nicht beim Empfangen...


    Die Kuka-Software ist KRC V4.1.5


    Wie man bei "Simuliere Wait for var>0" einen manuellen Trigger betätigt, weiss ich leider nicht, da ich Werte immer von der Kamera sende und diese erfogreich den Roboter in Bewegung versetzen....


    Gruss,


    Marc

  • Verstehe ich Dich richtig? Im Programmcode ist die entsprechende Zeile

    Code
    WAIT FOR $DATA_SER2>o


    Wenn der Interpreter diese Zeile erreicht erscheint die Meldung

    Code
    Simuliere Warte auf $DATA_SER2>0


    Im Meldungsfenster. Wenn Das so ist, ist das dafür gedacht, das man im T1 und T2 Mode das WAIT durch drücken eines Soft-Key abbrechen kann. Im Automatikbetrieb gibt es diese Möglichkeit nicht, der Roboter wartet bis die WAIT-Bedingung wahr ist. Die Meldung erscheint allerdings trotzdem.


    Wegen dem CWRITE-Problem: Wie ist denn die ERG-Variable belegt? Was hast Du ihr zugewiesen?

    If you and DEAD people can read Hex, how many people can read Hex?

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