class="markdown_views prism-atom-one-light">
具体是项目工程代码。
(Var)=((Var)>=(Max))?(Max):(Var)//意思是if var>=max,则var+max,否则,var=var
k |= SW1_VALUE//位或,意思是把k的值和SW1_VALUE位按位或后,然后再赋值给SW1_VALUE。
if (ShadowScanState.bit.ScanFlag)是什么意思?shadowcanstate是阴影面积扫描吗
计算Id_reference的时候,首先是计算f32VboostErr,然后对gain进行限定,然后通过BusCon_Reg.f32BusErr_New = f32VboostGain * f32VboostErr计算出Bus_error;然后计算出Bus_ Err_new,就算这个是为了得到BusIL-ref,如果说放电状态,则把BusIL-ref赋值给IL_Peak_ref,这个在以后计算currentPID的时候会用到;
AD_Acc.f32RmsGFCI += ADValue.f32GFCI * ADValue.f32GFCI;
AD_Sum.f32RmsGFCI = AD_Acc.f32RmsGFCI;
RealValue.f32RmsGFCI = sqrt(AD_Sum.f32RmsGFCI * f32rcnt);
通过上面的三次转换就知道rms值是怎么计算得到的了。其他的都一样;
平均值:
平均值的计算就比较简单了;
AD_Acc.f32GFCI += ADValue.f32GFCI;
AD_Sum.f32GFCI = AD_Acc.f32GFCI;
RealValue.f32GFCI = (AD_Sum.f32GFCI * f32rcnt);