我們用三目運算符寫了個限幅濾波的函數(shù),其實在開發(fā)中三目運算符還是非常常見的,今天就開寫一下我曾經(jīng)用三目運算符計算三相電壓不平衡的案例。
先說一下什么是三相電不平衡。它一般是指三相電力系統(tǒng)中三相不平衡的程度,用電壓或電流負序分量與正序分量的方均根值百分比表示。電壓或電流不平衡度分別用εu或εI表示。簡單理解就是不同相的電壓或者電流有較大差別的時候就是不平衡。
話不多說直接上代碼:
#include < stdio.h >
typedef unsigned int uint32_t;
typedef unsigned short int uint16_t;
typedef unsigned char uint8_t;
uint8_t Voltage_Unbalance_Check(void)
{
uint32_t Max;
uint32_t UA,UB,UC;
UA = 250;
UB = 210;
UC = 220;
Max = (UA >UB?UA:UB);
Max = (Max >UC?Max:UC);
printf("Max is : %d\\r\\n",Max);
if( (10*(Max-UA)) > UA ||(10*(Max-UB)) > UB ||(10*(Max-UC)) >UC )
return 1;
else
return 0;
}
uint8_t Current_Unbalance_Check(void)
{
float Max;
float IA,IB,IC;
IA = 20.5;
IB = 20.1;
IC = 20.2;
Max = (IA >IB?IA:IB);
Max = (Max >IC?Max:IC);
printf("Max is : %lf\\r\\n",Max);
if( (3*(Max-IA)) > IA ||(3*(Max-IB)) > IB ||(3*(Max-IC)) >IC )
return 1;
else
return 0;
}
int main(void)
{
printf("電壓不平衡檢測結(jié)果:%d\\r\\n",Voltage_Unbalance_Check());
printf("電流不平衡檢測結(jié)果:%d\\r\\n",Current_Unbalance_Check());
getchar();
return 0;
}