【发布时间】:2018-04-30 03:27:25
【问题描述】:
我正在尝试使用this circuit 跟踪 PLECS(电力电子仿真软件)中的参考。 C-Script 是我下面的代码,它基本上告诉 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 脚本块中,信号值只能通过宏访问,不能通过指针算法访问。例如,我声明 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
【问题讨论】:
-
首先,如果
ref == isb或ref < isb && vcs != 0,这将返回一个不确定的值(未初始化的out),这甚至可能是一个陷阱表示-> 未定义的行为。其次,您忘记准确描述您的输入、预期输出和实际输出是什么,请参阅minimal reproducible example。 -
如果你已经像这样从
out制作了 UB,那么在这个省略的、无上下文的示例中我们看不到的还有什么你做错了?因此:请 MCVE。另一件事:您的问题可以被解读为 (A) 执行了错误的分支,那么为什么我的测试没有达到我的预期?或者 (B) 两个分支都执行,那么我到底如何给编译器足够的余地来做到这一点? -
idownvotedbecau.se/beingunresponsive -- 哦,投票结果也很接近。没有minimal reproducible example,这个问题没有任何意义,应该消失。
标签: c