Codesys control for linux, EL6751 CanOpen gateway not receiving

Runtime
Anonymous
2019-05-13
2019-05-16
  • Anonymous - 2019-05-13

    Originally created by: sbrauns@moog.com

    Hi All,

    I have connected an an EL6751 CANopen Master to an CANopen slave device.

    But I keep getting the error.

    NetID 0, NodeID 1: SDO Read Timeout for object 16#1000sub16#00; AbortCode: 16#05040000
    

    If I connect a can tap I can see the outgoing message from the CANopen master and I also see the reply from the Slave device.
    But for some reason Codesys keeps retrying and doesn't see the reply message from the slave.
    What am I doing wrong?

    Here is the output of the CAN tap:

    Any help would be appreciated.

    Thanks,
    Sander

    IMG: Codesys_ethercat_overview.PNG

    IMG: CANsniffer_output.PNG

     
  • eschwellinger

    eschwellinger - 2019-05-14

    Hi,
    could you set CANOPEN_DEBUG as compiler define and send the plclogger then..?
    BR
    Edwin

     
  • Anonymous - 2019-05-15

    Originally created by: sbrauns@moog.com

    Hi Edwin,

    Thank you for you reply.
    I have attached the codesyscontrol.log with the compile switch set and the output of the can listing device.
    Hope this helps.

    Thanks,

    Sander

    Codesys Debug.zip [6.69 KiB]

     
  • eschwellinger

    eschwellinger - 2019-05-15

    Hi Sander,

    the problem is:

    EL6731 has a new Firmware and we will adapt this to 3.5SP15 release.

    The Workaround is:
    Description:
    Newer EL6751 firmware versions do not work (e.g. Rev.Nr. >= 0022).
    Driver does not receive CAN messages.
    New firmware version >= 17 need an additional CoE parameter with index 0x8001.
    From Beckhoff documentation:

    Index 8001 CAN Rx filter table
    From firmware 17 of the EL6751, parameter 0x8001 must be written with valid values.
    If all data are to be written into the CAN interface, the following must be entered:
    For 11 bit and 29 bit identifiers:
    0x8001: 01 00 00 00 00 00 00 FF FF FF 1F
    For 11 bit identifiers
    0x8001: 01 00 00 00 00 00 00 00 FF 07 00 00

    BR
    Edwin

     
  • Anonymous - 2019-05-15

    Originally created by: sbrauns@moog.com

    Hi Edwin,

    Thank you for your reply. But I am relative new to codesys.
    So I am not sure how to do this. I assume this can added to the EL6751 device startup parameters.
    So I added a new SDO like in the picture:

    But I think I am not doing this correctly:

    From the log I am getting error during writing of the 8001:

    1557946548, 0x00001001, 2, 0, 9, <NetID>0</NetID><Busstate>UNKNOWN</Busstate>
    1557946548, 0x00001001, 1, 0, 68, <NetID>0</NetID>
    1557946548, 0x00001001, 1, 0, 69, <NetID>0</NetID>
    1557946548, 0x00001005, 1, 0, 0, Networkadapter opened
    1557946548, 0x00001005, 1, 0, 0, Preparation successfull
    1557946548, 0x00001005, 1, 0, 0, Read slave informations
    1557946549, 0x00001005, 1, 0, 0, Set physical addresses
    1557946549, 0x00001005, 1, 0, 0, All slaves init mode
    1557946549, 0x00001005, 1, 0, 0, prepare slaves
    1557946549, 0x00001005, 1, 0, 0, All slaves pre-operational
    1557946549, 0x00001005, 1, 0, 0, Configure distributed clock settings
    1557946549, 0x00001005, 1, 0, 0, Synchronize Slaves
    1557946549, 0x00001005, 1, 0, 0, Set safe operational
    1557946549, 0x00001005, 4, 0, 0, SDO write error Address: 1002 Index: 16#8001 SubIndex: 0 Result: 16#06020000
    1557946549, 0x00001005, 1, 0, 0, SDO write ok: Address: 1002 Index: 16#F800 SubIndex: 0 Result: 16#00
    1557946549, 0x00001005, 1, 0, 0, SDO write ok: Address: 1002 Index: 16#8000 SubIndex: 0 Result: 16#00
    1557946549, 0x00001005, 1, 0, 0, All slaves safe-operational
    1557946549, 0x00001005, 1, 0, 0, Set operational mode
    1557946549, 0x00001005, 1, 0, 0, All slaves operational
    1557946549, 0x00001005, 1, 0, 0, Startup finished: All slaves in operational !
    1557946549, 0x00001001, 1, 0, 38, <NetID>0</NetID>
    

    Any advise on how to do this.

    Thanks,
    Sander

    IMG: sdo_startup_parameter.PNG

     
  • eschwellinger

    eschwellinger - 2019-05-16

    Hi Sander,

    sorry yes, here is an image needed to understand how this works.

    BR
    Edwin

    IMG: RXFilter.png

     
  • Anonymous - 2019-05-16

    Originally created by: sbrauns@moog.com

    Hi Edwin,

    So I am still getting a write error.

    1558005963, 0x00001001, 2, 0, 7, <NetID>0</NetID>
    1558005963, 0x00001001, 2, 0, 9, <NetID>0</NetID><Busstate>UNKNOWN</Busstate>
    1558005963, 0x00001001, 1, 0, 68, <NetID>0</NetID>
    1558005963, 0x00001001, 1, 0, 69, <NetID>0</NetID>
    1558005963, 0x00001005, 1, 0, 0, Networkadapter opened
    1558005963, 0x00001005, 1, 0, 0, Preparation successfull
    1558005963, 0x00001005, 1, 0, 0, Read slave informations
    1558005963, 0x00001005, 1, 0, 0, Set physical addresses
    1558005963, 0x00001005, 1, 0, 0, All slaves init mode
    1558005963, 0x00001005, 1, 0, 0, prepare slaves
    1558005963, 0x00001005, 1, 0, 0, All slaves pre-operational
    1558005963, 0x00001005, 1, 0, 0, Configure distributed clock settings
    1558005963, 0x00001005, 1, 0, 0, Synchronize Slaves
    1558005963, 0x00001005, 1, 0, 0, Set safe operational
    1558005963, 0x00001005, 4, 0, 0, SDO write error Address: 1002 Index: 16#8001 SubIndex: 0 Result: 16#06020000
    1558005963, 0x00001005, 1, 0, 0, SDO write ok: Address: 1002 Index: 16#F800 SubIndex: 0 Result: 16#00
    1558005963, 0x00001005, 1, 0, 0, SDO write ok: Address: 1002 Index: 16#8000 SubIndex: 0 Result: 16#00
    1558005963, 0x00001005, 1, 0, 0, All slaves safe-operational
    1558005963, 0x00001005, 1, 0, 0, Set operational mode
    1558005963, 0x00001005, 1, 0, 0, All slaves operational
    1558005963, 0x00001005, 1, 0, 0, Startup finished: All slaves in operational !
    1558005963, 0x00001001, 1, 0, 38, <NetID>0</NetID>
    1558005967, 0x00001001, 2, 0, 9, <NetID>0</NetID><Busstate>PASSIVE</Busstate>
    

    Do you have any idea?

    Thanks,

    Sander

     

Log in to post a comment.