plecs C script、prode、子系统、闭合导线画线、数据导出的简单使用

发布时间 2023-07-01 18:55:30作者: 菜芽caiya

数据导出:

 闭合线画线:

单击该线,按住右键即可画线。

probe模块:

可以将元器件拖拽进去,即可获取该元器件的相关信号输出,这样可以省去在元器件外加电压电流表等。

子系统:

选中要创建子系统的元器件,右键即可创建子系统。

 如下输入输出接口,包括信号,电气接口即可实现子系统信号的输入输出。

 右键子系统,创建mask即可为子系统创建参数。

 在这里设置相关参数,类型要设置为可编辑的。

 C script使用:(本例实现buck位置式PID,离散模式)

setup设置相关设置,采样时间设置为-1或0表示连续模式,设置具体的步长表示离散模式。

 code栏:

code declarations:相关变量,头文件声明

//头文件
#include <math.h>
#include <stdio.h>

//设置输入端口,定义输入变量
#define Set_voltage Input(0)
#define U_in Input(1)
#define U_out Input(2)
#define I_L Input(3)
#define I_out Input(4)

//定义中间运算的离散状态变量
#define U_ek DiscState(0)
#define U_ek_1 DiscState(1)
#define sum_U_ek DiscState(2)

//定义静态变量
static double Kp,Ki,Kd;
double d;

//定义输出变量
double Duty;

 start function:初始化。

//设置静态变量在Setup-Parameter中的位置
Kp=ParamRealData(0,0);
Ki=ParamRealData(1,0);
Kd=ParamRealData(2,0);

//设置离散变量的初值
U_ek=0;
U_ek_1=0;
sum_U_ek=0;

output function:输出相关代码,连续模式时,相关逻辑代码都是放在这儿。

Output(0)=Duty;

update function:更新逻辑代码放在这儿。在离散模式,每个周期会执行一次此处的代码,并更新一次相关全局变量。类似定时器中断处理函数。

U_ek=Set_voltage-U_out;
d=Kp*U_ek+Ki*sum_U_ek+Kd*(U_ek-U_ek_1);
if(d>0.95)
{
    Duty=0.95;
}
else if(d<0.05)
{
    Duty=0.05;
}
else
{
    Duty=d;
}
sum_U_ek=sum_U_ek+U_ek;
U_ek_1=U_ek;