Hi.I'm trying to use Ethernet KRL to send and receive data automatically .In T1 and T2 mode the data transmission is working correctly but in automatic mode the code is not running.Can someone help me please? Thanks.
P.S: Working with KUKA KR16 & KRC4 robot controller
Here's my .SRC code:
&ACCESS RV
&REL 6
&PARAM DISKPATH = KRC:\R1\Program
&PARAM SensorITMASK = *
&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
DEF XmlCallBack( )
;FOLD Declaration
INT i
DECL EKI_STATUS RET
$FLAG[1]=FALSE
;ENDFOLD
;FOLD Communicated data
;FOLD receive from external program
; <Sensor>
; <Message>Example message</Message>
; <Positions>
; <Current X="4645.2" />
; <Before>
; <X>0.9842</X>
; </Before>
; </Positions>
; <Nmb>8</Nmb>
; <Status>
; <IsActive>1</IsActive>
; </Status>
; <Read>
; <xyzabc X="210.3" Y="825.3" Z="234.3" A="84.2" B="12.3" C="43.5" />
; </Read>
; <Show error="0" temp="9929">Taginfo in attributes</Show>
; <Free>2912</Free>
; </Sensor>
;ENDFOLD
;FOLD send to external program
; <Robot>
; <Data>
; <ActPos X="1000.12">
; </ActPos>
; <LastPos A="..." B="..." C="..." X="..." Y="..." Z="...">
; </LastPos>
; </Data>
; <Mode>ConnectSensor</Mode>
; <RobotLamp>
; <GrenLamp>
; <LightOn>1</LightOn>
; </GrenLamp>
; </RobotLamp>
; <Status>12345678</Status>
; </Robot>
;ENDFOLD
;ENDFOLD
;FOLD INI
;FOLD BASISTECH INI
BAS (#INITMOV,0 )
;ENDFOLD (BASISTECH INI)
;FOLD USER INI
;Make your modifications here
;ENDFOLD (USER INI)
;ENDFOLD (INI)
;FOLD Define callback
INTERRUPT DECL 89 WHEN $FLAG[998]==TRUE DO GET_DATA()
INTERRUPT ON 89
;ENDFOLD
RET=EKI_Init("XmlCallBack")
RET=EKI_Open("XmlCallBack")
;FOLD Write data to connection
; Write frame to <LastPos X="" Y="" Z="" A="" B="" C="" />
RET=EKI_SetFrame("XmlCallBack","Robot/Data/LastPos", $POS_ACT)
; Write real to <ActPos X="" />
RET=EKI_SetReal("XmlCallBack","Robot/Data/ActPos/@X", 1000.12)
; Write int to <Status></Status>
RET=EKI_SetInt("XmlCallBack","Robot/Status", 12345678)
; Write string to <Mode></Mode>
RET=EKI_SetString("XmlCallBack","Robot/Mode","ConnectSensor")
; Write bool to <LightOn></LightOn>
RET=EKI_SetBool("XmlCallBack","Robot/RobotLamp/GrenLamp/LightOn",true)
;ENDFOLD
RET = EKI_Send("XmlCallBack","Robot")
;wait until data read
WAIT FOR $FLAG[1]
RET=EKI_Close("XmlCallBack")
RET=EKI_Clear("XmlCallBack")
END
DEF GET_DATA()
;FOLD Declaration
INT i
DECL EKI_STATUS RET
DECL AXIS AXES1
CHAR valueChar[256]
INT valueInt
REAL valueRealX
REAL valueRealY
REAL valueRealZ
REAL valueRealA
REAL valueRealB
REAL valueRealC
BOOL valueBOOL
FRAME valueFrame
;ENDFOLD
;FOLD Initialize sample data
FOR i=(1) TO (256)
valueChar[i]=0
ENDFOR
valueInt=0
valueRealX=0.0
valueRealY=0.0
valueRealZ=0.0
valueRealA=0.0
valueRealB=0.0
valueRealC=0.0
valueFrame={X 0.0,Y 0.0,A 0.0,B 0.0,C 0.0}
valueBOOL=FALSE
;ENDFOLD
;FOLD Get received sensor data
; Get string in <Message>Example message</Message>
RET=EKI_GetString("XmlCallBack","Sensor/Message",valueChar[])
; Get real value in <Current X="4645.2" />
RET=EKI_GetReal("XmlCallBack","Sensor/Positions/Current/@X",valueRealX)
RET=EKI_GetReal("XmlCallBack","Sensor/Positions/Current/@Y",valueRealY)
RET=EKI_GetReal("XmlCallBack","Sensor/Positions/Current/@Z",valueRealZ)
RET=EKI_GetReal("XmlCallBack","Sensor/Positions/Current/@A",valueRealA)
RET=EKI_GetReal("XmlCallBack","Sensor/Positions/Current/@B",valueRealB)
RET=EKI_GetReal("XmlCallBack","Sensor/Positions/Current/@C",valueRealC)
AXES1.A1=valueRealX
AXES1.A2=valueRealY
AXES1.A3=valueRealZ
AXES1.A4=valueRealA
AXES1.A5=valueRealB
AXES1.A6=valueRealC
; Get int value in <Nmb>8</Nmb>
RET=EKI_GetInt("XmlCallBack","Sensor/Nmb",valueInt)
; Get bool value in textnode <IsActive>1</IsActive>
RET=EKI_GetBool("XmlCallBack","Sensor/Status/IsActive" ,valueBOOL)
; Get bool value in attribute <Show error="0" />
RET=EKI_GetBool("XmlCallBack","Sensor/Show/@error" ,valueBOOL)
; Get frame in <xyzabc X="210.3" Y="825.3" Z="234.3" A="84.2" B="12.3" C="43.5" />
RET=EKI_GetFrame("XmlCallBack","Sensor/Read/xyzabc",valueFrame)
;ENDFOLD
;FOLD Signal read
PTP AXES1
$FLAG[998]=FALSE
$FLAG[1]=TRUE
END