如何在匿名上位机中显示自定义数据波形

匿名上位机相信很多人都用过,以前在调飞控的时候使用过,可以很直观的显示数据的波形,比如飞机姿态等。
最近在调试foc。很多数据在调试过程中,仅仅使用串口打印出来显示是很不直观的,比如正弦波,经典的马鞍波等。今天研究了一下将数据通过串口发送给匿名上位机,然后在上位机中显示自定义数据波形。
首先看下马鞍波的波形
在这里插入图片描述
是不是特别直观,这个马鞍波也是foc在运行过程中,三相驱动定时器的CCR值。
环境:
匿名上位机使用版本:V4.34 提货窗口 提货码:6ezj
单片机串口:STM32的VCP,即USB虚拟串口

协议的认识

首先需要了解的是,所使用的匿名上位机版本对应的通信协议。不同版本的协议有差别,有的还挺大。例如我使用的这个版本,找到通信协议说明部分,具体打开如下图
在这里插入图片描述
点开后是一个excel表格,里面写了各种协议,包括官方定义好的标准协议,以及自定义的协议。如下
在这里插入图片描述
图中将官方定义的功能协议略去,仅显示了用户传输自定义数据部分的协议。可见,用户自定义的数据格式应该是
帧头(AAAA) 功能码(Fx) 传输数据长度(这个数据长度有说明,仅仅是用户数据部分,不包含帧头功能码这些) 用户数据(即用户自定义的数据部分) 校验(校验和,这个是将前面从帧头开始所有的数据累加,然后取低8位)。
举例说明:
我要传输的是三相的驱动定时器的CCR值,那么发送一帧数据的就应该是
0xAA 0xAA 0xF1 0x06 0xCCR1_H 0xCCR1_L 0xCCR2_H 0xCCR2_L 0xCCR3_H 0xCCR3_L 0xSUM
知道了上位机解析的协议,然后就是在代码中将发送数据按照这个格式发送就可以了。参考如下

代码实现协议

#include "send.h"
#include "usbd_cdc_if.h"
#include "sys.h"

//数据拆分宏定义,在发送大于1字节的数据类型时,比如int16、float等,需要把数据拆分成单独字节进行发送
#define BYTE0(dwTemp)     (*(char*)(&dwTemp))
#define BYTE1(dwTemp)     (*((char*)(&dwTemp) + 1))
#define BYTE2(dwTemp)     (*((char*)(&dwTemp) + 2))
#define BYTE3(dwTemp)     (*((char*)(&dwTemp) + 3))

extern uint8_t UserTxBufferFS[APP_TX_DATA_SIZE];

void SendWave(int16_t a, int16_t b, int16_t c)
{
    uint8_t cnt = 0;
    
    UserTxBufferFS[cnt++] = 0xAA;
    UserTxBufferFS[cnt++] = 0xAA;
    UserTxBufferFS[cnt++] = 0xF1;
    UserTxBufferFS[cnt++] = 6;
    
    
    UserTxBufferFS[cnt++] = BYTE1(a);
    UserTxBufferFS[cnt++] = BYTE0(a);    
    UserTxBufferFS[cnt++] = BYTE1(b);
    UserTxBufferFS[cnt++] = BYTE0(b);
    UserTxBufferFS[cnt++] = BYTE1(c);
    UserTxBufferFS[cnt++] = BYTE0(c);
    
	unsigned char sum = 0;
	unsigned char i = 0;
		for(i=0;i<cnt;i++)
			sum += UserTxBufferFS[i];
		UserTxBufferFS[cnt++] = sum;  
    CDC_Transmit_FS(UserTxBufferFS, cnt);
}

如上代码所示,这里就可以将需要上传的数据发送到匿名上位机中了。需要关注的是,代码中是用虚拟串口实现的,以后有机会再说吧。

上位机配置

