Notifications
Clear all

CANopen

7 Posts
1 Users
0 Likes
13.5 K Views
(@stangora)
Posts: 7
Active Member Guest
Topic starter
 

I am using my SmartMotor in a CANopen application and it appears as though I can't change the Inhibit Time object for PDO TX communications. The object is 0x1800 sub 3 (Inhibit Time) and when I attempt to update it, my CAN master comes back with an error saying the "Value Range Of Parameter Exceeded".

Can someone please shed light on this issue.? Thanks in advance.

 
Posted : 25/09/2015 2:07 pm
(@csearcy)
Posts: 66
Trusted Member Guest
 

My 1st thought is it's due to a wrong data type. Make sure it's the correct bit count and signed or unsigned.

 
Posted : 26/09/2015 2:07 am
(@stangora)
Posts: 7
Active Member Guest
Topic starter
 

I double checked all my data types and size. I can read from the object okay just can't write. The parameters for the Read and Write are set to the same.

Can you please verify the behavior of this object with a Master on your end.?

 
Posted : 28/09/2015 12:26 pm
(@csearcy)
Posts: 66
Trusted Member Guest
 

I don't have a master here... but I'll try to check with someone who does.
So it's Unsigned 16-bit... 0000h default. Is that what you read back?

 
Posted : 29/09/2015 3:44 am
(@stangora)
Posts: 7
Active Member Guest
Topic starter
 

I am using SDO reads and writes to access the object dictionary. I can read from object 0x1800h sub 3 and it returns 0000h. But if I attempt to write a non zero value, it complains. I can read AND write to all other sub indexes within object 0x1800h as well as all other entries in the object dictionary.

There appears to be something weird going on with this entry. If the message is correct, it appears as though the object is not able to be changed.

I was hoping somebody on your end could attempt to write to this object and see if they see the same error.

 
Posted : 29/09/2015 1:08 pm
(@csearcy)
Posts: 66
Trusted Member Guest
 

Here is the response from one of our engineers with a test setup....

What I’m seeing is that by default that PDO (transmit PDO) is disabled.

It looks like that causes the firmware to respond with “ERROR 0x06090030 Access Error - value range exceeded” if you try to write to 0x1800:3.

So if you set bit 31 of 0x1800:1 first, then you can write the inhibit time. This is all done in the Pre-op state.

1537/0x601 : sD : 40 00 18 01 00 00 00 00 Read object 0x1800:1 of motor address 1
1409/0x581 : sD : 43 00 18 01 81 01 00 40 Responds with: 0x40000181
1537/0x601 : sD : 40 00 18 03 00 00 00 00 Read object 0x1800:3 of motor address 1
1409/0x581 : sD : 4b 00 18 03 00 00 00 00 Responds with: 0x00000000
--------------------------------------------------
1537/0x601 : sD : 2b 00 18 03 10 27 00 00 Write 10000 (decimal) to object 0x1800:3 of motor address 1
1409/0x581 : sD : 80 00 18 03 30 00 09 06 Responds with error 0x06090030
--------------------------------------------------
1537/0x601 : sD : 23 00 18 01 81 01 00 c0 Write 0xC0000181 to object 0x1800:1 of motor address 1. This enables the PDO.
1409/0x581 : sD : 60 00 18 01 00 00 00 00 Responds success
--------------------------------------------------
1537/0x601 : sD : 2b 00 18 03 10 27 00 00 Write 10000 (decimal) to object 0x1800:3 of motor address 1
1409/0x581 : sD : 60 00 18 03 00 00 00 00 Responds success

 
Posted : 29/09/2015 7:09 pm
(@stangora)
Posts: 7
Active Member Guest
Topic starter
 

Thanks for the info. That worked.

I am not aware of this being a limitation (CANopen protocol) to changing a PDO communication parameter. All the other communication parameters can be changed without having to disable the PDO first. It is usually just PDO mapping that needs the PDO disabled for making changes.

It might be good to make a note of this in your documentation.

 
Posted : 30/09/2015 11:37 am
Share: