?? 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 + -