考查一个机电系统的转子模型在存在外界干扰的情况下,通过控制系统将转子转速维持在一个稳定的水平。控制系统的框图如图9-21所示。
这个控制系统使用经典的PI控制(Ogata,1995),其控制方程为
图9-21 转子控制系统控制框图
本例将演示如何在MotionView中建立这个单入单出控制系统模型,并在MotionSolve中进行求解。练习开始前,首先将目录chap09下的rotor.mdl文件复制到工作文件夹中。
STEP 01 读取转子模型
(1)启动MotionView。
(2)读取工作目录下的模型rotor.mdl。
(3)模型中包含了名为rotor的几何体,该几何体通过一个转动副与地面连接。转动副的转轴与Z轴平行。为加快系统稳定,在转动副上添加了阻尼。模型中同时包含输出控制请求,用于在后续的求解过程中,输出转子的位移及速度信息。
STEP 02 为参考速度添加求解器参数
(1)在项目浏览树中右击MBD Model,选择Add Control Entity→Solver Variable,或右击Solver Variable按钮。
(2)在弹出的Add SolverVariable对话框中,将Label改为Reference Speed。
(3)保持其变量名为sv_0。
(4)单击OK按钮。
(5)设定转速为3rad/s,在Type栏中选择Linear,并输入3。
STEP 03 添加一个SISO控制器
本步将在模型中添加一个SISO控制器。该单输入单输出控制器,其输入为转子当前转速与参考速度的差值,输出为控制器根据输入结果,输出给转子的扭矩改变量。该控制方程中的参数Kp=1,K=10,在此处仅为建模方便需要,没有实际的意义。
(1)在项目浏览树中右击MBD Model,选择Add Control Entity→Control SISO,或在工具栏中右击Control SISO按钮。
(2)在弹出的Add Control对话框中使用默认的标题与变量名。
(3)单击OK按钮。
(4)单击Properties标签。
(5)在Numerators栏中单击Append,定义传递函数分子。
(6)在栏l中输入10,在栏s中输入1。
(7)类似地,在Denominators栏单击Append,定义传递函数分母。
(8)在栏l中输入0,在栏s中输入1。
此时创建的传递函数为。
(9)激活Input标签,在Type中选择Expression,并输入以下表达式: `-WZ({b_0.cm.idstring})+{sv_0.value.lin}`
STEP 04 添加控制扭矩
在这一步中,将向转子添加一个控制扭矩。
(1)在项目浏览树中右击MBD Model,选择Add Force Entity→Force,或右击工具栏中的Force按钮。
(2)在弹出的Add Force or ForcePair对话框中设定标题为control。
(3)使用默认的变量名,单击OK按钮。
(4)在Connectivity面板中的Force下拉列表中选择Action reaction,在Properties下拉列表中选择Rotational。
(5)在Action force on处,双击Body1按钮,并选择rotor。
(6)在Reaction force on处,双击Body2按钮,并选择Ground Body。
(7)在Apply force at处,双击Point 1按钮,并选择Point 0。
(8)在Local ref.frame处,双击Ref Marker按钮,选择Global Frame,如图9-22所示。
图9-22 Force面板(control)
(9)激活Rot Properties标签,将TX和TY都置为0。
(10)在TZ下拉列表中选择Expression,并输入`{siso_0.OUTPUT}`
STEP 05 定义控制力矩输出请求
(1)在项目浏览树中右击Model,选择Add General MDL Entity→Output命令,或右击Outputs按钮。
(2)在弹出的Add Output对话框中,设定标题为Control Force。
(3)使用默认的变量名,单击OK按钮。
(4)按图9-23所示的内容,定义输出参数。
图9-23 Output面板(control)
STEP 06 递交求解
(1)在File菜单中选择Save As→Model命令,另存模型为rotor_control.mdl。
(2)在工具栏下单击按钮,进入Run面板。
(3)在Sim Type下选择Transient,并指定文件名rotor_control.xml。
(4)在Simulation Parameters标签下将End Time设置为25。
(5)回到Main标签,并单击Run按钮。
(6)求解结束后,返回Run面板。(www.daowen.com)
(7)单击Plot,激活窗口2,并进入HyperGraph界面。
(8)根据图9-24绘制转子Z轴角速度曲线。
图9-24 Build Plots面板(Z轴角速度曲线)
(9)将窗口布局设置为。
(10)激活窗口3,并切换为HyperGraph界面。
(11)根据图9-25绘制控制力矩曲线。
图9-25 Build Plots面板(力矩曲线)
(12)由图9-26可以看出转子在3rad/s的转速下稳定转动。接下来,给转子施加扰动,考察控制系统是否起作用。这里将定义一个脉冲作为扰动。
STEP 07 定义扰动
(1)激活窗口1。
(2)在项目浏览树中右击MBD Model,选择Add Force Entity→Force命令,或右击工具栏中的Force按钮。
图9-26 转子运动结果
(3)在弹出的Add Force or ForcePair对话框中设定标题为disturbance。
(4)使用默认的变量名,单击OK按钮。
(5)在Connectivity面板中的Force下拉列表中选择Action reaction,在Properties下拉列表中选择Rotational。
(6)在Action force on处,双击Body1按钮,并选择rotor。
(7)在Reaction force on处,双击Body2按钮,并选择Ground Body。
(8)在Apply force at处,双击Point 1按钮,并选择Point 0。
(9)在Local ref.frame处,双击Ref Marker按钮,选择Global Frame,如图9-27所示。
图9-27 Force面板(disturbance)
(10)激活Rot Properties标签,将TX和TY都置为0。
(11)在TZ下,选择Expression,并输入
`3*STEP(time,12,0,12.1,1)*STEP(time,12.2,1,12.3,0)`。
STEP 08 定义扰动输出请求
(1)在项目浏览树中右击MBD Model,选择Add General MDL Entity→Output命令,或右击Outputs按钮。
(2)在弹出Add Output对话框中,设定标题为disturbance Force。
(3)使用默认的变量名,单击OK按钮。
(4)按图9-28所示的内容,定义输出参数。
图9-28 Output面板(disturbance Force)
STEP 09 递交求解
(1)在File菜单中选择Save As→Model命令,另存模型为rotor_control_disturbance.mdl。
(2)在工具栏下单击按钮,进入Run面板。
(3)在Sim Type下选择Transient,并指定文件名rotor_control_disturbance.xml。
(4)设置Simulation Parameters标签的End Time为25。
(5)回到Main标签,单击Run按钮,求解模型。
(6)求解结束后,单击窗口2。
(7)根据图9-29绘制受扰动转子Z轴角速度曲线。
图9-29 Build Plots面板(Z轴角速度曲线)
(8)单击窗口3。
(9)根据图9-30绘制受扰动转子控制力矩曲线。
图9-30 Build Plots面板(控制力矩曲线)
(10)根据图9-31绘制扰动力矩曲线。
图9-31 Build Plots面板(扰动力矩曲线)
(11)由图9-32可以看出转子在受到扰动后,在控制器的作用下很快恢复到3rad/s的稳定转动状态。
图9-32 扰动作用下的转子运动结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。