自整定

在控制理论中，自整定（self-tuning）可以在满足目标函数最大化或是最小化的情形下，将其内部运行参数进行最佳化，一般会是进行效率的最大化，或是错误的最小化。

自整定及自动整定（auto-tuning）有时会指同一个概念，许多软件研究群体认为auto-tuning是较正确的名词。不过在变频器领域中，自动整定（auto-tuning）有时只是马达参数自学习，利用测试信号及算法量测马达参数（如定子电阻），不一定包括内部运行参数的最佳化。

自整定系统一般会包括非线性自适应控制。数十年以来，自整定系统已经是航太产业中的标志，这类的反馈在非线性过程的多目标最佳控制非常重要。在电信产业中，常使用自适应通信，其中会动态的调整系统参数，让效率及强健性都可以最大化。

## 架构

自整定系统一般包括四个元素：预期、量测、分析及动作。预期会描述系统在给定exogenous条件下应有的行为。

量测会搜集有关条件及系统行为的资料。分析会判断系统行为是否符合预期，后续应该进行哪些行动。常见的动作是搜集资料，并且动态调整系统的组态。

自整定（自适应）的自动控制系统是可以适应随机变化条件的系统，其作法是自动调整其参数，或是自动决定其最佳组态。在不是自整定的自动控制系统中，有许多参数会影响系统稳定性及控制品质，可以手动进行调整。若在运作条件大幅变化时（例如输入讯号或是受控体特性改变时），参数仍维持相同的值，其控制性能可能会退化，甚至不稳定。手动的参数调整很麻烦，而且有时是不可行的。这种情形下使用自整定的自动控制系统，不但有在经济上或使用方便性的考量，这也是唯一可以实现强健控制的方法。自整定系统可以包括参数测定（parameter determination），也可以不包括参数测定。

在有参数测定的控制系统中，控制水准是靠自动寻找一组最适的参数值来实现的。控制水准是一个概略性的特征，多半不太能表示成基本参数的函数，就算有，也可能是一个复杂函数，甚至没有已知的函数可以表示。此特征可能会用直接量测的方法来取得，也可能根据基本参数再作计算而得。之后会暂时变化这些参数，利用参数变化后产生的控制水准震荡来找出有关参数最适值（也就是让控制水准出现极值）的资讯。若控制水准的值已不在理想的极值上，需要再调整参数使控制水准回到极值，或是可以到不同条件下的极值。有有参数测定的控制系统就算外部环境变化很大，也可以可靠的运行。

在实际系统中，若控制系统有参数测定机能，需要一段时间才能找到最佳的调整值，因此其需要的时间会比较长，可能会比实际应用可接受的时间要长。若是系统没有参数测定机能，就没有这个缺点。这类系统会使用一些量测控制水准的方式（例如某控制参数的一阶时间微分）。利用自动整定让控制水准维持在一定范围内。有一些方式可以在不测定参数的情形下进行自整定，主要是以控制暂态过程，频域特性等为主。这些都是闭回路自整定系统的例子，若控制水准偏离允许范围，系统会自动修正参数来调整控制水准。相反的，开回路自整定系统是有些参数补偿的机能，其输入讯号是受控的，依照一定程序来调整系统参数，这类的自整定可以接近即时动作。不过为了要实现自整定，仍需要去了解系统运作的环境，并要对环境对控制系统的影响有足够的了解。

实务上，自整定会有用特殊的硬件或是适应性软件算法来实现。以下是一些自整定（适应性）软件的特点：

- 帮助控制系统的关键流程
- 达到最佳运行的条件
- 促进控制系统的设计一致性
- 缩短系统测试及调适的时间
- 在让系统更加强健的过程中，让技术协助支援的比例可以下降
- 节省系统调适需要的人员及时间

## 自整定的应用领域

### 软件与系统应用

在运算上的自整定范例包括：

- 传输控制协议 （Transmission Control Protocol，TCP）
- Microsoft SQL Server（较新的版本才支援）
- FFTW（西方最快速的傅里叶变换）
- ATLAS（自动整定的线性代数软件）
- libtune（Linux的可整定函式库）
- PhiPAC（精简指令集的自整定线性代数软件）
- MILEPOST GCC（以机器学习为基础的自整定编译器）

自整定的性能优势非常的大。美国电脑科学家Jack Dorr认为自整定提升性能的数量级大约会是三倍左右。

数位自整定控制器是硬件层次自整定系统的例子之一。

### 工业控制应用：数字信号处理于马达自整定

现代马达控制系统多采用数字信号处理器（DSP）作为核心，其具备高速计算与即时控制能力，尤其在进行马达参数的自动辨识（自整定）时，DSP 所提供的高解析数据处理能力尤为关键。在无须人为调整的情况下，系统能自动估测马达电气参数并进行控制器调整，以维持稳定性与性能。以永磁马达为例，透过数字信号处理器进行电压与电流取样后，可进一步实现 $R_s$ 与 $L_s$ 等参数的即时估测与更新。

#### 马达参数估测简介

马达参数估测是指利用特定的测试讯号和算法，自动测量并计算马达的关键电气参数（如定子电阻 R_s、q 轴与 d 轴电感 L_qs、L_ds）及机械参数（如扭矩常数 K_t、惯性矩 J 和阻尼系数 B）。这些参数是控制马达性能的根本基础，能有效反映马达与负载的动态特性。

