[etherlab-users] SDO dictionary upload "Input/output error"
Gary Grobe
ggrobe at houstonmechatronics.com
Mon Feb 24 23:47:20 CET 2020
I'm trying to upload the SDO dictionary in order to compare user
configurations against the dictionary before activating the master.
Using Etherlab 1.5.2 with 4.19.90-rt35.
An SDO upload usually takes 10-15 seconds (Elmo's have large
dictionaries) and only after that time does the error get issued.
Running the command again would quickly succeed and then continue on to
the next slave. I get the feeling the second time around it would find
that it already uploaded (cached in the master?) and then move on to the
next slave. But lately it's gotten worse. I can issue commands via the
ethercat tool just fine, with exception to "sdos." My app and the
ethercat tool give the same results.
"Failed to upload dictionary: Input/output error"
In the past when working with /dev handles, an error such as this would
cause me to look at hardware, but I'm just not seeing anything wrong w/
my connections.
I'm aware of the different ways of doing SDO transfers (e.g.,
ecrt_master_sdo_upload() for a single SDO, and others to configure or
get after having activated the master). But what I'm doing is very
similar to how the ethercat tool does it's uploads, via the ioctl
interface and the results are the same.
device_name = "/dev/EtherCAT";
// ...
if ((fd = ::open(device_name.c_str(), flags)) == -1) { /* ... */ }
// mod info ... ioctl interface vers. ...
// get master
if (ioctl(fd, EC_IOCTL_MASTER, data.get()) < 0) { /* ... */ }
// discovery happening here ...
// upload SDO dictionary
if (si->coe_details.enable_sdo_info) {
// ...
if (upload_sdo_dictionary(dict_upload) < 0)
return nullptr;
}
int EthercatDiscovery::upload_sdo_dictionary(
std::shared_ptr<ec_ioctl_slave_dict_upload_t> data)
{
if (ioctl(fd, EC_IOCTL_SLAVE_DICT_UPLOAD, data.get()) < 0) {
std::cerr << "Error: failed to upload dictionary: " <<
strerror(errno) << std::endl;
// The errno here will result in "Input/output error"
return -1;
}
return 0;
}
So it would appear that the master is aborting the SDO upload. Can
anyone offer advice as to what might be happening here?
--
_The contents of this email message and any attachments are intended solely
for the addressee(s). This message (including any attachments) may contain
confidential, proprietary, privileged and/or private information. The
information is intended to be for the use of the individual or entity
designated above. If you are not the intended recipient of this message,
please notify the sender immediately, and delete the message and any
attachments. _Any disclosure, reproduction, distribution or other use of
this message or any attachments by an individual or entity other than the
intended recipient is prohibited. __
More information about the Etherlab-users
mailing list