Python 2.7 - 如何访问和控制浮点控制字

时间:2015-03-11 14:23:30

标签: python dll com

我正在使用Python 2.7通过COM DLL控制功耗仿真软件OpenDSS。我遇到的问题似乎与COM DLL接口覆盖的浮点控制字有关。

我可以在OpenDSS的独立版本中执行电路求解,但是当尝试通过COM DLL执行此操作时,求解执行的精度将丢失。

我在win32com.client下使用Dispatch函数,如下所示: self.dss = Dispatch(“OpenDSSEngine.DSS”)

建立连接后,OpenDSS具有一些内置功能,可以在不同级别访问它 - self.dss.Text,self.dss.ActiveCircuit,self.dss.ActiveCircuit.ActiveCktElement,self.dss.ActiveCircuit.Solution

然后将给定的电路加载到软件中并使用以下代码进行编译: self.dss.Text.Command = r“Compile'”+ circuit_path + circuit_file

**请注意,此初始编译似乎正确解决了

在通过以下方式对电路进行任何更改后,使用后续求解命令会出现错误: self.dss.ActiveCircuit.Solution.Solve()

OpenDSS的创建者评论说,使用MATLAB控制软件时发生了与FPCW类似的问题。很明显,基于具有非常小的电阻值的开关产生非常高的电流,这是不准确的。这似乎意味着电压值除以非常小的电阻值,并且由于FPCW缺乏精度,软件认为即使结果电流不准确,它已达到可接受的解决方案。

如何在Python中访问FPCW的值?我怎样才能控制它以达到所需的精度?

*编辑:

我发现以下主题在Delphi中讨论类似的问题 - Floating point number conversion horror, is there a way out?

有人知道Set8087CW()函数的Python等价物吗?

干杯, 克里斯

0 个答案:

没有答案