估测出马达参数后便可自动计算并调整控制器（包括电流控制器、速度控制器及位置控制器）的增益（如比例与积分增益），以达到所设计的带宽与动态响应目标，而无需人工手动调整。

自整定的流程包括参数识别、参数计算、控制器增益计算与控制器调整验证：控制器首先发送特定测试讯号至马达，例如脉波电压用于电气参数测试，速度加减速阶段用于机械参数测试，并即时量测电流、速度与位置资料。接着透过数学模型与曲线拟合，快速估算包括电阻、电感、扭矩常数、惯性与阻尼等参数。然后根据估测参数及预设的系统带宽，自动计算控制回路内各控制器的比例（K_p）与积分（K_i）增益。完成增益设定后，系统即进入闭环控制，并透过实验验证动态响应是否符合设计目标，若必要可进行微调。

#### 马达参数估测流程与方法

马达参数的估测通常可依不同物理模型设计估测流程：

##### 电阻估测法

方法：于 d 轴施加电压脉波，测量其对应的稳态 d 轴电流，避免因转子移动造成误差。

公式：

```
   <math>\R_s = \frac{V_r}{I_r}</math>
```

其中 V_r 为施加的 d 轴电压，I_r 为稳态 d 轴电流。

误差补偿：

若考虑电力开关与二极管压降影响，可施加两次同极性不同电压脉波，利用差分方式计算：

```
   <math>\hat{R}s = \frac{V{r2} - V_{r1}}{I_{r2} - I_{r1}}</math>
```

##### 电感估测法

方法：施加短脉波电压（q 轴用宽度为 h，d 轴为 2h），测量其峰值电流，以忽略电阻与转子动作影响。

公式：

```
   <math>\hat{L}{qs} = \frac{V_{Lq}}{I_{Lq}} h</math>

   <math>\hat{L}{ds} = \frac{V_{Ld}}{I_{Ld}} 2h</math>
```

误差补偿：

若需进一步减少误差，可对相同极性但不同幅值脉波进行两次测试，差分计算如下：

```
   <math>\hat{L}{qs} = \frac{V_{Lq2} - V_{Lq1}}{I_{Lq2} - I_{Lq1}} h</math>

   <math>\hat{L}{ds} = \frac{V_{Ld2} - V_{Ld1}}{I_{Ld2} - I_{Ld1}} 2h</math>
```

估测出电阻和电感后即可设置电流还增益并进入力矩控制控制马达。

##### 转动惯量与摩擦系数估测方法

初始转动惯量估算$\hat{J}^o$：

于加速阶段，根据扭矩常数 $\hat{K}_t$、加速度 a与电流 $i_1$初步估算转动惯量：

```
<math>\hat{J}^o = \frac{a}{\hat{K}_t i_1} </math>
```

摩擦系数估测 $\hat{B}$：

于稳态速度阶段，测量平均 q 轴电流 i_3，并利用稳态速度 $\omega_2$ 计算摩擦系数：

$$\hat{B} = \frac{\omega_2}{\hat{K}_t i_3}$$

精确转动惯量估测 $\hat{J}$：

关闭所有控制器，马达自由减速，其速度波形呈一指数下降曲线：

```
<math>\omega_m = \omega_2 e^{-\frac{\hat{B}}{\hat{J}}t} </math>
```

透过此波形进行曲线拟合可求出更精确的转动惯量 $\hat{J}$。

最后，以估得的 $\hat{J}$ 与 $\hat{B}$作为依据，进行速度控制器增益的设计与调整，即可完成系统识别。

##### 实作考量

估测程序中常须搭配滤波器来处理高频噪声与 ADC 偏移，以避免微分运算放大噪声。具体滤波方法可参考 FIR 或 IIR 结构，如下所示：

```
   <math>y[n] = a \cdot x[n] + (1 - a) \cdot y[n-1]</math>
```

其中 $a = \frac{T_s}{T_s + \tau}$

#### 数字信号处理于参数估测中的角色

在参数辨识过程中，数字信号处理扮演以下几项角色：

- 高精度数据撷取：DSP 控制 ADC 以固定取样时间读取电压与电流。
- 数学运算核心：进行实时微分、积分、滤波与矩阵运算。
- 参数辨识流程控制：调变注入电压、分析响应、并调整控制参数。
- 内存与资料储存：保留历史资料进行多次估测与平均处理。

## 文献

- Big Soviet Encyclopedia, Self-Tuning Systems

## 外部链接

- Using Probabilistic Reasoning to Automate Software Tuning
- Frigo, M. and Johnson, S. G., "The design and implementation of FFTW3", Proceedings of the IEEE, 93(2), February 2005, 216 - 231. 10.1109/JPROC.2004.840301.
- A Collaborative guide to ATLAS Development
- Optimizing Matrix Multiply using PHiPAC: a Portable, High-Performance, ANSI C Coding Methodology
- Faster than a Speeding Algorithm
- Rethinking Database System Architecture: Towards a Self-tuning RISC-style Database System
- Self-Tuning Systems Software
- Microsoft Research Adds Data Mining and Self-tuning Technology to SQL Server 2000
- A Comparison of TCP Automatic Tuning Techniques for Distributed Computing
- Tunables library for Linux
- Digital Self-tuning Controllers