编程技术是改变世界的力量。
本站
当前位置:网站首页 > 后端语言 > 正文

详解PSIM仿真软件高级应用——C语言动态链接库编写和调用

gowuye 2024-04-25 04:41 10 浏览 0 评论

1 软件平台的安装和基础知识

PSIM

PSIM9.0.3.400_x32

Visual Studio C++

VC6.0只能安装在Win-XP上;VC2010只能安装在Win7和Win-XP;VC2012只能安装在Win8及更高Win系统。考虑电脑操作系统的通用性和普遍性本教程选用VC2010版本软件平台。

C语言知识

C语言语法和常用编程流程;子函数的调用和申明;重点掌握C语言中数组、指针、结构体、共用体等应用;养成良好的编程习惯和变量命名习惯。

2 了解PSIM软件及其简单应用

(1)新建仿真文件File->New;

(2)重点掌握调用系统自带的元件Elements->……,了解常用元件的设置和使用;

电力电子系统仿真常用的元器件包括:电阻、电容、电感、变压器、电机、各种交直流电源、逻辑门、IGBT、晶闸管、二极管、数学计算模块(加减乘除和三角函数等)、常用的数字控制和S域模块、传感器和仪表等,具体的使用详见文档《PSIM User Manual》和软件自带的例子。

(3)仿真时间和步长设置Simulate->Simulation Control,主要设置Time step(一般设置1us)和Total time。


(4)运行仿真文件Simulate->Run Simulation;

(5)通过对系统自带的例子了解常用元器件的使用和设置,也可以了解一些经典电路的原理;

(6)通过例子的学习和了解可以尝试将例子中《space vector pwm》两电平逆变器五段法SVPWM仿真修改成七段法SVPWM仿真,同时也能加深对空间矢量算法原理的理解。

3 PSIM仿真高级应用

3.1静态链接库和动态链接库(DLL)应用

静态链接库就是常说的lib文件,用户可以将常用的C语言子函数封装成静态库文件,以便建立动态DLL文件是直接调用,也有利于代码的归档和保存;动态链接库文件就是常说的DLL文件,用户可以将原理图电路难以实现的功能或者控制算法(比如变流器设备闭环控制算法、电机控制算法等)用C语言编写,通过编写生成DLL文件,通过PSIM软件提供的DLL Block模块直接调用,仿真更加灵活,仿真速度也大大提高,并且编写的C语言控制算法几乎可以完全移植到DSP等CPU中运行,验证了算法程序的准确性。

3.1.1建立静态链接库步骤

(1)打开Microsoft Visual Studio 2010软件,新建->项目->(已安装模板Visual C++)Win32->Win32控制台应用程序;


(2)输入库文件名(不能出现汉字等符号)、选择路径->确定->下一步->选择“静态库’,附加选项中去掉”预编译头“的对号->完成;


(3)向新建项目中添加子函数的c源文件和h文件->保存,界面如下图所示;


(4)C源文件和H文件添加完后的效果如下:


(5)生成->编译,生成.lib文件,lib文件自动保存在debug目录下。

3.1.2建立动态链接库步骤

(1)新建->项目->(已安装模板Visual C++)Win32->Win32项目;

(2)输入项目文件名、选择路径->确定->下一步->选择“DLL’,附加选项中选”空项目“->完成;



(3)添加主函数的c源文件和h文件(例如静态库文件中所有子函数的申明MyFunction.h)->保存,此过程和静态库文件中c和h文件添加类似,添加完成后效果如图


(4)将C子函数程序生成的静态链接库文件MyFunction.lib复制到DLL项目目录下;

(5)项目->项目属性->链接器->常规->附加库目录->添加项目路径;


(6)项目->属性->链接器->输入->附加依赖项->点击编辑->输入MyFunction.lib,或者此项不设置,在主程序顶端输入语句#pragma comment (lib,"MyFunction.lib")。



(7)生成->重新生成项目名称,编译后得到DLL文件在文件夹debug下。


3.1.3主程序框架

主程序中参数说明:__declspec(dllexport) void simuser (t, delt, in, out)

t:仿真的实时时间,与仿真软件执行过程相对应,一般不用修改;

delt:仿真步长,其大小为Simulate->Simulation Control中的 Time step。

in:DLL的输入数组,对应PSIM软件中DLL模块(Elements->other->Function Blocks->DLL Block(n input),当然常用模块最大引脚数是25个,如需更多引脚可调用General DLL Block,其引脚数可以设定为任意数)输入引脚。

可以通过修改上图中红色椭圆里的程序,完成自己的控制算法,请认真读懂此处给出的主程序框架,实际该框架已经完成了模拟量的数字采样和算法运算,然后通过out数组输出,已经可以等效成一个DSP的中断子程序,这样仿真用的C语言程序几乎可以百分之百的移植到DSP中,缩短了算法的调试过程和准确性验证。

out:DLL模块的输出,也是一个数组。

进行仿真时应将生成的DLL文件和PSIM文件在同一个文件夹里,且将DLL文件的名字和PSIM模块中DLL模块的名字一致。


3.1.4思考和改进

想要把仿真做的更加和实际贴近,该程序框架还有哪些可以改进?如何将三角载波以及DSP中的比较、行为动作等添加到此程序框架中,使得PSIM文件中元件更少仿真速度更快?

比较理想的三电平PWM整流器仿真平台(所有算法全部在DLL中进行,PSIM仅仅搭建一个主功率电路)


3.1.5练习和设计

(1)利用PSIM软件平台搭建一个三相电压源给一个三相阻感负载供电的电路仿真,并对三相负载电流进行Clark变换,要求<1>Clark变换由PSIM软件自带的库元件计算实现;<2>Clark变换由调用PSIM自带的abc-alpha/beta模块实现;<3>Clark变换的算法在DLL文件中实现,并对这三种实现方法的结果进行对比。

