为三相电网输入电压的扇区检测编写C程序

问题描述 投票:0回答:0

有 3 个正弦输入电压,彼此相差 (2/3)pi,幅度为 230 V。程序应检测指定的间隔。从 I 到 VI 有六个正常间隔。在每个正常区间内,一相输入电压最高,一相最低,一相居中(见附图)。由于输入电压的相对大小在正常区间边界附近不清楚,因此在六个正常区间之间插入六个临界区间(I-II,II-III,...,VI-I)。在每个临界区间内,有两个输入电压相似,它们的相对大小很难区分。所以在 2pi 框架中总共有 12 个间隔,每个间隔应该是 pi/6。 该 C 程序是模拟程序的一部分。我测量了 3 相输入电压,它们是我的 c 脚本块的输入。

enter image description here

我开始对正常间隔进行编程,但我不知道如何对临界间隔进行编程。我如何指定每个扇区/间隔是 pi/6 大?在我的 if 情况下,我只指定电压的幅度而不指定相移。

#include <float.h>
#include    <math.h>

#define u1 InputSignal(0, 0)
#define u2 InputSignal(0, 1)
#define u3 InputSignal(0, 2)


#define voltage_sector OutputSignal(0, 0)


#define PI 3.14159265358979323846

//normal intervals
if ((u1 > u2) && (u1 > u3) && (u2 > u3))
{
    voltage_sector = 1;
}

else if ((u2 > u1) && (u2 > u3) && (u1 > u3))
{
    voltage_sector = 2;
}

else if ((u2 > u3) && (u2 > u1) && (u3 > u1))
{
    voltage_sector = 3;
}

else if ((u3 > u2) && (u3 > u1) && (u2 > u1))
{
    voltage_sector = 4;
}

else if ((u3 > u1) && (u3 > u2) && (u1 > u2))
{
    voltage_sector = 5;
}

else if ((u1 > u3) && (u1 > u2) && (u3 > u2))
{
    voltage_sector = 6;
}

c intervals detect
© www.soinside.com 2019 - 2024. All rights reserved.