📄 compute_reandim.c
字号:
/*===============================================================*/
/*函数名称: Compute_REandIM.c */
/*函数功能: 计算相位,实部,虚部 */
/*参数说明: Angle_Frequncy----------------------------2*3.14156926
Y_Real----------------------------------网络函数的实部
Y_Image---------------------------------网络函数的虚部
t-------------------------------------高电平对应的时间
Y_Phase---------------------------------电压电流相位差
error_duty----------------------------------占空比误差
FrequencyLong_HZ-------------------------DDS发出的频率
Pulse_Number--------------------- 高电平对应的脉冲个数
*/
/*修改记录: 无修改记录 */
/*编写作者: t483-4-19chenyong */
/*编写日期: 2007-4-14 */
/*===============================================================*/
#include"common.h"
#include"ad9851.h"
#include<math.h>
//#define Frequncy 9015 //由DDS发出,在这里常数
#define Command_Time 0.48 //1/25MHz(系统时钟为25MHz)
extern float Y_Real, Y_Image;
extern float Y_Abs, Y_Phase;
extern float Current,Voltage;
extern unsigned long Pulse_Number; //所测量的脉冲个数
//unsigned long Frequncy;
extern unsigned long FrequencyLong_HZ;
void Compute_REALandIMAGE()
{
float Angle_Frequncy=0.0;
float t=0.0,error_duty=0.0;
// Frequncy=ad9851();
ad9851();
// FrequencyLong_HZ = FrequencyLong_HZ*5.99;
Angle_Frequncy = 2*3.1415926;
Pulse_Number = Pulse_Number*1.06358;
Pulse_Number = Pulse_Number-6.35466; //直线拟和后的值
t = (float)0.48*Pulse_Number; //计算相位
t = (float)t/100;
t = (float)t*FrequencyLong_HZ;
t = (float)t/10;
Y_Phase = (float)t*Angle_Frequncy;
Y_Phase = (float)Y_Phase/1000; //单位变成秒
error_duty = Y_Phase*0.12292701;
error_duty = error_duty-0.030691098; //误差直线拟和后的参数值
// Y_Phase = Y_Phase+0.092048856; //静态误差为0.403832733
Y_Phase = Y_Phase-error_duty;
Y_Phase = (float)Y_Phase;
if(Y_Phase<=3.1415926)
{
Current = (float)data_process(0); //采样电流
Voltage = (float)data_process(2); //采样电压
Y_Abs = (float)Current/Voltage; //计算导纳模
Y_Real = (float)fabs(Y_Abs*cos(Y_Phase)); //计算实部
Y_Image = (float)fabs(Y_Abs*sin(Y_Phase)); //计算虚部
Y_Phase = Y_Phase*180; //化成弧度
Y_Phase = Y_Phase/3.1415926;
}
else
{
Y_Phase=6.283185-Y_Phase;
Current = (float)data_process(0); //采样电流
Voltage = (float)data_process(2); //采样电压
Y_Abs = (float)Current/Voltage; //计算导纳模
Y_Real = (float)fabs(Y_Abs*cos(Y_Phase)); //计算实部
Y_Image = (float)fabs(Y_Abs*sin(Y_Phase)); //计算虚部
Y_Phase = Y_Phase*180; //化成弧度
Y_Phase = Y_Phase/3.1415926;
}
// Show_FloatData(FrequencyLong_HZ,5,3);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -