比例导引法是在自寻的导弹上采用较多的一种导引规律,它是指在导弹飞向目标的过程中,导弹速度方向的变化率与目标视线的变化率成比例,这种导引规律易于工程实现,同时通过选择合适的导引比,就不会需要太太的法向过载,对不同机动特性的目标适应能力也较强,因此广泛应用于各类导弹上。
激光半主动制导能实现间接瞄准,可采用准比例导引法,导弹弹道特性好,对目标机动有一定的适应性。比例导引法实现了打了不用管的作战要求,这就提高了武器系统的生存能力,同时增加了其攻击效率。
三点法导引是指导弹在攻击目标的导引过程中,导弹始终处于制导站与目标的连线上。如果观察者从制导站上看目标,则目标的影像正好被导弹的影像所覆盖。因此,三点法又称目标覆盖法或重合法。
三点法导引是指导弹在攻击目标的导引过程中,导弹始终处于制导站与目标的连线上。如果观察者从制导站上看目标,则目标的影像正好被导弹的影像所覆盖。因此,三点法又称目标覆盖法或重合法。
(1-1)
其中: ——目标到制导站距离;
Rm——导弹到制导站距离;
Vt——目标速度;
V——导弹速度;
——目标高低角、目标前置角;
——导弹高低角、导弹前置角;
——、与基准线之间的夹角。
1.3 初始条件
设坦克作水平等速直线运动,如图1.2所示,Vt=27m/s ,反坦克导弹按三点法拦截目标,并作等速飞行,270m/s 。攻击平面为一水平面,制导站静止。导弹开始导引瞬间的攻击条件Rt=4700m ,Rm0=50m,qm0=qt0。
选取地面坐标系oyz,原点o与制导站重合,oz轴平行于目标的运动方向(如图1.2所示)。将方程组(1-1)改写成便于数值积分的形式,即
仿真飞行图如下
类C代码(此代码可移植到Matlab中模拟攻击)如下:
//////////////////////比例引导计算部分////////////////////////////////
//
// 微分算法
// 1、ψv=Qm+arcsin(Vt/v*Rm/Rt*sinQm) ψv定义为vv
// 2、dRm/dt=Vcos(Qm-ψv) 定义为Rm
// 3、Rt/dt=-VtcosQm 定义为Rt
// 4、dQm/dt=-V/Rm*sin(Qm-ψv) 定义为Qm
/////////////////////////比例引导计算部分/////////////////////////////
//飞行时间暂定为60秒
time qssj //起始时间
time zzsj //终止时间
long sjbc //时间步长 秒
int i11
string cs1
double cs2 //目标速度 Vt
double cs3 //导弹速度 V
double cs4 //初始导弹与测站的距离 Rm
double cs5 //目标到测站的距离 Rt
double cs6 //角度 Qm
double vv
double y11
double z11
double s11 //目标移动距离
double Rm
double Rt
double Qm
cs1=sle_1.text
cs2=double(sle_2.text)
cs3=double(sle_3.text)
cs4=double(sle_4.text)
cs5=double(sle_5.text)
cs6=double(sle_6.text)
Rm=cs4
Rt=cs5
Qm=cs6
vv=0
qssj=now()
DELETE all FROM "blydjsdtsj" using itrans_destination ; //清空 飞行动态数据表
for i11=0 to 25 step 1
// b1bm=dwc_tjb.getitemstring(i,zdb1l)
// dwc_tjb.scrolltorow(i)
vv=Qm+Asin((cs2/cs3)*(Rm/Rt)*sin(Qm)) //ψv定义为vv
Rm=Rm + cs3*cos(Qm - vv) //z轴上的速度
Rt=Rt - (cs2*cos(Qm)) //y轴上的速度
if i11=0 then
Rm=cs4
end if
Qm=Qm - (cs3/Rm*sin(Qm - vv))
// 1、ψv=Qm+arcsin(Vt/v*Rm/Rt*sinQm)
// 2、Rm=Vcos(Qm-ψv) ψv定义为vv
// 3、Rt=-VtcosQm
// 4、Qm=-V/Rm*sin(Qm-ψv)
zzsj=now()
sjbc=secondsafter(qssj,zzsj)
st_10.text=string(sjbc)
y11=Rt
z11=Rm
s11=CS2*sjbc
INSERT INTO "blydjsdtsj"
( "ddxh",
"sx1",
"sy1",
"sz1",
"qm",
"rm",
"rt",
"sj",
"mbsd")
VALUES ( 'k802',
:y11,
:y11,
:z11,
:Qm,
:Rm,
:Rt,
:sjbc,
:s11) using itrans_destination;
commit;
if(round(Rm,0)=round(Rt,0)) then
exit
end if
next