PLECS中DLL模块的使用

之前发布了一篇文章,介绍如何使用PSIM中的DLL模块。而本篇文章的内容与之类似,不过主角换成了PLECS。

PLECS和PSIM类似,也属于电力电子仿真软件,使用方便,仿真速度快,和Matlab也有一定的联系,有兴趣的可以去试试。PLECS可以利用外部动态链接库(DLL)来调用外部的代码参与仿真,方便复杂控制算法的实现,也有利于后期直接将代码移植到硬件控制器上。

本篇文章主要参考B站UP主“_zgj”老师的视频,算是他视频的一个文本化,便于自己学习。
PLECS视频教程43(DLL模块的使用说明)

顺带提一嘴,“_zgj”老师水平真的超高,在他的这期视频里,竟然是用Windows的命令行处理窗口来进行代码的编译等操作,实在是太帅了。本人水平有限,就总结了一种比较简单的方法来使用。除此之外,“_zgj”老师还有不少丰富知识和高级操作,欢迎大家前去关注学习。

闲话少叙,进入正题:

本次用到的软件主要是Visual Studio 2022 (VS 2022)和PLECS 4.68。

一、总体思路

与PSIM中DLL模块的使用类似,在PLECS中要找到DLL模块,在VS中编写需要的代码并生成“.dll”文件,最后通过某种方式将两者联系起来即可

二、具体实现

1 找寻DLL模块

PLECS的运行界面如下:包含两个部分,左边是库,右边是新建的一个Model
在这里插入图片描述

要使用DDL,可以在“Library”中搜索DLL,或者直接在新建的model主界面上打“DLL”,便可以找到该模块
在这里插入图片描述

双击“DLL”,弹出模块的参数设置窗口
(1) Filename:这里需要填入最后生成的“.dll”文件路径以及文件名,后面会提到;
(2) Sample time:顾名思义就是采样时间,可以填入实际需要的时间。如果填了“-1”,表明所采用的采样时间是继承于上一级模块的设置;
(3) Output delay 和 Parameters:这个暂且不管。

假设我们现在希望通过DLL将两个输入信号分别进行放大10倍和加上10的操作,那么在输入端可以先简单这样给定
在这里插入图片描述

2 在VS中新建项目

创建新项目,选择Windows桌面向导
在这里插入图片描述

给项目命名并选择合适的保存路径
在这里插入图片描述

选择动态链接库(.dll),空项目
在这里插入图片描述

3 在VS里面编写相应的接口函数

先新建一个“.c”文件。和PSIM那一篇文章类似,要注意把“.c”后缀名写好。
在这里插入图片描述
在这里插入图片描述

要准备的内容主要可以分成四个部分:头文件,输入以及输出接口,还有要实现的功能部分。这里直接给上代码,在使用的时候基于此进行修改即可

#include <math.h>"
#include "DllHeader.h"

void plecsSetSizes(struct SimulationSizes* aSizes) {
    aSizes->numInputs = 2;         // 输入个数
    aSizes->numOutputs = 2;        // 输出个数
    aSizes->numStates = 0;         // 状态个数
    aSizes->numParameters = 0;     // 参数个数
}

void plecsOutput(struct SimulationState* aState) {
    float a1 = 0;        
    float a2 = 0;

    /* 输入 */
    a1 = aState->inputs[0];
    a2 = aState->inputs[1];

    /*  功能实现 */
    a1 = a1 * 10;
    a2 = a2 + 10;

    /*  输出 */
    aState->outputs[0] = a1;
    aState->outputs[1] = a2;
}

保存文件后,点击菜单中的“生成”,再选择“生成解决方案“。

一般来说,这里会报错,显示找不到“Dllheader.h”,这时我们需要对左侧栏中的项目进行右击,选择属性,再进行如下操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
具体的路径为:(每个人的PLECS安装路径会各有不同)

在这里插入图片描述

虽然这里显示“没有与搜索条件匹配的项”,但是没有关系,因为在VS里看不到相关的文件,直接选择该文件夹即可。

这时再进行编译操作就不会有错了。

4 联系PLECS和VS

为了将生成的“.dll”文件和PLECS连接起来,我们需要找到文件的路径和文件名,就在我们建立的项目里
在这里插入图片描述

而后将该信息填写进DLL的 “Filename”一栏中
在这里插入图片描述

5 最后

设置好相关的仿真参数,见证结果吧!
在这里插入图片描述
很显然,仿真和我们期望的一致!

写在后面

DLL模块的“help”文档中其实介绍了很多东西,包括输入输出,一些接口函数的写法等等,有兴趣的可以去看看。比如
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值