AnyMath 文档
Notebook

解决Engee和Euler积分问题

我们正在研究如何组织在两个系统中同时计算的计算任务:Engee动态建模平台和EULER软件包。

欧拉是一个软件包,旨在分析机械系统的操作,包括复杂的运动学,大的运动,刚性和可变形的结构元件,液压,气动和电气系统,控制系统和其他组件。 [1]

Engee.集成-Engee平台的子系统;消除了访问操作系统低级接口的问题,允许Engee连接到外部设备,接口,协议和软件环境。 [2]

简单介绍运行示例

简而言之,如何准备启动Engee-EULER仿真的环境:

  1. 在Engee中安装Engee子系统。集成并下载客户端程序
  2. 复制文件夹 euler 从这个例子到目标平台上的任何位置
  3. 打开示例 PendulumDll.elr 在欧拉软件包
  4. 打开示例 example_EULER.engee 在Engee并启动它
  5. 等待来自客户端程序的指令并在欧拉中运行计算。

通过目标平台,我们指的是安装EULER软件包的计算机。 现在让我们更详细地看看这些步骤。

工程师准备工作

要在Engee中为欧拉模型创建一个计算环境,我们只需要在模型中放置一个块 EULER Cosimulation 并正确设置其接口。 让我们打开一个例子:

In [ ]:
cd(@__DIR__)
engee.open( "example_EULER.engee" )
image.png

在组件的输入端,从总线收集信号。 信号线的名称将在块内使用。 EULER Cosimulation,其应配置如下:

image.png

列出输入信号,这将确定它们在正在发送的数据包中的顺序(在示例中有三个信号,P1,P2和P3),
列出输出信号(事实上,在这里我们给他们的名字),
设置
接收缓冲区大小
*(将8乘以信号数),
*指定计算步骤(必须小于或等于模型的采样步骤),
*指定示例的路径-这里应该是它将位于目标平台上的文件夹的名称elr 与欧拉项目的文件。

块配置完毕后,需要打开Engee客户端程序。Integration**,可以使用以下命令获取:

In [ ]:
engee.package.install("Engee-Device-Manager")

该程序在运行EULER软件包的Engee(云平台)和本地资源之间接收和传输信息。 有关安装和运行此程序的详细信息,请参阅[2]。

通过在客户端程序中指定Engee来执行配对。输入上一个命令给出的地址,然后单击"连接"按钮。

要将块设置传输到EULER,请单击"生成配置文件"按钮。 它将与示例一起出现在指定的文件夹中。 它的内容对应于块设置:

MODEL_NAME example_Euler
INPUT_SIGNAL_COUNT 2
OUTPUT_SIGNAL_COUNT 3
MODEL_PARAM_COUNT 0
INPUT_SIGNAL_NAMES delta1 delta2
OUTPUT_SIGNAL_NAMES P1 P2 P3
MODEL_PARAM_NAMES 
INIT_MODEL_PARAM 
CONTINUOUS_STATE_NUM_COUNT 0
DISCRETE_STATE_NUM_COUNT 0
DIAGNOSTIC 1

接口安装好,EULER软件包收到了传输数据的结构说明后,我们就可以开始在EULER内部配置项目了。

欧拉中的任务准备

我们将要看到的示例是基于一个标准示例创建的。 Samples/Projects/Beginner/Pendulum.elr. 在最初的例子中,摆锤借助一对旋转从固定柱上悬挂下来。 我们增加了一个新的对象,即悬挂点,摆锤铰链悬挂在该点上,它通过直线导轨(对象)连接到固定支架上 поступательная пара). 从Engee,我们将控制作用在悬挂点上的力Fx。

让我们创建一个新的"传感器",用于与Engee进行协同仿真,并将其配置如下:

对象名称是正在创建的传感器的名称(在本例中 ec,从 engee cosimulation),
Engee模型是进行配对的DLL文件的地址(请参阅此浏览器的目录)
输入变量是EULER将
在每个交换步骤发送给Engee
的变量。,
输出变量是将从Engee
接收的变量,并在欧拉模型中自动创建传感器对象。,
*采样步骤必须小于或等于Engee中模型的采样步骤。

image.png

EULER项目代码现在看起来像这样

point point1=point( 0 [m], 0 [ m ], 0 [ m ] );
point point2=point( 0 [ m ], -1 [ m ], 0 [ m ] );
solid solid0=sphere( point1, 0.1 [m], mass = 1 [ kg ] );
solid solid1=cylinder( point1, point2, 0.1 [ m ], mass = 1 [ kg ] );
solid solid2=sphere( point2, 0.3 [ m ], mass = 1 [ kg ] );
vector vector1=vectorPP( point1, point2 );
vector vector2=rotate( vector1, projectZ, PI/2*1[rad] );
body Стойка=body( color = index( 4 ) );
body ТочкаПодвеса=body( color = index( 4 ) );
body ТочкаПодвеса < ( solid0 );
body Маятник=body( color = index( 45 ) );
body Маятник < ( solid1, solid2 );
joint joint1=rotational( ТочкаПодвеса, Маятник, point1, projectZ );
joint joint2=translational( Стойка, ТочкаПодвеса, point1, projectX );
gravity gravity1=parallel( reverse( projectY ) );
sensor_array ec=engee( "Engee_Euler.dll", "joint1.gamma  [rad],joint2.s  [m],", "Fx [N],P2 [ ],P3 [ ],", "", 0.01 [s],
	integrMethod = constRK4: );
force force1=force( Маятник, point1, projectX, ec.Fx, list(  ) );

/\///////////////////////////////////////////////////////////////////////////////////
set ground = Стойка;

/\///////////////////////////////////////////////////////////////////////////////////
/\ Единицы измерения;
set units = SI;

两个支付平台的界面配置好了,就可以进行启动了。

启动联合解决方案

启动联合计算的过程如下:

  1. 在Engee中运行计算,
  2. 等待客户端程序窗口中的消息,其中包含在欧拉端开始计算的建议。,
  3. 在欧拉侧运行计算。
image.png

结论

Engee和EULER软件包之间的集成使得简化机构活动部分的建模成为可能,可以将部分计算转移到简化的一维模型中,或者简单地用web界面围绕机构模型,并为预处理和后处理实验结果提供另一个强大的机制。

连结