当前位置: 首页 > news >正文

【Servo】信号激励;激励数据、采集数据、跟踪数据

硬件/嵌入式系统中的“信号激励 的概念


一、什么是信号激励(Signal Excitation/Signal Stimulus)?

信号激励,又叫信号刺激、信号输入激励,在硬件/电路/信号测试领域,指的是:

人为给被测系统/被测对象注入特定的输入信号,来“激发”系统的响应。

  • 这些信号可以是正弦波、方波、阶跃、随机噪声、斜坡、定值脉冲、复杂任意波形等。
  • 信号激励一般由“信号源”“函数发生器”“MCU DAC/存储器”产生,注入被测系统。
  • 被测系统在接受激励后,会有对应的响应信号输出(比如电压、电流、速度、转矩等)。
  • “激励”用于测试、校准、调试、仿真、验证等目的。

举例:

  • 给电机控制器注入正弦信号激励,观测电机速度的频响特性。
  • 给ADC输入一段阶跃信号激励,看采集通道能否正常采样并响应。
  • 给伺服系统加载“自定义波形”信号激励,用于算法性能测试。

二、个别场景下的“信号激励”具体理解

“原跟踪数据区域可用于临时放置信号激励”。

  • 原来 MCU/硬件的4000H~ ~7FFFH RAM区存放采样数据,现在扩展到4000H~~9FFFH,可以多存一点数据。
  • 这段RAM(内存区域)用来临时存放“信号激励”数据——也就是要注入到系统里的预设波形
  • “每个通道激励数据8192字节”= 一路激励信号能预存8192字节数据,可以支持6通道激励(总计6*8192字节)。
  • 通过这个区域,系统可以在不同测试时刻,将激励信号通过DAC/数字总线/脉冲等形式输出到外部。

三、工程实际用途

  • 软件工程师可以用上位机生成各种激励数据,下发到硬件指定RAM区域。
  • MCU读取RAM,把这些“激励波形”输出到外部回路或自身信号处理模块。
  • 可以实现“任意激励”“自定义波形”“多通道同步激励”等功能,方便测试各种响应。

小结

  • 信号激励=人为施加到系统/通道/设备的“输入信号”,用来测试其响应或性能。
  • 你的硬件支持“把激励数据临时放到某个RAM区域”,一旦需要可以“六路同时输出激励”。
  • 这样能方便多通道同步测试、系统辨识、算法验证等应用。

如何用代码生成激励波形并下发?

用代码生成激励波形并下发 :


