You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
5 months ago
|
/*
|
||
|
* VectorSpinner.cpp
|
||
|
*
|
||
|
* Author: Aleksey Gerasimenko
|
||
|
* gerasimenko.aleksey.n@gmail.com
|
||
|
*/
|
||
|
|
||
|
#include "SYSCTRL/VectorSpinner.h"
|
||
|
|
||
|
namespace SYSCTRL
|
||
|
{
|
||
|
//CONSTRUCTOR
|
||
|
VectorSpinner::VectorSpinner()
|
||
|
{}//CONSTRUCTOR
|
||
|
//
|
||
|
#pragma CODE_SECTION("ramfuncs");
|
||
|
void VectorSpinner::spin_calculator(SYSCTRL::ProjectionAnalogSignalStructure& projection, SYSCTRL::VecorModuleStructure& module, SYSCTRL::ProjectionAnalogSignalStructure& spinner)
|
||
|
{
|
||
|
module.module = sqrtf(projection.active * projection.active + projection.reactive * projection.reactive);
|
||
|
if(module.module > FP_ZERO)
|
||
|
{
|
||
|
module.reciprocal = 1.0/module.module;
|
||
|
//
|
||
|
spinner.active = module.reciprocal * projection.active;
|
||
|
spinner.reactive = -module.reciprocal * projection.reactive;
|
||
|
//
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
spinner.active = 1.0;
|
||
|
spinner.reactive = FP_ZERO;
|
||
|
//
|
||
|
};//if else
|
||
|
//
|
||
|
}//
|
||
|
//
|
||
|
#pragma CODE_SECTION("ramfuncs");
|
||
|
void VectorSpinner::spin_reset(SYSCTRL::ProjectionAnalogSignalStructure& spinner)
|
||
|
{
|
||
|
spinner.active = 1.0;
|
||
|
spinner.reactive = FP_ZERO;
|
||
|
//
|
||
|
}//
|
||
|
//
|
||
|
|
||
|
#pragma CODE_SECTION("ramfuncs");
|
||
|
void VectorSpinner::ort_corrector(SYSCTRL::ProjectionAnalogSignalStructure& spinner, SYSCTRL::VectorOrthogonalProjection& ort, SYSCTRL::VectorOrthogonalProjection& twisted)
|
||
|
{
|
||
|
twisted.active = spinner.active * ort.active + spinner.reactive * ort.reactive;
|
||
|
twisted.reactive = -spinner.reactive * ort.active + spinner.active * ort.reactive;
|
||
|
//
|
||
|
}//
|
||
|
//
|
||
|
} /* namespace SYSCTRL */
|