电机控制(4)matlab控制仿真的杂谈(s-function,传感器噪声等)

应读者要求,这一篇文章来讲一下仿真里那些可以让结果更贴合实际的东西。

首先重中之重:s-function模块。这是一个可以模拟数字处理器的模块,你完全可以把它当做是一个单片机,然后在里面写对应的代码。

使用s-function有三个明显的好处,第一是可以将仿真离散化,毕竟现实项目基本都是数字化离散化的。而连续和离散还是有一定区别的,有些问题在连续仿真中被掩盖了,离散化后才会显现出来。

第二个好处是易于调试,有时候修改代码比修改模块更加方便,尤其是复杂项目。

第三个好处是s-function的代码可以移植大部分到现实项目中,省下很多时间。

下面来介绍一下具体如何使用。首先放出来s-function模块后,双击它,给它起一个独一无二的名字,比如这里我就起名叫processor,名字是s-function们区别彼此的方法。
在这里插入图片描述
艾师傅

随后,点击edit打开s-function的模板代码,这里面有很多复杂的设置函数,各有各的用处,这里就不一一介绍,只介绍几个基本的必须的。首先是开头的宏定义,S_FUNCTION_NAME必须定义为你之前模块中命名的名字,这样才能把代码和模块联系起来。

在这里插入图片描述
艾师傅

接下来必须包含"simstruc.h"头文件,这个模板里好像已经包含了。然后是设置输入和输出的个数。如下图,我的输入有19个,输出有4个。
在这里插入图片描述

再然后是设置工作频率和仿真开始后多久开始工作:
在这里插入图片描述
接下来是初始化和开始函数,这俩函数只会在开始时被执行一次,我一般只在mdlStart()函数里写一些初始化,另一个空着。
在这里插入图片描述
最后是mdlOutputs,这里依次定义你的输入,主代码和输出。

全部定义好后就可以把它当做是一块单片机裸机了,也支持包含自己写的头文件。

最后则是编译,需要使用mex命令来编译。使用方法和gcc g++等编译器差不多,输入mex 所有.c文件即可。具体格式如下:

mex a.c b.c c.c

编译器本身就是gcc编译器,需要到matalb库里搜索gcc编译器下载。另外一个实用的小技巧是单独写一个matlab运行脚本,在里面提前写好编译命令,再起个简单的名字例如make,就可以简单输入make即可编译所有代码,使用起来就好像Makefile一样方便。

最后需要注意的是,s-function的输出并不是连续的,所以输出一定要接一个uniti delay或者zoh模块。还有s-funciton模块只有单个输入输出口,所有信号需要经过mux和demux。

我上传了一个s-function的模板代码,嫌麻烦的小伙伴可以直接下下来用(注:这个模板来自我的一位授课老师,Shafiq Odhano)。

另外再说说传感器仿真。

传感器仿真主要有两块,一个是噪声,另一个是量化。先说噪声,不同的传感器有不同的噪声特征,这个要自己去设置,主要就是频率和幅值大小,simulink有很多模块可以产生各种各样的噪声,就不多介绍。
在这里插入图片描述

然后是量化,这个使用quantizer模块就行,然后设置量化大小。每个传感器都有自己的分辨率,比如一个量程为5v的9位adc,分辨率就是5/(2^9-1) = 0.02v,quantizer设置为0.02就好。有的传感器比如编码器没有噪声,但是基本都有分辨率,都需要量化。

如果需要的话还可以增加限幅模块或者别的什么东西来使你的信号更加接近一个真实的传感器输出。

Matlab捡知识——S-Function再体验 S-Function 和 M-Function 作为一个学控制(越来越偏离轨道)的学生,使用simulink的小部分功能是在频繁不过的了,但是我本科到硕士一年级,用simulink调用自建函数,不是简单S函数就是复杂m-function,基本都会避开S-Function(一开始感觉贼麻烦)。其实,M-Function和S-Function同时用到复杂的地方,M-Function更麻烦… 用S-Fu... 阅读详情

相关推荐

S-Function模块C语言实现

