there is a reason many things are not in user documentation.
KRC4 to higher level controller sending values/messages
-
TickTack -
November 20, 2015 at 7:49 PM -
Thread is Resolved
-
-
Ok. I did could understand the code... I think...
But I lost my self with the IP adressing at WoV.
I need to put insert a Generic Explicity Massage EDS? When I try "Connect" its return a error: Diferent Vendor Number.
I did not see cleary were I will define the target of my comunication. Shoud I put a IP address in some place or the KRC4 will be a slave? a server? This will bethe scanner?still locking for Help.
Thanks
Were you successful sending/receiving EthernetIP explicit Messages?
I've attached a Gocator to the robot arm, and that damn thing only communicates through EIP Explicit Messaging. We've bought "KRC4 EtherNet/IP 1.0" since our robot is running KSS8.2. Kuka will be Scanner, Gocator will be adapter. Their own manual talks about communicating to AB PLCs using a generic EthernetIP device (see attached screenshot). Sounds as simple as sending cyclically an EIP CIP Generic Explicit Message to IP "x", Where Service Code is "e", class is "1", instance is "1" and Attribute is "6"
-
Hello,
I have KUKA KRC4
communicate vith PLC is Profinet
KSS 8.5
More than 50 Input parameters value are transmitted from the PLC to the Robot
Intiger value:
SIGNAL I_NAME_X $IN[321] TO $IN[336]
How can I accept all these 50 parameters with just two?
Idea is, but i dont know hot to realize on KUKA Robot:
Parameters:
INPUT
- ID_In (parameter number to be transmitted)
- Value (parameter value)
OUTPUT
- ID_Out (parameter number read)
I would do one subprogram running on the robot in the background (in SPS) and storing values in registers. The logic would be something like this:
If ID_In <> ID_Out
If ID_In = 1
Reg1 = Value
Els If ID_In = 2
Reg2 = Value
…..
Endif
ID_Out = ID_In
endif
From PLC will send Parameter 1 and the Value. The robot would read it and write it to the register, then it would send back conformation to the PLC OUTPUT ID_Out I read parameter 1.
When the PLC received information from the robot that I wrote parameter 1 on the robot, the PLC would send a value to the Robot for parameter 2, and so on ... This would reduce network traffic and consequently cycle time...
Fanuc have Registers, but how is solution on KUKA robot? Is solution rewrite this parameter into a variables and these variables used instead of these 50's Inputs?
I will be very grateful for the answer or the advice!
Please for help
-
maybe something like this:
PLC_COMMS.SRC
Code
Display MoreDEF PLC_COMMS() DECL INT OLD_ID OLD_ID=PARAM_ID ;LOOP IF PARAM_ID<>OLD_ID THEN PARAM[PARAM_ID]=PARAM_VAL PARAM_ECHO=PARAM_VAL OLD_ID=PARAM_ID ENDIF ;ENDLOOP END
PLC_COMMS.DAT
Code
Display MoreDEFDAT PLC_COMMS SIGNAL PARAM_ID $IN[101] TO $IN[116] SIGNAL PARAM_VAL $IN[117] TO $IN[132] SIGNAL PARAM_ECHO $OUT[101] TO $OUT[116] DECL GLOBAL INT PARAM[50] PARAM[1]=0 PARAM[2]=0 PARAM[3]=0 PARAM[4]=0 PARAM[5]=0 PARAM[6]=0 PARAM[7]=0 PARAM[8]=0 PARAM[9]=0 PARAM[10]=0 PARAM[11]=0 PARAM[12]=0 PARAM[13]=0 PARAM[14]=0 PARAM[15]=0 PARAM[16]=0 PARAM[17]=0 PARAM[18]=0 PARAM[19]=0 PARAM[20]=0 PARAM[21]=0 PARAM[22]=0 PARAM[23]=0 PARAM[24]=0 PARAM[25]=0 PARAM[26]=0 PARAM[27]=0 PARAM[28]=0 PARAM[29]=0 PARAM[30]=0 PARAM[31]=0 PARAM[32]=0 PARAM[33]=0 PARAM[34]=0 PARAM[35]=0 PARAM[36]=0 PARAM[37]=0 PARAM[38]=0 PARAM[39]=0 PARAM[40]=0 PARAM[41]=0 PARAM[42]=0 PARAM[43]=0 PARAM[44]=0 PARAM[45]=0 PARAM[46]=0 PARAM[47]=0 PARAM[48]=0 PARAM[49]=0 PARAM[50]=0 ENDDAT
you can remove comments to use LOOP and test it as robot program. but leave comments or remove LOOP/ENDLOOP if you are to call this from Submit.
-
panic mode Thank you!
The first part of code i will put in SPS, because the parameters can change anytime.
The second part i will put in config...
Or is it better to create one program and this program calling in SPS? Is in this case some difference?
-
I would create new Expert module called PLC_COMMS and put the example code in it
-
And how this Expert module running on the robot in the background to check every cycle?
-
Call it inside Submit LOOP by inserting line
PLC_COMMS()
-
aha,... ok.
Thank you
-
Can i Rename for Exemple:
DECL GLOBAL INT PARAM[7]
NAME1[1]=0
NAME2[2]=0
NAME3[3]=0
NAME4[4]=0
NAME5[5]=0
NAME6[6]=0
NAME7[7]=0
Is this possible, or do I have to declare all the variable in this case?
For now i waiting for robot, so i can not tested at this moment,...
-
The DECL, and the various initial values, all have to match. As long as you do that, and the variable names are legal (Only alphanumeric and "_", must start with a letter, 24char max length), anything goes.
Your example is not legal, b/c the array is being DECL'd as PARAM, but you are using NAME1, NAME2, etc. You would have to use:
DECL GLOBAL INT NAME[7]
NAME[1]=0
NAME[2]=0
and so on.
-