爱用建站下载,建站哪个网站好,网站设置银联密码,西宁网站建设兼职控制对象的执行机构可能存在多个#xff0c;举例#xff0c;压力通过变频和翻板这两个执行机构调节。默认调节翻板。这里定义一个全局布尔变量 bfgflag 初始默认为0#xff1b;优先调节翻板#xff0c;当翻板处于极限阀位时#xff0c;bfgflag 赋值为1#xff0c;开始调节… 控制对象的执行机构可能存在多个举例压力通过变频和翻板这两个执行机构调节。默认调节翻板。这里定义一个全局布尔变量 bfgflag 初始默认为0优先调节翻板当翻板处于极限阀位时bfgflag 赋值为1开始调节变频同样当变频处于极限阀位时bfgflag 赋值为0。当偏差特别大时翻板和变频一起调节。 x表示阀位开度值数组 y表示阀位投切位数组 e表示偏差 em表示偏差最大值 xl表示阀位下限数组 xh表示阀位上限数组 //选主阀组
//数组返回值函数返回值要么是全局变量要么是静态变量。
BOOL bfgflag0;//
double out2[2];//动作函数中无需定义变量接收数组元素
double* BFGV2Sel(double *x,BOOL *y,int n,double e,double em,double lmn,double *xl,double *xh)
{int model;//double out2[2];//动作函数中需要定义变量接收数组元素int i;//C写法//double *rangefloat NULL;//BOOL *rangebool NULL;//double *rangenumbers NULL;//double *out NULL;//C写法和WinCC写法double rangefloat[2]{0,0};//BOOL rangebool[2]{0,0};double xlfloat[2]{0,0};//double xhfloat[2]{0,0};//for(i0; in;i){rangefloat[i]x[i];rangebool[i]y[i];xlfloat[i]xl[i];xhfloat[i]xh[i];}if( rangebool[0] !rangebool[1]) model1;if(!rangebool[0] rangebool[1]) model2;if(!rangebool[0] !rangebool[1]) model3;if( rangebool[0] rangebool[1]) model4;switch(model){case 1:out2[0]x[0]lmn;out2[1]x[1];break;case 2:out2[0]x[0];out2[1]x[1]lmn;break;case 3:out2[0]x[0];out2[1]x[1];break;case 4:if(!bfgflag){if(fabs(e)em){out2[0]x[0]lmn;out2[1]x[1]lmn;}else {out2[0]x[0]lmn;out2[1]x[1];}if(out2[0]xh[0] out2[0]xl[0]){bfgflag1;}else{bfgflag0;}}else{if(fabs(e)em){out2[0]x[0]lmn;out2[1]x[1]lmn;}else {out2[0]x[0];out2[1]x[1]lmn;}if(out2[0]xh[1] out2[0]xl[1]){bfgflag0;}else{bfgflag1;}}break;default:out2[0]x[0]lmn;out2[1]x[1]lmn;bfgflag0;
}//printf(%4.4f——%4.4f\r\n, out2[0], out2[1]);return out2;
}