(2)利用PSIM软件搭建一个两电平逆变器七段式SVPWM调至算法的仿真,并且对逆变器输出电压和电流进行傅立叶分析,要求两电平主电路部分由PSIM软件自带的元件组成,SVPWM算法由DLL动态链接库完成,了解逆变输出电压电流的THD参数等。如有疑问可以在文后留言,尽量做到有问必答

相关推荐

R语言数据挖掘实践——支持向量机的常用函数
R语言数据挖掘实践——支持向量机的常用函数

e1071包是R语言中用于支持向量机建模与分析的软件包,其主要用于支持向量机的模型构建,提供核心函数svm()来建立支持向量机的基础模型,并且可辅助使用pred...

2024-05-18 12:15 gowuye

R数据分析:如何做聚类分析,实操解析
R数据分析:如何做聚类分析,实操解析

Clusteringisabroadsetoftechniquesforfindingsubgroupsofobservationswi...

2024-05-18 12:14 gowuye

用R语言做数据分析——马赛克图
用R语言做数据分析——马赛克图

到目前为止,我们已经学习了许多可视化定量或连续型变量间关系的方法。但如果变量是类别型的呢?若只观察单个类别型变量,可以使用柱状图或者饼图;若存在两个类别型变量,...

2024-05-18 12:14 gowuye

用R语言做数据分析——方差分析基本概论
用R语言做数据分析——方差分析基本概论

在实际工作中,影响一件事的因素是很多的,我们总是希望通过各种试验来观察各种因素对试验结果的影响。例如,不同的生产厂家、不同的原材料、不同的操作规程,以及不同的技...

2024-05-18 12:14 gowuye

R语言数据分析实战:数据清洗与可视化
R语言数据分析实战:数据清洗与可视化

《R语言数据分析实战:数据清洗与可视化》是一本深入浅出的实践指南,专为对数据分析感兴趣的读者精心编撰。本书旨在帮助读者掌握R语言这一强大的统计分析工具,通过实例...

2024-05-18 12:13 gowuye

用R语言做数据分析——双因素方差分析
用R语言做数据分析——双因素方差分析

在双因素方差分析中,受试者被分配到两因子的交叉类别组中。以基础安装中的Tooth-Growth数据集为例,随机分配60只豚鼠,分别采用两种喂食方法(橙汁或维生素...

2024-05-18 12:13 gowuye

用R语言做数据分析——独立两样本和K样本检验
用R语言做数据分析——独立两样本和K样本检验

coin包简介对于独立性问题,coin包提供了一个进行置换检验的一般性框架,通过这个包,我们可以回答如下问题:响应值与组的分配独立吗?两个数值变量独立吗?两个类...

2024-05-18 12:13 gowuye

用R语言做数据分析——用回归做方差分析
用R语言做数据分析——用回归做方差分析

之前提到方差分析和回归都是广义线性模型的特例,之前文章的所有设计都可以用lm()函数来分析。为了更好地理解输出结果,需要弄明白在拟合模型时,R语言是如何处理类别...

2024-05-18 12:13 gowuye

数据分析R语言——数据结构
数据分析R语言——数据结构

数据分析R语言——数据结构数组数组(array)与矩阵类似,但是维度可以大于2.数组通过array()函数创建。形式如;myarray<-array(v...

2024-05-18 12:13 gowuye

R语言数据挖掘实践——关联分析的常用函数
R语言数据挖掘实践——关联分析的常用函数

arules和arulesViz是R语言中两个专用于关联分析的软件包。其中arules用于关联规则的数字化生成,提供Apriori和Eclat这两种快速挖掘频繁...

2024-05-18 12:12 gowuye

R语言数据挖掘实践——判别分析的常用函数
R语言数据挖掘实践——判别分析的常用函数

判别算法在R语言中实现主要涉及4个软件包中的相关函数,它们依次为MASS、klaR、class和kknn。其中MASS包含有大量实用而先进的统计计数函数及适用数...

2024-05-18 12:12 gowuye

用R语言读取Excel、PDF和JSON文件,终于有人讲明白了
用R语言读取Excel、PDF和JSON文件,终于有人讲明白了

导读:本文将讨论Excel、PDF等文件的读取,以及相应函数的参数设置。作者:刘健邬书豪如需转载请联系华章科技下图总结了主要程序包,希望读者在日常练习和工作中...

2024-05-18 12:12 gowuye

R语言数据挖掘实践——聚类分析的常用函数
R语言数据挖掘实践——聚类分析的常用函数

使用R语言可以轻松实现聚类分析,stats、cluster、fpc和mclust是常用的四个聚类分析软件包。stats主要包含一些基本的统计函数,如用于统计计算...

2024-05-18 12:12 gowuye

用R语言做数据分析——时间序列分类
用R语言做数据分析——时间序列分类

时间序列分类是根据已标注的时间序列建立一个分类模型,然后使用分类模型预测未标记时间序列的类别。从时间序列中抽取出新特征肯呢个有助于提高分类模型的性能。特征提取技...

2024-05-18 12:11 gowuye

一文看懂用R语言读取Excel、PDF和JSON文件(附代码)
一文看懂用R语言读取Excel、PDF和JSON文件(附代码)

导读:本文将讨论Excel、PDF等文件的读取,以及相应函数的参数设置。作者:刘健邬书豪如需转载请联系华章科技下图总结了主要程序包,希望读者在日常练习和工作中...

2024-05-18 12:11 gowuye

取消回复欢迎 发表评论: