matlab_23550/Inu/Src/N12_Libs/rmp_cntl_v2.c
Razvalyaev 7e0063eee0 #3 Скомпилилось, но пока ничего не вызывается
Все основные файлы подтянуты без изменений

Изменены (только папка main_matlab):
- заглушки для ненужных функций (main_matlab.c)
- iq библиотека (IQmathLib_matlab.c)
- библиотеки DSP281x
2025-01-13 11:09:58 +03:00

194 lines
4.9 KiB
C

/*=====================================================================================
File name: RMP3CNTL.C (IQ version)
Originator: Digital Control Systems Group
Texas Instruments
Description: The ramp3 down control
=====================================================================================
History:
-------------------------------------------------------------------------------------
04-15-2005 Version 3.20
-------------------------------------------------------------------------------------*/
#include "dmctype.h"
#include "IQmathLib.h" // Include header for IQmath library
#include "rmp_cntl_v2.h"
/*
* PosRampPlus
* PosRampMinus
* NegRampPlus
* NegRampMinus
*/
#pragma CODE_SECTION(rmp_cntl_v2_calc,".fast_run");
void rmp_cntl_v2_calc(RMP_V2 *v)
{
_iq tmp;
tmp = v->DesiredInput - v->Out;
if (v->Out>=0)
{
// äë˙ ďîëîćčňĺëüíîé ÷ŕńňč
if (v->Out >= v->RampHighLimit1)
{
// ěű íŕ âňîđîě óđîâíĺ
if (tmp > (_iq)v->PosRampPlus2)
{
v->Out += v->PosRampPlus2;
if (v->Out > v->RampHighLimit)
v->Out = v->RampHighLimit;
}
else
{
if (tmp < (_iq)v->PosRampMinus2)
{
v->Out += (_iq)v->PosRampMinus2;
if (v->Out < v->RampLowLimit)
v->Out = v->RampLowLimit;
}
else
{
v->Out = v->DesiredInput;
}
}
}
else
{
// ěű íŕ ďĺđâîě óđîâíĺ
if (tmp > (_iq)v->PosRampPlus1)
{
v->Out += v->PosRampPlus1;
if (v->Out > v->RampHighLimit)
v->Out = v->RampHighLimit;
}
else
{
if (tmp < (_iq)v->PosRampMinus1)
{
v->Out += (_iq)v->PosRampMinus1;
if (v->Out < v->RampLowLimit)
v->Out = v->RampLowLimit;
}
else
{
v->Out = v->DesiredInput;
}
}
}
// if (tmp > (_iq)v->PosRampPlus)
// {
// //v->RampDoneFlag = 0;
// v->Out += v->PosRampPlus;
// if (v->Out > v->RampHighLimit)
// v->Out = v->RampHighLimit;
// }
// else
// {
// if (tmp < (_iq)v->PosRampMinus)
// {
// //v->RampDoneFlag = 0;
// v->Out += (_iq)v->PosRampMinus;
// if (v->Out < v->RampLowLimit)
// v->Out = v->RampLowLimit;
// }
// else
// {
// v->Out = v->DesiredInput;
// //v->RampDoneFlag = 0x7FFFFFFF;
// }
// }
}
else
{
// äë˙ îňđčö. ÷ŕńňč
if (v->Out <= v->RampLowLimit1)
{
// ěű íŕ âňîđîě óđîâíĺ
if (tmp > (_iq)v->NegRampPlus2)
{
v->Out += v->NegRampPlus2;
if (v->Out > v->RampHighLimit)
v->Out = v->RampHighLimit;
}
else
{
if (tmp < (_iq)v->NegRampMinus2)
{
v->Out += (_iq)v->NegRampMinus2;
if (v->Out < v->RampLowLimit)
v->Out = v->RampLowLimit;
}
else
{
v->Out = v->DesiredInput;
}
}
}
else
{
// ěű íŕ ďĺđâîě óđîâíĺ
if (tmp > (_iq)v->NegRampPlus1)
{
v->Out += v->NegRampPlus1;
if (v->Out > v->RampHighLimit)
v->Out = v->RampHighLimit;
}
else
{
if (tmp < (_iq)v->NegRampMinus1)
{
v->Out += (_iq)v->NegRampMinus1;
if (v->Out < v->RampLowLimit)
v->Out = v->RampLowLimit;
}
else
{
v->Out = v->DesiredInput;
}
}
}
// if (tmp > (_iq)v->NegRampPlus)
// {
// //v->RampDoneFlag = 0;
// v->Out += v->NegRampPlus;
// if (v->Out > v->RampHighLimit)
// v->Out = v->RampHighLimit;
// }
// else
// {
// if (tmp < (_iq)v->NegRampMinus)
// {
// //v->RampDoneFlag = 0;
// v->Out += (_iq)v->NegRampMinus;
// if (v->Out < v->RampLowLimit)
// v->Out = v->RampLowLimit;
// }
// else
// {
// v->Out = v->DesiredInput;
// //v->RampDoneFlag = 0x7FFFFFFF;
// }
// }
}
}