It sounds like the slave has incorrect SII data and/or defective firmware. It's claiming to support PDO Configuration (see the output of "ethercat slaves -v") but the PDO Configuration objects are read-only. It should either not claim support for that or should tolerate writes where the written value is equal to the fixed value in that case.
(It might be somewhat excusable if the slave has some PDOs that are fixed and some that are reconfigurable; that's unusual so I don't think the library checks for that at present. But in that case it really ought to tolerate equal writes.) As long as the "currently mapped PDO entries" and "entries to map" are the same in every case, the warnings can be safely ignored. If you're feeling adventurous you might be able to patch the SII EEPROM to disable that flag, which would silence the warnings. Or ask the manufacturer if they can fix that themselves. From: etherlab-users [mailto:etherlab-users-boun...@etherlab.org] On Behalf Of Alessandro Berti Sent: Friday, 24 February 2017 20:47 To: etherlab-users@etherlab.org Subject: [etherlab-users] Errors and warning when realtime timer starts I've developed an application using etherlab to control an 8-axis robot prototype. Everything works fine but dmesg return a long list of messages like the ones below (the complete output is attached in the txt file) for all the pdo entries of each slave. These messages are returned once only when the realtime cycle starts and ethercat data begins to be received, processed and sent. [ 304.761920] EtherCAT ERROR 0-0: SDO download 0x160A:00 (1 bytes) aborted. [ 304.761923] EtherCAT ERROR 0-0: SDO abort message 0x06010002: "Attempt to write a read-only object". [ 304.761924] EtherCAT WARNING 0-0: Failed to clear PDO mapping. [ 304.761925] EtherCAT WARNING 0-0: Currently mapped PDO entries: 0x6040:00/16. Entries to map: 0x6040:00/16 [ 304.761928] EtherCAT WARNING 0-0: Failed to configure mapping of PDO 0x160A. [.....] I followed the "user example" to develop my application and I'm using Elmo Drives with this pdo configuration: ec_pdo_entry_info_t slave_pdo_entries[] = { {0x6040, 0x00, 16}, /* Controlword */ {0x6060, 0x00, 8}, /* Modes of operation */ {0x0000, 0x00, 8}, /* Gap */ {0x6071, 0x00, 16}, /* Target torque */ {0x607a, 0x00, 32}, /* Target position */ {0x60b1, 0x00, 32}, /* Offset velocity */ {0x60fe, 0x01, 32}, /* Physical outputs */ {0x6041, 0x00, 16}, /* Statusword */ {0x6061, 0x00, 8}, /* Modes of operation display */ {0x0000, 0x00, 8}, /* Gap */ {0x6064, 0x00, 32}, /* Position actual value */ {0x6069, 0x00, 32}, /* Velocity sensor actual value */ {0x6077, 0x00, 16}, /* Torque value */ {0x60f4, 0x00, 32}, /* Following error actual value */ {0x60fd, 0x00, 32}, /* Digital inputs */ }; ec_pdo_info_t slave_pdos[] = { {0x160a, 1, slave_pdo_entries + 0}, /* RPDO_160A Mapping */ {0x160b, 2, slave_pdo_entries + 1}, /* RPDO_160B Mapping */ {0x160c, 1, slave_pdo_entries + 3}, /* RPDO_160C Mapping */ {0x160f, 1, slave_pdo_entries + 4}, /* RPDO_160F Mapping */ {0x1617, 1, slave_pdo_entries + 5}, /* RPDO_1617 Mapping */ {0x161d, 1, slave_pdo_entries + 6}, /* RPDO_161D Mapping */ {0x1a0a, 1, slave_pdo_entries + 7}, /* TPD0A Mapping */ {0x1a0b, 2, slave_pdo_entries + 8}, /* TPD0B Mapping */ {0x1a0e, 1, slave_pdo_entries + 10}, /* TPD0E Mapping */ {0x1a0f, 1, slave_pdo_entries + 11}, /* TPD0F Mapping */ {0x1a13, 1, slave_pdo_entries + 12}, /* TPD13 Mapping */ {0x1a19, 1, slave_pdo_entries + 13}, /* TPD19 Mapping */ {0x1a1c, 1, slave_pdo_entries + 14}, /* TPD1C Mapping */ }; ec_sync_info_t slave_syncs[] = { {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE}, {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE}, {2, EC_DIR_OUTPUT, 6, slave_pdos + 0, EC_WD_ENABLE}, {3, EC_DIR_INPUT, 7, slave_pdos + 6, EC_WD_DISABLE}, {0xff} }; How can I solve this issue? Thank you, Alessandro
_______________________________________________ etherlab-users mailing list etherlab-users@etherlab.org http://lists.etherlab.org/mailman/listinfo/etherlab-users