FMI - Amesim,可以在 ModelExchange 下修改局部变量吗?
FMI - Amesim, Can be modified Local variables under ModelExchange?
主要目标
用FMPy修改ModelExchange下FMU暴露的局部变量
接近
- 获取已经从 FMI 标准 Web 创建的 FMU。
- 使用 FMPY 启动它。
- 使用 simulate_fmu 和 my_callback 函数的 step_finished 参数每一步更改值。
第一步
FMU 完美加载,可以修改声明为 casuality=“input”或“output”的所有值,还有一些可变性=“tunable”。
问题
Variables declares as casuality= "Local" 无法修改,我希望能够与其中一些变量交互,以便能够访问模型的内部状态,这些状态都声明为local ,根据文档,它们是 FMU 使用的内部变量。
这是 XML
中变量的样子
我试过通过fmi2setReal修改它:
但随后出现下一个错误:
我的问题
是否可以以任何方式修改该变量?
在事件模式下,这是绝对不可能的。根据 FMI 2.0.1 规范,第 127-128 页,只能使用 fmi2SetReal
.
更改具有“输入”因果关系或“参数”因果关系和“可调”可变性的变量
在连续时间模式下,可以间接设置局部连续变量的值,如果它也是连续时间状态变量,由 [=11= 下列出的另一个标量变量引用] Derivatives
标签。这可以通过调用 fmi2SetContinuousStates
函数来完成。
关于您显示的情况,这个局部变量似乎是 Simcenter Amesim DYNMUX 子模型的(内部)输入变量,因此它是一个无法修改的纯内部变量。但是,如果此输入变量连接到另一个以状态变量作为输出的子模型,则可以更改其值。
主要目标
用FMPy修改ModelExchange下FMU暴露的局部变量
接近
- 获取已经从 FMI 标准 Web 创建的 FMU。
- 使用 FMPY 启动它。
- 使用 simulate_fmu 和 my_callback 函数的 step_finished 参数每一步更改值。
第一步
FMU 完美加载,可以修改声明为 casuality=“input”或“output”的所有值,还有一些可变性=“tunable”。
问题
Variables declares as casuality= "Local" 无法修改,我希望能够与其中一些变量交互,以便能够访问模型的内部状态,这些状态都声明为local ,根据文档,它们是 FMU 使用的内部变量。
这是 XML
中变量的样子我试过通过fmi2setReal修改它:
但随后出现下一个错误:
我的问题
是否可以以任何方式修改该变量?
在事件模式下,这是绝对不可能的。根据 FMI 2.0.1 规范,第 127-128 页,只能使用 fmi2SetReal
.
在连续时间模式下,可以间接设置局部连续变量的值,如果它也是连续时间状态变量,由 [=11= 下列出的另一个标量变量引用] Derivatives
标签。这可以通过调用 fmi2SetContinuousStates
函数来完成。
关于您显示的情况,这个局部变量似乎是 Simcenter Amesim DYNMUX 子模型的(内部)输入变量,因此它是一个无法修改的纯内部变量。但是,如果此输入变量连接到另一个以状态变量作为输出的子模型,则可以更改其值。