HI ALL,
DOES THE PARITY BIT, WHEN SET, INDICATES PARITY PROGRAM NUMBER(2,4,6...) AND WHEN RESET REPESENTS ODD PROGRAM NUMBER (1,3,5...)(CASE OF THE PROGRAM)?
THANK YOU IN ADVANCE
HI ALL,
DOES THE PARITY BIT, WHEN SET, INDICATES PARITY PROGRAM NUMBER(2,4,6...) AND WHEN RESET REPESENTS ODD PROGRAM NUMBER (1,3,5...)(CASE OF THE PROGRAM)?
THANK YOU IN ADVANCE
This is the link of video tutorial that we used for the settings:
attached are pictures for one robot, as we tried to see if it would only communicate with one
this are the settings on the plc side
this are the settings in workvisual, the ip is in the subnet, we can ping the robot
this are the errors on the robot side
we tried with totali new tia portal program also, new ip addres new name for the robot on profinet but nothing is working
when we swich to the plc 1200 it is working
Has anyone encountered a similar problem:
We used a plc siemens S7-1200 configured PROFINET communication with two robots and everything worked normally and the communication absolutely worked
Due to the needs of the project we had to replace that plc with S7 1500 and we configured the communication again in the same way but the communication does not work.
Are there additional settings for the S7-1500 series? Has anyone had similar experiences?
Hi to all,
I'm sorry, I didn't phrase the question well, and I didn't analyze enough everything written in this post, with a little deeper analysis I realized the following:
The function I used from this post is the IntToReal function (written by panic mode )
DEFFCT REAL IntToReal(n:in)
DECL INT n,ofs
DECL CHAR buf[4]
DECL REAL f
ofs=0
CAST_TO(buf[],ofs,n)
ofs=0
CAST_FROM(buf[],ofs,f)
RETURN f
ENDFCT
Display More
it converts from signed int to real -> example (1156681166 convert to 1932.4313)
and I got the correct value
now I want to understand the logic of how KUKA reads a 32 bit integer (form from 32 Input values) in order to know what needs to be passed:
mathematically when represented in 32 bits as signed int (big endian):
My new question is the following: I declared a 32-bit SIGNAL in config:
SIGNAL DI_Test $IN[106] TO $IN[137]
are this values in KUKA represented as little endian -> is my IN[106] the last bit representing 2^0?
and does the KUKA with the help of SIGNAL declaration read this number as SIGNED INT or am I actually making a mistake there?
Do I need to swap the bytes order 4321 or 3412
I've tried several combinations, I think I'm doing something wrong
Thanks in advance
Hi Panic I was using your function for converting int to real and I got this error - in the picture, the value of SIGNAL(32 bit input) was 7, I declared it in $config file and called your function IntToReal. Do I need to do to something more? KSS 8.7 , Kuka KRC5 compact controller
Thank you for the answers,
I read that, but I thought it was not clearly defined whether it is possible to have an open channel both in the submit and in the program.
Hi,
Is it possible to have two EthernetKRL connections at the same time one in a classic program and other in expert submit?
Thank you in advance
Hi panic mode
Where can I find more about user safety input on X11? (the link is not working)
As the robots are connected to the PLC, does this mean that a physical bypass is not required for X11 in T1 and T2?
KSS 8.3
In the main program:
1. EthernetKRL communication is opened in XML form:
2. an interrupt is also declared
which is called when entire message arrives (FLAG 1 becomes true in that case, which, as you already know, is set in the config file :
<RECEIVE>
<XML>
...
<ELEMENT Tag="Robot01" Set_Flag="1" />
</XML>
</RECEIVE>
3. In this interrupt function, values are actually written from memory into some variables
This all works as it should for a while, but then it happens that the message that was sent arrives incorrectly, in the sense that I see that the variable True was sent from the PC, but the program read it as False
I thought that EKI_ClearBuffer before the message arrived would help, but that didn't help,
Another thing I tried is to set the new flag (FLAG[5] in Program Logic ) to False at the beginning of the function GET_FROM_PC().
When the end of the function is reached -> that is, everything has been read from memory, to set the FLAG[5] to True to ensure that the new message is written in variable -> While waiting for that FLAG[5] to become True in the main program (WAIT FOR $FLAG[5]==TRUE), but that only stopped the program:
Program Logic:
Main Program:
; Interrupt if ethernet message was received and set Flag 1 to TRUE
INTERRUPT DECL 89 WHEN $FLAG[1]==TRUE DO GET_FROM_PC()
INTERRUPT ON 89
; Reset Ethernet Receive Message
$FLAG[1]=FALSE
; ConXmlFile01.xml
serviceName[] = "ConXmlFile01"
RET=EKI_Init(serviceName[])
RET=EKI_Open(serviceName[])
....
WHILE (true)
...
;wait until data read
WAIT FOR $FLAG[1]
; Reset Ethernet Receive Message
$FLAG[1]=FALSE
;wait for FLAG 5 to be sure that message is read
WAIT FOR $FLAG[5]==TRUE
$FLAG[5]=FALSE
...
ENDWHILE
Display More
and in GET_FROM_PC:
DEF GET_FROM_PC( )
; Reset Ethernet Receive Message
$FLAG[1]=FALSE
;Flag that entire message is read
$FLAG[5]=FALSE
...
EKI_Get ...
...
$FLAG[5]=TRUE
END
Display More
Do you have any advice on how to solve this problem?
Thanks in advance
Thank you all, sorry I was not by the robot when I asked, I will try today.
I just want to check if a certain input has occurred during the loop as information, it is not necessary to know exactly when the input occurred, nor is it necessary to activate some action, so this completely solves my problem
in the for loop, linear movement is performed so that it does not stop at every point of the loop, but continues with C_DIS :
Is it possible to use an interrupt or some other method to monitor the value of the input, without stopping the robot, and without losing continuity?
It is only necessary to monitor if there is a change in the input in order to use that information later
This is in $machine.dat file
Do you think that it can be a problem that the tool is on the L bracket, and on the ceiling in the same time? And maybe load parameters are not ok?
Yes, in machine data file : FRAME $ROBROOT={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 180.0};
In the Manual it seas that robot can be attached to the ceiling
When we manually change its position, the robot moves normally.
The problem occurs when we test hand guidance with the help of the HEX sensor - along the global X,Y axis it still moves normally, but in the direction of the global Z axis this problem occurs (movement in height/upright)
Thank you for response