串口软件Vofa+,超好用。可用于高速采集数据直观化显示动态

(上一次写的不够完整,有好多人还会遇到问题,我再回来完善下)

使用背景:

在调试无感的无刷直流电机的应用中,需要高速采集3路驱动电压,用于检测反电动势的“过零点”。

(其实后来接触控制领域,发觉高速采样模拟信 是非常常见的事情,动辄10k、100k的采样率——2021/06/02)

【因为无刷电机一般转速都比较高。比如每分钟12万转,即2000转/S。而如果无刷电机1个机器周期有3个电气周期,则转速相当于有6000转/S。采样率按信 的十倍算,所以采样率得60k,即采样16.7uS采集一次。而我一次采集3个路,一路数据1Byte(我使用8Bit,没有用10bit、12bit,因为考虑到数据量的问题),即数据量为:60k*3*8=1080000bit,超过了1M/S】

我需要把以上那么多的数据通过数据协议发出来,并且实时直观的显示,这样能查看验证采集到的数据是什么情况,通过什么方法来进行算法处理,就像这样

所算需要传输速度快,而且是大约每16.7uS发送一次,一次发3个byte的有效数据。找了些工具:J-Link Scope/ STM Studio/ SerialChart.exe,但是都由于速度不够不能使用。

最终在群友的帮助下,找到了“Vofa+”这个串口软件。

软件说明:

Vofa支持3种数据流方式:分别为:RawData、firewater、justfloat。

RawData:协议适用于不需要解析数据,仅仅查看字节流的需求。【可以直接当串口助手使用

意思是发什么,显示什么,可以字符串显示,可以Hex显示,就跟一般常见的下面图片这个一样

firewater:本协议是CSV风格的字符串流,直观简洁,编程像printf简单。但由于字符串解析消耗更多的运算资源(无论在上位机还是下位机),建议仅在通道数量不多、发送频率不高的时候使用。

justfloat:本协议是小端浮点数组形式的字节流协议,纯十六进制浮点传输,节省带宽。此协议非常适合用在通道数量多、发送频率高的时候。

使用情况:

我使用以上说的第三种数据格式:justfloat。根据上位机所需要的协议,数据格式为:浮点数,浮点数……End(32bit)。比如说仅让上位机显示一个点,数值为1,那么以内存中存放的数据看起来就是发送:“0x3F80 0000,0x7f80 0000”。以上0x7f80 0000为协议固定需要的尾。

我需要发送3个数据,所以我的数据格式为:float Chan1,float Chan2,float Chan3,uint32_t End。Chan1,Chan2,Chan3分别是我要发的3个数据(把定点数需要转为浮点数),End为协议所需要的尾。这样把我的3个8Bit数据,通过4个32Bit数据传输到PC上位机。

软件代码编写:通过如下把代码实现传输

而由于把8Bit加载在32Bit数据进行传输,导致数据量变大4倍。所以我设计的16.7uS采集发送一次带宽不够。

最终我调试串口波特率为:3Mbps,每60uS发送一次数据。

我所使用的USB转串口为FT232芯片,最高支持3M波特率。

效果显示:

在 站:VOFA+ | VOFA+进行下载软件(可下载免安装的),并进行设置。

以下是我设置后显示的波形。发送数据周期为60uS,相当于是:16.6k的速度。

回答:我给个提议:1、先使用RawData格式,查看是否收到了数据;2、检查收到数据是否符合协议格式(最后一个结尾的数据是固定的);3、查看自己是否按照我上面图片设置了显示波形。

问题2:怎么增加波形数/p>

回答:先把一个波形能显示了之后,发送数据的时候多发一个浮点数数据,再加End。比如说一个波形的数据为:float,end;2个波形的数据就为:float,float,end。

在下一篇文章中,介绍使用VOFA+调试PID算法

以上完结。

本人新建了个QQ群,如想进一步沟通可添加:947187213。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年2月1日
下一篇 2021年2月1日

相关推荐