Difference between revisions of "Reading actual drive state with SimpleMotion V2"

From Granite Devices Knowledge Wiki
Jump to: navigation, search
[checked revision][checked revision]
Line 21: Line 21:
 
//TODO, do error checking for all sm commands
 
//TODO, do error checking for all sm commands
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
It is also possible to read multiple values at one SM command to achieve higher throughput:
 +
<syntaxhighlight lang="cpp">
 +
//read raw value of current, velocity and position
 +
smint32 torque,position,velocity;
 +
smRead3Parameters(  handle, nodeAddress, SMP_ACTUAL_TORQUE, &torque, SMP_ACTUAL_POSITION_FB, &position, SMP_ACTUAL_VELOCITY_FB, &velocity );
 +
</syntaxhighlight>
 +
 
[[category:SimpleMotion]]
 
[[category:SimpleMotion]]

Revision as of 12:03, 9 July 2014

Reading a variable from drive is easily accomplished by using SimpleMotion V2 function smRead1Parameter, smRead2Parameters or smRead3Parameters. Usage is looks like:

//read raw value of current
smint32 readout;
smRead1Parameter(  handle, nodeAddress, SMP_ACTUAL_TORQUE, &readout );

This C++ example shows how to read actual current driven into motor and convert it to amperes.

//read raw value of current
smint32 readout;
smRead1Parameter(  handle, nodeAddress, SMP_ACTUAL_TORQUE, &readout );
 
//as raw value is integer in "hardware units" scale, convert it to amperes
float actualcurrent;
const float HWcurrentScale=560;//counts/A, this conversion value is for Argon
actualcurrent=float(smint16(ana2))/HWcurrentScale;
 
//current in amps is now in actualcurrent
 
//TODO, do error checking for all sm commands

It is also possible to read multiple values at one SM command to achieve higher throughput:

//read raw value of current, velocity and position
smint32 torque,position,velocity;
smRead3Parameters(  handle, nodeAddress, SMP_ACTUAL_TORQUE, &torque, SMP_ACTUAL_POSITION_FB, &position, SMP_ACTUAL_VELOCITY_FB, &velocity );