我正在尝试使用 this circuit 跟踪 PLECS(电力电子仿真软件)中的引用。 。 C 脚本是我在下面编写的代码,它基本上告诉 IGBT 器件打开 (0) 和关闭 (1)。但是,我不明白为什么当电容器 (VCS) 两端的电压明显不接近零伏时,我会得到“0”作为输出,如shows this figure .
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 脚本 block 中,信号值只能通过使用宏来访问,而不能通过指针算术来访问。例如,我声明输入和输出如下:
#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
最佳答案
您的figure显示 ref < isb
的地方和vcs
不为零。你的if
都不是也不是你的else if
包含此条件,因此程序执行不会经过它们中的任何一个子句。因此,对于这些情况,代码实际上是:
int out;
return out;
因此,它返回一个未初始化的值。这可能恰好具有返回零的效果,但该行为是不可靠的。
要解决此问题,请初始化 out
在这些情况下您想要返回的内容或添加 else
设置它的子句。
关于c - else if 条件执行,尽管条件不成立,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50089324/