我的问题类似于Is it possible to return multiple values from an external file to Dymola?,所以它是这样的:
如何在不使用Record的情况下从外部函数返回多个输出(如果可能的话)?如果不使用记录是不可能的-你能解释一下如何使用记录吗?我对使用外部函数还比较陌生,所以这里可能缺少一些非常基本的东西。
我已经写了一个示例模型(如下),希望能更全面地给予我试图实现的目标。
提前感谢您的帮助!
model ExampleMultipleOutputs "Example model to output multiple values"
parameter Real a = 1 "Example real parameter";
parameter Integer b = 2 "Example integer parameter";
Real y1 "Declare output y1";
Real y2 "Declare output y2";
Real y3 "Declare output y3";
protected
function threeOut "Output three Real values from external function"
input Real a;
input Integer b;
output Real y1 "Output 1";
output Real y2 "Output 2";
output Real y3 "Output 3";
external"C" three_Out(
a,
b);
annotation (
Include="
void three_Out(double a, int b, double* y1, double* y2, double* y3){
*y1 = a;
*y2 = b;
*y3 = a+a;
}
");
end threeOut;
equation
(y1, y2, y3) = threeOut(a=a, b=b);
end ExampleMultipleOutputs;
来自这个示例模型的编译器消息声明“dsmodel。c(69):错误C2198:'three_Out':调用的参数太少”,这让我觉得我的C代码不正确,我设置函数的方式不正确,或者以上所有。很有可能,因为我不经常写C。
1条答案
按热度按时间11dmarpk1#
不知道为什么这不是点击几个小时前,但我发现了一个解决方案,工程。我只是不得不盯着this previous post看了一会儿。希望这个完整的例子对其他人有帮助。