数据导出:
闭合线画线:
单击该线,按住右键即可画线。
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;
标签:plecs,ek,script,画线,prode,设置,Input,子系统,define From: https://www.cnblogs.com/caiya/p/17519725.html