在simulink中使用串口模块接收数据并解帧延迟性问题解决

2023-05-16

山重水复疑无路,柳暗花明又一村。

最近在simulink中搭了一个模型,需要通过串口将外部惯导模块的数据读进来,解帧后输入模型中进行计算,算是半物理仿真。
起初烦恼于不知道如何将这种实时更新的数据实时解算并输出,在请大佬帮忙后,解算的问题解决了,但又遇到了解帧数据更新缓慢,延迟性大的问题。中间因为项目进度缓慢,被老板训斥了一顿。好在经过不断尝试,终于解决了解算数据更新延迟的问题。

一、起初接收解算串口数据的思路
刚开始我甚至不知道simulink模块有串口接收模块,试图通过在simulink中写matlab function调用Serial函数的方式实现串口数据的接收与解算,事实证明是行不通的。
后来查到,simulink中原来有专门的串口模块,晕,早知道就不费那么大周折了,然后在大佬的指导下搭建了下面的模型。

串口数据接收并解帧模型
其思路是:从串口每次一个读取数据,根据我的传感器的串口通信协议,每11个数据为一帧,所以加一个buffer模块,相当于将连续发送的串口数据分割为一帧一帧(每帧11个数据),到状态机中根据帧头判断是什么数据(加速度/角速度)后解帧,我在后边加了scope用来查看输出的数据。

二、遇到的问题
经过实验,数据的准确性上没有问题,但实现不了实时更新,而且随着仿真时间的增长,数据更新延迟越来越严重,从起初的2s,逐渐增加到5,10,15,30…这样还做个毛线的半物理仿真,就失去串口通信的意义了。
然后就是苦思冥想,问题到底出在哪?
起初是觉得状态机的问题,或许是解算耗时,从而延缓了数据的更新,解算程序没法改啊,改了设置又好像没用。
或许是仿真设置的问题?改成定步长或许会快一些?也没用。
又或者是电脑性能的问题?又研究了下Matlab的多核并行计算,也还是没有起色。
没有师兄的孩子就是这么苦逼,没人带问了几个同学也都说没搞过,去论坛发帖也没人回。眼看时间一天天过去了,啊迟迟没有进度,我都有点怀疑自己了,不过没有放弃尝试。

三、尝试解决
终于,在我删去buffer模块,并直接在串口更改Data size为[11 1]后,实时性的问题终于得到解决。
更改Serial Receive 设置
修改后的模型
现在我终于可以丝滑而且几乎无延时的看到数据更新了!
解算后实时更新的数据

