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