MATLAB/Simulink学习|在Simulink中调用C语言-03使用C Function 实现PI运算(使用模块自定义代码)

在前两篇博客中,介绍了如何使用C Function实现比例运算和积分运算,这篇博客将介绍如何实现PI运算,实际上是在前两篇博客的基础上完成的。

添加CFunction 端口和参数

共有两个输入端口,分别是参考Ref和反馈Fbk。一个输出端口Out。三个参数,分别是比例系数kp、积分系数ki和采样时间Tsample。两个静态变量比例运算结果up和积分运算结果ui。

为什么需要定义持久变量

因为在matlab中 持久变量 persistent 相当于 C语言中的 静态变量 static,在MATLAB|怎么存储Simulink运行过程中的变量呢?m语言persistent变量代替C语言Static变量-CSDN博客中有介绍。在运算的过程中,需要在对该变量重新赋值时才进行更新。

在"输出"页编辑 C 代码

cs 复制代码
up = kp*(Ref-Fbk);
ui[0] = ui[1] + ki*(Ref-Fbk)*Tsample;
ui[1] = ui[0];
Out = up + ui[0];

双击C Function 输入参数

设计比例系数为100,积分系数为1,仿真时间为1s

仿真框图如下

观察结果

下图所示,为输出结果,Ref=1,Fbk=0,比例系数为100,积分系数为1,仿真时间为1s,所以输出的结果为从100开始积分至101的直线。

以上便完成了使用C Function实现PI运算,希望对你有所帮助,我是ManTou~!

上述方法由于没有调用外部的C语言函数,所以在移植时仍然存在一定的工作量,后面将继续介绍如何使用C Function模块调用用户定义的外部C函数。

相关推荐
gihigo199820 小时前
分布式发电的配电网有功-无功综合优化 MATLAB 实现
开发语言·分布式·matlab
人工干智能20 小时前
科普:python的pandas包中的DataFrame就是二维表
开发语言·python·pandas
浪客川20 小时前
【百例RUST - 006】一文理解所有权和切片
开发语言·后端·rust
Westward-sun.20 小时前
PyQt5入门实战:从零实现一个表达式输入式计算器(附完整代码)
开发语言·qt
喂_balabala20 小时前
Kotlin-属性委托
android·开发语言·kotlin
dashizhi201520 小时前
如何禁止外来设备连接内网wifi、禁止外来电脑接入单位局域网?
开发语言·网络·php
不想写代码的星星20 小时前
类型萃取:重生之我在幼儿园修炼类型学
开发语言·c++
csbysj202020 小时前
C++ 接口(抽象类)
开发语言
南無忘码至尊20 小时前
Unity学习90天 - 第 5 天 - 阶段小项目
学习·unity·c#·游戏引擎
韩楚风20 小时前
PostgreSQL入门与进阶学习,体系化的SQL知识,完成终极目标高可用与容灾,性能优化与架构设计,以及安全策略
sql·学习·postgresql