基于MATLAB GUI的火炮调炮动态特性评估系统设计
2020-07-06康海英关贞珍
韩 超,康海英,关贞珍 ,田 鹏
(1.陆军工程大学石家庄校区,河北 石家庄 050003;2.中国人民解放军32256部队,广西 桂林 541000)
0 引言
随着新型现代化战争模式的发展,现代战场环境瞬息万变,对自行火炮的机动性能有了更高的要求。自动调炮性能作为自行火炮重要的战技指标,对其能否实现首群覆盖目标、先敌射击和快速防御有着重要的影响。因此,调炮性能的评估应贯穿于自行火炮日常使用和维修过程中。自行火炮随动系统为火炮调炮控制和驱动机构,机械传动部分为火炮调炮的执行机构。随着实战化进程稳步推进,装备日常训练日益增多,使随动系统和机械传动部分已不再处于出厂时的运行工况,调炮性能呈现弱化趋势。为避免影响战技指标,需定期检测火炮的调炮性能,以及时进行控制器参数和相关机构的调整。
现阶段,火炮调炮性能评估主要集中在调炮精度上,文献[1]~文献[3]主要对调炮精度测量方法及装置进行优化,但是调炮精度只能反映调炮的静态特性。文献[4]虽然可以检测出调炮动态特性指标,但是需要在随动系统中植入硬件板卡,通用性不佳;同时,可能会导致一些兼容性问题。本文针对以上问题,采用将数字姿态传感器安装于火炮运动平台上的方法,实时采集姿态数据。运用MATLAB图形用户接口开发环境(graphical user interface development environment,GUIDE),开发MATLAB图形用户界面(graphical user interface,GUI)软件系统,用于分析采集到的姿态数据,并计算出动态性能指标。同时,该设计还可实现曲线绘制、动画演示等功能,使用人员可结合曲线绘制、动态性能指标和动画演示,对火炮调炮动态特性进行有效评估。系统具有操作简单、通用性强等特点。
1 总体方案设计
1.1 硬件设计
在硬件方面,采用一款高灵敏度的九轴数字姿态传感器。该姿态传感器集成了高精度的陀螺仪、加速度器、地磁场传感器和高性能微处理器,运用先进的动力学解算和卡尔曼动态滤波算法[5-7],能够快速、准确地求解出被测物体的实时运动姿态。姿态测量精度在静态环境下为0.05°、动态环境下为0.1°。由于本系统主要对火炮调炮的动态特性进行评估,而动态特性指标多与时间相关,所以上述姿态测量精度能够满足要求。姿态传感器通过USB转晶体管-晶体管逻辑(transistor-transistor logic,TTL)电话串口模块与电脑连接,可实现姿态数据的采集。硬件结构如图1所示。
图1 硬件结构图
1.2 软件设计
软件系统的设计与开发为本系统设计的重要部分,主要完成对采集数据的分析处理工作。采用MATLAB仪器控制工具箱(Instrument Control Toolbox)完成与姿态传感器之间的串口数据通信[8]。开发MATLAB GUI系统,导入采集到的姿态信息数据,分析处理姿态数据,完成静差、超调量、衰减度、延迟时间、上升时间、过渡时间和峰值时间等动静态性能指标数据的计算。生成动画演示的图片集合,图片间的时间间隔为实际采样时间间隔,使得播放动画时能够与实际调炮过程在时序和姿态上保持一致。动画生成时可设置观察视角,实现从多个角度观看调炮动画演示过程。曲线显示区域可同时支持8组参数曲线显示。数显功能为点击图形窗口上的某一点,对应显示此点的数值和对应时间,便于对比分析。图2为软件流程图。
图2 软件流程图
2 性能指标
自行火炮调炮部分为一个闭环负反馈控制系统,属于自动控制范畴[9-10]。对于自动控制系统,当存在扰动或给定值发生变化时,被调量将会偏离原来的稳定值,系统的调节作用将被调量调回原来的稳定值。因此,在设定值发生变化或有扰动时,被调量呈现先偏移原稳定值,后经过一段变化过程,最终稳定在新设定值或原稳定值。整个调节过程分为两个阶段:第一阶段为被调量处于变化状态的过渡过程,代表了系统的动态特性;第二阶段为被调量处于稳定状态,代表了系统的静态特性[11-12]。静态特性的评价指标一般只有一个,为稳定状态下与设定值的偏差,即静差。
通常,评价系统的动态性能是在阶跃函数作用下进行的。一般认为,阶跃输入对系统来说是最严峻的输入量。若系统在阶跃输入下的动态性能指标能够满足要求,那么系统在其他形式的输入作用下,其动态性能也是令人满意的[13]。阶跃响应动态特性的评价指标较多[14],主要如下。
①上升时间tr。tr为被调量从零上升到设定值所需的时间,是系统响应速度的一种度量。上升时间越短,响应速度越快。
②峰值时间tp。tp为被调量超过设定值第一次到达峰值所需的时间,也是系统响应速度的一种度量。
③超调量σ%。σ%是描述系统相对稳定性的一种度量,可表示为:
(1)
式中:y(tp)为被调量在时刻tp时的值;y(∞)为被调量在时间无穷时的值,即被调量处于稳态时的数值。
④调整时间ts。ts为被调量开始进入偏离稳态值±Δ的误差范围(一般Δ取5%或2%),并且不再超过这个范围的时间。ts越小,表示系统动态调整时间越短。
⑤衰减度ψ。ψ常被用于度量过渡过程振荡衰减速度,可表示为:
(2)
式中:ymax为过渡过程中被调量的最大值;y1为出现ymax一个周期后的被调量的值;ψ为衰减度,ψ越大,说明系统振荡时间越短,其反映了系统稳定性的强弱。
3 MATLAB GUI实现
3.1 MATLAB GUI简介
GUI是采用图形方式显示计算机操作环境的用户接口。与计算机使用的命令行界面相比,图形界面更易操作。MATLAB GUI是MATLAB公司提供的图形用户接口开发环境,可方便地建立图形窗口、按钮、菜单等图形对象,并完成底层编程工作,实现人机交互[15]。
3.2 基于GUIDE指令的界面设计
GUIDE为MATLAB图形用户接口开发环境。GUIDE提供了一系列用于建立GUI对象的工具,可极大地简化设计和建立GUI过程,用于完成GUI图形界面布局和GUI编程。该系统界面主要包括以下几个区域:①数据导入区域,用于导入采集到的数据信息;②曲线显示区域,用于显示参数随时间的变化曲线,可同时支持8组参数同时显示,便于对比分析;③动态图显示区域,用于显示火炮调炮三维和二维运动过程;④性能指标区域,用于填写基本信息,调炮动态过程性能指标,生成报告等;⑤三维动画演示区域,用于生成火炮调炮三维动画,可设置不同角度观察调炮过程;⑥二维动画演示区域,用于生成火炮调炮在高低和方向视图方向上的动画。
3.3 回调函数编写
该系统功能均通过编写回调函数实现,主要包括曲线显示、数显功能、动画演示等。
①数显功能回调函数编写(部分)。
function figure1_WindowButtonDownFcn(hObject,eventdata,handles)
point=get(gca,'currentpoint');
if point(1,1)>=0&&point(1,1)<=B(end)&&point(1,2)>=min(N(:,value))-0.2*abs(max(N(:,value))-min(N(:,value)))...
&&point(1,2)<=max(N(:,value))+0.2*abs(max(N(:,value))-min(N(:,value)))
[hang1,lie1]=min(abs(B-point(1,1)));
y_value=N(lie1,value);
str1=sprintf('%s y=%.2f ',T{1,value},y_value);
str2=sprintf('%s x=%.2f ','时间',point(1,1));
h2=line([point(1,1) point(1,1)],[ylim(1) ylim(2)]);
assignin('base','h2',h2)
h3 = legend(str1,str2,'location','Best');
else
h6=warndlg('请点击到窗口内','提示','modal');
数显功能为点击图形窗口上的某一点,对应显示此点的数值和对应时间。因此,采用figure_WindowButtonDownFcn函数。当鼠标在图形中点击时,调用回调函数。采用get(gca,'currentpoint')获取鼠标点击处的位置信息,同时会显示相应的竖线。竖线与曲线交叉点为要显示的数据点。若鼠标点击处未在图形窗口内,则会有相应提示。
②动画演示(部分)。
function pushbutton7_Callback(hObject,eventdata,handles)
axes(handles.cartoon_axes1);
grid on
barrel_long=40;
plot_tempo1=plot3([20,20+1.5*barrel_long*sin(N(end:end,10)/180*pi)],[25,(25+1.5*barrel_long*cos((N(end:end,8))/180*pi))*...
cos((N(end:end,10))/180*pi)],[20,20+1.5*barrel_long*sin(N(end:end,8)/180*pi)],'color','r','linestyle',...
'--','linewidth',2,'EraseMode','background');
v=[0 0 0;0 50 0;40 50 0;40 0 0;0 0 20;0 50 20;40 50 20;40 0 20];
f= [1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8];
patch('Faces',f,'Vertices',v,'FaceColor','b','EraseMode','background');
angle_turnover=str2num(get(handles.edit16,'string'));
angle_overlook=str2num(get(handles.edit17,'string'));
assignin('base','angle_turnover',angle_turnover);
assignin('base','angle_overlook',angle_overlook);
view(angle_turnover,angle_overlook)
axis([-50 100 -50 100 -50 100])
axis manual
hold on
以上回调函数部分采用火炮三维静态示意图绘制:由plot3函数绘制虚线,表示调炮到位后的位置;由patch函数绘制火炮本体部分。
for s=1:1:length(B)
axes(handles.cartoon_axes1)
grid on
h =animatedline('Color','r','LineWidth',5);
addpoints(h,[20,20+1.5*barrel_long*sin(N(M_num:M_num,10)/180*pi)],[25,(25+1.5*barrel_long*cos((N(M_num:M_num,8))/180*pi))*...
cos((N(M_num:M_num,10))/180*pi)],[20,20+1.5*barrel_long*sin(N(M_num:M_num,8)/180*pi)]);
drawnow
axes_now=gca;
axes_now.Units = 'pixels';
pos =axes_now.Position;
marg = 60;
rect = [0,0,pos(3)+0*marg,pos(4)+0*marg];
M(M_num)=getframe(gca,rect);
以上回调函数部分为火炮调炮三维动态调炮过程示意图绘制,采用animatedline和addpoints函数配合实现。addpoints函数用于根据采集到的角度数据改变调炮方位,函数getframe用于存储每一帧三维画面,供后续三维动画演示使用。
function pushbutton9_Callback(hObject,eventdata,handles)
M=evalin('base','M');
axes(handles.cartoon_axes_movie1);
movie(M,1,10)
以上回调函数为动画演示。在动画生成部分,已将图片集放入结构体M中,只需采用movie函数调用即可。由于采集到的数据之间的时间间隔为0.1 s,相邻图片间的时序差为0.1 s,则movie(M,1,10)中的10代表每秒播放10张图片。这与实际情况相吻合。
3.4 系统运行及分析
为验证系统运行特性,将数字姿态传感器安装于火炮运动平台上,以实时采集火炮调炮时的运动姿态数据。运行火炮调炮动态特性评估系统,将采集到的姿态数据导入系统中。曲线显示区域界面如图3所示。
图3 曲线显示区域界面
图3中,可通过下拉菜单选择显示某一项参数曲线。其中:ax、ay、az分别代表x、y、z三个轴向的加速度;wx、wy、wz分别表示x、y、z三个轴向上的角速度;AngleX、AngleY、AngleZ分别表示x、y、z三个轴向的角度。横轴为时间,纵轴为参数数值。点击图形窗口上任意点,会出现一条竖线。竖线与曲线交点的时间和数值信息会在图形窗口空白处显示。
性能指标区域界面如图4所示。经过底层程序运行,可计算出静差、超调量、衰减度、延迟时间、上升时间等动静态性能指标数据。
图4 性能指标显示区域界面
下面以高低调炮过程为例,分析调炮过程。X轴向角度为火炮高低角度,从图3第1个窗口中的图形曲线可直观看出整个调炮过程较为平稳。图形曲线只有一个波峰,表明系统稳定性较好。从图4性能指标界面可得超调量为0.3%,数值较小,表明系统稳定性较好。同时,上升时间、过渡时间和峰值时间分别为4.45 s、5.02 s和4.75 s,均较短,表明系统响应速度快,能够快速稳定在设定值上。由于此系统采用的数字姿态传感器并不属于高精度检测设备,在静态特性性能指标的测量上相比于精密仪器误差较大,在此不作为有效数据。考虑到火炮调炮速度不会太快,数字姿态传感器响应速度可以满足要求,所以动态性能指标数据,尤其是上升时间、过渡时间和峰值时间等,具备较高的准确度。
在动态图显示区域可生成三维和二维视角的调炮过程。动态图显示区域界面如图5所示。
图5 动态图显示区域界面
图5中,虚线为目标位置。在生成用于播放调炮过程图片集时考虑到了数据采集时间间隔,所以三维和二维动画演示在时序上与实际调炮过程一致。在三维和二维动画生成后,可通过设置三维视角。动画设置区域界面如图6所示。通过观察图5中不同角度下火炮调炮过程,可以配合图形曲线和性能指标参数对火炮调炮动态特性进行有效评估。
图6 动画设置区域界面
4 结论
本文设计了基于MATLAB GUI的火炮调炮动态特性评估系统。该系统采用一款高灵敏度的九轴数字姿态传感器,可实时测量火炮调炮动态姿态数据。数据导入系统后,可同时绘制多达8组曲线;同时,图形窗口上支持数显功能,鼠标点击曲线上任意位置可显示出此点数值和时间。性能指标区域能够显示调炮过程的动静态性能指标数据。动画演示部分能够显示与实际调炮过程同样的过程,且能从三维、高低和方向视角重复演示调炮过程。通过曲线显示、性能指标和动画演示,可对火炮调炮动态特性进行有效评估,操作简单、通用性强。