首页 > 解决方案 > Else if 条件执行,尽管条件不成立

问题描述

我正在尝试使用此电路跟踪 PLECS(电力电子仿真软件)中的参考。C-Script 是我下面的代码,它基本上告诉 IGBT 设备打开 (0) 和关闭 (1)。但是,当很明显电容器(VCS)两端的电压甚至不接近零伏时,我无法理解为什么我得到“0”作为输出,如图所示

int track(double ref, double isb, double vcs) {
    int out;

    if(ref > isb){
        out = 1;
    }
    else if(ref < isb && vcs == 0.0){
            out = 0;
        }

    return out;
}

在 C 脚本块中,信号值只能通过使用宏来访问,而不是通过指针运算。例如,我声明 Inputs 和 Output 如下:

#define REF Input(0) // Reference Current
#define ISB Input(1) // Snubber Output Current
#define VCS Input(2) // Capacitor Voltage
#define IGBT Output(0) // IGBT Firing

标签: c

解决方案


您的数字显示了ref < isbvcs为零的地方。yourif和 your都不else if包含此条件,因此程序执行不会通过它们的任何一个子句。因此,对于这些情况,代码实际上是:

int out;

return out;

因此,它返回一个未初始化的值。这可能恰好具有返回零的效果,但这种行为是不可靠的。

为了解决这个问题,要么初始化out你想要在这些情况下返回的内容,要么添加一个else设置它的子句。


推荐阅读