Hallo allerseits,
ich habe gerade ein Problem mit meinem Kuka, das mich an den Rande des Wahnsinns treibt. Ich habe bis jetzt schon alle Threads zum Thema serielle Kommunikation und Kuka mehrfach durchforstet und keiner konnte mir leider wirklich weiterhelfen mit meinem Problem.
Ich möchte folgende serielle Kommunikation zum Laufen bringen:
serielles Gerät <--> COM2 (interne Schnittstelle)
alternativ, falls nicht möglich:
serielles gerät <--> COM3 (externe USB-RS232-Schnittstelle)
Parameter serielle Schnittselle:
Geschwindigkeit: 9600Bit/s
Datenbits: 8
Stoppbits: 1
Parität: keine
Protokoll: keins (XON/XOFF ohne Start/Stopzeichen)
Grundsätzlich ist zu sagen, dass beide Schnittstellen beim Empfang über Hyperterminal und keiner Aktivierung im VKRC die korrekten Daten im folgenden Format ausgeben:
"XXX.XX / YYY.YY"
Bei Aktivierung vom COM3 ist diese auch nicht mehr über Windows ansprechbar (ist ja gewollt). Anbei finden sich Auszüge aller von mir geänderten Konfigurationsdateien und das Anwenderprogramm:
serial.ini
...
[COM2]
BAUD=9600
CHAR_LEN=8 ; 7,8
STOP_BIT=1 ; 1,2 at time not changeable
PARITY=2 ; EVEN=2, ODD=1, NONE=0
PROC=1 ; 3964R=1, SRVT=2, WTC=3, XONXOFF=4
[COM3]
BAUD=9600
CHAR_LEN=8 ; 7,8
STOP_BIT=1 ; 1,2 at time not changeable
PARITY=0 ; EVEN=2, ODD=1, NONE=0
PROC=4 ; 3964R=1, SRVT=2, WTC=3, XONXOFF=4
...
[XONXOFF]
CHAR_TIMEOUT=50 ; msec Timeout after last received character
; to recognize the end of telegram
MAX_TX_BUFFER=2 ; 1..5
MAX_RX_BUFFER=2 ; 1..20
SIZE_RX_BUFFER=100 ; 1..2048 longest expected telegram length + 15 characters
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)
DSR_LINE=0 ; 0 = DSR line not connected, 1 = DSR line must be high
...
Alles anzeigen
$custom.dat
...
DECL SER $PSER_2={PROTO 4,PROC 2,RCO 5,BL 0,BAUD 9600,NOC 8,NOS 1,PARITY 0,TRC 0,FLP 0,LLP 0,RT 0,PT 0,DSR 0,WCCXON 0,VXON 0,VXOFF 0,WEOBC 0,VEOBC 0} ;SCHNITTSTELLE 2
DECL SER $PSER_3={PROTO 4,PROC 2,RCO 5,BL 0,BAUD 9600,NOC 8,NOS 1,PARITY 0,TRC 0,FLP 0,LLP 0,RT 0,PT 0,DSR 0,WCCXON 0,VXON 0,VXOFF 0,WEOBC 0,VEOBC 0} ;SCHNITTSTELLE 2
...
CHANNEL :SER_2 :SER_2 $PSER_2
CHANNEL :SER_3 :SER_3 $PSER_3
...
hw_inf.ini
...
[SERIAL]
;ENABLE: COM is accessible by robot (vxWorks)
;DISABLE: COM is accessible by Win95
;CONSOLE: for developer only
COM3=ENABLE ;[ENABLE, DISABLE, CONSOLE]
COM2=ENABLE_EX ;only useable with special ENABLE
...
Aufruf
;-----------------------------------------------------------
DEF USER_MAIN (PAR1 :IN,PAR2 :IN, PAR3 :IN,PAR4 :IN,PAR5 :IN,PAR6 :IN,PAR7 :IN)
;Aufruf im Hauptlauf
INT PAR1,PAR2,PAR3,PAR4,PAR5,PAR6
BOOL PAR7
INT HANDLE,OFFSET
DECL STATE_T SW_T,SC_T,SR_T
DECL MODUS_T MW_T,MR_T
REAL TIMEOUT,XPOS,YPOS
MW_T=#SYNC
MR_T=#ABS
TIMEOUT=10.0
COPEN(:SER_3,HANDLE)
IF HANDLE==0 THEN
HALT
ENDIF
OFFSET=0
;Über diesen Punkt kommt das Programme NIE(!) hinaus.
WAIT FOR $DATA_SER3>0
CREAD(HANDLE,SR_T,MR_T,TIMEOUT,OFFSET,"%f / %f",XPOS,YPOS)
CCLOSE(HANDLE,SC_T)
END
...
Alles anzeigen
Ist die von mir gewählte Variable $DATA_SER3 falsch bzw. falsch abgefragt? Ich weiß mir wirklich keinen Rat mehr!
Ich möchte mich jetzt schon einmal für eure Hilfe/Mühe bedanken!
Grüße,
jodel