完善文档

This commit is contained in:
NeoZng 2023-09-27 22:52:26 +08:00
parent 145e886618
commit 50479fc16c
3 changed files with 44 additions and 11 deletions

View File

@ -4,7 +4,7 @@ Ozone的实时变量可视化监测(示波器)功能可以很好地帮助我们
## 调试顺序
先内环,后外环。若有已知的外部扰动如阻力、重力等可以在**保持kp不变**的情况下添加积分环节,并查看达到稳态时积分的输出,该输出值可以作为**前馈**作用通过feedforward_ptr一同送入下一个串级控制器。
先内环,后外环。若有已知的外部扰动如阻力、重力等可以在**保持kp不变**的情况下添加积分环节,并查看达到稳态时积分的输出,该输出值可以作为**前馈**作用通过feedforward_ptr一同送入下一个串级控制器。在没有模型的时候,计算前馈一般通过**数据驱动**的方法,如稳态误差-参考值关系拟合。
经典的经验式整定方法有简单的Ziegler-Nicols法和Cohen-Coon法还有需要一定的系统辨识的Chien-Hrones-Reswick、Tyreus-Luyben和Skogestad法。这些方法在网络上或提出方法的论文中都有详尽的说明这里不再赘述。
@ -15,5 +15,18 @@ Ozone的实时变量可视化监测(示波器)功能可以很好地帮助我们
1. 首先整定P参数使用二分法确定大致范围。将电机参考速度和实际速度在Ozone示波器同一窗口中打开以观察时域表现。把pid的ref值添加到变量观测方便修改只要修改ref值每次就可以触发阶跃信号输入。当P达到欠阻尼且波动只有一个周期只有超调一个峰开始添加D参数。
2. 添加微分参数。务必打开微分滤波器并根据你的闭环带宽速度环要跟随的频率设置滤波系数。目前使用的是一阶低通滤波后续考虑增加高阶滤波器和特殊的带宽滤波器切比雪夫、巴特沃斯等。调节D参数至P进入临界阻尼或过阻尼的状态没有超调
3. 交替增大比例系数和微分系数,直到出现不可控的微分抖动,然后减小两者的值直到出现一个合适的平衡(调个大概即可,没有模型的情况下很难达到均衡)
4.
4. **固定PD参数**,查看不同目标值的**静差**。如果没有对云台进行建模则拟合目标值与静差的关系线性、多项式、指数、对数并将该值作为前馈加入系统以补偿PD无法影响的扰动项。
5. 增加额外的积分控制以消除前馈模型不准确带来的影响。务必使用积分分离和变速积分。参数不要求精细,一般来说大致即可。
## model-based控制
无模型的控制显然存在其劣势和效果上限,为了提高性能,我们需要对云台进行建模。
建模的方式包括动力学方程推导和数据驱动的系统辨识。
动力学方程的推导即分析系统的输入(电机的扭矩)和输出(速度/角度的关系得到系统动态的微分方程然后使输入等于微分方程中除输出外的项从而让输出的动态变为简单的一阶线性常微分方程以最快的方式到达期望位置。此时再额外增加PID控制器用于补偿建模得到的系统和实际不匹配造成的误差。建模考虑的因素越全面建模的效果可能会越好。
系统辨识的经典方法是伯德图法即频域分析。通过给定一系列的正弦输入,观察系统的输出表现得到系统的相频曲线和幅频特性曲线,并选择一个特定结构的系统对曲线进行拟合(最小二乘或极大似然估计),对得到的系统应用超前-滞后补偿控制器以确定合适的PID参数在裕度和带宽之间权衡使得系统的频率响应满足设计要求。
Ozone可以非常方便的获取系统的频率响应数据。

View File

@ -110,6 +110,23 @@
} CANInstance;
```
## 其他IDE支持
你还可以尝试VSC的EIDE插件+ozone的方式开发ac5/6工具链的程序。ac5/6工具链由于为arm出品的商业闭源软件对mcu硬件架构的针对性优化更多编译出来的程序优化效果往往更好、体积更小执行速度快过arm-gnu工具链。
另外的可能是Visual Studio + VisualGDB根据VisualGDB的官网进行配置即可可以利用VS提供的各种测试调试性能分析功能。对于熟悉VS丰富的功能支持的开发者可以选择此方式。
还可以尝试VSC的插件KEIL assistant通过此法你需要在根目录打开cubeide配置文件在project manager标签页选择将工具链改为MDK**我们非常不推荐这种方式**。若要使用CubeIDE也在相同的地方修改工具链。
***不过开发本框架的最佳实践仍然是VSCode+Ozone。***
> 只要你学习了[VSCode+Ozone使用方法](./VSCode+Ozone使用方法.md)文档内的*预备知识* 掌握了工具链的用途和原理之后不论换用什么IDE什么编译器你都可以切换自如。
## BSP层(Board Sopport Package)
- 主要功能实现对STM HAL的封装功能进一步抽象硬件。
@ -190,6 +207,8 @@ ROOT:.
│ debug_ozone.jdebug # ozone debug调试配置和缓存文件
│ LICENSE # 开源协议文件
│ Makefile # 编译管理文件,为make(mingw32-make)命令的目标
| Makefile.upgrade # 编译管理文件的升级版, 资深用户使用
| CMakeLists.txt # cmake构建规则, 资深用户使用
│ openocd_dap.cfg # 用于OpenOCD调试使用的配置文件,dap用
│ openocd_jlink.cfg # 用于OpenOCD调试使用的配置文件,jlink用
│ README.md # 本说明文档
@ -199,10 +218,6 @@ ROOT:.
│ STM32F407IGHx_FLASH.ld # F407IGH(C板MCU)目标FLASH地址和链接规则,用于编译(作为链接阶段的链接器)
│ task.ps1 # powershell脚本,一键编译并进入ozone调试/reset开发板用
│ TODO.md # 项目待完成的任务
│ VSCode+Ozone使用方法.md # 开发环境配置和前置知识介绍
│ 修改HAL配置时文件目录的更改.md # 重新配置CubeMX时的步骤和注意事项
│ 必须做&禁止做.md # 开发必看,规范和要求
│ 如何定位bug.md # 开发必看,快速定位bug并进行修复.还提供了一些debug典例
├─.vscode
│ launch.json # 调试的配置文件
@ -210,14 +225,17 @@ ROOT:.
│ tasks.json # 任务配置文件,包括一键编译下载调试等
├─.assets # 说明文档的图片
├─.Doc # 本框架的各类说明文档
├─.github # github action CI支持文件
├─application # 应用层
├─bsp # 板级支持包
├─modules # 模块层
├─Src #hal生成的外设初始化源文件
├─Inc #hal生成的外设初始化头文件
├─Drivers #hal driver和cmsis drivers
└─Middlewares # STusb ext , rtos , segger rtt等
├─Src # hal生成的外设初始化源文件
├─Inc # hal生成的外设初始化头文件
├─Drivers # hal driver和cmsis drivers
└─Middlewares # STusb ext, rtos, segger rtt等
```
## BSP/Module/Application介绍

View File

@ -254,7 +254,9 @@ app、module和bsp都有相应的rtos任务。其中bsp为创建任务提供了
想要调试在左侧tab页选择合适的调试选项按F5或图形界面的绿色小三角形按钮开始调试。当然调试器的设置也请参考配置文档主要是将可执行文件路劲加入环境变量的PATH。
**更详细的开发流程,请参照`.Doc/VSCode+Ozone使用方法.md`**
**更详细的开发流程和本仓库工作流的最佳实践,请参照`.Doc/VSCode+Ozone使用方法.md`**,里面介绍了开发所需的前置知识、环境配置,以及工具链原理、使用方法等。
要对本仓库进行开发,务必先阅读`.Doc/架构介绍与开发指南.md`,内含本仓库组织结构的**文件树**。若你希望使用其他工具链或IDE里面也有相关说明。
### 基本文档