Hallo zusammen,
ich arbeite daran Positionsdaten einer Cognex Kamera (IS3D-L4300) an die Kuka KRC 4 Steuerung (8.6.11) zu übergeben.
Grundsätzlich funktioniert die Kommunikation von Kamera zu Roboter, ich habe aber mit dem Feinschliff Probleme.
Der soll Ablauf sieht so aus:
-Roboter holt die 3D Kamera aus dem Greiferbahnhof und führt sie zur Bildaufnahme über die Teile
-Roboter legt die Kamera wieder weg und holt den Teilegreifer (in der Zeit berechnet die Kamera die Positionsdaten für mehrere Teile)
-Roboter schickt ein Trigger-Signal an die Kamera und die Kamera übermittelt die Anzahl der gefundenen Teile und den ersten Positionsdatensatz
Das ganze funktioniert soweit, dass die Kamera ein Bild macht und danach direkt die Daten sendet. Je nach timing funktioniert die Übertragung oder der Roboter wartet vergebens auf Daten. (Hier soll das trigger Signal helfen)
Bisher gelingt es mir noch nicht vom Roboter aus per "Native Command" die Kamera zu erreichen.
Per telnet vom PC aus funktioniert die Eingabe.
Vieleicht sieht jemand, was ich falsch mache.
Def Datenabruf()
FOR i=(1) TO (64)
Kamera[i]=0
ENDFOR
FOR i=(1) TO (64)
Bytes[i]=0
ENDFOR
RET=EKI_Init("BinaryStream")
RET=EKI_Open("BinaryStream")
;WAIT FOR $FLAG[51]
;RET=EKI_GetString("BinaryStream","Buffer",Bytes[])
;$FLAG[51]=FALSE
;;;wait sec 5
;WAIT FOR $FLAG[51]
;RET=EKI_GetString("BinaryStream","Buffer",Bytes[])
;$FLAG[51]=FALSE
;wait sec 0.1
;SWRITE(Bytes[],state,offset,"%s","admin")
;Bytes[STRLEN(Bytes[])+1]='H0D'
;Bytes[STRLEN(Bytes[])+2]='H0A'
;RET=EKI_Send("BinaryStream",Bytes[])
;wait sec 0.1
;FOR i=(1) TO (64)
;Bytes[i]=0
;ENDFOR
;SWRITE(Bytes[],state,offset,"%s"," ")
;Bytes[STRLEN(Bytes[])+1]='H0D'
;Bytes[STRLEN(Bytes[])+2]='H0A'
;RET=EKI_Send("BinaryStream",Bytes[])
;wait sec 0.1
;FOR i=(1) TO (64)
;Bytes[i]=0
;ENDFOR
;SWRITE(Bytes[],state,offset,"%s","SE1")
;Bytes[STRLEN(Bytes[])+1]='H0D'
;Bytes[STRLEN(Bytes[])+2]='H0A'
;RET=EKI_Send("BinaryStream",Bytes[])
;wait sec 0.1
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.logics.wait; Time=2.0
;ENDFOLD
;ENDFOLD
WAIT FOR $FLAG[51]
RET=EKI_GetString("BinaryStream","Buffer",Kamera[])
$FLAG[51]=FALSE
offset = 0
SREAD (Kamera[], state, offset, "%f",PX)
offset = 8
SREAD (Kamera[], state, offset, "%f",PY)
offset = 16
SREAD (Kamera[], state, offset, "%f",PZ)
offset = 24
SREAD (Kamera[], state, offset, "%f",PA)
offset = 32
SREAD (Kamera[], state, offset, "%f",PB)
offset = 40
SREAD (Kamera[], state, offset, "%f",PC)
;CREAD(Bytes[],state,modus,Timeout,offset,"%d%d%d%d%d%d",PosX,PosY,PosZ,PosA,PosB,PosC)
Abstand5.X = PX
Abstand5.Y = PY
Abstand5.Z = PZ
Abstand5.A = PA
Abstand5.B = PB
Abstand5.C = PC
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.logics.wait; Time=2.0
;ENDFOLD
;ENDFOLD
RET=EKI_Close("BinaryStream")
RET=EKI_Clear("BinaryStream")
End
Display More