首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Modelica编码标准/ Modelica语句

Modelica编码标准/ Modelica语句
EN

Stack Overflow用户
提问于 2020-01-02 10:50:03
回答 1查看 57关注 0票数 1

欢迎大家,

2020年新年快乐

我正在64位windows 7系统上使用Openmodelica 1.14发行版。

我在OMSimulator中的“时间”声明遇到了一些麻烦。在寻找解决方案时,我遇到了一个Openmodelica中的封闭票#2664。我仍然可以在Openmodelica的当前版本中看到报告的问题。

我正在包括有关的文件,票# 2664。

代码语言:javascript
复制
model SimpleTest "just a simple model - Compilation etc."
  Modelica.Blocks.Interfaces.IntegerInput u annotation(Placement(visible = true, transformation(origin = {-100, 40}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {-80, 40}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Blocks.Interfaces.IntegerOutput y annotation(Placement(visible = true, transformation(origin = {100, 20}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {100, 20}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
algorithm
  when change(u) then
    y := y + 2;
  end when;
  annotation(Icon(coordinateSystem(extent = {{-100, -100}, {100, 100}}, preserveAspectRatio = true, initialScale = 0.1, grid = {2, 2})), Diagram(coordinateSystem(extent = {{-100, -100}, {100, 100}}, preserveAspectRatio = true, initialScale = 0.1, grid = {2, 2}), graphics = {Rectangle(origin = {-6.15, 2.93}, fillColor = {0, 133, 199}, fillPattern = FillPattern.HorizontalCylinder, extent = {{-77.89, 83.75}, {88.14, -92.53}})}));
end SimpleTest;

SimpleTest.mo是否符合Modelica标准?

在编译SimpleTest.mo时,它抛出翻译警告

代码语言:javascript
复制
Assuming fixed start value for the following 1 variables:
         y:DISCRETE(flow=false fixed = false ) SimpleTest type: Integer

如何避免此错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-02 11:37:41

这只是一个警告。当您定义这样的离散变量时,它依赖于它在一个时间条件中的前一个值,它必须有一个固定的开始值。仅仅提供一个开始值是编译器的一个猜测值,当您修复它时,您会告诉编译器它必须使用这个值进行初始化。

如果不提供开始值,则将其设置为零,如果不修复该值,编译器将自动修复它(导致警告)。

简单的例子:

代码语言:javascript
复制
Integer y(start=0, fixed=true);

应用于您的模型:

代码语言:javascript
复制
model SimpleTest "just a simple model - Compilation etc."
  Modelica.Blocks.Interfaces.IntegerInput u annotation(Placement(visible = true, transformation(origin = {-100, 40}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {-80, 40}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Blocks.Interfaces.IntegerOutput y(start=0, fixed=true) annotation(Placement(visible = true, transformation(origin = {100, 20}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {100, 20}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
algorithm
  when change(u) then
    y := y + 2;
  end when;
  annotation(Icon(coordinateSystem(extent = {{-100, -100}, {100, 100}}, preserveAspectRatio = true, initialScale = 0.1, grid = {2, 2})), Diagram(coordinateSystem(extent = {{-100, -100}, {100, 100}}, preserveAspectRatio = true, initialScale = 0.1, grid = {2, 2}), graphics = {Rectangle(origin = {-6.15, 2.93}, fillColor = {0, 133, 199}, fillPattern = FillPattern.HorizontalCylinder, extent = {{-77.89, 83.75}, {88.14, -92.53}})}));
end SimpleTest;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59562063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档