matlab更改坐标轴线宽度_matlab点乘和叉乘

matlab更改坐标轴线宽度_matlab点乘和叉乘实例2 直流电机速度控制参考:Control Tutorials for MATLAB and Simulink通过直流电机模型以及直流电机速度、位置控制方法学习控制理论是一种非常高效的方法。对直流电机控制进行学习可以深入了解2阶系统特点、

实例2 直流电机速度控制   参考:Control Tutorials for MATLAB and Simulink   通过直流电机模型以及直流电机速度、位置控制方法学习控制理论是一种非常高效的方法。对直流电机控制进行学习可以深入了解2阶系统特点、深入且直观的理解PID闭环控制理论。另外,直流电机相对于永磁无刷电机而言模型相对简单,但其核心原理是相同的。深入理解直流电机,有助于理解永磁无刷电机。   这里从直流电机模型、分析、PID控制、根轨迹分析、bode图分析、状态空间方法以及Simulink仿真分析进行全方面的学习。通过学习直流电机的调速、位置控制,基本可以完全覆盖经典自动控制理论中的核心内容。   1 直流电机模型及分析   1.1 模型   为便于将精力集中于自动控制理论本身,而不是电机的详细原理,这里以简化后的直流电机作为研究对象。直流电机的基本原理可以概括为:通电导体在磁场作用下会受到安培力而产生运动,直流电机转子线圈通电产生电流,转子线圈电流受到定子磁场作用产生旋转。直流电机转子受到的磁场力与线圈中的电流、定子磁场强度成正比,即在磁场强度不变的情况下,电机转子受力大小与流过线圈的电流大小成正比。如何调整电机转子的电流大小呢?通过调整施加在电机线圈绕组上的电压大小实现对线圈电流的控制。   直流电机的等效模型如下:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘直流电机等效模型   转子线圈的特性可等效为电阻R和电感L,在转子线圈两端施加电压V,产生电流i,由于电磁作用,电机旋转。旋转过程中线圈产生反电动势e, 电机旋转过程中转轴受到负载作用力
T_l 和转动过程中轴承等产生的阻尼力
b \dot \theta .   直流电系统模型   直流电机输出转矩受转子电枢电流i和磁场强度影响,假设电机的扭矩常数为
K_t ,单位为Nm/A, 即每安培电流产生的电磁转矩。则直流电机产生的扭矩可描述为:   
T = K_t i\\   假设电机的反电动势常数为
K_e ,单位为 V/(rad/s),即每rad/s的转速所产生的反电动势。则直流电机产生的反电动势为:   
e = K_e  \dot \theta\\   根据基尔霍夫电压定律和牛顿第2定律,建立直流电机系统模型微分:   
J \ddot \theta + b \dot \theta = K_t i\\ L \frac{di}{dt} + Ri = V - K_e \dot \theta \\ 为简化计算和分析,这里取
K_t = K_e = K, 则直流电机系统模型微分方程可简化为:   
J \ddot \theta + b \dot \theta = Ki\\ L \frac{di}{dt} + Ri = V - K\dot \theta \\   上述公式中:J为直流电机转子惯量,单位Kgm^2; 取J = 0.01Kg*m^2b为转子阻尼系数,单位Nm/(rad/s); 取b = 0.1Nm/(rad/s) Kt为直流电机扭矩常数,单位Nm/A; 取Kt = 0.01Nm/AKe为直流电机反电动势常数,单位V/(rad/s), 取Ke = 0.01 V/(rad/s)R为直流电机转子线圈电阻,单位Ω, 取R = 1.0ΩL为直流电机转子线圈电感,单位H, 取L = 0.5H.   直流电机系统传递函数   对直流电机系统模型微分方程进行拉普拉斯变换可得:   
s(Js+b) \theta (s) = KI(s)\\ (Ls+R)I(s) = V(s) - Ks\theta(s)\\ 根据上述拉普拉斯变换,可以建立输出速度与输入电压之间的开环传递函数:   
P(s) = \frac{\dot \theta (s) }{V(s)} = \frac{K}{(Js+b)(Ls+R)+K^2} \\ 状态空间方程   选取转子电枢电流i和电机转速
\dot \theta 为状态变量,根据直流电机系统微分方程,可以得到以转速和电流为状态变量的状态方程:   
\frac{d}{dt}\left [\begin{array}{c} \dot{\theta} \\ \ \\ i \end{array} \right] = \left [\begin{array}{cc} -\frac{b}{J} & \frac{K}{J} \\ \ \\ -\frac{K}{L} & -\frac{R}{L} \end{array} \right] \left [\begin{array}{c} \dot{\theta} \\ \ \\ i \end{array} \right]  + \left [\begin{array}{c} 0 \\ \ \\ \frac{1}{L} \end{array} \right] V  \\
 y = [ \begin{array}{cc}1  & 0\end{array}] \left [ \begin{array}{c} \dot{\theta} \\ \ \\ i \end{array} \right] \\ 设计指标建立时间小于2秒超调小于5%稳态误差小于1%   Matlab指令描述系统系统传递函数   状态空间方程   也可以使用ss命令,直接将传递函数转换为状态空间方程形式:   1.2 分析   开环响应   这里使用Matlab中linearSystemAnalyzer工具箱对系统进行开环分析,使工具箱需要输入系统的传递函数模型。系统的传递函数为:   将模型输入到linearSystemAnalyzer,并以阶跃响应作为输入,输入时间间隔为0.1秒,时间长度为5秒:   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘   在图中空白处,单击“右键”选择”Characteristics”中的“Setting Time”和“Steady State”。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘   用鼠标左键选中曲线中的蓝色原点,显示该点对应的注释标签。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘电机开环系统 施加1V的阶跃响应   从上图可以看出,施加1V的阶跃响应时,系统的建立时间约为2.07s,稳态值为0.1rad/s。我们期望,输入1,则输出1.显然,开环系统的输出响应无法满足我们的需求。   线性时不变系统特性   直流电机模型为典型的2阶系统,我们可以通过观测传递函数中极点的位置,预估它的阶跃响应特性。可以在Linear System Analyzer中右击鼠标,选择Plot Types > Pole/Zero,观测系统零极点位置。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘选择 Pole/Zero
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘直流电机开环传递函数 零极点分布   从零极点分布可以看出,该直流电机模型具有2个实数极点,所以该直流电机的阶跃响应无震荡(极点的虚数部分,表示系统的震荡特性)。从图可以看出,该直流电机的2个极点分别为-2和-10(-10相对-2较远,对系统影响较小)。类似木桶的短板理论,系统的响应特性由距离虚轴最近的极点所主导。-2这个极点几乎完全决定系统的速度和响应。这里可以使用1阶系统来逼近该直流电机2阶系统。   建立极点s=-2的1阶系统,观测s=-2的一阶系统与该直流电机2阶系统接近程度:   通过Linear System Analyzer导入功能,导入该1阶系统。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘   插入图例:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘使用1阶系统逼近2阶系统   从上图可以看出,这里使用的1阶系统基本上能够逼近2阶的直流电机模型。在t=0时,1阶系统和2阶系统的导数差异较大。   1阶系统的建立时间为:   
T_s = 4 \tau \\ 这里,τ是时间常数。这里使用τ=0.5的一阶系统逼近二阶系统,该一阶系统的建立时间为4*0.5=2秒,上述直流电机系统模型的建立时间为2.07秒,可以看出,等效的一阶系统与二阶系统建立时间非常相近。   开环系统其他输入类型的响应   可以使用Linear System Analyzer工具查看系统在其他输入类型下的响应。鼠标右键字绘图区域右侧单击,选择Plot Types -> Linear Simulation
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘构造正弦输入信号
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘正弦输入信号仿真结果   2 控制   2.1 PID控制   直流电机模型传递函数为:   
 P(s) = \frac{\dot{\Theta}(s)}{V(s)} = \frac{K}{(Js + b)(Ls + R) + K^2}   \\ 系统的控制框图如下:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘系统控制框图在Matlab中使用指令生成直流电机传递函数   比例控制   在生成的曲线中,单击鼠标右键可以查看系统的上升时间、建立时间、稳态值:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘闭环系统 比例控制阶跃响应   从闭环系统比例控制阶跃响应曲线可以看出,系统的超调量和稳态误差不满足设计要求。当然, 可以增大比例系数来降低稳态误差,但是增大比例系数会带来更大的超调。所以,这里单独调整比例系数已经无法满足要求了。   PID控制   Kp=100时,超调过大,这里可以适当的降低Kp. 同时,增加积分控制,通过积分消除稳态误差。这里,取Kp = 80, Ki = 1.   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘PI控制器阶跃响应   从上图可以看出,当Kp=80, Ki = 1时,系统超调量为7%, 稳态误差为0. 超调量过大,故应进一步降低Kp,这里取Kp = 60。尽管稳态误差为0,但系统建立时间非常长,故需要增大积分增益,这里取Ki = 10.
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘Kp=60, Ki=10 阶跃响应   从上图可以看出,当Kp=60, Ki = 10时,系统超调量为1.03%, 稳态误差为0. 超调满足要求,无需调整Kp。系统达到稳态误差所需的时间非常长,故需要增大积分增益,这里取Ki = 50.
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘Kp=60 Ki=50 阶跃响应   进一步加大积分系数,取Kp=60, Ki=80.
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘Kp=60 Ki=80 阶跃响应   当Kp=60, Ki=80时,系统稳态误差和响应时间满足要求,但是超调量略大,可以考虑减小Kp或增加微分控制。这里取微分控制系数Kd = 5.   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘Kp = 60, Ki=80, Kd=5 系统闭环响应   从PID响应曲线可以看出,增加微分控制,可以降低系统超调量。使用Kp=60, Ki=80, Kd=5进行控制,闭环系统满足设计指标。   2.2 根轨迹   直流电机系统传递函数如下:   
 P(s) = \frac{\dot{\Theta}(s)}{V(s)} = \frac{K}{(Js + b)(Ls + R) + K^2}   \\   直流电机系统的控制框图如下:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘系统控制框图   为方便进行根轨迹分析,先使用Matlab命令建立直流电机系统模型传递函数:   绘制根轨迹   通过开环系统根轨迹预测闭环系统在增益K从0到∞时,闭环系统的极点分布情况。通过调整控制器的零极点,调整系统的根轨迹,进而调整系统的响应特性。   这里使用Control System Designer工具进行根轨迹分析。该工具通过图形化的方式调整控制器参数,可以快速获得对应的根轨迹曲线。在Matlab中命令窗口或在直流电机传递函数模型文件末尾输入指令:controlSystemDesigner(‘rlocus’,P_motor)   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘Control System Designer 工具   打开Control System Designer工具箱后,默认绘制出系统的根轨迹和阶跃响应。在根轨迹曲线空白区域右键,选择Grid, 增加根轨迹网格:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘添加根轨迹网格   查找闭环增益   系统建立时间Setting time要求小于2秒,超调量要求小于5%。系统的闭环极点提供了系统的瞬态响应信息。Control System Designer工具可以方便的在根轨迹曲线中绘制出满足要求的根轨迹区域,在该区域中选取满足设计指标的根,进而对应的闭环增益K。通常,Control System Designer给出的区域为2阶系统对应的根轨迹区域,对于高阶系统,该区域也是一个非常有效的参考区域。   在根轨迹曲线中,右键,选择Design Requirements > New
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘添加设计指标   设置Setting Time指标:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘设置Setting Time小于2秒
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘   设置超调量指标:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘设置Percent overshoot小于5%
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘在超调量和Setting Time约束下 非阴影区域为满足条件的区域   图中非阴影区域(白色区域)为超调量小于5%,Setting Time小于2秒的区域。具体来说,横轴为-2的垂线为满足Setting Time要求的边界线。在垂线左边的区域为Setting Time 小于2秒的区域,距离垂线越远,则Setting Time越小。两根斜线组成的夹角线位满足超调量的边界线,夹角越小的区域超调量越小。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘选取对应的极点   通过拖拽选择合适的极点,通过鼠标“IOTransfer_r2y:Step”系统的闭环响应曲线。如下图所示,系统闭环响应曲线中Setting Time为0.95,满足设计指标;系统无超调;但是系统的终值为0.453,与设定值1相比,稳态误差约为54.7%。这里,可以再次选择其他根轨迹点,查看闭环系统响应特性。为了更好的消除稳态误差,这里引入滞后补偿器。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘查看系统闭环响应特性   滞后补偿器   通过调整根轨迹点,获得了满足设计Setting Time和超调量指标的系统闭环增益。为了降低系统的稳态误差,这里引入滞后补偿器。滞后补偿器类似积分作用,可以降低系统的稳态误差。   首先,添加一个如下形式的补偿器:   
C(s) = \frac {(s + 1)} { (s + 0.01) } \\ 可以通过Control System Designer来设计补偿器,菜单栏上的“Preferences”图标,“Options”,选择“Zero/pole/gain”, “ok”
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘配置补偿器
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘编辑补偿器
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘添加滞后补偿器
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘填写滞后补偿器参数   选择合适的闭环增益   使用鼠标拖动根轨迹中的粉色实心点,选择合适的极点,对应的增益系数。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘移动极点位置 选择对应的闭环增益   查看增益为20.22对应的闭环系统阶跃响应曲线:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘加入滞后补偿器后 闭环系统阶跃响应曲线   加入滞后补偿器后,阶跃响应曲线依然不满足设计指标。由于闭环系统已经不是典型的2阶系统了,所以按照典型2阶系统设计的指标与闭环系统存在差异。添加滞后补偿器后,在靠近虚轴位置,根轨迹中多了一个极点。根据木桶理论,系统的特性受距离虚轴最近的点主导。适当调整距离虚轴的极点,使其尽量远离虚轴。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘   调整坐标显示区域:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘调整坐标轴区域   使用鼠标拖拽下图中粉色实心点,使其尽量远离虚轴。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘调整主导极点位置
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘调整主导极点后 阶跃响应特性   通过反复调整根轨迹中极点位置,系统满足阶跃响应指标。若调整极点无法满足设计指标,可考虑改变补偿器的零极点位置。使用Control System Designer可以快速进行控制器设计,调整控制参数。   2.3 频率响应   绘制直流电机系统bode图   根据伺服电机传递函数,调用bode函数,绘制直流电机bode图。   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘直流电机模型 bode图   从伯德图可以看出,直流电机系统的相位稳定裕度和增益稳定裕度无穷大,这说明直流电机系统具有鲁棒性并且具有较小的超调性能。从伯德图可以看出,幅频响应曲线在全频段均小于0dB,这说明系统会立即衰减输入信号,无法快速跟随设定信号。因此,首先需要通过增加系统增益提升系统的响应,但也要留出足够的相位稳定裕度。   通常,60度的相位稳定裕度足以保证系统具有足够的稳定裕度。从伯德图中,相频曲线可以看出,在10rad/s时,对应60度的相位稳定裕度。为了实现10rad/s时,系统的稳定裕度约为60度,需通过调整增益,使得幅频曲线中,10rad/s提升越40dB. 可以通过bode命令10rad/s时对应的具体幅值和相位。   在10rad/s时,对应的相位稳定裕度为: 180 – 123.7 = 56.3deg. 对应的幅度为20*log10(0.0139)=-37.1dB. 也就是说需要使系统幅频曲线向上提升37.1dB. 设置增益 1/0.0139 = 72, 可以使得输出/输入=1, 即20log10(1) = 0dB,即在10rad/s时,幅频曲线穿越0dB,相位裕度为56.3deg。   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘10rad/s 对应的相位-123deg,相位稳定裕度57deg   绘制闭环系统响应曲线   通过增加增益系数,使得系统相位稳定裕度满足设定预期。增益设置为72,系统的闭环阶跃响应曲线为:   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘增益C=72时 系统阶跃响应   从上图可以看出,当系统增益C=72时,系统的建立时间为0.672,小于2秒,满足设计指标。但系统的超调量为18.9%大于设计指标5%,稳态误差12.2%,大于1%。超调量和稳态误差不满足设计指标。   滞后补偿器   考虑如下的滞后补偿器:   
C(s) = \frac {(s + 1)} { (s + 0.01) } \\ 这个滞后补偿器具有DC增益=1/0.01=100,这个DC增益可以增加一个100倍增益常量,可以降低稳态误差,故可以降低之前的增益系数C,使其从C=72,降低为C=45。滞后补偿器不能影响系统在10rad/s的性能,观测滞后补偿器频谱曲线:   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘滞后补偿器频谱图   从滞后补偿器频谱曲线可以看出,在10rad/s时,滞后补偿器产生相位滞后约5deg,说明其对10rad/s的影响不大。可以使用该补偿器作为闭环控制器,加入滞后补偿器后系统的闭环响应曲线为:   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘加入滞后补偿器后 闭环系统阶跃响应曲线   加入滞后补偿器后,闭环系统满足设计指标要求。   2.4 状态空间   直流电机的状态空间方程为:   
\frac{d}{dt}\left [\begin{array}{c} \dot{\theta} \\ \ \\ i \end{array} \right] = \left [\begin{array}{cc} -\frac{b}{J} & \frac{K}{J} \\ \ \\ -\frac{K}{L} & -\frac{R}{L} \end{array} \right] \left [\begin{array}{c} \dot{\theta} \\ \ \\ i \end{array} \right]  + \left [\begin{array}{c} 0 \\ \ \\ \frac{1}{L} \end{array} \right] V \\
 y = [ \begin{array}{cc}1 & 0\end{array}] \left [ \begin{array}{c} \dot{\theta} \\ \ \\ i \end{array} \right]   \\   使用Matlab指令描述直流电机状态空间方程:   设计全状态反馈控制器   由于可以通过传感器检测直流电机转速和电流,故可以建立全状态反馈控制器。全状态反馈控制器输入u=r-KcX,系统结构框图如下:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘状态反馈结构框图   在使用状态空间分析方法之前,首先需要确认系统的阶数、系统的能控性。只有当系统可控时,才能将系统极点配置到期望位置。系统的阶数和能控性,可以通过Matlab指令描述:   系统为2阶系统,系统的秩为2(满秩),故系统可控。将极点配置到-5+i 和 -5-i (对于典型的2阶系统,极点-5+i 和 -5-i对应的角度为 θ = atan(1/5), 阻尼比ζ=cos(θ)= cos(atan(1/5))=0.98058; 2%稳态误差时,对应的Setting Time,
T_s = 3.9/(\zeta \omega) = 3.9/(0.98*sqrt(1+25)) =0.78s )
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘典型2阶系统 欠阻尼状态对应的建立时间   基于全状态反馈控制器的系统微分方程为:   
 \dot{{\bf x}} = (A - BK_c){\bf x} + Br \\
