[etherlab-users] Failed to register PDO entry: No such file or directory
johnc112 at comcast.net
johnc112 at comcast.net
Sat Feb 25 00:28:02 CET 2012
Hi,
I'm having some trouble registering PDOs in an application that I derived from the EtherCAT master "user" example and would appreciate any input you can offer. BTW, I'm a novice with Linux and EtherCAT, so if it's a dumb mistake I wouldn't be surprised and don't hesitate to say so ;)
The error I get is "Failed to register PDO entry: No such file or directory" when ecrt_domain_reg_pdo_entry_list is called. This happens with EthCAT Master v1.5 running on Ubuntu 11.10. I'm working with an EtherCAT drive from Elmo Motion Control and have implemented the patch posted by Jesper Smith (thanks Jesper!). Despite also implementing recommendations from other postings about this error I'm stuck.
Immediately below are outputs from "config", "pdos" and "slaves". Further below are the sections of code relevant to the PDO registration. The PDO configuration is based o the output from "ethercat cstructs".
Any ideas are welcome and I'll gladly provide any additional information needed. Thanks in advance!
johnc at ubuntu:~$ sudo /opt/etherlab/bin/ethercat config -p0 -v
Alias: 0
Position: 0
Vendor Id: 0x0000009a
Product code: 0x00030924
Attached slave: 0 (PREOP)
Watchdog divider: (Default)
Watchdog intervals: (Default)
SM2, Dir: Output, Watchdog: Disable
PDO 0x1600
PDO entry 0x607a:00, 32 bit
PDO entry 0x60fe:01, 32 bit
PDO entry 0x6040:00, 16 bit
SM3, Dir: Input, Watchdog: Disable
PDO 0x1a00
PDO entry 0x6064:00, 32 bit
PDO entry 0x60fd:00, 32 bit
PDO entry 0x6041:00, 16 bit
SDO configuration:
None.
IDN configuration:
None.
johnc at ubuntu:~$ sudo /opt/etherlab/bin/ethercat pdos -p0 -v
SM0: PhysAddr 0x1800, DefaultSize 140, ControlRegister 0x26, Enable 1
SM1: PhysAddr 0x1900, DefaultSize 140, ControlRegister 0x22, Enable 1
SM2: PhysAddr 0x1100, DefaultSize 128, ControlRegister 0x24, Enable 1
RxPDO 0x1600 "RPDO1 Mapping"
PDO entry 0x607a:00, 32 bit, "Target position"
PDO entry 0x60fe:01, 32 bit, "Physical outputs"
PDO entry 0x6040:00, 16 bit, "Controlword"
SM3: PhysAddr 0x1180, DefaultSize 128, ControlRegister 0x20, Enable 1
TxPDO 0x1a00 "TPDO1 Mapping"
PDO entry 0x6064:00, 32 bit, "Position actual value"
PDO entry 0x60fd:00, 32 bit, "Digital inputs"
PDO entry 0x6041:00, 16 bit, "Statusword"
=== Master 0, Slave 0 ===
State: PREOP
Flag: +
Identity:
Vendor Id: 0x0000009a
Product code: 0x00030924
Revision number: 0x000103f6
Serial number: 0x00000000
DL information:
FMMU bit operation: no
Distributed clocks: yes, 64 bit
DC system time transmission delay: 0 ns
Port Type Link Loop Signal NextSlave RxTime [ns] Diff [ns] NextDc [ns]
0 MII up open yes - 1918471386 0 0
1 MII down closed no - - - -
2 N/A down closed no - - - -
3 N/A down closed no - - - -
Mailboxes:
Bootstrap RX: 0x1800/140, TX: 0x1900/140
Standard RX: 0x1800/140, TX: 0x1900/140
Supported protocols: EoE, CoE, FoE
General:
Group: SimplIQ_GOLD
Image name: DRIVE
Order number: Elmo Drive
Device name: Gold EtherCAT GCON Drive Rev:0x000103F4
CoE details:
Enable SDO: yes
Enable SDO Info: yes
Enable PDO Assign: yes
Enable PDO Configuration: yes
Enable Upload at startup: no
Enable SDO complete access: yes
Flags:
Enable SafeOp: no
Enable notLRW: no
Current consumption: 0 mA
//Code relevant to PDO configuration/registration
#define SlavePos 0, 0
#define SLAVE 0x0000009a, 0x00030924
// offsets for PDO entries
static unsigned int off_slave_in;
static unsigned int off_slave_out;
const static ec_pdo_entry_reg_t domain1_regs[] = {
{SlavePos, SLAVE, 0x1600, 0,&off_slave_out},
{SlavePos, SLAVE, 0x1a00, 0,&off_slave_in},
{}
};
ec_pdo_entry_info_t slave_0_pdo_entries[] = {
{0x607a, 0x00, 32}, /* Target position */
{0x60fe, 0x01, 32}, /* Physical outputs */
{0x6040, 0x00, 16}, /* Controlword */
{0x6064, 0x00, 32}, /* Position actual value */
{0x60fd, 0x00, 32}, /* Digital inputs */
{0x6041, 0x00, 16}, /* Statusword */
};
ec_pdo_info_t slave_0_pdos[] = {
{0x1600, 3, slave_0_pdo_entries + 0}, /* RPDO1 Mapping */
{0x1a00, 3, slave_0_pdo_entries + 3}, /* TPDO1 Mapping */
};
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, 1, slave_0_pdos + 1, EC_WD_DISABLE},
{0xff}
};
int main(int argc, char **argv)
{
ec_slave_config_t *sc;
master = ecrt_request_master(0);
if (!master)
return -1;
domain1 = ecrt_master_create_domain(master);
if (!domain1)
return -1;
if (!(sc= ecrt_master_slave_config(
master, SlavePos, SLAVE))) {
fprintf(stderr, "Failed to get slave configuration.\n");
return -1;
}
printf("Configuring PDOs...\n");
if (ecrt_slave_config_pdos(sc, EC_END, slave_0_syncs)) {
fprintf(stderr, "Failed to configure PDOs.\n");
return -1;
}
//Error happens here
if (ecrt_domain_reg_pdo_entry_list(domain1, domain1_regs)) {
fprintf(stderr, "PDO entry registration failed!\n");
return -1;
}
//code continues from here
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.etherlab.org/pipermail/etherlab-users/attachments/20120224/c62e9030/attachment-0002.htm>
More information about the Etherlab-users
mailing list