Discussion:
What causes "An SDO transfer is already pending for this device. A device cannot handle more than one SDO transaction at a time"
(too old to reply)
DirkW
2007-12-27 16:10:10 UTC
Permalink
This error means that your Master has allready a pending SDO transfer running. It could be a open handle for an SDO you have used earlier and not closed properly.
Make sure you are closing all handles after you have used them. You could use the NI-SPY to log all API calls to see whether or not there is still a handle open.
The NI-SPY installs with the NI-CAN driver.
DirkW
LabTech
2007-12-28 01:10:06 UTC
Permalink
Hi Chris,
 
I am using Labview with the CANopen library and a series 2 PCI CAN interface card. As an example of the application, I have a number of a/d converter nodes that are configured once via SDO transfers, then  conversions are started and the results read from a subset of the nodes, then the same thing with another subset of the nodes. This is all done via SDO transfers. This repeats every 8 seconds.
 
Hi Dirk W
 
I create one SDO object for each node and I keep the handles open because the start conversion and read result is via SDO transfers.
 
Bob
LabTech
2008-01-02 17:40:11 UTC
Permalink
Hi Chris,
In the error message does "this device" refer to the NI CAN interface card or one of my CANopen nodes. Can you describe some of the possible causes of this error so that I could have an idea of what might be causing my problem?
LabTech
2008-01-02 22:40:08 UTC
Permalink
Hi,
 
Attached is an NI SPY capture taken while running my code and choosing to continue when there is an error.
 
Bob


Capture5.spy:
http://forums.ni.com/attachments/ni/30/3063/1/Capture5.spy
DirkW
2008-01-03 15:10:08 UTC
Permalink
Hi,
This error happens because there is a handle open already for these IDs, thus the configuration fails and instead the old one is used to communicate. I guess you are not using the CANopen Close. Vi to close all your SDO handles before you configure new instances.
use the Close VI to close every single handle or use the interface handle, which comes from the Interface Create function and close this one in the end. It closes all open handles including the SDO handles. See the CANopen Library examples for more information.
DirkW
DirkW
2008-01-07 19:10:08 UTC
Permalink
Both the NI-CAN dri8ver and the CANopen Library should be thread safe.
 
DirkW

Loading...