ETHERNETRSIXML ST_ETHERNET Configuration - Timing Issues

  • I am currently investigating timing issues in an ETHERNETRSIXML TCP connection, and have a question regarding the behavior of the parameters of the `ST_ETHERNET` object.

    I am referencing the manual "KUKA.Ethernet RSI XML 1.2 V2 en", issued 25.02.2008 (our software version is V5.6.12).


    Background:

    I have a working RSI link to our robot and am able to stream corrections that the robot then executes. The server is written in Python, and is running on a Windows 10 machine.

    Timing the python server loop from message reciept to message transmission shows the loop as within the required 12ms, but I recognize that the time at the client side (the robot) will necessarily be longer.


    Issue:

    When running programs, the RSI link will periodically fail with the error: SEN: RSI Execution Error - RSI stopped. Perusing the log at C:\KRC\ROBOTER\LOGS\RSIerrors.log shows the following lines:

     01.07.20 16:52:01 Error: ERX: Defined timeout limit was reached. Answer from server missed! 

     01.07.20 16:52:01 Error: Executing object 1000000 


    Question:

    I am unsure how the RSI link is failing, and want to place the failure in context of the parameters governing the RSI link on the robot side, as explained by manual page 48/83 (see attached). How can I determine if this failure is due to consecutive late packages (eERXmaxLatePackages), or an overall percentage of late packages (eERXmaxLateInPercent)?


  • I ran a test on our system, changing the values of the ST_ETHERNET parameters to better understand their influence on the TCP link behavior.

    The error messages related to these errors are not immediately obvious.


    Testing eERXmaxLateInPercent

    Setup:

    To test this, I turned up maxLatePackages and turned down both maxFieldOfView and maxLateInPercent to guarantee a failure by late packet percentage. I then ran a program that moved the robot to the toolcheck position XHOME1, activated RSI, then moved back to XHOME.

    Code
    err = ST_SETPARAM(hEthernet,eERXFastCycle,0)
    err = ST_SETPARAM(hEthernet,eERXmaxFieldOfView,10)
    err = ST_SETPARAM(hEthernet,eERXmaxLateInPercent,1)
    err = ST_SETPARAM(hEthernet,eERXmaxLatePackages,100)

    Results:

    Surprisingly, no timeout errors occurred during this test.


    Testing eERXmaxLatePackages


    Setup:

    To test this, I turned down maxLatePackages and turn up maxLateInPercent to guarantee a failure by consecutive late packages. I then ran the same program as above.

    Code
    err = ST_SETPARAM(hEthernet,eERXFastCycle,0)
    err = ST_SETPARAM(hEthernet,eERXmaxFieldOfView,10)
    err = ST_SETPARAM(hEthernet,eERXmaxLateInPercent,90)
    err = ST_SETPARAM(hEthernet,eERXmaxLatePackages,1)

    Results:

    Link failed instantly upon hitting the ST_ON1 block. Inspection of the `RSIError.log` file revealed the following issue:

     01.07.20 16:52:01 Error: ERX: Defined timeout limit was reached. Answer from server missed! 

     01.07.20 16:52:01 Error: Executing object 1000000 

Advertising from our partners