Hallo zusammen,
ich hoffe dass mir das gebündelte Wissen der Experten hier helfen kann da ich nun seit Stunden ratlos vor meinem Bildschirm sitze.
Es geht um folgendes, eine Keyence Kamera CV-X 400 soll Positionen von einzelnen Bauteilen in einer Kiste erkennen und der Kuka (KRC5 mit KSS 8.7.6) soll die Daten danach abrufen und abfragen. Das klappt auch soweit und er fährt die Punkte auch richtig an.
Nun zum eigentlichen Problem: Wenn eine Kiste abgearbeitet wurde und eine neue, volle Kiste eingeschleust wird, dann soll der Kuka den Typ und das auf der Keyence laufende Programm mit dem hinterlegten Programm und Typ vergleichen und gegebenenfalls das Programm auf der Kamera wechseln.
;Issues the trigger.
KeySendString("TA")
KeyRecvString(strBuf[])
IF NOT STRCOMP(strBuf[], "TA", #CASE_SENS) THEN
GOTO END_PROG
ENDIF
;Gets the results from the controller.
KeyRecvString(strBuf[])
bRet = KeySplitStringBySpace(strBuf[], 1, rPrm[])
IF bRet <> TRUE THEN
GOTO END_PROG
ENDIF
nResultNum = rPrm[1]
IF nResultNum == 0 THEN
GOTO END_PROG
ENDIF
Display More
Hiermit wird der Trigger für ein neues Bild an die Kamera gesendet und ausgewertet.
KeySendString("PW")
KeyRecvString (strBuf[])
IF NOT STRCOMP (strBuf[],"PW", #CASE_SENS) THEN
nMessageType=5000
nMessageNr=27
RM_MESSAGE = CallMessage(nMessageType, nMessageNr)
B_Stopp=TRUE
ENDIF
Mit dem Befehlt "PW" soll man laut Keyencedoku einen Programmwechsel veranlassen, jedoch bekomme ich die Logik für einen Wechsel zu einem bestimmten Programm je nach Typ nicht hin.
Die verschiedenen Programme der Kamera habe ich in unter "Typ_Zuweisen" hinterlegt mit verschiedenen Cases je nach Typ.
Das selbe gilt für den Befehl "PR" damit soll man die einzelnen Werte auslesen können aber auch hier hab ich ein Problem mit der Logik an sich.
Ich möchte die Werte für den aktiven SD-Kartenslot der Kamera und das aktuelle aktive Programm auslesen damit ich diese mit meinen gespeicherten Variablen "i_SD_akt" und "i_PRG_akt" vergleichen kann um zu entscheiden ob ein Wechsel durch "PW" notwendig ist wenn sich der TYP des Materials in der Kiste ändern sollte.
Ich weiß dass ich die Integer Variablen mit SWRITE zu einem String umwandeln muss damit ich diese per EthernetKRL an die Kamera leiten kann und auslesen dann vermutlich mit SREAD, jedoch bekomm ich keine Logik hin die keinen Syntaxfehler ausgibt.
Hoffe mir kann da jemand aushelfen, ich bin langsam am verzweifeln.