|
根据飞机气动的不同,为保证稳定飞行而设置的各项参数也不同,因此根据新装配的飞机,我们需要进行飞行中的参数调整。由于飞机的起降是存在风险的,因此我们希望飞机上天后,在空中根据飞行状态进行实时调整参数,以尽可能少的起落调整出合适的参数来。
在CY2007里,以简便的方式实现了这个实用的功能。在串口服务程序里有这样的代码:
if((sixchar=='$')&&(fifthchar=='W')&&(forchar == 'R')&&(trdchar == 'P')&&(sndchar=='A')&&(fstchar=='R'))
{
wrParaHeadFlag=1;
npos1=0;
}
而后有:
if(wrParaHeadFlag==1)
{
if(npos1<=39)
{
ParaData[npos1]=chuan1;
npos1++;
}
else
{
ParaData[40]='$'+'W'+'R'+'P'+'A'+'R';
for(ti=0;ti<=39;ti++)
{
ParaData[40]+=ParaData[ti];
}
if(ParaData[40]==chuan1) //校验值正确
{
for(ti=0;ti<40;ti++)
{
ParaDataInUse[ti]=ParaData[ti];
} writebuf = 1;
}
npos1=0;
wrParaHeadFlag=0;
}
}
上述程序是接收地面站发过来的新的40个参数,校验无误后将之赋予到使用的ParaDataInUse[]数组里。
而当接收到地面要求读取参数的指令后:
if((sixchar=='$')&&(fifthchar=='R')&&(forchar == 'D')&&(trdchar == 'P')&&(sndchar=='A')&&(fstchar=='R'))
{
rdParaHeadFlag=1;
}
用如下代码发送到地面:
if(rdParaHeadFlag==1)
{
msg[0]='$';
msg[1]='P';
msg[2]='A';
msg[3]='R';
ParaDataInUse[40]=0x00;
ParaDataInUse[40]='$'+'P'+'A'+'R';
for(i=0;i<40;i++)
{
msg[i+4]=ParaDataInUse;
ParaDataInUse[40]=ParaDataInUse[40]+ParaDataInUse;
}
msg[4+40]=ParaDataInUse[40];
AT91F_PDC_SetTx(AT91C_BASE_PDC_DBGU,(char *)msg,45);
rdParaHeadFlag=0;
return;
}
然后在各个控制程序里,大家可以看到参数数组ParaDataInUse[]在各个算法里的应用。改变了参数,就改变了各个状态。
(未完待续) |
欢迎继续阅读楼主其他信息
|