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

From Granite Devices Knowledge Wiki
Jump to: navigation, search
[checked revision][checked revision]
(Created page with "This C++ example shows how to read actual current driven into motor. <syntaxhighlight lang="cpp"> smint32 readout; float actualcurrent; //read raw value of current smRead1Pa...")
 
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
This C++ example shows how to read actual current driven into motor.
+
Reading a variable from drive is easily accomplished by using SimpleMotion V2 function smRead1Parameter, smRead2Parameters or smRead3Parameters. Usage is looks like:
 
+
 
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
 +
//read raw value of current
 
smint32 readout;
 
smint32 readout;
float actualcurrent;
+
smRead1Parameter(  handle, nodeAddress, SMP_ACTUAL_TORQUE, &readout );
 +
</syntaxhighlight>
  
 +
This C++ example shows how to read actual current driven into motor and convert it to amperes.
 +
<syntaxhighlight lang="cpp">
 
//read raw value of current
 
//read raw value of current
 +
smint32 readout;
 
smRead1Parameter(  handle, nodeAddress, SMP_ACTUAL_TORQUE, &readout );
 
smRead1Parameter(  handle, nodeAddress, SMP_ACTUAL_TORQUE, &readout );
  
 
//as raw value is integer in "hardware units" scale, convert it to amperes
 
//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
 
const float HWcurrentScale=560;//counts/A, this conversion value is for Argon
actualTorq=float(smint16(ana2))/HWcurrentScale;
+
actualcurrent=float(smint16(ana2))/HWcurrentScale;
  
 +
//current in amps is now in actualcurrent
 +
 +
//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]]

Latest 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 );