10倍速开发开关电源:PSIM DLL集成指南与如何单步调试你的代码

3 篇文章 3 订阅

文末有彩蛋哦。

去年提到要写一篇如何在利用PSIM + Visual Studio进行仿真联调,加速实际嵌入式端C代码的开发,但因为懒一直没兑现。

本期简单总结下实现的方法。

特别声明:本文约一半以上内容有kimi/文心一言提问式生成,仅用于技术交流,禁止用于商业使用。若推文内容存在侵权,请留言与我联系,我将删除对应内容。

1 Simulink VS PSIM

PSIM和Simulink都是电子仿真领域中广泛使用的软件工具,它们各有优势和劣势。以下是对两者在电子仿真方面的优劣势对比(基于Kimi提问式生成的答案,并做了微调):

PSIM

  • PSIM专为电力电子和电机控制系统设计,因此在这些领域的仿真中表现出较高的效率。

  • 它使用专门的仿真引擎,针对开关和瞬态行为进行了优化,适合处理快速开关事件和瞬态分析。

  • 对于非常复杂的电路或者需要大量矩阵运算的系统,PSIM可能不如Simulink高效。

  • 由于PSIM主要针对电力电子系统,对于信号处理或控制系统等其他类型的复杂电路,其效率可能不如Simulink。

  • 优势

  • 局限性

Simulink

  • Simulink作为一个多领域仿真工具,可以处理电子、控制、信号处理、通信等多个领域的复杂系统。

  • 依托于MATLAB的强大数学计算能力,Simulink能够处理复杂的算法和数学模型,适合进行系统级建模和仿真。

  • Simulink提供了丰富的模块库和工具箱,可以方便地构建和扩展模型,对于需要频繁修改和迭代的复杂电路设计非常有用。

  • 在处理非常复杂的电路时,Simulink的计算效率可能会受到影响,尤其是在模型规模非常大时,可能需要较长的仿真时间和更多的计算资源。

  • 优势

  • 局限性

个人使用体验

去年基于Simulink搭建了一个较为复杂的双向DCDC模型,并加载了多个c语言文件进行采样滤波,环路控制与状态切换功能的仿真,速度慢到无法接受,而且在与visual studio进行单步联调时Matlab容易闪退,最后只好切换到PSIM中进行同等功能的建模仿真,速度确实快了不少。实际产品软件的问题基本都能在模型中复现并调测,极大地加快了开发效率。

另外当前我使用的PSIM版本为V9.1,visual studio使用的是2010版本。若需使用其他版本,方法也是类似的。

2 为什么选择加载DLL方式?

对于单一的C文件仿真,可以直接在PSIM中使用简化C模块(Simplified C block)或通用C模块(General C block)来实现。

以通用C模块(General C block)为例,以下是常规的步骤:

  1. 添加通用C模块

    • 在菜单栏中,选择“Elements” -> “Other” -> “Function Blocks” -> “C block”。

  2. 配置C模块

    • 放置通用C模块到电路图中,并双击打开。

    • 在打开的界面中,可以选择不同的功能类型,如初始化(OpenSimUser Fcn)、运行时(RunSimUser Fcn)和退出时(CloseSimUser Fcn)的代码块。

  3. 编写C代码

    • 在“RunSimUser Fcn”模块中编写具体的执行代码。

  4. 设置输入输出

    • 输入输出端口在通用C模块中使用inout数组的形式。

  5. 编辑图形

    • 同样可以使用“Edit Image”功能来自定义模块的图形符号。

  6. 测试电路

    • 搭建电路并进行仿真,验证C模块的功能。

由于每个C程序块中的变量对于其他C程序块来说是不可见的。要将值从一个C程序块传递到另一个C程序块或其他电路部分,只能通过C程序块的输入输出端口。所以如果仅仅是仿真下简单的逻辑与算法,那么可以使用该方法。但是如果需要使用多个C语言的仿真,那么就会比较复杂。

从嵌入式产品的软件开发而言,即便扣除驱动层代码,服务层和业务层的功能代码通常会有多个甚至几十个源文件。举个例子,对于常规的开关电源的软件功能模块,通常包含采样滤波,环路控制算法,事件检测诊断,状态机等。因此,在这个使用场景下,建议使用dll的方式进行。

3 PSIM加载dll的方法

加载dll的前提是,咱们得先有个dll。具体方法可以参考下述链接,这里不再赘述。

PSIM中动态链接库DLL使用方法_psim 中的dll block中unable to load the dll file-CSDN博客

唯一需要注意的是

1. 若发现PSIM加载dll之后,点击运行时提示找不到相关函数,可以参考下述的方法设置一下。

- 写一个def文件,强制导出此函数,其中双引号的名字要与你导出的文件名一致

- 在项目属性--链接器--输入--模块定义文件,选择刚才的def文件

2. 当PSIM已经加载了dll时,若需要在visual studio中重新编译生成dll,先要将PSIM关闭该文件,否则会提示生成失败。

为了演示方便,我这边创建了一个简单的PSIM文件和包含了多个c语言文件的dll工程,通过dll的功能函数将两个输入分别进行相加和取平均值操作。

4 在Visual studio中联调

1. 打开Visual studio dll工程,并打开PSIM软件。

2. 在Visual  studio中选择工具 -- 附加到进程 --选择PSIM.exe

3. 在刚才的对应的.c文件中 你想调试的地方添加断点

4. 在PSIM中运行模型

5. 此时你就可以看到代码会在你断点处停止,接下来你就可以根据需要愉快的进行调试,如单步调试,通过监视窗口查看当前作用域下的变量等visual studio丰富的调试工具了。

PSIM与VS联合调试

内容回顾:今天我们比较了PSIM和Simulink在电子仿真领域的优缺点,简单而言PSIM适合电力电子系统仿真并且在此类场景中仿真速度有优势,而Simulink适用于多领域的复杂系统建模。同时还介绍了在PSIM中加载和使用DLL的方法,包括配置C模块、编写C代码、设置输入输出端口和测试电路。此外,提供了在Visual Studio中与PSIM进行联合仿真和调试的步骤。

彩蛋:微信公众号-“ 芯连心嵌入式设计交流”,对话框回复“PSIM DLL”,可以下载推文中的示例,包含PSIM工程和visual studio工程源码。

  • 24
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跨界程序猿-Vincent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值