1. 上位机生成激励波形(以C#为例)

常见激励波形包括:正弦波、方波、三角波、阶跃、随机噪声等。可以先用 C# 代码生成一组波形数据,然后打包下发到下位机。

【举例】生成一个 1kHz 正弦波激励

// 参数设置
int sampleCount = 8192;      // 激励点数(和MCU一帧长度一致)
double sampleRate = 10000.0; // 采样率10kHz
double freq = 1000.0;        // 1kHz激励
double amplitude = 2000;     // 幅值// 生成激励波形数组
short[] exciteData = new short[sampleCount];
for (int i = 0; i < sampleCount; i++)
{double t = i / sampleRate;exciteData[i] = (short)(amplitude * Math.Sin(2 * Math.PI * freq * t));
}
  • 对于“多通道激励”,可以为每个通道分别生成不同波形的数组。

2. 波形数据下发协议打包

一般需要把激励数据通过串口、USB、CAN等协议打包下发到下位机RAM指定区域(比如0x4000起始地址)。

典型步骤

  • 构造“写数据命令帧”:指定“起始地址/通道编号/数据长度/数据内容/CRC校验”。
  • 按协议一帧帧分包发送(一般一帧不超过512或1024字节)。

【举例】构造数据包

假如你要把通道1的8192字节激励数据,下发到0x4000地址:

// 将short[]转换为byte[]
byte[] sendBuffer = new byte[sampleCount * 2];
Buffer.BlockCopy(exciteData, 0, sendBuffer, 0, sendBuffer.Length);// 构造协议帧(需参考你们实际下位机通信协议文档)
List<byte> frame = new List<byte>();
frame.Add(0x22);   // 帧头
frame.Add(0x01); // 写激励数据命令
frame.Add(0x01); // 通道编号
frame.AddRange(BitConverter.GetBytes(0x4000)); // 写入起始地址
frame.AddRange(BitConverter.GetBytes(sampleCount * 2)); // 数据长度
frame.AddRange(sendBuffer); // 波形内容
frame.Add(0xXX); // CRC校验,最后一位,实际需补上// 通过USB/串口发送到下位机
yourSerialPort.Write(frame.ToArray(), 0, frame.Count);

3. 下位机接收后写入RAM

下位机解析命令帧,把激励数据写入指定 RAM 区域(比如0x4000~0x5FFF),待用。

  • MCU可根据收到的命令,定时/定序“输出激励”到DA通道、PWM输出、数字IO等。

4. 激励使用与同步

一旦激励波形数据下发完成,可手动/自动下达“激励使能”指令,MCU就开始按照存储区的数据“输出激励”,上位机可以同步采集实际响应数据。


总结流程图(伪代码简图)

上位机 MCU 生成激励数据数组 按协议打包 下发激励波形帧 解析协议、写RAM 发“激励使能”命令 读取RAM数据,输出激励波形 采集响应数据上传 上位机 MCU

ps

  • 激励数据类型要和下位机寄存器格式一致(如short/uint16/float),注意大小端。
  • 一般“下发激励数据”建议分包传输,每包带有起始地址和数据长度,便于恢复。
  • 激励数据建议配合CRC等校验,确保数据准确。
  • 激励过程通常和“采集响应”同步进行,便于系统辨识/控制算法测试。

MCU/DSP怎样把激励波形“播”出来?

MCU/DSP“播激励”波形的核心原理与常用方式


1. 原理:什么叫“把激励波形播出来”?

简单说:

  • **“激励波形”**就是你提前准备好的一段离散采样值序列(比如正弦/方波/阶跃/自定义信号)。
  • MCU/DSP要定时把这些数据输出到硬件端口(比如DAC、PWM、数字IO等),让外部被控对象感受到预期的信号变化。

2. 典型实现流程

以“单片机/数字信号处理器”定时输出激励波形到DAC为例:

步骤一:激励波形入RAM

上位机通过USB/串口把激励波形点(数组)下载到MCU的RAM,比如0x4000~0x9FFF。

步骤二:定时器定时“播放”

  • 设置一个定时器中断,比如1ms一次(采样周期=1ms,采样率=1kHz)。
  • 在每次中断时,从激励数组读取一个值,送到DAC(或PWM寄存器)。

步骤三:循环输出

  • 输出一个点,激励指针+1。
  • 播到最后一个点,可以停止/循环,或者等上位机下次下发新波形。

3. 伪代码示例

以C语言为例,说明MCU里如何“播激励”:

#define EXCITE_LEN 8192
uint16_t exciteBuffer[EXCITE_LEN]; // 激励数组
uint16_t exciteIndex = 0;
uint8_t isExciteOn = 0;// 伪代码: 定时中断服务函数(采样周期=Ts)
void TIMx_IRQHandler()
{if (isExciteOn && exciteIndex < EXCITE_LEN){DAC_Output(exciteBuffer[exciteIndex]); // 输出到DA口exciteIndex++;}else{// 输出结束,可选:循环或停止isExciteOn = 0;exciteIndex = 0;}
}
  • DAC_Output() 是将激励点输出到DAC外设(或者填到PWM寄存器)。
  • isExciteOn 由上位机发送“激励使能”命令置位。
  • exciteIndex 用来顺序读激励数组。

如果是多通道激励

可以定义多组buffer,每个定时中断分通道更新。


4. 输出通道方式

  • DAC输出(最常见):模拟信号,直接驱动外部。
  • PWM输出:对于不能用DAC的芯片,可用高分辨率PWM模拟模拟信号(再低通滤波)。
  • 数字IO:输出方波等离散波形。

5. 关键注意点

  • 定时器中断必须精准,否则输出波形会有抖动。
  • 波形点数和采样周期决定了波形周期/频率。
  • 数据精度要和外设匹配(8位/12位/16位DAC)。
  • 下位机需要提供启动/停止激励的命令,通常不能随便播。
  • 激励和采集可同步(比如激励和采集共用同一个时钟)。

流程图(简易)

上位机下发激励波形到RAM
MCU收到使能命令
定时器中断触发
MCU从RAM取波形点
写入DAC寄存器
激励输出到外部

小结

MCU/DSP“播激励”= 定时器触发+RAM波形点+外设输出(DAC/PWM/IO)

应用场景:

  • 运动控制系统的跟踪性能测试
  • 伺服系统辨识/参数辨识
  • 信号发生器
  • 硬件在环仿真

激励数据、采集数据、跟踪数据

这个问题非常好,也是自动化、运动控制、信号处理领域的常见疑惑。激励数据采集数据跟踪数据的区别如下:


1. 激励数据(Excitation/Stimulus Data)

定义:
激励数据是主动生成并下发给被测对象(比如电机、控制器、系统)的输入信号。它可以是正弦、方波、阶跃、白噪声、任意自定义序列等。

本质:

  • 激励数据是“让系统动起来”的“输入”,一般通过DAC/PWM/IO由下位机“播放”出来,给硬件端用。
  • 一般来源于上位机生成→下载到下位机RAM→定时输出
  • 用来“考验”或“辨识”系统,或测试跟踪能力。

例子:

  • 给伺服驱动器下发一个正弦波速度指令,测试其跟踪响应。
  • 控制系统辨识时下发一个PRBS随机信号,观测系统响应。

2. 采集数据(Acquisition/Measurement Data)

定义:
采集数据是从系统或被控对象获取的传感器测量值或反馈信号,比如编码器位置、电流、电压、速度、力矩等。

本质:

  • 输出端的实际物理量数据,通过ADC、传感器等采集后,存到内存,再传给上位机。
  • 反映了系统的真实运行状态。

例子:

  • 电机位置环反馈的实际编码器值。
  • 测速电机的电压信号经过ADC采样后的数据。
  • 采集到的温度、电流等。

3. 跟踪数据(Tracking Data)

定义:
跟踪数据一般指用来“比较”或“评估系统跟踪性能”的一组数据,常指“参考输入”和“实际输出”的对应数据序列。

本质:

  • 在测试“跟踪性能”时,记录下激励(目标/参考)和采集(实际)数据,方便对比误差。
  • 跟踪数据=激励数据+采集数据的“配对”。

例子:

  • 目标位置(激励/指令) vs 实际位置(采集反馈)。
  • 速度指令(激励/参考轨迹) vs 实际速度(采集/反馈)。
  • 界面上看到的“叠加两条曲线”,就是跟踪数据在发挥作用。

4. 三者关系对比图

激励数据采集数据跟踪数据
方向主动下发(输入)被动获取(输出)对比、配对(分析)
作用让系统动起来反映系统状态评估跟踪效果/误差
生成方式上位机/下位机产生传感器/ADC采集来自激励和采集的“组合”
典型场景轨迹跟踪、系统辨识状态监测、数据分析性能评估、误差分析

举例说明

假如你要测试一个伺服驱动器的位置控制:

  • 激励数据:你提前准备一段正弦轨迹,通过下位机输出给电机的速度/位置指令。
  • 采集数据:你实时采集电机的实际位置反馈信号。
  • 跟踪数据:把“激励轨迹”(参考输入)和“实际反馈”(输出)一对一比对,画到同一图里,分析它们的误差,这部分就是“跟踪数据”。

图示

上位机 下位机 被测系统 下发激励数据(正弦轨迹) 输出激励数据(DA/PWM) 实际响应(传感器/ADC) 采集数据上传 跟踪数据对比与误差分析 上位机 下位机 被测系统

小结

  • 激励数据=主动输入;采集数据=被动输出;跟踪数据=二者对比、误差评估。
  • 三者协同,支撑系统辨识、跟踪性能测试、自动化测试等功能。
http://www.xdnf.cn/news/905941.html

相关文章:

  • 我爱学算法之—— 前缀和(中)
  • 进程的详解,命令行参数,程序的地址空间(Linux)
  • 学习日记-day23-6.6
  • C++11异常特性
  • 如何计算光伏工程造价预算表?
  • YUM仓库编译出现`conflicting requests`问题解决方案
  • [Java恶补day17] 41. 缺失的第一个正数
  • AirSim/Cosys-AirSim 游戏开发(三)打包可执行文件
  • spring获取注册的bean并注册到自定义工厂中管理
  • 【大模型】大模型数据训练格式
  • 光纤采集系统
  • grafana-mcp-analyzer:基于 MCP 的轻量 AI 分析监控图表的运维神器!
  • 【计算机网络】HTTP
  • 安徽省N1 叉车司机考试题及答案解析
  • webui无法注册如何配置
  • volka 25个短语动词
  • Android动态广播注册收发原理
  • (4-point Likert scale)4 点李克特量表是什么
  • 基于cornerstone3D的dicom影像浏览器 第二十九章 自定义菜单组件
  • openvino使用教程
  • LangChain【7】之工具创建和错误处理策略
  • Linux 内核性能分析确保成效的关键知识点总结
  • Redis 过期了解
  • ​​TLV4062-Q1​​、TLV4082-Q1​​迟滞电压比较器应用笔记
  • MySQL 高级学习篇
  • 【SpringBoot自动化部署】
  • 【WebSocket】SpringBoot项目中使用WebSocket
  • 主流定位技术:Zigbee、蓝牙、UWB、RFID、5G通信介绍及对比
  • Day 41 训练
  • 鸿蒙图片缓存(一)