y = C\bf{x}   \\ 通过将极点配置为-5+i和-5-i,得到状态反馈增益K= 13, -1. 通过matlab指令,全状态闭环阶跃响应曲线。   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘K=13, -1时,全状态反馈阶跃响应   从上图可以看出,阶跃响应的稳态误差过大。可以对输入进行缩放,以使得输入接近输出,进而降低稳态误差。由于反馈状态为2维,这将使得选择缩放系数较为困难。在之前,我们通过rescale来调整输入,这里,也采用rescale根据系统的状态系数计算合适的缩放系数。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘对输入进行缩放rescale函数计算
\overline{N}   通过调用rescale缩放系数:   将rescale计算得到的系数
\overline{N}代入到闭环控制系统中   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘经过缩放后的全状态闭环系统阶跃响应   经过缩放输入后,系统稳态误差小于1%,建立时间为1.1秒,超调量接近为0,结果满足设计要求。   注意到
\overline{N} 在闭环系统外面,它不会自适应系统参数或扰动,如果系统受到干扰或模型不准确,则系统将会产生稳态误差,此时,可考虑使用积分来消除稳态误差。   2.5 数字化   数字控制系统设计的第一步是生成控制对象的采样数据模型。因此,有必要对连续时间系统进行采样。在选择采样周期时,希望采样频率比系统的动态要快,以便数字系统的采样输出能够不失真的捕获系统的所有动态特性。   使用Matlab指令描述动态系统:   使用zpk命令将传递函数转换为零极点形式,可以清楚的看到系统的零点、极点以及增益。通过零极点形式的传递函数可以看出,系统的主导极点为-2(可以用一阶系统近似等效该系统,对应的1阶系统建立时间Ts = 4/2 = 2秒)。这里选择采样时间为0.05秒(0.05秒远小于系统的建立时间)。   通过Matlab指令c2d将连续的s域转换到离散的Z域。c2d需要输入3个参数:系统模型、采样时间、保持类型。这例子中,采用”zoh”保持。使用c2d进行离散化:   在不使用任何补偿器的情况下,分析离散系统的闭环响应特性。通过feedback函数构建闭环系统,然后使用step和stairs命令完成离散系统的阶跃响应测试。由于这里输入到step中的系统为离散系统,step输出以采样Ts为时基的离散序列。通过stairs绘制step输出的序列点,每个点之间类似’zoh’保持。   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘离散系统 闭环阶跃响应   在不使用补偿器或控制器的情况下,离散系统的稳态误差过大。   PID控制器   PID控制器在连续域中传递函数为:   
C(s) = K_{p} + \frac {K_i}{s} + K_{d}s \\ 针对控制器,从s域转换到z域,更加倾向于使用更加准确的转换方式,以便离散域中的控制器更加近似连续域。连续域到离散域的转换公式如下:   
 z = e^{sT_s} \\ 上面的转换涉及到超越方程并且转换结果不能表示为多项式形式,这种形式不便于使用计算机进行分析。因此,采用双线性变换进行近似,双线性变换的形式如下:   
 s = \frac{2}{T_s}.\frac{z-1}{z+1}  \\ 同样,使用matlab中的c2d命令,并且使用’tustin’方法将连续域中的PID控制器转换到离散域。‘tustin’方法采用双线性变换进行求解。取Kp=100, Ki=200,Kd=10, PID控制器转换为离散域:   使用离散PID控制器和离散模型,构建离散形式的闭环控制系统,系统的阶跃响应:   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘闭环阶跃响应   如上所示,闭环系统阶跃响应发散,说明上述的闭环系统参数存在问题。使用根轨迹查看带有控制器的系统特性:   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘基于PID控制器的根轨迹曲线   从根轨迹曲线可以看出,使用PID控制器后,系统存在一个位于-1点的极点。随着增益增大,该极点将会沿根轨迹向左移动,这将导致根在单位圆外。当根在单位圆外时,系统将不稳定。-1这个极点来自于PID控制器分母,故可以对PID控制器进行适当的调整,以便根落在单位圆内。将PID控制器增加一个-0.82的极点,这可以使得系统在某些增益条件下稳定。   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘调整PID控制器极点   通过鼠标选择根轨迹,选择满足超调、稳定时间的轨迹点。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘选择极点 增益   当然,也可以通过[K,poles]=rlockfind(dC*dP_motor)选择闭环极点。这里选择极点为:-0.0666+0.0681i,对应的增益K=0.885, 阻尼比0.708, 超调量4.29. 调整系统增益为0.885,绘制离散系统闭环响应曲线:   
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘调整极点后 基于PID控制器的直流电机闭环阶跃响应   调整PID控制器极点后,直流电机系统阶跃响应超调量小于5%,建立时间小于2秒,稳态误差为0,满足设计指标。   3 Simulink   3.1 模型   使用Simulink建立直流电机模型   通过牛顿第2定律和基尔霍夫定律得到直流电机系统模型方程,并将模型方程进行适当的转换,以便于在simulink中用积分器描述系统。例如,直流电机的位置可以通过速度积分获得,速度可以通过加速度积分获得:   
 J \frac{d^2 \theta}{dt^2} = T - b \frac{d{\theta}}{dt} \Longrightarrow \frac{d^2 \theta}{dt^2} = \frac{1}{J}(K_{t}i - b \frac{d{\theta}}{dt})   \\
 L \frac{di}{dt} = -Ri + V-e \Longrightarrow \frac{di}{dt} = \frac{1}{L}(-Ri + V-K_{e} \frac{d{\theta}}{dt})   \\ 通过Simulink搭建简单的积分器,通过积分器描述
