,,
(1.陕西工业职业技术学院,陕西 咸阳 712000; 2.郑州轻工业学院,郑州 450052;3.深圳市元创兴科技有限公司,广东 深圳 518055)
三维桥式吊车负载能力强、操作灵活,在工业与运输领域有着广泛的应用,如货运码头、建筑工地、铁路建设、钢生产线等。但是,三维桥式吊车是一种典型的非线性、强耦合、欠驱动系统,吊车在实际运行过程中,不仅台车的正常运动会引起末端负载的频繁摆动,由于惯性作用,台车在做正常加减速运动过程中也会引起末端负载的频繁摆动,这在台车的启停两个阶段表现的尤为明显,末端负载的频繁摆动是非常危险的,这也使其成为一种常见的安全隐患。当前,一般是通过经验丰富的工人来操纵吊车,在操作过程中,工人需要利用他们的经验并通过其眼睛的实时观测来估计台车的当前位置与末端负载摆动角度的大小,然后选择合理的动作序列来快速抑制负载的摆动,并尽快将它运送到指定位置[1]。
为了提高三维桥式吊车的自动化程度和安全性,设计一套合理的自动控制系统就很有必要了,但是要实现对吊车安全高效的控制还面临着许多困难,因此,这类系统的控制已经成为当前的研究热点。
本文研究主要基于元创兴科技有限公司生产的硬件平台REI-BC-3D,如图1所示,该平台根据真实三维桥式吊车系统的组成结构设计,主要包括支撑框架、桥架、台车以及负载,驱动装置主要包括3台直流伺服电机,它们分别负责为桥式吊车系统提供台车沿方向运动驱动力、台车与桥架沿方向运动的驱动力以及提升负载的卷轴驱动力,负载可以由支撑框架结构空间中的任意起点运动到任意终点。
图1 三维桥式吊车硬件平台及对应模型坐标系
将三维桥式吊车硬件平台抽象简化后建立对应的模型空间坐标系,如图1所示。其中有五个是可以测量的量:xw表示台车距导轨中心的距离(未在图中标出);yw表示导轨距框架结构中心的距离(未在图中标出);R表示吊绳的长度;α表示x轴正方向与吊绳之间的夹角;β表示z轴负方向与吊绳所在平面在yz面上的投影之间的夹角。
模型坐标系中其他符号意义如表1所示。
表1 三维桥式吊车模型坐标系符号意义
选择适当的坐标系是数学建模过程中的一个重要环节[2]。为了描述5个独立的可测量变量,在坐标系中我们用了两种坐标:笛卡尔坐标和球面坐标,它们的原点为同一点,正方向如图1所示,其中,xw,yw为笛卡尔坐标,决定了台车的位置;α,β,R为球面坐标,决定了重物的位置,它们之间的关系为:
(1)
系统采用加速度为输入,根据牛顿第二定律有:
(2)
这里Sx,Sy,Sz分别表示重物对台车在各个坐标轴上的分力,有:
(3)
假设吊绳是柔性的且可伸展的:
即Sx(xc-xw)+Sy(yc-yw)+Szzc>0,又有S=FR-TR,结合式(3),式(2)可变为:
(4)
令:
(5)
则式(4)变为:
(6)
将式(1)两边分别对t进行二次求导,R为t的函数即R(t),则有:
(7)
(8)
又令sn≡sinxn,cn≡cosxn,结合式(6)~(8)得到吊车系统的状态空间描述方程为:
(9)
其中:
(10)
由上可知,此时吊车系统的状态空间描述方程是非线性的,为了降低维度,接下来我们需要对其进行近似线性化处理。
三维桥式吊车控制目标是:在运动过程中尽量将系统控制在平衡点[0,0,0,0,0.5π,0,0,0,R,0]附近位置,且考虑到吊车在实际运动过程中摆动幅度较小(摆动角度不超过10°)。因此,我们将系统在此平衡点处进行近似线性化,这时:
(11)
将式(11)代入式(1),然后结合式(2)~(8)得到吊车系统线性化后的状态空间描述方程为:
(12)
令x=[x1,x2,x3,x4,x5,x6,x7,x8]T,y=x,u=[u1,u2]T,则系统的状态空间描述方程为:
(13)
A表示系统状态矩阵,B表示系统输出矩阵,其中:
(14)
由式(14)可以看出三维桥式吊车系统在X方向与Y方向的状态变量完全相互解耦,二者之间不存在相互影响,因此在X、Y方向可以分别采用相同的控制策略。解耦完成后的三维桥式吊车系统状态空间描述方程为:
(15)
其中:
(16)
(17)
综上所述,三维桥式吊车系统在其平衡点位置进行线性化后,即简化成线性定常系统,且系统在X、Y方向相互解耦,控制独立,因此只要对任意一个方向进行分析即可,此文中以X方向为定性分析方向。
根据现代控制理论可知,系统的可控性是最优控制器设计的前提,所以在对三维桥式吊车系统设计最优控制器之前,必须先进行三维桥式吊车系统的可控性分析,根据线性定常连续系统完全可控性判据:
S=[B,AB,A2B,…AnB]
(18)
得:
rank(Bx,ABx,A2Bx,A3Bx)=4
(19)
系统可控性判断矩阵的秩为4,刚好等于X方向的状态变量(位移、速度、摆角、角速度)维数, 根据系统可控性判断理论依据可知系统是可控的,因此可以对三维桥式吊车系统进行控制器的设计。
应用经典控制理论设计控制器能够解决很多简单系统(例如:单输入单输出系统)的控制问题,但是对于实际遇到的许多复杂系统(例如:多输入多输出系统、阶次较高的系统),往往得不到满意的控制效果,这时就需要有在系统状态空间模型下建立的最优控制策略。
LQR (linear quadratic regulator)即线性二次型调节器,一般称线性二次最优控制器,属于现代控制器范畴,是发展最早也最为经典的一种最优控制策略, LQR可得到系统状态反馈的最优控制规律,可快速建立起系统最优闭环控制模型。一般使用对象是以系统状态空间方程表达的线性系统,而目标函数为系统状态和系统输入的二次型函数,LQR控制器设计也可以认为就是在线性系统约束条件下选择控制输入使二次型目标函数值达到最小[3-5]。LQR控制器二次型目标函数如下:
(20)
式中,Q表示衡量系统状态量的权重矩阵,一般为正定或半正定对称矩阵,R表示衡量系统输入量的权重矩阵,一般为正定对称矩阵。Q为状态量的权阵,元素越大,意味着该变量在函数中越重要,要求目标函数值最小,也就是说该状态的约束要求最高。R为控制量的权阵,同样,对应的元素越大,这意味着,控制约束越大。U为寻求控制向量,U应该使目标函数值最小。根据极值原理,我们可以导出LQR控制器的最优控制规律:
U=-R-1BTPx=-Kx
(21)
式中,K为最优反馈增益矩阵,P为常值正定矩阵,P必须满足黎卡夫(Ricatti)代数方程:
PA+ATP-PBR-1BP+Q=0
(22)
因此LQR控制器设计归结于求解黎卡夫方程,并求解出反馈增益矩阵K。
Matlab 的应用为LQR 控制器设计与仿真提供了条件,在Matlab控制工具箱中,已经包含了求解二次型最优控制的函数,其调用格式为:
K=lqr(A,B,Q,R)
(23)
当三维桥式吊车系统受到外部干扰而处于扰动状态并导致负载大范围偏离系统原平衡位置时,则要求系统具备自我调节能力,能快速消除外部干扰,并求出使其保持平衡状态的最优控制输入量,即为三维桥式吊车系统最优控制器设计问题。
对于三维桥式吊车系统来说,因为系统状态矩阵A和系统输出矩阵B在上一节已经确定,而K由权重矩阵Q与R唯一决定,故此Q、R的选择尤为重要,所以只要选定了相应的Q、R两个权重矩阵,反馈增益矩阵K即可得出。
在LQR控制器设计中,一般将衡量输入量的权重矩阵R取为R=[1],为了满足正定的要求,并针对三维桥式吊车系统设计实例,衡量状态量权重矩阵Q选为如下形式:
Q=diag(Q1,Q2,Q3,Q4)
(24)
式中,Q1、Q2、Q3、Q4四个元素分别表示台车位移权重、台车速度权重、负载摆动角度权重、负载摆动角速度权重。选取不同的元素值并计算。
在Matlab Command窗口编写LQR控制器反馈增益矩阵K的计算程序, 在此以X方向为例,计算代码如下:
clc;
R=0.56; % the length of the rope;
g=9.81; % the acceleration of the gravity
Ax= [0 1 0 0;
0 0 0 0;
0 0 0 1;
0 0 -g/R 0];
Bx= [0;1;0;-1/R];
R=[1];
Q=diag ([1 2 1 5]);
K=lqr (Ax,Bx,Q,R);
为了取得更好的控制效果,需根据仿真结果多次调整衡量状态量的权重矩阵Q,仔细观察矩阵Q在选取不同元素值情况下系统控制性能的变化并记录。
Simulink是Matlab软件中的重要组件,是一个基于控制模型设计的框图环境,只需将系统功能模块连接,构成所需要的控制系统模型,就可以快速进行仿真与分析实验,为控制器的设计提供了很大的便利。
根据系统状态反馈增益矩阵K在Simulink环境下搭建三维桥式吊车系统仿真模型如图2所示。
图2 三维桥式吊车LQR控制仿真模型
将三维桥式吊车系统X方向状态空间方程输入到模型中,然后将反馈增益矩阵K对应输入到LQR控制器模块,即可开始仿真实验。仿真终止时,打开系统响应示波器观察响应曲线。
当计算得到的反馈增益矩阵K=[1.076,-2.0648,4.258,-2.1564]时,仿真结果如图3所示。
其中横坐标表示响应时间。
图3 三维桥式吊车LQR控制仿真结果1
响应曲线表明:在给定一定干扰后,吊车系统超调过大,调整时间过长,而且存在一定的稳态误差,仿真结果说明此反馈增益矩阵K对系统控制效果不佳,需要根据约束条件重新调整权重矩阵Q并重新计算优化以后的K。
当计算得到的反馈增益矩阵K=[2.055,-3.0392,2.3976,-3.1374]时,优化后的仿真结果如图4所示。
图4 优化后的三维桥式吊车LQR控制仿真结果
优化后的响应曲线表明:吊车系统在同样的干扰情况下,可以在较短时间内收敛并达到新的平衡状态,而且稳态误差很小,仿真结果说明此反馈增益矩阵K具有较好的控制效果。
三维桥式吊车系统采用PC机+运动控制器的控制架构,PC机周期性从运动控制器中读取位置编码器和摆角编码器反馈数据,然后将原始硬件数据(脉冲信号)转换并计算出各个状态变量,经过其上运行的控制算法计算出最优控制量,并将控制量通过以太网通讯协议发送给运动控制器,运动控制器对控制量进行指令解析与运动规划并产生相应的控制信号发送给伺服驱动器,伺服驱动器对控制信号进行放大并驱动对应伺服电机转动,带动各轴运动,最后实现三维桥式吊车的定位与防摆闭环控制。三维桥式吊车控制原理如图5所示。
图5 三维桥式吊车控制原理框图
三维桥式吊车实时控制程序首先要初始化运动控制器并进行连接,保证控制程序与运动控制器的正常通讯,完成以后启动多媒体定时器(定时精度可达毫秒级),开始进入定时器中断服务函数,三维桥式吊车系统控制周期设定为10 ms(经验值),也就是说,在这10 ms时间内,中断服务函数必须依次完成:读取X、Y两个方向的位置编码器和摆角编码器脉冲信号;根据脉冲当量(涉及编码器分辨率、减速器减速比、运动控制器倍频数等硬件参数计算)将脉冲信号分别转换成台车位移、负载摆动角度;通过差分求导方式对X、Y两个方向台车位移和负载摆动角度进行求导,得到台车运动速度和负载摆动角速度;最后根据所采用控制算法转换而成的控制量计算公式分别计算X、Y两个方向的控制量并单独下发等任务。
根据上述控制流程描述设计三维桥式吊车系统实时控制程序流程图如图6所示。
图6 三维桥式吊车实时控制程序流程图
为了减少程序代码编写的工作量并增强控制程序的可观性,可以采用Simulink进行流程式实时控制程序的设计,此方法最大的难点就是要用户自己建立起控制系统模型与硬件设备的接口函数,包括反馈的快速采集函数与控制量的精确执行函数等,而Simulink中提供的S函数可以很好地完成这类工作,S函数是System Function的简称,用C或C++等高级语言编写的S函数可以实现对硬件端口的操作[4,6-7]。
首先根据控制程序流程图在Simulink中建立三维桥式吊车控制系统模型,对于涉及与运动控制器进行数据交互的模块则全部采用S函数实现,主要包括运动控制器初始化模块、编码器值读取模块、控制量下发模块。
运动控制器初始化模块S函数部分代码如下:
//打开运动控制器
Connected=DMCOpen(nControllerIndex,NULL,&m_hDmc);
if(Connected){
//连接控制器失败
ssSetErrorStatus(S, "Connect Controller failed!");
return;}
sprintf(szCommandStr,"CW,1;CE0,0,0;MT1,1,1;KP4,4,4;KI0,0,0;KD20,20,20 ");//设置运动控制器控制模式为速度模式
DMCCommand(m_hDmc,szCommandStr,szReplay,sizeof(szReplay));
//编码器计数清零并上伺服
sprintf(szCommandStr,"DP0,0,0,0;DE0,0,0,0;SH ");
DMCCommand(m_hDmc,szCommandStr,szReplay,sizeof(szReplay));
控制量下发模块S函数部分代码如下:
*y1 = ssGetOutputPortRealSignal(S,0);
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
InputRealPtrsType uPtrs1= ssGetInputPortRealSignalPtrs(S,1);
v= *uPtrs[0];
m_hDmc=*uPtrs1[0];
//控制量单位转换
acc = (long)(fabs(v)*1000*4*20/(48*5.08/1000));
if(v < 0) vel = -1000000;//极限速度
if(v > 0) vel = 1000000;//极限速度
if(v== 0) vel = 0;
sprintf(szCommandStr,"ACX=%ld;DCX=%ld;JGX=%ld;BGX ",(long)acc,(long)acc,(long)vel);//下发控制量
DMCCommand(m_hDmc,szCommandStr,szReplay,sizeof(szReplay));
编写完成后的控制程序界面如图7所示。该程序可以直接对三维桥式吊车系统进行实时控制,达到定位及防摆的实验效果。
图7 三维桥式吊车Simulink控制程序界面
本文首先详细阐述了三维桥式吊车系统建模及仿真,包括应用牛顿力学定理建立系统动力学模型,对系统状态空间描述方程进行线性解耦,解耦后证明三维桥式吊车控制问题实质是X、Y两个方向的控制问题,即可以看成是两个龙门吊车的运动过程,大大简化了控制难度,然后以现代控制理论为理论依据,对吊车系统进行可控性分析,随后根据系统精确数学模型设计经典的线性二次型最优控制器,并在Simulink环境下对控制器进行仿真,对仿真结果进行观察和分析,最后使用C++与MATLAB混合编程技术设计控制程序对系统进行真实的控制实验,实现了三维桥式吊车的固定摆长与变摆长快速防摆控制,非常直观地感受设计的控制器的控制性能。
参考文献:
[1] 马博军,方勇纯,刘先恩,等. 三维桥式吊车建模与仿真平台设计[J].系统仿真学报,2009,21 (12) : 3798-3803.
[2] 马博军,方勇纯,王鹏程, 等.三维桥式吊车自动控制实验系统[J].控制工程,2011, 18 (2) :239-243.
[3] 王仲民,孙建军, 岳 宏. 基于LQR的倒立摆最优控制系统研究[J]. 工业仪表与自动化置, 2005,42(3) : 6-8,32.
[4] 姚 俊,马松辉.Simulink建模与仿真[M].西安:西安电子科技大学出版社,2002.
[5] 李劲松,颜国正,冯剑舟.基于线性二次最优控制策略的倒立摆实验系统搭建[J]. 实验室研究与探索,2010, 29(3) : 43-45.
[6] 吴晓燕,张双远.MATLAB在自动控制中的应用[M].西安:西安电子科技大学出版社,2005.
[7] 赵文龙,陈能祥,曹 博,等.平面二级倒立摆的线性二次最优控制[J].实验室研究与探索,2013,32 (11) :56-59.