Forum

Writing SDO in CANO...
 
Notifications
Clear all

[Solved] Writing SDO in CANOpen

12 Posts
2 Users
0 Reactions
409 Views
Forum 1
(@peppedx)
Active Member
Joined: 1 year ago
Posts: 7
Topic starter  

Hi all I'm trying to use a SOLO UNO v2 using the can open interface.

Looking at the heartbeat  production timer while the SDO Upload works seamless in order to write the desired value I have no luck with my can open stacks.

Looking at you CANOPEN manual I've found in page 88 that you can write to the SDO
22 17 10 00 E8 03 00 00  in order to set a 1000ms hearbeat but this is not working.

It works only writing
22 17 10 E8 03 00 00 00

That is omitting subindex id that is not permitted by the standard.

 

Any clue?

 

 

 


   
SOLO Team
(@milad)
Illustrious Member Admin
Joined: 4 years ago
Posts: 605
 

Hello,

May I know how you are interfacing with the CAN bus of SOLO? I mean what hardware type ( KVASER, Arduino, RPI, etc...)

Milad

 

If you found the answers helpful and you could solve your problems, please kindly verify here to help others in the future.


   
Forum 1
(@peppedx)
Active Member
Joined: 1 year ago
Posts: 7
Topic starter  

I am interfacing using a Linux x86_64 laptop and a peak can interface.

GIven that SDO Upload is correct I'd say that the harware side of the thing is validated.

I'd say that ignoring the subindexId points more to the firmware side.


   
SOLO Team
(@milad)
Illustrious Member Admin
Joined: 4 years ago
Posts: 605
 

Posted by: @peppedx

That is omitting subindex id that is not permitted by the standard.

Removing the sub-index byte will cause the CANopen packet to be incomplete, in that case, the SDO message will be rejected.

So to clarify:

- Where could you check the heartbeat performance of SOLO? using a different platform?

- Why your can device eliminates the sub-index byte? that's pretty strange, you might ask the supplier for the reason.

 

Milad

 

 

If you found the answers helpful and you could solve your problems, please kindly verify here to help others in the future.


   
Forum 1
(@peppedx)
Active Member
Joined: 1 year ago
Posts: 7
Topic starter  

@milad Maybe I didn't explain well.

It is the solo motor controller that fulfills the SDO download ONLY if I remove the subindex id (which is not CANOpen), and I tested this crafting the packages by hand using cansend. 

If I send the SDO using the data in your manual (pag 88) OR using two different canopen stacks (CANFestival and CANOpenNode) the SOLO motor controller responds with an Error.


   
Forum 1
(@peppedx)
Active Member
Joined: 1 year ago
Posts: 7
Topic starter  

Any clue?

And by the way why is my post awaiting for moderation and not visible to others?


   
SOLO Team
(@milad)
Illustrious Member Admin
Joined: 4 years ago
Posts: 605
 

@peppedx ,

 

just checked the Heartbeat production using KVASER hardware, and it works seamlessly, as you can see I'm sending a Full SDO packet including the sub-index to set the heart-beat time.

image

Please check this again with your hardware/software, but I believe the firmware of SOLO should be ok.

- just to be sure, may I know what is the firmware version of your SOLO?

Milad

 

If you found the answers helpful and you could solve your problems, please kindly verify here to help others in the future.


   
Forum 1
(@peppedx)
Active Member
Joined: 1 year ago
Posts: 7
Topic starter  
image

Here I send the same frame as you. I get the response. No heartbeat afterwards

image

Here I send the Wrong frame

image

   
SOLO Team
(@milad)
Illustrious Member Admin
Joined: 4 years ago
Posts: 605
 

@peppedx ,

 

Posted by: @peppedx

Here I send the same frame as you. I get the response. No heartbeat afterward

 

here you are setting the heart-beat value at "F3E8" which stands for 62,440 milliseconds ( around 1.3 minutes), is this matching your desired heartbeat time?  what happens after 1.3 minutes? Does any packet come? -- Can you try the exact same values that I've set for 1000 milli-second?

 

Posted by: @peppedx

Here I send the Wrong frame

 

here with the wrong frame as the subindex is ignored ( non-existent for this object), you are setting the heartbeat at 243ms ( 0xF3) , so the response is coming fastly...

Please check and let me know.

Milad

 

If you found the answers helpful and you could solve your problems, please kindly verify here to help others in the future.


   
Forum 1
(@peppedx)
Active Member
Joined: 1 year ago
Posts: 7
Topic starter  
image

   
Forum 1
(@peppedx)
Active Member
Joined: 1 year ago
Posts: 7
Topic starter  

I did everything again from scratch and now it is working using the command 0x22.

Many stacks produces SDO that uses the data size so 
0x23 or 0x2B as the command byte and this is not accepted right?

 

 


   
SOLO Team
(@milad)
Illustrious Member Admin
Joined: 4 years ago
Posts: 605
 

@peppedx 

Ok great, and thanks for the update, here I was strugling to replicate the problem with no succuss ;)

Yes, for now, to write SDOs you can only use 0x22 as the command.

let me know if you have other questions.

Milad

 

If you found the answers helpful and you could solve your problems, please kindly verify here to help others in the future.


   
Share: