目录
前言
读取串口数据速度慢
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有优化。也可能是电脑配置更高的原因。反正不管怎么样,速度都不尽如人意。