Hi Richard, > > I did not configure them at all. I simply took the slave that was connected > and operational on our Acontis EtherCAT master and connected the CAT5 > cable to the Etherlab controller. > > I had tried configuring it manually in Etherlab before but always ran into > > this > input configuration error. > Some masters (not ours) read the SII eeprom and autoconfigure the slaves > with their default. Then they work. > > Our master requires the slave to be known _before_ the network starts. > There are pro's and con's with this concept: > con: no auto config (but see below) > pro: you can start the master *without* being connected and attach the > network later. That is why the master cannot rely on reading SII, hence no > autoconfig. You can't have both :(
Hm, I am still missing something. When I connect some Beckhoff devices they run fine without any configuration at all: root@rosie:/home/dirk# ethercat slaves 0 0:0 OP + EK1818 EtherCAT-EA-Koppler (1A E-Bus, 8 K. Dig. Ein, 3ms, 4 K. 1 0:1 OP + EL6751 CANopen Master [ 4277.585751] EtherCAT 0: 2 slave(s) responding on main device. [ 4277.585755] EtherCAT 0: Slave states on main device: INIT, PREOP. [ 4277.588842] EtherCAT 0: Scanning bus. [ 4278.261712] EtherCAT WARNING: Datagram 000000009c0d06d1 (domain0-0-main) was SKIPPED 1 time. [ 4278.381629] EtherCAT WARNING 0: 1 datagram TIMED OUT! [ 4278.411846] EtherCAT 0: Bus scanning completed in 824 ms. [ 4278.411850] EtherCAT 0: No DC reference clock found. [ 4278.411855] EtherCAT WARNING 0: No application time received up to now, but master already active. [ 4279.677702] EtherCAT 0: Slave states on main device: PREOP. [ 4303.673778] EtherCAT 0: Slave states on main device: PREOP, OP. [ 4303.709616] EtherCAT 0: Slave states on main device: OP. > I like the latter, it is more explicit than implicit (rule #2 in 'python -c > "import > this"' ... and this is a good lecture), but the learning curve is steeper. > > So: > $ ethercat cstruct > and merge that into the example and you should be going. Ok. root@rosie:/home/dirk# ethercat cstruct /* Master 0, Slave 0, "Coupling" * Vendor ID: 0x0000060a * Product code: 0x00000010 * Revision number: 0x00000001 */ ec_pdo_entry_info_t slave_0_pdo_entries[] = { {0x7080, 0x02, 16}, {0x7090, 0x02, 16}, {0x6000, 0x02, 16}, {0x6010, 0x02, 16}, {0x6020, 0x05, 16}, {0x6020, 0x06, 16}, {0x6020, 0x07, 16}, {0x6020, 0x08, 16}, }; ec_pdo_info_t slave_0_pdos[] = { {0x1608, 1, slave_0_pdo_entries + 0}, {0x1609, 1, slave_0_pdo_entries + 1}, {0x1a00, 1, slave_0_pdo_entries + 2}, {0x1a01, 1, slave_0_pdo_entries + 3}, {0x1a02, 4, slave_0_pdo_entries + 4}, }; 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, 2, slave_0_pdos + 0, EC_WD_ENABLE}, {3, EC_DIR_INPUT, 3, slave_0_pdos + 2, EC_WD_DISABLE}, {0xff} }; I merged it into the user example and did the appropriate ecrt_slave_config_pdos(), but still: [ 4772.096699] EtherCAT: Requesting master 0... [ 4772.096707] EtherCAT: Successfully requested master 0. [ 4772.096854] EtherCAT 0: Domain0: Logical address 0x00000000, 16 byte, expected working counter 3. [ 4772.096857] EtherCAT 0: Datagram domain0-0-main: Logical offset 0x00000000, 16 byte, type LRW. [ 4772.097258] EtherCAT 0: Master thread exited. [ 4772.097265] EtherCAT 0: Starting EtherCAT-OP thread. [ 4772.097971] EtherCAT WARNING 0: 1 datagram UNMATCHED! [ 4773.005533] EtherCAT WARNING 0: No application time received up to now, but master already active. [ 4773.832891] EtherCAT ERROR 0-0: Failed to set SAFEOP state, slave refused state change (PREOP + ERROR). [ 4773.834891] EtherCAT ERROR 0-0: AL status message 0x001E: "Invalid input configuration". [ 4773.838889] EtherCAT 0-0: Acknowledged state PREOP. So this guy seems to be a little more tricky than the Beckhoff IOs. Any ideas? Regards Dirk -- Etherlab-users mailing list Etherlab-users@etherlab.org https://lists.etherlab.org/mailman/listinfo/etherlab-users