Bildverarbeitungsdaten in KRL-Code schreiben

  • Hallo liebe Robotler,
    ich bin neu hier und hoffe das meine Frage hier angemessen ist.
    ich befasse mich momentan mit flexiblen Sortiervorgängen von Platten mittels eines Roboters. Es sollen von einem unsortierten Plattenstapel, Platten, die ohne Orientierung gestapelt sind, aufgenommen werden. Dafür liefert eine Kamera und dessen zugehörige Bilderverarbeitungssoftware Daten (Mittelpunkt der Platte: X,Y,Z Wert; Länge und Breite der Platte und den Drehwinkel). Diese Daten werden mittels eines TCP/IP-Protokoll an eine Beckhoff-SPS (nicht die KRC interne SPS) übertragen. Das bedeutet diese Daten/variablen Werte sind schon da und müssen nun in den KRL-Code geschrieben werden. Der Greifer soll nun mittels einer PTP-Bewegung diesen Mittelpunkt mit seinem TCP anfahren.
    Ist hier ein Zusatzmodul für die Protokollübertragung nötig?
    Ist dies ein Thema, wo man CREAD/CWRITE anwendet?
    Beziehungsweise hat ihr jemand vielleicht einen Lösungsansatz für dieses Problem?
    Vielen Dank für eure Hilfen und ein schönes Pfingsten.

    Einmal editiert, zuletzt von steffenl ()

  • Schritt für Schritt zum Roboterprofi!
  • Hallo Steffenl,
    was für eine KRC? Softwareversion?
    Welche Bussysteme / Softwareoptionen hast Du schon?
    Wenn Bussystem zwischen Deiner Beckhoff und KRC schon besteht, Datenaustausch in Bitgruppen in Signalvereinbarungen auf KRC übernehmen und danach Deiner Greifposition zuweisen.
    Nachkommastellen werden oft SPS-seitig mal 100 // KRC seitig geteilt durch 100 gerechnet.
    +- mit separatem Bit handeln oder mit 32bit Signalvereinbarungen.
    Base noch abgleichen mit Deiner Kamera nicht vergessen.
    CREAD/CWRITE wäre Variante bei KRC1 /2 mit serieller Schnittstelle möglich.


    Weitere Infos müssten schon mehrfach über Suche im Forum findbar sein.
    Gruss SJX

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • Hallo SJX,
    vielen Dank für die Antwort.
    Unsere Zelle basiert auf einer KRC 4 Steuerung und die Softwareversion ist KR C V 8.3.32. Die Datenübertragung soll über eine Ethercat Modul EK 1100 von Beckhoff laufen. Diese wird primär für die Sicherheitstechnik verwendet. Nun ist die Frage, ob es möglich ist über diese Schnittstelle auch die Datenübertragung für die Positionswerte laufen zu lassen, da unsere Zelle auch Roboter intern mit Ethercat Modulen von Beckhoff arbeitet. Unsere SPS (Beckhoff CX5130) wird als Server fungieren und der Roboter soll als Client die Daten bekommen.
    Ist es möglich die Daten in einem String-Format zu übertragen?
    Als weitere Optionen haben wir noch die Möglichkeit von Profi Net und das Ethernet mit TCP/IP Protokoll.



    Danke für eure Zeit


    Gruß Steffenl

    Einmal editiert, zuletzt von steffenl ()

  • Zitat


    Die Datenübertragung soll über eine Ethercat Modul EK 1100 von Beckhoff laufen. Diese wird primär für die Sicherheitstechnik verwendet.


    Das heisst, Du hast ne Bridge-Klemme EL6695 am EK1100 für Safety zu Roboter ?
    Da könntest Du die Positionswerte parallel mit den konfigurierbaren Standard-IO's als 32bit-Gruppen zum Roboter senden.
    Wäre am simpelsten und für jedermann verständlich.


    Bei WoV 5.0 liegt eine Doku bei. "KR_C4_EtherCAT_KSS_VSS_82_83_84_85_de.pdf"
    Hat Beschrieb drin über Zugriff via EtherCAT-SDO aus KRL.
    Sieht so aus, dass Funktionen vorhanden sein sollen für Kommunikation VoE, CoE, FoE, AoE, was sehr interessant wäre und kommunikationstechnisch absolut toll wäre.
    Hab diesen Beschrieb aber auch das erste mal gesehen. (Hat's schon jemand versucht?)


    Gruss SJX

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • Hallo SJX,
    da liegst du richtig. Es ist eine EL6695 Bridge-Klemme.
    Roboterseitig hätten wir die Möglichkeit von EthernetKRL.
    Ist es dir möglich mir einen kleinen Denkanstoß zu schicken wie man die Werte über über die Standard IO's sendet?
    Wie werden die Standard IO's angesprochen TwinCat und Roboter seitig?


    Ligt die oben benannten Doku auch bei WoV 4.0 bei?


    Danke dir und eine schönes Wochenende,
    Gruß, Steffenl

    Einmal editiert, zuletzt von steffenl ()

  • auf die schnelle als Ideengabe:
    in config.dat
    SIGNAL pPICK_X $IN[1] TO $IN[32] ;WERT VON SPS x100
    [size=3]SIGNAL pPICK_Y $IN[33] TO $IN[64] ;WERT VON SPS x100[/size]
    [size=3]SIGNAL pPICK_Z $IN[65] TO $IN[96] ;WERT VON SPS x100[/size]
    [size=3]SIGNAL pPICK_A $IN[97] TO $IN[128] ;WERT VON SPS x100[/size]
    [size=3]SIGNAL pPICK_B $IN[129] TO $IN[160] ;WERT VON SPS x100[/size]
    [size=3]SIGNAL pPICK_C $IN[161] TO $IN[192] ;WERT VON SPS x100[/size]
    in*.src:
    DECL FRAME pPICK_POS

    ;UEBERNAHME DER DATEN IN POSITION NACH ANFORDERUNG
    [size=3]pPICK_POS.X = pPICK_X/100.[/size]
    [size=3]pPICK_POS.Y = [/size][size=3]pPICK_Y/100.[/size]
    [size=3]pPICK_POS.Z = [/size][size=3]pPICK_Z/100.[/size]
    [size=3]pPICK_POS.A = [/size][size=3]pPICK_A/100.[/size]
    [size=3]pPICK_POS.B = [/size][size=3]pPICK_B/100.[/size]
    [size=3]pPICK_POS.C = [/size][size=3]pPICK_C/100.[/size]

    PTP VORPOS
    LIN [size=3]pPICK_POS[/size]
    [size=3][/size]



    Ps:Hinweis habe ich nur in der WoV5.0 Doku gefunden. Downloadbar auf Homepage


    Gruss SJX

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

    Einmal editiert, zuletzt von SJX ()

  • Hallo liebe Community,
    nachdem wir nun die Kommunikation zwischen Beckhoff SPS und KRC 4 via Ethercat hinbekommen haben, möchten wir nun Digitale Eingänge auslesen.
    Wir haben unter Digitalen Ein-/ Ausgängen Zugriff auf ein DWORD, dass wir von der SPS erhalten. Dass DWORD_0 zum Beispiel ist auf den Eingängen 150-181 belegt. Dieser Bereich sind die einzelnen Bits des DWORD. Die SPS schickt beispielsweise den Dezimalwert 100. Wir können nur die einzelnen Bits des DWORD in den jeweiligen Eingängen einsehen, ob der Eingang gesetzt ist oder nicht.
    Wir möchten aber die Dezimalzahl des DWORD in unserem KRL-CODE verwenden.
    Code Beispiel fürs Verständnis:


    IF DWORD_BEISPIEL(dez. Wert des dword) = 100 THEN
    'Programmablauf
    END IF

  • Dies geht mit den Signalvereinbarungen.
    Zuerst Deklarieren, z.B. Global in der config.dat oder Lokal in der .dat deines .src oder direkt im Deklarationsteil deines .src:
    SIGNAL DWORD_BEISPIEL $IN[150] TO $IN[181]


    Dann im Ablauf wie Du geschrieben hast:
    [size=1][font=verdana,sans-serif]IF DWORD_BEISPIEL== 100 THEN [/font][/size]
    [size=1][font=verdana,sans-serif] 'Programmablauf[/font][/size]
    [size=1][font=verdana,sans-serif]END IF[/font][/size]


    Gruss SJX

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

    Einmal editiert, zuletzt von SJX ()

  • Hallo SJX,


    erstmal fettes :danke:


    mit deinen Tipps wird sind nun noch einen Schritt weiter gekommen und können mittlerweile Koordinaten von der SPS schicken.
    Wir übersenden folgende Daten aus der Bildverarbeitung: X,Y,Z-Koordinaten des Mittelpunkts des Brettes (welches mittels Vakuumgreifer aufgenommen werden soll) und den Drehwinkel wie das Brett orientiert ist im Bassiskoordinatesystem des Aufnahmetisches.
    Nun würden wir gerne mittels PTP-Bewegung den besagten Punkt anfahren.


    Hast du/ihr eine Idee, wie man das Problem der nötigen A,B,C, (Status and turn) Thematik umgehen kann?

  • Hallo Hermann,


    ok dachte vielleicht das es da eine Alternative zur Lin Bewegung gibt.


    zur info:


    das ist ein Hochschulprojekt und es gab immer wieder Veränderungen an der Zelle, was uns teilweise zurückgeworfen hat und mehrere Studenten daran arbeiten

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