Difference between revisions of "Reading actual drive state with SimpleMotion V2"
From Granite Devices Knowledge Wiki
[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 );