带着真实C代码去simulink仿真

建立个人的函数库,将常见的如PID,SVPWM,PLL,滤波器等写成函数,定义其对应的c文件和头文件。 2. Simulink仿真的控制不再积木式搭建,使用C-Script(或者S function)包含个人函数库,另外在c script中只需要加入部分代码即可。

应用介绍


Simulink仿真的一点思考

作者作为一名电力电子控制工程师,常常需要将Simulink仿真的算法转化为可烧录到嵌入式芯片的代码,于是仿真完后还需要费一番心思,将积木式的模型或者m语言翻译为可用的代码,而且还不确定代码是否有bug。是否能这样,仿真用的就是真实的C代码,既节省了翻译代码的时间,又让你的代码经受了Simulink仿真的检验,何乐而不为!

解决方案是这样的:

     1. 建立个人的函数库,将常见的如PID,SVPWM,PLL,滤波器等写成函数,定义其对应的c文件和头文件。     

      2. Simulink仿真的控制不再积木式搭建,使用C-Script(或者S function)包含个人函数库,另外在c script中只需要加入部分代码即可。


02


PLECS C script工具的简单介绍

    作者采用plecs 3.6.1,该软件可以作为一个工具包嵌入到Simulink中使用。里面的C-Script是专门用来在simulink仿真中运行c 代码的。帮助菜单如下介绍C-Script模块:

    打开C script模块,将代码分为六层,Code declarations,Start function code,output function code,Updata function code,Derivative function code和Terminate function code。


Code declarations:此代码部分用于全局声明和定义,这是包含标准库标头的位置(例如math.h 或 stdio.h),可以定义要在 C-Script 函数中使用的宏、静态变量和外部源文件。包含Simulink模型文件的目录将自动添加到包含的搜索路径。


Start function code:开始函数代码在仿真开始时调用。一般用于初始化代码。


Output function code:在主要和次要时间步长期间调用输出函数,以更新该部分的输出信号。可以使用宏Input(i),Output(i)和CurrentTime来访问块的输入和输出以及当前时间。


Updata function code:如果该块具有离散的状态变量,则在处理完输出函数之后的主要时间步中,将调用一次更新函数。一般使用较少。


Derivative function code:如果块具有连续的状态变量,则在求解器的积分循环期间将调用导数函数。一般使用较少。


Terminate function code:在仿真结束时调用终止函数。

03


示例:三相三电平逆变器的模型搭建

    a. 将个人的PID函数库,SPWM函数库,ADC函数库以及数据类型定义头文件放在Simulink文件同路径下。用于Simulink模型中C-Script 调用。

图1  C函数库与simulink模型置于同一路径


    b. 搭建电路模型,模型分为电路部分,C代码部分,模拟芯片底层的脉冲生成模块。

图2 三电平simulink仿真模型结构


    c. C-Script 中编辑代码

    首先在C-Script 的设置界面输入该模块的输入个数,输出格式,运算步长等。

在Code declartions部分包含PID函数库,SPWM函数库,ADC函数库以及数据类型定义头文件,以及一些宏定义,如下图示例所示:

图3  C-Script 中Code declartions的定义

在Start function code中完成系统的初始化,本仿真中只对adc采样函数初始化。

图4 C-Script 中Start function code的定义


Output function code执行主要部分,如下截图所示,Output function code先后分别执行C-Script 模块的输入,包含三电平逆变器的输出线电压和输出电压幅度指令。接着对输出电压平均值的计算,输出电压平均值与指令值的PID计算,相位的计算以及三电平的SVPWM调制。最后为C-Script 的对外输出三电平逆变器的脉冲周期,翻转时间,生成脉冲。

图5 C-Script 中Output function code的定义


运行模型,三电平模块输出电压波形如下:

滤波后输出电压和电流波形如下所示:

    模块输出电压波形验证了三电平SVPWM调制函数的正确性。滤波后输出电压和电流波形可以得到该逆变器从0到目标电压建立需要0.35s左右,可根据项目实际需要调整PID参数


文件列表(部分)

名称 大小 修改日期

立即下载

相关下载

[Visio电路器件与标签模组] 电力电子器件的一些Visio图库,包括常见的电源电阻电容电感、地、脉冲波形、结点、mos管、二极管三极管、IGBT、变压器、开关、反馈环节等等,便于论文中电路图的绘制
[三相异步电动机的开环速度控制使用定子电压控制] 三相异步电动机的开环速度控制使用定子电压控制,三相异步电动机的开环速度控制simulink,使用定子电压控制simulink
[双馈风电机组模型] 此仿真模型是双馈风电机组模型。
[星形连接负载] 此仿真模型是星形连接负载。 在星形连接中,有四根线,三根线是相线,第四根是从星点引出的中性线。长距离电力传输首选星形连接,因为它具有中性点。在此我们需要了解电力系统中平衡和不平衡电流的概念。
[三相异步电动机模型] 此仿真模型是三相异步电动机模型。
[基于多电平逆变器的 BLDC 电机驱动器的仿真和实现] 此仿真模型是基于多电平逆变器的 BLDC 电机驱动器的仿真和实现。

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部