\frac{d\theta}{dt} , i :
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘基础模型   通过积分器可以获得速度和电流,按照直流电机模型公式,将L,R,K,V代入模型,便可得到直流电机Simulink模型。首先,搭建构建
\frac{d^2 \theta}{dt^2} = \frac{1}{J}(K_{t}i - b \frac{d{\theta}}{dt})
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘加速度模型   构建
 \frac{di}{dt} = \frac{1}{L}(-Ri + V-K_{e} \frac{d{\theta}}{dt})   模型,其中V为输入电压:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘电流模型   将电流模型和加速度模型合并,即可得到直流电机的Simulink模型:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘直流电机Simulink系统模型   将直流电机Simulink仿真模型创建为Simulink子系统
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘   由于在创建Simulink模型时使用了变量,需要创建mask变量
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘创建mask   编辑变量名,设置初始化值
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘编辑变量名并进行初始化
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘子系统变量
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘直流电机Simulink模型 阶跃响应   使用Simscape建立仿真模型   针对复杂的、不便于用数学公式描述的系统,Simulink提供了Simscape方法来建立物理仿真模型。Simscape提供了基础的物理仿真组件,只需要选择合适的组件,像搭积木一样构建仿真模型。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘Simscape直流电机仿真模型   各个组件的位置:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘电阻、电感、旋转机械转换组件
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘惯量、阻尼模块
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘连接模块   器件参数   添加传感器以查看仿真过程中的各个状态,这里需要添加可控电源、速度传感器、电流传感器,以及信号和功率转换原件。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘直流电机转换为子系统   将整个模模型创建为子系统,并进行阶跃响应测试
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘创建子系统 并进行阶跃响应测试
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘直流电机系统阶跃响应   3.2 控制   滞后补偿器   在不使用补偿器/控制器对系统优化的情况下,系统的响应时间和稳态误差均不满足设计指标。这里使用滞后补偿器进行闭环控制。具有如下参数的滞后补偿器传递函数:   
C_{lag}(s) = 44\frac{s + 1}{s + 0.01} \\使用Simscape搭建的直流电机模型进行闭环控制:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘滞后补偿器闭环控制
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘滞后补偿器闭环控制效果   超前补偿器   除了使用滞后补偿器进行控制,还可以使用超前补偿器。具有如下参数的超前补偿器传递函数:   
C_{lead}(s) = 160000\frac{s + 35}{s + 1035} \\ 对比超前补偿器与之后补偿器效果:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘滞后补偿器与超前补偿器控制对比
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘蓝色超前补偿控制效果 黄色滞后补偿效果   从图可以看出,超前补偿器响应明显比滞后补偿器快。但从能量消耗的角度来看,超前补偿器消耗的能量也更多。对比超前补偿器和滞后补偿器所需的控制电压:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘查看超前和滞后补偿器 需求电压
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘超前和滞后补偿器控制电压对比   从超前和滞后补偿器的电压需求曲线可以看出,超前补偿器所需要的电压达到15万伏量级,通常情况下这是不合适的。为使仿真更加逼真,这里对输入电压进行限制,输入电压幅值最大为24V。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘限制控制电压值为±24V范围内   限制控制电压后,滞后补偿器和超前补偿器阶跃响应速度输出对比:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘输入限幅状态下 滞后补偿器与超前补偿器性能对比   滞后补偿器类似积分控制,控制量是基于误差累积。在系统未达到设定值时(即反馈小于设定值),误差=设定值-反馈值,误差大于0.则误差累计值为正值。当反馈值小于设定值时,误差累计值为正,导致系统持续输出正向控制量,直到系统产生超调,即反馈值大于设定值,此时误差=设定值-反馈值,小于0,此时积分作用产生的累加值才能慢慢降低,控制量才慢慢降低,系统才能趋于设定值。也就是说,滞后补偿器或积分作用必然会导致系统产生超调。   3.3 SIMSCAPE   在Simscape中,除了使用分离的物理器件搭建直流电机模型,还可以采用Simscape中的直流电机模块搭建仿真模型。在Matlab中命令窗口中输入ssc_new命令,创建Simscape仿真基础模板:
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘Matlab命令窗口输入ssc_new调出Simscape基础模板
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘Simscape基础仿真模板   在Simulink空白处,可双击鼠标左键直接搜索组件,例如,搜索DC Motor模块,回车就可将DC Motor模块添加到仿真模型中。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘搜索模块
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘直流电机模块   在基础仿真模板上增加直流电机模型、电流传感器、可控电压源、理想旋转运动传感器、电气接地参考、旋转机械参考,搭建如下图所示的直流电机仿真模型。
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘直流电机仿真模型   鼠标左键双击直流电机模块,输入直流电机相关参数
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘输入直流电机电气参数
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘输入直流电机 机械参数
matlab更改坐标轴线宽度_matlab点乘和叉乘
matlab更改坐标轴线宽度_matlab点乘和叉乘直流电机速度阶跃响应输出   同样,可以按照3.2节关于控制部分内容,加入滞后或超前补偿器,构建闭环控制系统。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/68587.html

(0)
上一篇 2024年 8月 8日 上午11:08
下一篇 2024年 8月 8日

相关推荐

关注微信