Matlab App Designer制作一个UART的GUI总结

文章讲述了在使用MatlabAppDesigner创建上位机读取电机控制数据时遇到的串口读取速度慢和Axes组件响应慢的问题。作者通过测试发现,15ms才能读取一次12字节数据,导致数据丢失,而增加Axes组件会严重影响波形刷新频率。尽管更换更高级别的Matlab版本和电脑配置有所改善,但整体性能仍不满足高实时性需求。
摘要由CSDN通过智能技术生成

目录

前言

 读取串口数据速度慢

 Axes响应慢

总结


前言

最近尝试了一下用Matlab App Designer制作一个上位机通信软件,专门用于读取电机控制里面的相电流,角度等高实时性的数据,已经在VOFA+里面实现了。STM32 VOFA+串口调试助手提升电机控制调试效率(下位机代码和上位机操作演示)_stm32的串口使用什么软件调试_卡洛斯伊的博客-CSDN博客

但是想要尝试制作一个基于Matlab App Designer的,这里分享记录一下过程和遇到的坑。先上效果图,如下。还没有完全制作完成,相电流 ,母线电压,速度的读取实现了,只是这个实时性是真的一言难尽,下面总结一下。(分别尝试了Matlab2020b和2023a)

 读取串口数据速度慢

代码如下,MCU一次上传12个byte的数据,之前是22个数据,用时0.015s。这边的代码执行时间是通过cputime读取到的,通过两次读取时间相减算出计算时间。也就是说15ms才能读取一次,我发送一次的时间1ms都不到,表现出效果就是很多数据丢了。刚刚开始以为是代码的问题,后来查来查去发现是读取时间太慢造成的,目前没有找到解决方法。

                      t1=cputime;
                      data = read(app.setupCOM,12,'uint8');%读取12个字节数据
                      flush(app.setupCOM);
                     %data2= readline(app.setupCOM);
                      t2=cputime;
                      t=t2-t1;

表现的效果就是:

 数据不连续

 对比下Labview, 发送周期1khz,波形失真严重。下位机的发送周期是一样的。

 再后来尝试换了台式的机子,也换Matlab2023a. 同样失真严重。串口读取数据的函数执行太慢了!!!(也有可能是方法的问题,但是目前还没解决)

Axes响应慢

这个的表现就离谱,Axes就是 App Designer的显示波形的组件,就下面这三个,Axes添加得越多,波形的刷新频率就越慢,一个还能看,虽然失真,同时上三个直接卡成PPT,比PPT还慢,可能几分钟才会刷出波形,也有可能刷不出来(2020b版本)

波形表现如下:

 

 一段时间全损

 一段时间勉强能看

 后来换成台式+Matlab2023a, 能正常显示,明显的感觉好了很多,但是流畅度和失真也是一言难尽啊。减少显示的点数也不行,多放几个Axes就卡。Mathworks论坛上有兄弟也是遇到同样的问题了。

 

最后来感受了一下这卡卡的感觉(台式机+Matlab2023a):

 

用Matlab App Designer制作的串口通信可显示

总结

通过一个UART的GUI的实际操作,发现Matlab的App Designer还有不少的优化空间,不排除是我代码的问题,但是整个工作的代码量也就300行左右,这个流畅度实在是拉跨。如果只是用来做一些实时性不高的通信还是可以勉强用一下的,如果是用来做像VOFA+这样类似的工具,性能上还差些火候。由于2023a是装在台式上,2020b是装在笔记本上。同样的代码在2023a上表现出来比在2020b上表现好太多。这里可能是2023a相较2020b有优化。也可能是电脑配置更高的原因。反正不管怎么样,速度都不尽如人意。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡洛斯伊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值