Cascade Control(也叫级联控制) 通过一套内外环的多层级联的PID控制,实现控制闭环中的每个环节都处于受控的状态。
针对作动器非常多的过度耦合振动台系统,如SEU振动台共14套作动器,除6自由度外,还需要额外解耦8个自由度,其中垂直向6套作动器,除去Z、Roll、Pitch外还有三个自由度(分别为Twist、Bend、Twistben)需要解耦控制,而对于水平向除了X、Y、Yaw外还有额外五个过约束力(分别为X1/X2/Y1/Y2的Compression及HorizontalForceBalance)需要控制。
如果作动器更多,采用类似的控制逻辑理论上也可以实现,但需要再额外搭建不同的力或转矩模态进行控制,首先准确的识别和定义这些模态就比较麻烦,其次每增加或减少作动器的数量,都要重新定义模态,通用性比较差,为此引入级联控制,外环由位置控制,内环由力控制,降低控制逻辑实现的复杂程度。
为什么可以采用Cascade Control?
以Pulsar中二级阀控制作动器的位移PID控制为例,Command与位移反馈信号作差后,进入到PID控制器,输出后经过5302转变为电流信号,电流信号控制二级伺服阀输出流量进入到作动器,作动器产生位移变化。
而在三级阀的系统中,外环的PID控制输出实际控制的是内环的Spool的位移指令,Spool位移反馈给内环的P控制器,内环控制器输出控制量至5302,进而控制三级阀的位移,从而控制三级阀的开口量,直观上控制的仍然是流量特性。
对作动器内部工作过程进行进一步分析,伺服阀(或三级阀)输出流量至作动器(下图),根据体积模量的影响进一步形成压力推动作动器前端产生加速度,进而形成位移。
位置误差与期望速度在这时候才建立起的关系,注意,强调一遍,是我们主动把位置误差与期望速度联系起来的,起因是我们希望控制速度达到控制位置的效果。
而这种控制能够被实现的本质是,「速度与位置存在我们已知的简单变化关系,即速度的积分是位置」,所以改变期望速度才能改变位置,才能减小误差。飞控算法中双环串级PID如何理解?--知乎
对振动台控制进一步分析,当多作动器组成系统,作动器腔体进入相同的流量(体积)但作动器前端未完成相同的行程(形成相同的体积)时,作动器压差会形成差异继而形成需要解耦的过约束力。那么我们则进一步预期当位置达到目标时(误差为零),除去速度为零,也希望压差为零(推广:非零时,即当作动器命令与反馈误差形成的控制量)需要与压差进一步统一修正,然后再传递给伺服阀的最内环控制回路。
Cascade 控制拥有更好的鲁棒性和更快的响应 *说说串级PID控制cascade control--知乎
Forward Control:
作动器坐标+自由度位移+作动器位移->Transform8矩阵[包含误差合成矩阵]->自由度误差->Command 指令 Router->合成自由位移
Modal Control:
作动器坐标+自由度位移+作动器位移->Transform8矩阵->作动器误差->误差合成矩阵(与作动器压差合成自由度压差一致)->自由度误差
Forward Control/Modal基本都一样
自由度控制输出->分解矩阵->作动器输出
对于Cascade控制整体思路是一致的,外环自由度PID控制输出->矩阵分解->内环输入->内环力控制PID->内环输出->三级阀动作->作动器形成加速度及位移->作动器位移反解出自由度位移->反馈至自由度PID,形成闭环。
与常规的异同点:
相同点:
1) 作动器位移反解出振动台自由度的位移
2) 最外环及内环控制方式相同
不同点:
1)外环输出经分解后结果的去向不同:
常规控制:直接控制三级阀
CascadeControl:作为内环力控制的输入
2)自由度控制输出到各个作动器的三级阀输入分解方式不同。
常规控制:直接速度矩阵分解,以正交系统为例,X向需要动作1,则X1、X2都需要动作1,非正交只需要按照矩阵的分解角度系数考虑即可,这适用于之前的所有振动台控制方式,无论时Transform1还是Transform8,无论时Modal Control还是Foward Control。
CascadeControl:自由度控制输出分解为各个作动器的压差力的指令,比如X方向需要10kN的力,X1、X2各需要出5kN的力即可;
由于振动台级联控制内环是通过作动器的力反馈进行过约束力控制,则自由度方向的PID输出Control OP向作动器环的PID输入指令需要通过力分解矩阵进行分解。
步骤如下:
区分水平与垂直是否正交,即水平向与垂直向的力分解是否存在干涉,东南大学和清华大学振动台属于正交,八杆并联和六杆并联属于非正交;正交时矩阵可拆分为水平和垂直的两个小矩阵,比如东南可拆分为(H:3×8,V:3×6),清华可拆分为(H:3×12,V:3×8),而对于八杆并联则只能是一个6×8矩阵。
注意:大系统也可以不拆分,比如东南保留一个6×14的矩阵,但会有很多的0值。
但在力的分解过程中不好直接分解【X向1mm的位移,则与X向同轴的作动器位移必须为1mm,但是力则不同,X向动作1kN,实际上是所有沿X向出力的作动器的出力的加和为1kN,转动向则更为复杂一些】,但作动器的力->振动台的力及力矩比较好求:
force【X Y Z R P W】=Force [Actuator1,……Actuator N]*[X,Y ,Z矢量]
通过求逆矩阵或伪逆矩阵则可以求得CascadeCommandMatrix:
通常上述矩阵为非方阵,可通过MATLAB中pinv函数求,也可以通过补齐其他模态来求,前者更方便一些。
每个作动器出力分别对每个自由度力或力矩的影响
正交台相对简单,且可以水平和垂直单独计算,比如SEU,X向作动器的出力对X Y 及Yaw有影响,可写为(X,Y,Yaw),八杆并联则相对较为复杂(X,Y,Z,R,P,W)都有出力。
SEU:平动方向,X1A=(X,Y,Yaw)=(-1 0 -2.1),其中-2.1由其X1A作动器在Yaw方向的力臂决定,
Octopod:
平动方向:确定作动器的向量方向,可直接确定出该作动器对平动方向的影响,X1A=(0.496243838 0.497736321 0.711312852)
转动方向:Roll方向右Z向出力及Y向由于重心与球铰高差的倾覆共同组成。
得到的矩阵为作动器向自由度力+力矩的矩阵,实际需要的是自由度力+力矩命令向作动器力指令分解,由于得到的矩阵为非方阵,需要补齐为方阵(将其它模态补充完整作动器多了后会麻烦),也可以直接将非方阵求伪逆矩阵得到所需自由度力+力矩命令向作动器力指令分解矩阵。