SDO error thrown for ignored device
Closed this issue · 2 comments
Not sure if this is a real issue or just me not knowing what I'm doing...
I'm trying to spin up a minimal fastcat example on physical hardware.
To that end, I'm using the cli_test tool to run a test configuration (test.yaml) with a bunch of IGNORE devices to stand in for the hardware jsd doesn't support yet (slaves 1-7), plus an el3318 as slave 8. When I run this config, everything inits fine, but then I get this error:
[ ERROR ] [1685120995.165696] (/home/icon/git/jpl_ethercat_sandbox/build/_deps/jsd-src/src/jsd_sdo.c:193) Time:1685120993.804 SDO slave:4 index:1c13.01 error:06090011 Subindex does not exist
Slave 4 is an EL4034 Analog Output slice, which indeed does not have a 1c13 SDO object, (confirmed with jsd_slaveinfo tool and the beckhoff documentation).
I'm wondering why this ignored device is causing problems. Perhaps I've configured something wrong on a bus, or is this a deeper issue?
For reference, here's a copy of my test.yaml co
nfig file, pluss the device's mapping per jsd_slaveinfo, and output of the cli_test tool.
fastcat:
target_loop_rate_hz: 100
zero_latency_required: False
actuator_position_directory: /tmp/
actuator_fault_on_missing_pos_file: False
buses:
- type: jsd_bus
ifname: enp11s0
enable_autorecovery: False
devices:
- device_class: IGNORE
- device_class: IGNORE
- device_class: IGNORE
- device_class: IGNORE
- device_class: IGNORE
- device_class: IGNORE
- device_class: IGNORE
- device_class: El3318
name: el3318_tc_location_1
element: TYPE_K
- type: fastcat_bus
ifname: fcat_bus_1
devices:
- device_class: Filter
name: filt_ma_1
filter_type: MOVING_AVERAGE
buffer_size : 25
signals:
- observed_device_name: el3318_tc_location_1
request_signal_name: output_eu_ch1
I'm not sure this is in fact an issue that's causing any harm, perhaps just a nuisance fault from how SOEM initializes devices during startup.
- SOEM starts up and establishes the IOmap
- Presumably this invokes a read of the 1C13 DO in order to allocate space to read the slave state from the EtherCAT frame
- The slave does not have this DO so SOEM raises a fault
ecx_pusherror
- The line from
jsd_sdo.c
just reports the message returned fromecx_poperror
- Then ~6 seconds you stop the program
Is this causing any functional problems with your use case?
[ ERROR ] [1685121959.316053] (/home/icon/git/jpl_ethercat_sandbox/build/_deps/jsd-src/src/jsd_sdo.c:193) Time:1685121957.957 SDO slave:4 index:1c13.01 error:06090011 Subindex does not exist
[ INFO ] [1685121966.007544] (/home/icon/git/jpl_ethercat_sandbox/src/cli_test.cpp:298) Received ctrl-c. Closing down.
I think you're right - though this message still shows up, I've since gotten functional tests to work, so it does not seem to be actually breaking anything