《武汉工程大学学报》  2015年08期 69-74   出版日期:2015-08-31   ISSN:1674-2869   CN:42-1779/TQ
LabVIEW嵌入Matlab脚本节点的电机转速控制系统仿真


0 引 言自从1936年英国的考伦德(A·Callender)和斯蒂文森(A·Stevenson)等人给出了 PID控制器的方法以来,PID控制器作为最早实用化的控制器已有70多年历史,现在仍然是工业生产中应用最广泛的控制器. 文献[1]基于高炉的控制系统模型,进行了模糊PID控制器的设计,并进行了仿真验证. PID控制器的参数整定对于控制效果有直接影响,而在实际调试中,先通过理论计算和仿真,然后在实际运行的过程中对这个初值进行调整和完善. LabVIEW具有强大的数学计算功能,采用它作为系统建模和仿真的工具,编写出的仿真程序具有友好的人机界面. 文献[2]采用LabVIEW开发上位机监控界面,开发了整套监控系统,程序运行稳定,传输数据稳定可靠. 文献[3]利用LabVIEW平台研制了家庭智能报警系统,对部分硬件进行软件虚拟化,提高性价比. 用LabVIEW分析PID各参数对系统性能的影响显得更加直观,有助于PID控制器参数的理论整定及其应用. 如文献[4]基于LabVIEW,设计了一种用PID控制算法对直流电机转速的控制系统,充分体现了虚拟仪器技术的灵活性. 笔者在已有工作的基础上,在LabVIEW仿真程序中嵌入Matlab脚本节点,对电机转速系统进行控制,在界面友好的基础上,使得计算更加简洁方便. 1 PID串联校正系统模型PID控制器,通常由比例单元P、积分单元I和微分单元D组成,并通过比例系数KP,积分系数KI和微分系数KD三个参数分别设定. PID控制规律可描述为[5]: u(t)=KP e(t)+KI ■e(t)dt+KD■.(1)式(1)中:u(t)是控制器的输出,e(t)是测量值与设定值的偏差. 常见PID控制系统的结构如图1所示,其中r是参考信号,y是系统输出信号. 图1 PID串联校正系统方框图Fig.1 Diagram of PID series correction system2 使用Matlab Script Node编写仿真程序Matlab的控制系统工具箱有许多成熟的仿真算法,在LabVIEW程序中调用Matlab,能使系统建模更为简便. 使用Matlab Script Node可以在LabVIEW中嵌入Matlab脚本. 仿真程序的功能是根据图1所示系统的参数绘制出阶跃响应、斜坡响应和正弦响应的曲线,并计算系统在阶跃信号作用下的性能指标. 程序有以下输入:PID参数(KP、KI、KD)、被控对象传递函数的分子和分母(num、den)、系统反馈系数(v)、系统输入信号类型(R)、阶跃输入信号的幅值(RA)以及仿真起止时间(T0、Tf)和仿真步长(h). 其中,num和den为向量,分别是分子分母多项式按降幂排列时的一组系数. 程序的输出有:系统有无PID控制器时的响应曲线,系统阶跃响应的稳态值、超调量、上升时间和调节时间. 图2 Matlab脚本节点程序流程图Fig.2 Flow chart of Matlab Script node program脚本程序流程图如图2所示. 脚本中使用step(RA*sys)命令计算系统在幅值为RA的阶跃输入作用下的响应. 对于斜坡响应和正弦响应则运用lsim函数求取. 需要注意的是,step和lsim函数求出的响应值是一个列向量,不能直接赋值给LabVIEW中的数组,应先对其进行转置操作,然后再将结果传回给LabVIEW程序. 另外,dcgain函数可用于求系统响应的稳态值. 由阶跃响应的峰值和稳态值即可求得超调量. 再运用循环结构找出特定响应值对应的时间点,就能计算出上升时间和调节时间. 图3是程序框图. 图3中除了脚本节点外,还有一小段程序,它按照系统输入信号的类型来确定是否隐藏显示性能指标的控件. 由于仿真程序仅计算系统阶跃响应的性能指标,当系统输入为斜坡信号或正弦信号时,应将显示性能指标的控件隐藏. 3 LabVIEW中用状态空间法仿真3.1 PID控制系统状态空间模型如果不想借助Matlab脚本进行仿真计算,则需要使用状态空间法来建立系统模型. 相对于传递函数而言,状态空间描述的是系统的内部模型[5]. 而且状态方程是一阶微分方程组形式,适宜用计算机求数值解. 将图1中的控制器与被控对象合并为G(s),并设系统输出静态反馈增益为v,可得图4所示系统框图.其中R(s),E(s),G(s),Y(s)和B(s)分别是参考信号、误差信号、被控对象,输出信号和测量信号的拉斯变换,系统的开环传递函数为 G(s)=■=■. (2)令被控对象的输入信号U(s)=E(s),按照能控标准型写出开环状态方程 ■=Ax+Buy=Cx.(3)式(3)中, A= 0 1 0 … 0 0 0 1 … 0 ■ ■ ■ ■ 0 0 … … 1-■n -■n-1 … … -■1; B=00 ■ 01; C=[■m ■m-1 … b0 0 … 0].A、C阵中,■j、■i(j=1,2,…,n;i=0,1,…,m)为对G(s)分母首一化后分母、分子各系数,即■j=■,■i=■,且m=n-1. 由图4又有,控制量u=r-vy,代人式(3)得 ■=Ax+B(r-vy).再由 Y=Cx,故 ■=(A-BvC)x+Br=Abx+Br, (4)即得系统闭环状态方程. 图3 使用Matlab脚本节点编写的仿真程序框图Fig.3 Diagram of simulation program in Matlab Script node图4 典型闭环系统方框图Fig.4 Diagram of typical closed loop system3.2 LabVIEW仿真程序为了使程序的结构更加清晰,便于设计和维护,这里采用模块化的设计方法,自顶向下对任务进行分解,然后用一系列子程序分别处理细分出来的小任务,最后,在主程序中将各模块结合起来. 考虑到本仿真程序的功能,至少应设计以下三个子模块. a. 将传递函数转换成状态空间矩阵的模块. 由于仿真程序仍然以系统的传递函数形式作为输入,而使用的仿真计算方法是基于状态空间形式的. 所以,应设计一个子模块将系统的传递函数模型转换成状态空间的形式. 进行模型转换时,首先根据图1中所示系统的PID参数和被控对象的传递函数,求出系统开环传递函数的分子分母. 具体方法是,使用信号运算模板中的卷积函数计算PID控制器传递函数与电动机传递函数乘积的分子分母,然后用多项式模板中的消除尾部零函数对求出的乘积进行约分. 得到开环传递函数后,将其分子分母均除以分母的最高项系数,就得到式(3)中A、C阵的aj、bi(j=1,2,…,n;i=0,1,…,m). 接着,用数组模板中的初始化函数、插入函数以及矩阵模板中的创建特殊矩阵函数建立式(4)的B阵和A阵除去最后一行形成的子阵,用数组插入函数在这个子阵的最后一行后面插入之前求出的aj(j=1,2,…,n),即可得到状态方程的A阵. 在bi (i=0,1,…,m)的后面插入几个0,使其长度与B阵相同,即可得到状态方程的C阵. 最后,用矩阵模板中的矩阵相乘函数按照式(4)可求出Ab阵. b.龙格库塔算法模块. 将系统模型转换成状态空间形式后,就可以进行仿真计算了,本程序采用四阶龙格库塔算法,这是因为其精度较高,而且能够使用LabVIEW中数学模块里的各函数进行实现. 可将式(4)看成对应n个状态变量x=[x1,x2,…,xn]T一阶导数■的n维向量表达式. 当t=tk时刻,欲求tk+1时刻各量,需先求龙格库塔算法的4个斜率. K1=Abxk+Br(tk)K2=Ab(xk+■K1)+Br(tk+■)K3=Ab(xk+■K2)+Br(tk+■)K4=Ab(xk+■K3)+Br(tk+h)然后,再由xk+1=xk+■(K1+2K2+2K3+K4),可得tk+1时刻状态xk+1. 于是相应时刻的输出值为yk+1=Cxk+1. 取k=0,1,2,…,N不断递推,即求得所需时间t0,t1,…,tN各点的状态变量x(tk)和输出量y(tk).此模块中使用一个for循环来实现龙格库塔算法. 在循环结构的输入隧道上单击鼠标右键,选择快捷菜单中的替换成移位寄存器选项,就可以把输入隧道转换成移位寄存器. 将移位寄存器的左端子连接到数组插入函数的输入数组端子上,再把数组插入函数的输出数组端子与移位寄存器的右端子相连. 最后,把每次循环中需要保存的计算结果接入到数组插入函数的插入值端子上,就能将响应曲线中的每个点都保存在数组中输出了.c. 系统稳态值计算模块. 要计算系统的超调量、上升时间和调节时间等性能指标,首先必须求出系统的稳态值,而LabVIEW中没有现成的函数帮助我们计算系统的稳态值,因此必须设计一个子模块计算系统稳态值. 由终值定理可知,只要已知系统输出的拉氏变换,就可根据其与s的乘积在s趋近于0时的极限值确定系统的稳态值. 设系统输入是幅值为A的阶跃信号,系统的开环传递函数的分子分母分别为num和den,反馈系数为v,那么系统的稳态值可表示为 ■s*■=■■.(5)此模块首先使用卷积函数计算开环传递函数的分子分母,并由此计算出式(5)中的A*num和den+num*v. 然后将式(5)表示成字符串的形式. 最后用极限函数求式(5)的值. 极限函数位于数学→脚本与公式→微积分模板中. 将三个子模块结合起来,可以得到仿真主程序.4 仿真实例本文以电枢电压为输入、转子转速为输出的直流电动机转速控制系统为例来进行仿真分析,直流电机转速控制系统的传递函数为 G(s)=■.当输入为单位阶跃信号时,系统的性能指标可归纳为:稳态误差小于1%,调节时间小于2 s,超调量小于5%. 图5 直流电机转速控制系统仿真程序框图Fig.5 Diagram of simulation program of DC motor speed control system图6 直流电机转速控制系统仿真程序前面板Fig.6 Front panel of simulation program of DC motor speed control system图5是主程序框图,其中RK4是龙格库塔算法模块,而dcgain是系统稳态值计算模块. 程序的输入输出与前面使用Matlab脚本节点的仿真程序基本相同,其前面板如图6所示. 从前面板图6可见,可以直接通过相应控件设置输入信号的参数和系统的传递函数,单击循环运行按钮,就能在调整PID控制器各参数的同时观察到系统响应曲线和性能指标的变化.5 结 语用LabVIEW编写的PID控制系统仿真程序,具有界面直观,结构清晰等优点. 在LabVIEW仿真程序中嵌入Matlab脚本节点,在界面友好的基础上,使得计算更加简洁方便. 该程序可用于PID控制器参数的理论整定,比例、积分、微分三个控制参数对系统响应的影响可以直接明了的观察得到. 通过直流电机调速控制系统的实例来分析了方法的有效性和实用性. 致 谢感谢湖北省科技厅和武汉工程大学对本研究提供的资助.