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

文末有彩蛋哦。

去年提到要写一篇如何在利用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工程源码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】 Redis 集成到 Spring Boot上面

文章目录 🍃前言🎄Spring Boot连接redis客户端🚩项目的创建🚩配置端⼝转发🚩配置 redis 服务地址🚩更改 Redis 配置文件🚩使用 StringRedisTemplate 类操作 🎍Spring Boot操作Redis客…

107.网络游戏逆向分析与漏洞攻防-装备系统数据分析-装备信息更新的处理

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 现在的代码都是依据数据包来写的,如果看不懂代码,就说明没看懂数据包…

ChatGPT3.5和ChatGPT4.0、ChatGPT4o对比

一、ChatGPT3.5、ChatGPT4.0、ChatGPT4o对比 目前ChatGPT有三个主要版本,分别是ChatGPT3.5、ChatGPT4.0、ChatGPT4o,这三个版本之间有什么差异呢? 对比项ChatGPT3.5ChatGPT4.0ChatGPT4o参数数量1750亿约1万亿未公开输入文本文本、图片文本、…

【el-tooltips改造】Vue实现文本溢出才显示el-tooltip,否则不显示el-tooltips

实现原理: 使用disabled属性控制el-tooltip的content显示与隐藏; 目标: 1行省略、多行省略、可缩放页面内的文本省略都有效。 实现方式: 1、自定义全局指令,tooltipAutoShow.js代码如下(参考的el-table中的…

Java——数组排序

一、排序介绍 1、排序的概念 排序是将多个数据按照指定的顺序进行排列的过程。 2、排序的种类 排序可以分为两大类:内部排序和外部排序。 3、内部排序和外部排序 1)内部排序 内部排序是指数据在内存中进行排序,适用于数据量较小的情况…

Type-C转音频(C/3.5mm接口USB2.0数据传输)带PD充电低成本解决方案

LDR6500:领先市场的USB-C DRP接口USB PD通信芯片 产品介绍 LDR6500,由乐得瑞科技精心研发,是一款针对USB Type-C标准中Bridge设备而优化的USB-C DRP(Dual Role Port,双角色端口)接口USB PD(Po…

2024年安全现状报告

2024 年安全现状报告有些矛盾。尽管安全专业人员的道路困难重重,比如说严格的合规要求、不断升级的地缘政治紧张局势和更复杂的威胁环境,但整个行业还是在取得进展。 许多组织表示,与前几年相比,网络安全变得更容易管理。组织之间…

压缩视频在线压缩网站,压缩视频在线压缩工具软件

在数字化时代,视频成为了人们记录和分享生活的重要载体。然而,视频文件一般都非常大,这不仅占据了大量的存储空间,也给视频的传输和分享带来了不便。因此,压缩视频成为了许多人必须掌握的技能。本文将详细介绍如何压缩…

Winddow系统下关于Golang使用Cgo的配置

1.配置CGO_ENABLED为1 go env -w CGO_ENABLED1 2.安装gcc环境,否则出现cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in %PATH%错误 安装包:链接:https://pan.baidu.com/s/1sgF9lijqGeP…

Python在股票交易分析中的应用:布林带与K线图的实战回测

引言 在股票交易的世界中,技术分析是投资者们用来预测市场动向的重要工具。布林带(Bollinger Bands)作为一种动态波动范围指标,因其直观性和实用性而广受欢迎。本文将通过Python代码,展示如何使用布林带结合K线图来分…

在windows下使用本地AI模型提供翻译、对话、文生图服务

文章目录 在windows下使用本地AI模型提供翻译、对话、文生图服务ollama简介下载安装配置环境变量模型安装目录服务监听地址跨域配置我的配置注意事项 开机自启 使用运行模型对话时的命令 查看本地已安装模型删除模型 查看ollama支持的模型 Docker Desktop简介下载安装配置开机自…

STM32智能小车学习笔记(避障、循迹、跟随)

我们使用的是STM32CubeMX软件和MDK5 芯片使用的是STM32F103C8T6 完成对STM32CubeMX的初始化后开始我们的第一步点亮一个LED灯 一、点亮LED灯 点亮PC13连接的灯 打开STM32CubeMX软件,pc13设置为输出模式 然后按照这样配置,user label 设置成这个IO口代…

FJSP:烟花算法(FWA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、烟花算法介绍 参考文献: Tan, Y. and Y. Zhu. Fireworks Algorithm for Optimization. in Advances in Swarm Intelligence. 2010. Berlin, Heidelberg: Springer Berlin Heidelberg. 二、烟花算法求解FJSP 2.1FJSP模型介绍 柔性作业车间调度问题(Flexible …

ubuntu 用户名及密码忘记操作

1、重启系统,长按Shift键,直到出现菜单,选则高级设置。选择recovery mode,即恢复模式 2、选择root 3、# 后面敲入 sudo passwd 用户名 4、# passwd "用户名" 之后再敲两次密码就可以了。(如果提示修改失败可先执行&a…

在C++中用3种方法访问一个字符串

1.用字符数组存放一个字符串 编写程序: str是字符数组名,它代表字符数组的首元素的地址,输出时从str指向的字符开始,逐个输出字符,直至遇到\0为止。 2.用字符串变量存放字符串 编写程序&…

PaddleSpeech MFA:阿米娅中文音色复刻计划

PaddleSpeech:阿米娅中文音色复刻计划 本篇项目是对iterhui大佬项目[PaddleSpeech 原神] 音色克隆之胡桃的复刻,使用的PaddleSpeech的版本较新,也针对新版本的PaddleSpeech做了许多配置之上的更新并加入了自己对语音的对齐、配置、训练其它任…

Linux-常用命令-常用设置

1.帮助类命令 1.man命令-获得帮助信息 man [命令或配置文件]例:查看ls命令的帮助信息 man ls输入 ZZ 退出帮助2.服务管理类命令 1.centos7语法 1.1 临时开关服务命令 开启服务: systemctl start 服务名 关闭服务: systemctl stop 服务…

STM32 printf 重定向到CAN

最近在调试一款电机驱动板 使用的是CAN总线而且板子上只有一个CAN 想移植Easylogger到上面试试easylogger的效果&#xff0c;先实现pritnf的重定向功能来打印输出 只需要添加以下代码即可实现 代码 #include <stdarg.h> uint8_t FDCAN_UserTxBuffer[512]; void FDCAN_p…

小程序 UI 风格魅力非凡

小程序 UI 风格魅力非凡

[创业之路-114] :互联网时代下的扁平化管理趋势与面临的挑战

目录 前言&#xff1a;扁平化管理的时代背景 一、扁平化管理的定义 二、扁平化管理的特点 三、扁平化管理的实施 四、扁平化管理的优势 五、偏平化管理的缺点 六、扁平化管理面临的挑战 七、扁平化管理条件和配套措施 7.1 扁平化管理的条件 7.2 扁平化管理的配套措施…