四、反思与总结

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在simulink中使用串口模块接收数据并解帧延迟性问题解决 的相关文章

  • 基于simulink的svm-dtc-adrc控制建模与仿真

    目录 一 理论基础 二 核心程序 三 仿真结论 一 理论基础 永磁电机由于没有励磁绕组和励磁装置 xff0c 不消耗励磁功率 xff0c 对磁极设在转子的电机 如一般同步电机 还可省去滑环和电刷 随着永磁材料和控制技术的发展 xff0c 永
  • Simulink建模:PID控制-串级PID

    本文研究串级PID控制的概念 应用场景以及Simulink模型实现 文章目录 1 问题引入2 串级PID控制3 Simulink建模3 1 建模前的理解3 2 建模过程3 3 代码生成 4 总结 1 问题引入 在之前的博客 Simulink
  • simulink bus总线创建方法

    在simulink中创建bus总线 xff0c 主要包含2种方法 xff1a 基于模块创建总线对象 使用模块 xff0c 根据输入信号创建总线 基于 MATLAB 数据创建总线对象 可以使用 Simulink Bus cellToObjec
  • 使用Simulink进行无刷直流电机控制仿真

    这段时间刚开始接触Matlab中的Simulink仿真 xff0c 我就结合自己的专业 xff0c 利用Simulink进行了无刷直流电机的仿真 xff0c 因为Simulink工具箱里面有很多可用的模块 xff0c 所以建模过程变得非常简
  • 1708_Simulink中取数组元素

    全部学习汇总 xff1a GitHub GreyZhang g matlab MATLAB once used to be my daily tool After many years when I go back and read my
  • 在simulink中使用串口模块接收数据并解帧延迟性问题解决

    山重水复疑无路 xff0c 柳暗花明又一村 最近在simulink中搭了一个模型 xff0c 需要通过串口将外部惯导模块的数据读进来 xff0c 解帧后输入模型中进行计算 xff0c 算是半物理仿真 起初烦恼于不知道如何将这种实时更新的数据
  • Simulink中的Simscape

    Simscape是在Simulink环境下创建物理系统模型的工具和语言 8 它可以通过基于Matlab语法的Simscape语法来制作自己的物理仿真系统 如果使用Simscape中现有的基础库 xff08 Foundation Librar
  • 大功率光伏应用不同多电平变换器拓扑的比较研究(Simulink)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Simulink实现 1 概述 文献来源 摘要 本文研究了多电平变换器的现
  • Boost电压闭环控制及其仿真(PI控制)

    这是自己本科做的一项综合设计作业 自动控制理论的 课程作业题目是 DC DC升压变换单电压环控制器设计 我查了不少资料 硕士论文 文献等 断断续续地花了1个半月解决的 当时老师手中有两个作业 一个是Boost单电压闭环控制仿真 另外一个是B
  • 基于相干解调法和基于相位比较法的2DPSK数字通信系统 MATLAB Simulink仿真

    1 课程设计目的 通过课程设计 巩固已经学过的通信原理课程中有关数字调制系统的知识 加深对相关知识的理解和应用 学会应用Matlab Simulink工具对通信系统进行仿真和调试 设计与实现的过程中充分利用图书馆和网络资源 提高发现问题和自
  • Matlab Simulink 常用快捷操作和功能(1)

    1 快速查找library里面的模块 双击左键 然后输入要查询的模块名称 gt 2 block 和 signal 的命名修改 单击block 显示 修改名字 3 Simulink支持从块参数对话框中创建变量 可以在Simulink中创建MA
  • 同步电机模型的SIMULINK仿真

    2 2 坐标变换 坐标变换的目的是简化原有电机模型非线性和多变量等困难 它的基本思路是在保证变换前后的磁动势等效即维持功率不变的情况下 用一组新的方程组来取代原方程组 用一套新的变量来代替原方程组里的旧变量 实现减少变量和简化模型的目的 基
  • 【SIMULINK】基于DQ0模型的三相异步电机自制仿真模型教程

    SIMULINK 基于DQ0模型的三相异步电机自制仿真模型 其实 打开simscape自带的异步电机模型 里面也是基于DQ0的 电机的模型定子电压作为输入 定子电流是输出 内部结构 omega 1 是DQ坐标系的转速 为0时退化为 alph
  • 感应(异步)电机磁场定向控制MATLAB/Simulink建模

    电机控制系列文章 感应 异步 电机磁场定向控制电流环PI控制参数设计 感应 异步 电机磁场定向控制速度环PI控制参数设计 目录 电机控制系列文章 前言 一 控制器与被控对象的采样周期 二 系统解算器设置 三 被控对象建模 四 控制器建模 1
  • simulink半桥逆变电路仿真

    逆变是将直流变为脉冲方波信号 电压是100V的 第一幅为原始直流信号 第二幅是逆变电流 第三幅是逆变电压 参数设置 图3 RC1 图4 RC 图5 晶闸管 图6 脉冲信号的参数
  • 2021-02-28

    simulink控制器封装库 控制器封装库 一 封装库的安装和LADRC模块的使用
  • Matlab如何进行利用离散傅里叶变换DFT (快速傅里叶变换FFT)进行频谱分析

    文章目录 1 定义 2 变换和处理 3 函数 4 实例演示 例1 单频正弦信号 整数周期采样 例2 单频正弦信号 非整数周期采样 例3 含有直流分量的单频正弦信号 例4 正弦复合信号 例5 含有随机干扰的正弦信号 例6 实际案例 5 拓展
  • simulink仿真 adc 采样ePWM输出例程

    新建文件夹并用matlab打开 写入这两个模块 配置 ADC 配置ePWM 不使能B 关了就行 其他的默认即可 配置烧录 连线 示波器接pwma1 和地 adc chanl1接 3 3v或者 0 3 3 都行 转化是 x 3 3 2 12
  • VSC/SMC(十六)——自适应鲁棒滑模控制

    目录 1 参数不定和扰动不定但有界的系统 2 滑模控制自适应律设计 2 1控制律设计总结 3 仿真分析 3 1 PD控制 3 2普通自适应律 3 3映射自适应律 3 4总结 4学习问题 1 参数不定和扰动不定但有界的系统 其中 2 滑模控制
  • 串行块不适用于 simulink 编码器

    我使用从串行端口接收一些数据信号Serial Receive块 当然还有串行配置块 我用它来移动视频中的标记 它在模拟期间工作 但是当我使用生成 exe 文件时Simulink Coder执行期间标记不会移动 看起来它没有从串行接收数据 E

随机推荐