S-Functio简介: S-Function为扩展Simulink的性能提供了一个有力的工具。 S-Function可以使用Matlab,C,C++等语言来辩,使用MEX工具,将C,C++的S-Function编译成MEX-文件,在需要的时候,他们可与其它的MEX-文件一起动态地链接到Matlab中。 S-Function范例: Simulink提供了一个S-Function的范例库,要运行 一...

qq_26126831的博客 1万+

Simulink系列 —— S-function的使用笔记(1)

文章目录函数形式S-function的输入参数S-function的输出参数信息的传递标准模板模块使用 从上图来看,S-function可支持多种语言编写,本文为MATLAB版使用笔记。 函数形式 [sys,x0,str,ts]=functionName(t,x,u,flag,p1,p2,…) % t为当前时间 % x为相应S-function模块的状态向量 % u是块的输入 % flag 用来指定被需要执行的任务 % p1,p2,...是模块参数 在模型仿真过程中,Simulink反复调用functi

罗伯特祥的博客 8293

Matlab在电机中的广泛应用

例如,Matlab可以进行电机参数辨识、电机性能优化、电机故障诊断等方面的工作。工程师们可以根据具体的需求和问题,灵活运用Matlab的功能,提高电机设计和控制的效率和准确性。在电机领域,Matlab提供了丰富的工具和函数,方便工程师进行电机设计、建模、仿真和控制系统设计。总结起来,Matlab在电机中的应用非常广泛,涵盖了电机特性分析、建模和电机控制系统设计等方面。以上代码演示了一个简单的电机模型,通过定义输入信号、建立系统模型和进行仿真,得到了电机的输出响应。Matlab在电机中的广泛应用。

PixelDude的博客 396

基于Matlab及Simulink的机电系统仿真

(一)不考虑刚度的情况进行以下内容实验:(1)根据数学模型求系统的电压输入和转速的传递函数,并进行时域的阶跃响应分析并绘制时域响应曲线,并根据阶跃相应求电机的机电时间常数(电机的机电时间常数,是电动机从启动到转速达到空载转速的63.2%时所经历的时间)。(2)编制MATLAB或Simulink程序求电机的调速特性,即不同负载力矩(学号后三位数字,x10,x100)情况下电压和转速之间的关系,填入下表,有效数据不少于20项,并在同一图中绘制出调速特性曲线。(二)考虑刚度的情况进行以下内容实验:(1)根据数学

qq_57279748的博客 2万+

5种电动机控制的MATLAB仿真模型.rar

SVP/VF等电机控制仿真模型

S-function模块案例详解(MATLAB程序)

编写的蹦极系统的S-function案例详解,可以参考博客:https://blog.youkuaiyun.com/didi_ya/article/details/118190541

电机matlab程序计算公式,MATLAB用于电机电磁计算的计算机编程

文件介绍:该文件为 doc 格式,下载需要1积分MATLAB用于电机电磁计算的计算机编程MATLAB是一种功能极其强大的解释性语言,它提供的运算符及数据结构之丰富,图形功能之完美、功能箱之丰富,远超过FORTRAN、C等语言;而它的灵活简便又超过BASIC等语言,MATLAB语法限制不严格,特别适用于电机电磁计算的计算机程序,程序的自由度和可移植性好,还可通过Notebook将程序移到Word环境...

weixin_28923083的博客 1662

立创开源便携式多生理参数监护仪:基于STM32H743与ADS1292R的心电血氧体温监测系统设计

本文详细解析了基于STM32H743与ADS1292R的便携式多生理参数监护仪开源设计。项目集成了心电、血氧和体温监测功能,采用模块化硬件架构,并重点介绍了利用FIR滤波和Pan-Tompkins算法进行心电信号处理的核心技术。文章提供了完整的复刻指南与避坑要点,是学习医疗电子设备设计的优秀实践案例。

weixin_30600615的博客 327

matlab电机效率云图,如何用matlab绘制电机效率map图或发动机万有特性曲线.docx

