This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
一、’在CLA_shared.h文件定义了PR_REG这个结构体。
typedef struct { float Reference; //Input ��������
float Feedback; //Input ����������
float Error; // Input: stationary d-axis stator variable
float Error_1; // Input: Error��k-1��
float Error_2; // Input: Error��k-2��
float Res; // output: Res��k�� ����
float Res_1; // output: Res��k-1��
float Res_2; // output: Res��k-2��
float Output; //output ��������
float Q; // Input: rotating q-axis stator variable
float wo_Ts; // Input:
float wo2_Ts2; // Input:
float Q_wo_Ts; // Input:
float d; //Input: 4+4*Q*wo*Ts+wo^2*Ts^2
float m; // Input: 1/(4+4*Q*wo*Ts+wo^2*Ts^2)
float a; // Input: 4Q*wo*Ts/(4+4*Q*wo*Ts+wo^2*Ts^2)
float b; // Input: (8-2*wo^2*Ts^2)/(4+4*Q*wo*Ts+wo^2*Ts^2)
float c; // Input: ((4-4*Q*wo*Ts+wo^2*Ts^2))/(4+4*Q*wo*Ts+wo^2*Ts^2)
float kp; //����ϵ��
float kr; //����ϵ��
float Maxlimit; // Input:
float Minlimit; // Input:
} PR_REG;
#define PR_REG_DEFAULTS {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}
extern PR_REG PR_cla;
二、在.c文件进行初始化
#pragma DATA_SECTION(PR_cla,"Cla1DataRam0")
PR_REG PR_cla = PR_REG_DEFAULTS;
现在结构体里面的值全是0,我想着给结构体赋值,如下。想请教下下面几行代码,除了放在CLA.cla文件,还可以在其他地方进行初始化吗。
//--------逆变器PR控制器初始化--------------
PR_cla.Maxlimit = 200; //电压环输出限幅初始化
PR_cla.Minlimit = 200; //IQ形。
PR_cla.Q = 0.01;
PR_cla.kp = 0.01;
PR_cla.kr = 0.01;
// VoltageLoop_PR.wo_Ts =_IQmpy(_IQmpy(_IQ(6.28319),_IQ(300)),_IQ(Ts)); //对7次谐波进行抑制.300/50=6,n=6+1;
PR_cla.wo_Ts =6.28319*300*Ts_cla; //对7次谐波进行抑制.300/50=6,n=6+1;
PR_cla.Q_wo_Ts = PR_cla.Q*PR_cla.wo_Ts;
PR_cla.wo2_Ts2 = PR_cla.wo_Ts*PR_cla.wo_Ts;
PR_cla.d = 4 + 4 * PR_cla.Q_wo_Ts + PR_cla.wo2_Ts2;
PR_cla.m = 1/PR_cla.d;
PR_cla.a = 4*PR_cla.kr*PR_cla.Q_wo_Ts*PR_cla.m;
// VoltageLoop_PR.a =_IQmpy(_IQmpyIQX(_IQ1(_IQmpy(_IQ(4) ,VoltageLoop_PR.kr)),17,_IQ10(VoltageLoop_PR.Q_wo_Ts),20),VoltageLoop_PR.m);
// CurrentLoop_d_PR.a = (4 * CurrentLoop_d_PR.Q_wo_Ts) * CurrentLoop_d_PR.m;
PR_cla.b = (8 - 2*PR_cla.wo2_Ts2)*PR_cla.m;
PR_cla.c = (4 - 4 * PR_cla.Q_wo_Ts + PR_cla.wo2_Ts2)*PR_cla.m;
你好,还可以试一下建立一个.h文件,然后在.cla中include这个头文件。可以参考一下例程,里面应该会有类似的定义:
C:\ti\c2000\C2000Ware_4_00_00_00\device_support\f2803x\examples\cla
您好,我在controlSUITE的例程中(D:\my applications\controlsuite\route\controlSUITE\device_support\f2803x\v130\DSP2803x_examples_cla_ccsv5)没有找到类似结构体的初始化,也在网上查了很多资料,也没有相关的资料,您能把您的例程发我一份么,如果可以,我私信发邮箱给您,谢谢您,
因为我要在CLA_Task1中进行PI和PR的计算,如果把结构体也放在Task1,一是怕出错,二是不规范,所以想着在进入Task之前,就把结构体进行赋值。
我仔细看了一下你的要求,似乎跟例程还是不太一样,你是需要在程序里面给结构体里面的部分参数赋值是吗?这样的话我感觉只能在Task中进行操作。
这个问题我会再咨询一下其他工程师,看是否有其他处理方法。
您好,您能把您的例程发我一份么,我参考学习一下,我的邮箱是18800178790@163.com。我是需要把结构体进行赋值,如果放在Task中,程序进一次Task中断,就会进行一次赋值,所以我想放在其他地方进行赋值,在CPU中是无法赋值,因为结构体是定义在CLA的空间中的。如果你需要,我可以把我的程序发您一份。
我的例程是在C2000WARE中的,你下载好这个软件之后就可以在上面我发的路径中找到了:
https://www.ti.com.cn/tool/cn/C2000WARE
另外,你这边不考虑在PR_REG_DEFAULTS中进行定义吗?