[etherlab-users] "Invalid input configuration" during Beckhoff 6731-0010 initialization
Felix Barth
felix.barth at ila.uni-stuttgart.de
Thu Apr 24 17:00:04 CEST 2014
Hi all,
I am currently trying to connect a Siemens S7 SPS to a Beckhoff
6731-0010 via ProfiBus. This setup works fine while using TwinCAT and I
am able to send data from the 6731 slave and receive it on the SPS.
Nonetheless, the project is set to be realized using "Etherlab",
therefore the TwinCAT setup only serves as a test run. In the attempt to
convert it to Etherlab, I used the TwinCAT configuration and exported it
as XML-file (the same way it was already described some years past in
this mailing list). This file contained the following information about
the PDO register at startup (read from the devices PDO during "run mode"):
0x8000 2D 00 03 00 00 00 00 00 00 00 00 00 00 00 A8 01 00 00 F4 F0 00
00 00 00 0A 01 00 00 00 00 88 01 14 0B 09 5F 00 80 00 08 10
0x1A7F 03 00 08 01 00 F1 07 00 00 00 01 07 00 18
0x1600 01 00 08 01 00 70
0x1C12 01 00 00 16
0x1C13 00 00
I composed a small program to write the gained data into the 6731's PDO.
The following code snipped shows the initialization process:
//Start initialization
master = ecrt_request_master(0);
if (!master) return -1;
domain1 = ecrt_master_create_domain(master);
if (!domain1) return -1;
/* EK1100 */
if (!(sc = ecrt_master_slave_config(master, MasterPos,
Beckhoff_EK1100))) return -1;
/* EL6731 Slave */
if (!(sc = ecrt_master_slave_config(master, ProfiPosSlave,
Beckhoff_EL6731))) return -1;
//SDO entries, exported from TwinCAT
static uint8_t sdo_0x8000[] = {0x2d, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0xf4,
0xf0, 0x00,
0x00, 0x00, 0x00, 0x0a, 0x01,
0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x14, 0x0b, 0x09, 0x5f, 0x00, 0x80,
0x00, 0x08, 0x10};
static uint8_t sdo_0x1A7F[] = {0x03, 0x00, 0x08, 0x01, 0x00, 0xf1, 0x07,
0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x18};
static uint8_t sdo_0x1600[] = {0x01, 0x00, 0x08, 0x01, 0x00, 0x70};
static uint8_t sdo_0x1C12[] = {0x01, 0x00, 0x00, 0x16};
static uint8_t sdo_0x1C13[] = {0x00, 0x00};
int size_0x8000 = sizeof(sdo_0x8000);
int size_0x1A7F = sizeof(sdo_0x1A7F);
int size_0x1600 = sizeof(sdo_0x1600);
int size_0x1C12 = sizeof(sdo_0x1C12);
int size_0x1C13 = sizeof(sdo_0x1C13);
//Setting the SDO entries of the EL6731
ecrt_slave_config_complete_sdo(sc, 0x8000, sdo_0x8000, size_0x8000);
ecrt_slave_config_complete_sdo(sc, 0x1a7f, sdo_0x1A7F, size_0x1A7F);
ecrt_slave_config_complete_sdo(sc, 0x1600, sdo_0x1600, size_0x1600);
ecrt_slave_config_complete_sdo(sc, 0x1c12, sdo_0x1C12, size_0x1C12);
ecrt_slave_config_complete_sdo(sc, 0x1c13, sdo_0x1C13, size_0x1C13);
if (ecrt_slave_config_pdos(sc, EC_END, slave_6_syncs)) return -1;
if (ecrt_domain_reg_pdo_entry_list(domain1, domain1_regs)) return -1;
if (ecrt_master_activate(master)) return -1;
if (!(domain1_pd = ecrt_domain_data(domain1))) return -1;
//End initialization
However, the initialization of the Beckhoff 6731-0010 fails and aborts
when attempting to switch from "PREOP" to "SAFEOP". The following
messages where extracted using the "dmesg" command:
[177982.104485] EtherCAT: Requesting master 0...
[177982.104494] EtherCAT: Successfully requested master 0.
[177982.104648] EtherCAT 0: Domain0: Logical address 0x00000000, 6 byte,
expected working counter 3.
[177982.104654] EtherCAT 0: Datagram domain0-0: Logical offset
0x00000000, 6 byte, type LRW.
[177982.104690] EtherCAT 0: Master thread exited.
[177982.104696] EtherCAT 0: Starting EtherCAT-OP thread.
[177982.104765] EtherCAT WARNING 0: 1 datagram UNMATCHED!
[177983.117019] EtherCAT WARNING 0: No app_time received up to now, but
master already active.
[177983.205117] No response.
[177983.765121] EtherCAT WARNING 0-6: Slave does not support changing
the PDO mapping!
[177983.765126] EtherCAT WARNING 0-6: Currently mapped PDO entries:
0x7000:01/8 0x0000:00/8. Entries to map: 0x7000:01/16
[177983.895118] EtherCAT WARNING 0-6: Slave does not support changing
the PDO mapping!
[177983.895122] EtherCAT WARNING 0-6: Currently mapped PDO entries:
(none). Entries to map: 0x6000:01/16
[177983.995118] EtherCAT WARNING 0-6: Slave does not support changing
the PDO mapping!
[177983.995122] EtherCAT WARNING 0-6: Currently mapped PDO entries:
0xF100:01/8 0x0000:00/8. Entries to map: 0xA000:01/8 0xF100:02/1
0xA000:02/1 0x0000:00/6
[177984.165119] EtherCAT ERROR 0-6: Failed to set SAFEOP state, slave
refused state change (PREOP + ERROR).
[177984.175117] EtherCAT ERROR 0-6: AL status message 0x001E: "Invalid
input configuration".
[177984.195117] EtherCAT 0-6: Acknowledged state PREOP.
[177984.209014] EtherCAT 0: Slave states: PREOP, OP.
[177989.049742] EtherCAT 0: Releasing master...
[177989.049779] EtherCAT 0: Master thread exited.
[177989.049793] EtherCAT 0: Starting EtherCAT-IDLE thread.
[177989.049843] EtherCAT 0: Released.
[177989.050286] EtherCAT ERROR 0-2: Failed to receive AL state datagram:
Datagram initialized.
[177989.060155] No response.
[177989.156206] EtherCAT 0: Slave states: PREOP.
[177989.853019] EtherCAT WARNING: Datagram f64424b0 (master-fsm) was
SKIPPED 2 times.
The main problem seems to be the "Invalid input configuration".
Unfortunately, I wasn't able to determine which part of the
configuration causes the fault. In the process of investigating these
errors, I used Wireshark on both the TwinCAT and the Etherlab
configuration. The comparison was puzzling since the transmitted
packages to the Beckhoff device seem to be identical in both cases.
Did anyone encounter similar problems while initializing a Beckhoff
6731-0010? Or has any idea where I made a mistake? I would be grateful
for any tip, this issue has been keeping me busy for quite some time now.
Thanks in advance,
Felix
More information about the Etherlab-users
mailing list