如何用matlab绘制电机效率map图或发动机万有特性曲线前段时间写论文,需要绘制电机效率map图,其实和发动机万有特性曲线一样。。看了好多资料都不会,问问师兄也没具体画过。。困惑中查到貌似有几个软件可以画map图,由于我比较熟悉matlab,就选用它了,可是matlab也不知道咋画呀,我查看了matlab图形处理这一块,突然发现等高线图绘制,咦???这不就是高中地理学的吗???和map图万有特性...

weixin_30499067的博客 2136

企业级防火墙实战:用深信服AF8.0打造安全办公网络(含流控/僵尸防护配置)

本文详细介绍了如何利用深信服AF8.0防火墙构建企业级安全办公网络,涵盖设备初始化、多接入方式配置、三维一体安全防护体系(包括应用控制、僵尸防护和智能流控)以及典型问题排查。通过实战案例和配置模板,帮助IT管理员高效部署和优化网络安全管理,提升企业网络安全防护能力。

weixin_28716443的博客 279

随机森林模型及案例(Python)

1 集成模型简介 集成学习模型使用一系列弱学习器(也称为基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果。 集成学习模型的常见算法有Bagging算法和Boosting算法两种。 Bagging算法的典型机器学习模型为随机森林模型,而Boosting算法的典型机器学习模型则为AdaBoost、GBDT、XGBoost和LightGBM模型。 1.1 Bagging算法简介 Bagging算法的原理类似投票,每个弱学习器都有一票,最终根据所有弱学习器的投

qq_42433311的博客 4万+

直流电机 matlab,使用MATLAB和Arduino开发板进行直流电机控制

在本篇文章中,我们将主要介绍如何使用MATLB和Arduino开发板控制直流电机。如果您是初次使用MATLAB软件,建议您先学习如何使用MATLAB实现简单的LED闪烁。创建用于控制直流电机的MATLAB图形用户界面在设置Arduino开发板完成后,我们必须在MATLAB种构建GUI(图形用户界面)来控制直流电机。要启动GUI,请在命令窗口中输入以下命令guide复制代码然后弹出一个窗口,选择创建...

weixin_32626635的博客 886

SAP S/4HANA BP主数据-CVI模型

SAP BP主数据介绍 ECC系统中的客户、供应商主数据的限制: •一个客户或供应商仅能有一个地址 •客户和供应商没有关联关系(同一个实体公司) •如果一家公司既是供应商也是客户需建立两个主数据(数据冗余) •属性无时间相关性 S4系统中BP优点: •一个BP可以扮演多个角色(个人,客户,供应商)且角色之间数据共享 •时间相关的属性 •统一的数据架构,无数据冗余 •CVI模型可以确保BP和客户/供应商数据同步 SAP BP主数据配置 •配置BP角色/角色类别 •配置BP角.

qq_37785505的博客 1549

matlab画电机效率map图程序_基于动力性指标的纯电动汽车电机参数设计(3)

4 电动汽车加速指标设计对电动汽车驾驶指标的设计,需要建立动态模型,并求解微分方程。因在恒功率段微分方程无理论解,只有数值解法,因此需要做离散求解插值分析。而该微分方程与ADVISOR等仿真软件一样,是通过设定已知动力系统参数求出t-v动态关系。因此需要最优化工具作为设计辅助。4.1 动力系统微分方程将汽车作为研究质点,由牛顿第二定律得:式中,T是电机输出最大扭力,如图1中的修正加速性能...

weixin_39832628的博客 2843

pytorch多层感知机实现假钞识别(完整项目构建)

目录1 项目构建2 超参数设置 config.py3 数据集预处理 preprocess.py4 数据集类构建 dataset_banknote.py5 模型构建 model.py6 训练trainer.py6.1 查看损失曲线7 在测试集上运行 inference.py 1 项目构建 构建项目文件夹Banknote,以及子文件夹与py文件。 名称 作用 data目录 存放原始数据与预处理后切分为训练集、验证机、测试集的数据 log目录 存放训练过程中保存的指标,如损失、精确度等

Demon_LMMan的博客 2026

环境配置 |Jupyter lab/Jupyter Notebook 安装与设置

ipynb使用Jupyterlab/Jupyter Notebook 来编写程序时的文件,在使用时,可以现转换为标准的.py的python文件。

weixin_44649780的博客 5769

电机控制杂谈(23)——共模电压与轴电流

对于电机驱动系统,高频高幅值共模电压会在电机转轴上感应出高幅值轴电压: (1)产生轴电流,不仅造成电机出现额外的功率损耗,还会使电动机轴承因电腐蚀提前损坏,危害到电机运行的可靠性,甚至导致断轴故障。 (2)当驱动系统和电机相距较远,需要用电缆连接时,共模电压经电缆传输反射后进一步放大,对电机的危害加剧,引起电机绝缘的加速老化甚至被击穿。 (3)同时还会造成共模电磁干扰(CMEMI)。CMV幅值越高,频率越高,产生的dv/dt越大,造成的影响也就越大。 因此,降低CMV的幅度和频率至关重要。

m0_46903653的博客 4832

手把手教你学Simulink--基于Simulink的开关磁阻电机电流斩波控制仿真建模

特点:定子和转子均由普通硅钢片叠压而成,没有永磁体或绕组在转子上。工作原理:利用转子旋转时不同位置的磁阻变化产生转矩。控制挑战:由于SRM的高度非线性和磁饱和效应,需要复杂的控制算法来优化性能。利用Simscape Electrical中的模块构建SRM的物理模型,配置参数如电阻、电感等。matlab深色版本% 添加SRM电机模块根据实际需求调整电机参数。通过上述步骤,我们简要介绍了如何基于Simulink进行开关磁阻电机的电流斩波控制仿真建模。

MHD0815的博客 306

【亲测免费】 使用S-Function函数实现离散PID控制器

本资源文件提供了使用S-Function函数实现离散PID控制器,并建立Simulink仿真模型的详细教程和代码。通过本资源,您将学习如何在Simulink中使用S-Function模块来实现离散PID控制器,并进行仿真验证。 ## 内容概述 1. **S-Function基础**:介绍S-Function的基本概念和使用方法。 2. **离散PID控制器原理**:详细讲解离散PID控制器的工

gitblog_09714的博客 358

I2C通信——时序图

本文用逻辑分析仪抓取主机I2C通信的时序图,抓取的过程是读某个寄存器的值。

weixin_43772611的博客 7353

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

电机控制杂谈——“双采样双更新模式”对模型预测控制/PI控制的提升有多大?

那我现在的想法就是,把DSP的空闲时间给运用起来,提高系统的控制性能。 那怎样提高控制性能呢?往期以及讲了很多的软件算法(扩展状态观测器。。。)。今天就想从硬件的方面(充分利用硬件资源)去提升控制性能。 那我可以试试这个“双采双更”的模式。

m0_46903653的博客 6282

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

s-function的介绍

先占个坑,好督促自己认真学习,及时更新博客。

weixin_42736130的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MATLAB的S-Function的用法(C语言)及全局变量与局部变量效果

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 MATLAB 中S-function 编写及全局变量与局部变量列子 一、s-function 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pan...

weixin_44424783的博客 4043

Matlab S-function封装学习总结

最近学习S-function封装,以下为学习过程中的总结。

p77678的博客 5321

MATLAB S-function

为了实现通过S-function调用C代码 前期准备 官网-关于外部代码集成的一些方法 打开simulink,点击User-Defined Functions里面的S-Function Examples(MATLAB 2020b 在命令窗口输入也可以打开) 有examples可以参考,但是这边的样例是要将C代码按模板写入,不是我想要的外部代码集成 B站一个教学视频,可以大概了解一下如何在MATLAB里操作S-function ...

qq_45109982的博客 2068

matlab 怎么使用function,matlab的s-function使用及举例

S-FUNCTIONS的书写之一s-function也就是system-function的缩写。说得简单,s-function就是用MATLAB所提供的模型不能完全满足用户,而提供给用户自己编写程序来满足自己要求模型的接口。要了解s-function,必须了解以下知识:(1)direct feedthrough(2)dynamically sized inputs(3)setting sample...

weixin_39616477的博客 1514
上一篇: 电机控制(3)永磁同步电机PMSM的控制
下一篇: 记录并联电源的坑!
求你早点睡吧
博客等级 码龄7年 131粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值