我们用三目运算符写了个限幅滤波的函数,其实在开发中三目运算符还是非常常见的,今天就开写一下我曾经用三目运算符计算三相电压不平衡的案例。
先说一下什么是三相电不平衡。它一般是指三相电力系统中三相不平衡的程度,用电压或电流负序分量与正序分量的方均根值百分比表示。电压或电流不平衡度分别用ε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("电压不平衡检测结果:%d\\r\\n",Voltage_Unbalance_Check());
printf("电流不平衡检测结果:%d\\r\\n",Current_Unbalance_Check());
getchar();
return 0;
}