在这里插入图片描述
选中高级收码,然后在帧格式设置这里,勾选使能该帧,同时我们可以看到这里的帧头就是AAAA,功能码就是F1,这里就对应上了。这里设置的意思就是将接收帧设置到和我们发送帧格式对应,这里主要是对应的功能码。
如果帧格式设置这里选择2,那么你会看到这里的功能码是F2,那么这个就是另一个数据帧了。
在这里插入图片描述
然后是数据容器设置这里
在这里插入图片描述
下面的数据来源表示帧1中的数据,是用来保存数据帧1中传过来的数据,也就是上面配置的帧格式设置那里功能码为F1的数据帧里面包含的数据;
数据容器设置和数据位置是对应着设置的。比如说现在已经选中了数据来源是帧1,然后数据容器设置选中1,这个数据容器就是说用户自定义的数据要存放的地方,但是一个容器只能存一个用户数据,我们传过来的数据一共有三个,即上面的CCR1,CCR2,CCR3。具体存哪个呢?这个就是由下面的数据位置决定的,比如勾选1,那么就表示将CCR1保存在数据容器1中,如果勾选2,那么就表示将CCR2保存在数据容器1中;因为一共有三个数据要保存,所以我们要选择3个数据容器。即最终对应的应该是:数据容器设置1,数据位置对应1;数据容器设置2,数据位置对应2;数据容器设置3,数据位置对应3;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这里高级收码部分设置就完成了,别忘了保存设置。

数据波形显示

在这里插入图片描述

按照图中的四步设置这里的数据波形,因为原来的软件默认显示都是飞控的数据,这里需要切换到自定义数据波形。如果你事先已经设置好了串口,并且已经连接,那么这里将会正常显示波形了。

串口设置

在这里插入图片描述
使用USB虚拟串口是不需要设置这里的波特率的,这个传输速度可比普通串口快多了。

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 我可以回答这个问题。匿名上位机波形显示 PID 是一种常见的控制算法,用于控制系统的稳定性和精度。PID 控制器可以根据系统的反馈信号来调整控制输出,以达到期望的控制效果。在匿名上位机,可以通过波形显示来观察 PID 控制器的输出和系统的反馈信号,以便进行调试和优化。 ### 回答2: 匿名上位机波形显示PID(比例-积分-微分)控制器是一种常用于工业自动化系统的控制算法。它是通过分析被控对象的反馈信号来实现精确控制的一种方法。 匿名上位机是一种通信工具,可以通过串口或者网络接口与被控对象进行通信,并对其进行监控和控制。波形显示匿名上位机的一项功能,它可以实时绘制被控对象的输入输出信号的波形图,并通过图像直观地展示出这些信号的特征。 PID控制器是一种经典的控制算法,其通过不断调节被控对象的输出信号,使其与期望的输入信号保持一致。PID控制器包括三个参数:比例、积分和微分。比例参数的调整会影响响应速度和稳定性,积分参数的调整会影响系统的稳态误差,微分参数的调整会影响系统的抗干扰能力。 匿名上位机波形显示PID可以帮助工程师实时监测被控对象的输入输出信号,以及PID控制器的调节效果。通过观察波形图,可以直观地了解系统的动态特性,判断是否存在超调、振荡等问题,并及时调整PID参数以实现更好的控制效果。 在匿名上位机,通过设置参数,选择要显示的信号,并将其连续采样并绘制成波形图。这些波形图可以用来评估系统的性能,并且可以与期望的输入信号进行比较,以评估控制器的准确性和稳定性。 总之,匿名上位机波形显示PID是一种非常实用的工具,它可以帮助工程师更好地理解和优化控制系统,提高系统的稳定性和性能。 ### 回答3: 匿名上位机波形显示PID,其实是一种通过匿名上位机软件实现的PID控制系统的可视化展示方式。传统的PID控制系统在运行过程,往往仅能通过数字或者文本方式显示控制结果和参数调整情况,缺乏直观的图形化展示。而通过匿名上位机波形显示PID,可以将控制结果以波形的形式实时展示出来,便于用户直观了解系统的运行情况和控制效果。 匿名上位机软件是一种常用的开源软件,它可以通过串口或者网络连接与控制系统进行通信,实时接收和发送数据。在PID控制系统,通过匿名上位机软件,可以将系统的输出信号、目标信号、误差信号等数据采集并送给上位机进行处理。上位机根据接收到的数据,可以绘制出相关的波形图,如输出信号、目标信号和误差信号随时间变化的波形图等。 通过匿名上位机波形显示PID,用户可以直观地观察到控制系统的工作状态,判断系统是否正常运行。同时,用户还可以通过对波形的观察,判断控制参数的调整效果,并进行相应的优化和改进。通过波形图的展示,可以更加直观地观察和分析PID控制的稳定性、精确度和响应速度等性能指标,从而提高系统的控制质量和性能。 总之,匿名上位机波形显示PID为用户提供了一种直观、可视化的PID控制系统展示方式,方便用户实时观察和分析系统的运行状态和控制效果,提高控制系统的性能和稳定性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值