DMC 在线计算模块 C 代码:
void CChildView::MyDMCFuno
{
int i;
int d e lay =0;
dm ces u e =0;
dm ce =d mcyoutput[0]-dmcyl];//实际值一预测值
fOT (i= del ay;i<=dmcewN -l;i++)
厦
dmcy[i]=dmcy[i]+dmc h[i]*dmc- e}/预测值校正
}
for(i=delay;i<=dmcesN -2;i++)
{
dmcy[i]=dmcy[i+l];//移位设置该时刻初值一下一时刻
}
for(i=dclay;i<=dmcesP -l;i++)
{
dm cu e+ =dmcesd[ i]*(1-dmcy[i]))/计算控制增量
)
dmc-u[ 1]+=dmc-ue ;//计算控制量
for(i=delay;i<=dmcesN -l;i++)
{
dm c_y [i] =dmcy[i]+dmc-a[ i]*dmc-ue ;//计算输出预测值
}
void CChildView::DMCMakeO
{
int i;
me nu esfl ag1=FALSE;
dm c_y ou tput[0]=0;
for( i= l;i< =6;i++)
{
dm c_y ou tpu t[i] =0;//稳态启动
}
for(i=O;i<=dmceN -l;i++)//误差校正向量
{
dm ces h [i ]=1.0;
dm c-y [i]= l;p 第一步取 1
}
dmc- u[0]=0;
dmc- u[l]=0;
for(i=O;i<=dmces P-l;i++)
{
dm car d[ i ]=matrix 一[i];
}