Problem solved it seems. Re-configuring with
--enable-eoe=no seems to have solved the problem. I don't need Ethernet over EtherCAT. However I can not really explain why it works now. This is what I did: ./bootstrap ./configure --enable-eoe=no --disable-sii-cache --enable-generic --enable-rtmutex --disable-8139too prefix=/opt/CPO/lib/etherlab make make modules make install make modules_install After restarting the master: systemctl restart ethercat.service it all seems to work just fine. Thank you all for your effort, Joachim Sällvin ________________________________ Från: Sebastien BLANCHET <blanc...@iram.fr> Skickat: den 21 september 2020 11:44 Till: Joachim Sällvin <joachim.sall...@corpowerocean.com>; etherlab-users@etherlab.org <etherlab-users@etherlab.org> Ämne: Re: [Etherlab-users] AKD drive Failed to set SAFEOP state, slave refused state change Hi, You should enable the debug mode to understand that happened just before the error -------------------------------- $ ethercat debug --help ethercat debug <LEVEL> Set the master's debug level. Debug messages are printed to syslog. Arguments: LEVEL can have one of the following values: 0 for no debugging output, 1 for some debug messages, or 2 for printing all frame contents (use with caution!). Numerical values can be specified either with decimal (no prefix), octal (prefix '0') or hexadecimal (prefix '0x') base. ------------------------------- Level 2 of debugging is very (very) verbose, so you should begin with level 1 $ ethercat debug 1 Concerning "DefaultSize=0" for SM2 and SM3, I think that is normal, because I have also such a value on my Kollmorgen AKD drive in torque mode. ####################################### $ ethercat cstruct /* Master 0, Slave 0, "AKD" * Vendor ID: 0x0000006a * Product code: 0x00414b44 * Revision number: 0x00000002 */ ec_pdo_entry_info_t slave_0_pdo_entries[] = { {0x6040, 0x00, 16}, {0x2071, 0x00, 32}, {0x6041, 0x00, 16}, {0x3470, 0x02, 16}, {0x3470, 0x04, 16}, {0x606c, 0x00, 32}, {0x2077, 0x00, 32}, {0x60fd, 0x00, 32}, }; ec_pdo_info_t slave_0_pdos[] = { {0x1600, 2, slave_0_pdo_entries + 0}, {0x1a00, 3, slave_0_pdo_entries + 2}, {0x1a01, 2, slave_0_pdo_entries + 5}, {0x1a02, 1, slave_0_pdo_entries + 7}, }; ec_sync_info_t slave_0_syncs[] = { {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE}, {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE}, {2, EC_DIR_OUTPUT, 1, slave_0_pdos + 0, EC_WD_DISABLE}, {3, EC_DIR_INPUT, 3, slave_0_pdos + 1, EC_WD_DISABLE}, {0xff} }; ####################################### $ ethercat pdos === Master 0, Slave 0 === SM0: PhysAddr 0x1800, DefaultSize 1024, ControlRegister 0x26, Enable 1 SM1: PhysAddr 0x1c00, DefaultSize 1024, ControlRegister 0x22, Enable 1 SM2: PhysAddr 0x1100, DefaultSize 0, ControlRegister 0x24, Enable 1 RxPDO 0x1600 "" PDO entry 0x6040:00, 16 bit, "" PDO entry 0x2071:00, 32 bit, "" SM3: PhysAddr 0x1140, DefaultSize 0, ControlRegister 0x20, Enable 1 TxPDO 0x1a00 "" PDO entry 0x6041:00, 16 bit, "" PDO entry 0x3470:02, 16 bit, "" PDO entry 0x3470:04, 16 bit, "" TxPDO 0x1a01 "" PDO entry 0x606c:00, 32 bit, "" PDO entry 0x2077:00, 32 bit, "" TxPDO 0x1a02 "" PDO entry 0x60fd:00, 32 bit, "" Regards, -- Sebastien BLANCHET On 9/18/20 7:20 AM, Joachim Sällvin wrote: > *Hi,* > > *My AKD drive slave refuses to go to operational. Any suggestions why?* > > *This is what dmesg tells me when trying:* > [53271.293863] EtherCAT ERROR 0-0: Failed to set SAFEOP state, slave > refused state change (PREOP + ERROR). > [53271.294126] EtherCAT ERROR 0-0: AL status message 0x001D: "Invalid > output configuration". > > *The AKD drive is the only slave on the bus* > *$ sudo ethercat slaves* > 0 901:0 PREOP E AKD EtherCAT Drive (CoE) > > *and I've configured it so that I get* > > *$ sudo ethercat cstruct -p0* > /* Master 0, Slave 0, "AKD" > * Vendor ID: 0x0000006a > * Product code: 0x00414b44 > * Revision number: 0x00000002 > */ > > ec_pdo_entry_info_t slave_0_pdo_entries[] = { > {0x6040, 0x00, 16}, > {0x60c1, 0x01, 32}, > {0x6041, 0x00, 16}, > {0x3470, 0x04, 16}, > {0x60fd, 0x00, 32}, > {0x606c, 0x00, 32}, > {0x6063, 0x00, 32}, > }; > > ec_pdo_info_t slave_0_pdos[] = { > {0x1600, 2, slave_0_pdo_entries + 0}, > {0x1a00, 3, slave_0_pdo_entries + 2}, > {0x1a01, 2, slave_0_pdo_entries + 5}, > }; > > ec_sync_info_t slave_0_syncs[] = { > {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE}, > {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE}, > {2, EC_DIR_OUTPUT, 1, slave_0_pdos + 0, EC_WD_DISABLE}, > {3, EC_DIR_INPUT, 2, slave_0_pdos + 1, EC_WD_DISABLE}, > {0xff} > }; > > > > *I've tried with the command line tool... > * > *$ sudo ethercat states OP* > * > * > *..and with my c-application. But the result is the same. > * > * > * > *One thing that puzzles me is the size of the synch managers SM2 and SM3:* > > *$ sudo ethercat pdos* > SM0: PhysAddr 0x1800, DefaultSize 1024, ControlRegister 0x26, Enable 1 > SM1: PhysAddr 0x1c00, DefaultSize 1024, ControlRegister 0x22, Enable 1 > SM2: PhysAddr 0x1100, DefaultSize 0, ControlRegister 0x24, Enable 1 > RxPDO 0x1600 "" > PDO entry 0x6040:00, 16 bit, "" > PDO entry 0x60c1:01, 32 bit, "" > SM3: PhysAddr 0x1140, DefaultSize 0, ControlRegister 0x20, Enable 1 > TxPDO 0x1a00 "" > PDO entry 0x6041:00, 16 bit, "" > PDO entry 0x3470:04, 16 bit, "" > PDO entry 0x60fd:00, 32 bit, "" > TxPDO 0x1a01 "" > PDO entry 0x606c:00, 32 bit, "" > PDO entry 0x6063:00, 32 bit, "" > > *Should they really have DefaultSize 0?* > > *$ sudo ethercat versionIgH EtherCAT master 1.5.2 53ce5e56d511* > *$ uname -a Linux ctrlPC1 5.4.54-rt32 #1 SMP PREEMPT_RT Wed Aug 12 > 12:59:33 CEST 2020 x86_64 x86_64 x86_64 GNU/Linux* > > > > *Detailed dmesg printout:* > > > [54154.149923] EtherCAT: Master driver 1.5.2 53ce5e56d511 > [54154.149991] EtherCAT: 1 master waiting for devices. > [54154.154118] ec_generic: EtherCAT master generic Ethernet device > module 1.5.2 53ce5e56d511 > [54154.154127] EtherCAT: Accepting 78:D0:04:27:52:E4 as main device for > master 0. > [54154.154131] ec_generic: Binding socket to interface 4 (enp0s31f6). > [54154.189154] EtherCAT 0: Starting EtherCAT-IDLE thread. > [54154.189384] EtherCAT 0: Link state of ecm0 changed to UP. > [54154.197141] EtherCAT 0: 1 slave(s) responding on main device. > [54154.197149] EtherCAT 0: Slave states on main device: PREOP. > [54154.197613] EtherCAT 0: Scanning bus. > [54154.489005] EtherCAT 0: Bus scanning completed in 292 ms. > [54154.489006] EtherCAT 0: Using slave 0 as DC reference clock. > [54154.489007] EtherCAT 0: Starting EoE thread. > [54154.521934] EtherCAT ERROR 0-0: Failed to set SAFEOP state, slave > refused state change (PREOP + ERROR). > [54154.522227] EtherCAT ERROR 0-0: AL status message 0x001D: "Invalid > output configuration". > [54154.525166] EtherCAT 0-0: Acknowledged state PREOP. > > > Any ideas? > > Best Regards, > > Joachim Sällvin > > Software Developer > CorpowerOcean
-- Etherlab-users mailing list Etherlab-users@etherlab.org http://lists.etherlab.org/cgi-bin/mailman/listinfo/etherlab-users