Industrial Communications

cancel
Showing results for 
Search instead for 
Did you mean: 

Are CANOpen cycle-times required for SDO communication?

Hi All,

 

In order to perform a particular action (Home stages) I send a sequence of 3 SDO commands to a positioning stage. These stages are using a FOR loop to a series of 15 stages. I am using a high-speed card with 125000 baud rate.

 

When sending this sequence of commands some of the stages (one or two randomly) will not respond. On other occasions all of the stages will respond first time. I do not have any time delays between the sequence of 3 commands I send or between the loops of the FOR structure.

 

All other commands (move stage, change velocity etc) are sent as single objects (rather than a sequence of 3 objects) and there is usually a large time-delay between commands (due to the process I am programming rather than any intentional wait functions in the code). These commands work perfectly every time.

 

This 15-axis system is an expansion of a 13-axis system I was working with previously. The 13-axis systems responded to the homing sequence consistently and reliably every-day for 6-months or so.

 

 

The manufacturer works only with PDO comms and has no experience using SDO communication. They believe I may have to re-write my code to implement PDO style 'cycles' to buffer the speed I send commands to the stages. However I am a bit skeptical of this as I believe SDO comms means that each command is acknowledged before the next command is sent (I am open to correction on this as I have very little experience with CANOpen). This makes me think communication in cycles (for SDO) would be of no advantage.

 

Before I try this quite major re-write of my code can anyone advise if this cycle-based communication model might help or is it only applicable to the PDO protocol?

 

Kind regards and thanks,

Dave

 

 

 

 

0 Kudos
Message 1 of 3
(7,077 Views)

Hi Dave

 

I have read up on your question and I believe that some type of producer/consumer architecture is needed. The reason for the non response of some of the commands is that no time delay is available between the sequence of commands you are trying to process. By having the producer/consumer architecture you are ensuring there is a wait between the stages in the sequence. And that the next command in the sequence will not execute until the last command has executed successfully. So in other words a PDO system would be implemented here. A producer/consumer would be a solid program architecture for ensuring reliable PDO communcation in CANOpen.

 

Please read the following

http://www.eetimes.com/design/industrial-control/4017924/CANopen-An-Introduction

 

Here are some other options to consider

http://search.ni.com/nisearch/app/main/p/bot/no/ap/tech/lang/en/pg/1/ps/10/sn/ssnav:dzn/q/CANOpen/se...

 

I hope this helps

 

Kindest Regards

 

Ben Hartrick BEng (Hons) MIET

Applications Engineer

 

 

 

 

0 Kudos
Message 2 of 3
(7,037 Views)

Hi Ben,

 

Many thanks for the answer - I'll give it a go.

 

Regards,

Dave

 

 

 

 

0 Kudos
Message 3 of 3
(7,034 Views)