📄 compute_power.lst
字号:
C51 COMPILER V8.02 COMPUTE_POWER 04/04/2008 19:55:15 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE COMPUTE_POWER
OBJECT MODULE PLACED IN Compute_Power.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Compute_Power.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*===============================================================*/
2 /*函数名称: Compute_Power.c */
3 /*函数功能: 计算平均功率,无功功率,功率因素 */
4 /*入口参数: 无 */
5 /*出口参数: 无 */
6 /*参数说明: reactive_power--------------------------------无功功率
7 average_power-----------------------有功功率(平均功率)
8 theta-----------------------------------------功率因素
9 */
10 /*修改记录: 无修改记录 */
11 /*编写作者: t483-4-19chenyong */
12 /*编写日期: 2007-4-14 */
13 /*===============================================================*/
14 #include"common.h"
15 #include"ad9851.h"
16 #include<math.h>
17 #define Command_Time 0.48 //1/25MHz(系统时钟为25MHz)
18
19 extern float Current,Voltage;
20 extern float Y_Real, Y_Image;
21 extern float Y_Abs, Y_Phase;
22 extern float theta;
23 extern float reactive_power;
24 extern float average_power;
25 extern unsigned long Pulse_Number; //所测量的脉冲个数
26 //unsigned long Frequncy;
27 extern unsigned long FrequencyLong_HZ;
28
29 void Compute_Power(void)
30 {
31 1
32 1 float Angle_Frequncy=0.0;
33 1 float t=0.0,error_duty=0.0;
34 1
35 1 // ad9851();
36 1
37 1 // FrequencyLong_HZ = FrequencyLong_HZ*5.99;
38 1 Angle_Frequncy = 2*3.1415926;
39 1 Pulse_Number = Pulse_Number*1.06358;
40 1 Pulse_Number = Pulse_Number-6.35466; //直线拟和后的值
41 1
42 1 t = (float)0.48*Pulse_Number; //计算相位
43 1 t = (float)t/100;
44 1 t = (float)t*FrequencyLong_HZ*6;
45 1 t = (float)t/10;
46 1
47 1
48 1 Y_Phase = (float)t*Angle_Frequncy;
49 1 Y_Phase = (float)Y_Phase/1000; //单位变成秒
50 1 error_duty = Y_Phase*0.12292701;
51 1 error_duty = error_duty-0.030691098; //误差直线拟和后的参数值
52 1 Y_Phase = Y_Phase+0.0306876; //静态误差为0.403832733
53 1 Y_Phase = Y_Phase-error_duty;
54 1 Y_Phase = (float)Y_Phase;
55 1
C51 COMPILER V8.02 COMPUTE_POWER 04/04/2008 19:55:15 PAGE 2
56 1 if(Y_Phase<=3.1415926)
57 1 {
58 2 Y_Phase = Y_Phase; //化成弧度
59 2
60 2 }
61 1 else
62 1 {
63 2 Y_Phase=6.283185-Y_Phase;
64 2 }
65 1
66 1 average_power = Voltage*Current;
67 1 average_power = average_power*cos(Y_Phase); //计算有功功率
68 1
69 1 reactive_power = Voltage*Current;
70 1 reactive_power = reactive_power*sin(Y_Phase); //计算无功功率
71 1
72 1 theta = cos(Y_Phase); //计算功率因素
73 1
74 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 531 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 12
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -