matlab_23550/Inu/Src/main/v_rotor.h

186 lines
3.7 KiB
C
Raw Normal View History

2024-12-27 10:50:32 +03:00
#ifndef V_ROTOR_H
#define V_ROTOR_H
#ifdef __cplusplus
extern "C" {
#endif
#include "params_bsu.h"
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ROTOR_SENSOR_CODE_CLOCKWISE 2 // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ROTOR_SENSOR_CODE_COUNTERCLOCKWISE 1 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//#define ROTOR_SENSOR_CODE_CLOCKWISE 1 // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//#define ROTOR_SENSOR_CODE_COUNTERCLOCKWISE 2 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void update_rot_sensors(void);
void RotorMeasure(void);
void RotorMeasurePBus(void);
void rotorInit(void);
void select_values_wrotor(void);
void RotorDirectionFilter(int RotorDirectionIn, int *RotorDirectionOut, int *RotorDirectionOut2, int *count_direction);
int AnalisatorRotorSensorPBus(_iq d1, _iq d2, unsigned int *count_overfull_discret, unsigned int *count_zero_discret, _iq *prev_iqTimeRotor,
unsigned int *discret_out, unsigned int discret_in, _iq *iqWRotorCalcBeforeRegul, _iq *iqWRotorCalc,
int modeS1, int modeS2,
int valid_sensor_direct, int valid_sensor_90,
unsigned int *error_count);
void RotorMeasureDetectDirection(void);
typedef struct
{
_iq iqWRotorRaw0;
_iq iqWRotorRaw1;
_iq iqWRotorRaw2;
_iq iqWRotorRaw3;
_iq iqWRotorFilter0;
_iq iqWRotorFilter1;
_iq iqWRotorFilter2;
_iq iqWRotorFilter3;
_iq iqWRotorDelta;
_iq iqTimeSensor1;
_iq iqTimeSensor2;
_iq prev_iqWRotorRaw0;
_iq prev_iqWRotorRaw1;
_iq prev_iqWRotorRaw2;
_iq prev_iqWRotorRaw3;
unsigned int count_zero_discret0;
unsigned int count_zero_discret1;
unsigned int count_zero_discret2;
unsigned int count_zero_discret3;
_iq iqWRotorCalc1;
_iq iqWRotorCalcBeforeRegul1;
_iq iqWRotorCalc2;
_iq iqWRotorCalcBeforeRegul2;
// int RotorDirectionInstant;
// int RotorDirectionSlow;
_iq iqWRotorImpulses1;
_iq iqWRotorImpulsesBeforeRegul1;
_iq iqWRotorImpulses2;
_iq iqWRotorImpulsesBeforeRegul2;
_iq iqWRotorSum;
_iq iqWRotorSumFilter;
_iq iqWRotorSumFilter2;
_iq iqWRotorSumFilter3;
_iq iqWRotorSumRamp;
_iq iqWRotorCalc1Ramp;
_iq iqPrevWRotorCalc1;
_iq iqWRotorCalc2Ramp;
_iq iqPrevWRotorCalc2;
int RotorDirectionSlow;
} WRotorValues;
#define WRotorValues_DEFAULTS {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0, 0}
typedef struct
{
_iq iqWRotorRaw0;
_iq iqWRotorRaw1;
_iq iqWRotorRaw2;
_iq iqWRotorRaw3;
_iq iqWRotorFilter0;
_iq iqWRotorFilter1;
_iq iqWRotorFilter2;
_iq iqWRotorFilter3;
_iq iqWRotorDelta;
// _iq iqWRotorCalcBeforeRegul;
_iq iqWRotorCalcBeforeRegul1;
_iq iqWRotorCalcBeforeRegul2;
_iq iqTimeRotor1;
_iq iqTimeRotor2;
_iq iqTimeRotor;
_iq iqWRotorCalc1;
_iq iqWRotorCalc2;
// _iq iqWRotorCalc;
int ModeAutoDiscret;
int RotorDirectionInstant;
int RotorDirectionSlow;
int RotorDirectionCount;
int RotorDirectionSlow2;
#if (ENABLE_ROTOR_SENSOR_ZERO_SIGNAL==1)
_iq iqWRotorRawAngle1F;
_iq iqWRotorRawAngle1R;
_iq iqWRotorRawAngle2F;
_iq iqWRotorRawAngle2R;
_iq iqAngle1F;
_iq iqAngle1R;
_iq iqAngle2F;
_iq iqAngle2R;
_iq iqAngleCalc;
#endif
} WRotorValuesAngle;
#if (ENABLE_ROTOR_SENSOR_ZERO_SIGNAL==1)
#define WRotorValuesAngle_DEFAULTS {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
#else
#define WRotorValuesAngle_DEFAULTS {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
#endif
extern WRotorValues WRotor;
extern WRotorValuesAngle WRotorPBus;
//#define NORMA_WROTOR 15
#define IQ_WROTOR_MAX_MIN_DELTA 3744914286 //17920
#define WRMP_COEF 0.001 // 0.24 Hz per sec
#define IQ_CONST_3 50331648
#define COUNT_DECODER_ZERO_WROTORPBus 65535 //0x00fe5000//0x01fca000
#define COUNT_DECODER_ZERO_WROTOR 65500 //0x00fe5000//0x01fca000
#define COUNT_DECODER_MAX_WROTOR 10
#ifdef __cplusplus
}
#endif
#endif