# From Workspace Block


通过组件从 Syslab 工作区加载数据。

# 说明

From Workspace Block 从 Syslab 工作区中读取数据,并在其输出端将数据输出。

From Workspace Block 共分为 4 种,分别为

  • FromWorkspace_Scale:从 Syslab 工作区中获取标量数据
  • FromWorkspace_Vector:从 Syslab 工作区中获取一维数组
  • FromWorkspace_Matrix:从 Syslab 工作区中获取二维数组
  • FromWorkspace_3D_Array:从 Syslab 工作区中获取三维数组

# 端口

# 输出

outputs
标量 | 向量 | 矩阵

从 Syslab 工作区中读取的数据。

接口类型:RealOutput

# 参数

varName - Syslab工作区变量名
String

需要读取的 Syslab 工作区中的变量名

默认值:"x"

interpreted - 实时更新
Boolean

如果为true,则实时读取 Syslab 工作区数据;如果为false,则在仿真开始时读取一次。

默认值:false

row_dims - 变量行数
Integer

只针对 FromWorkspace_VectorFromWorkspace_Matrix模型有效。 此参数表示所获取数据的行数,参数示例 SyslabWorkspace.Examples.Demo_FromWorkspace

默认值:1

col_dims - 变量列数
Integer

只针对 FromWorkspace_Matrix 模型有效。 此参数表示所获取数据的列数,参见示例 SyslabWorkspace.Examples.Demo_FromWorkspace

默认值:1

dims - 变量维度大小
Integer

只针对 FromWorkspace_3D_Array 模型有效,为长度为 3 的一维数组。 此参数表示所需获取数据的维度大小,参见示例 SyslabWorkspace.Test.Test_ToWorkspace_3d

默认值:{2, 2, 2}

# 获取 Syslab 工作区数据

通过 From Workspace Block 获取 Syslab 工作区中的数据,需要执行下列操作:

  1. 启动 Syslab,启动 REPL,并确保工作区中有变量。
  2. 在 Syslab 中启动 Sysplorer,并加载 SyslabWorkspace 模型库。
  3. 在 Sysplorer 中,选取 From Workspace Block 组件并添加到模型。
  4. 对 From Workspace Block 组件设置参数,包括:
    • varName:Syslab 工作区中的变量名,支持分量表达式,如"f"、"multiarry[1:2,:]";
    • interpreted:仿真过程中是否实时读取数据;
    • row_dimscol_dimsdims:所需获取数据的维度参数(若有)。
  5. 模型构建完成后,就可以开始仿真。

注意

  • 目前只支持 x64 的仿真求解;
  • 如果无法在 Syslab 工作区内找到对应的变量,则仿真会报错;
  • 如果出现数据类型错误或数据长度错误,From Workspace Block 组件会输出 0。

# 实时刷新

参数 interpreted 用于控制是否实时读取工作区数据。 无论 Sysplorer 模型采用何种仿真模式(独立仿真、实时同步仿真),实时刷新会在工作区变量刷新之后即时生效。

一般而言,如果需要实时刷新 From Workspace Block 组件的输出值,推荐采用实时同步仿真模式。

# 多维数组

From Workspace Block 支持获取多维数组,模型库中提供了获取三维数组的模型FromWorkspace_3D_Array,可以在此模型基础上稍作修改即可实现更高维数组的获取。

例如,假设需要一个获取 5 维数组的模型。

首先,复制模型 FromWorkspace_3D_ArrayFromWorkspace_5D_Array,作为修改的基础。

其次,使用文本视图编辑该模型,一共需要修改三处:

  • 在模型第 7 行,声明了 dims 参数,此参数定义了变量的维度大小,将参数声明更改为:
  parameter Integer dims[5] = {2, 2, 2, 2, 2};
  • 在模型的第 8 行,声明了模型的输出,将声明更改为:
  Modelica.Blocks.Interfaces.RealOutput output[dims[1], dims[2], dims[3], dims[4], dims[5]];
  • 在模型的第 20 行,声明了获取工作区变量的函数返回值,将声明更改为:
  output Real outputs[dims[1], dims[2], dims[3], dims[4], dims[5]];

上述修改完毕后,就可以得到一个从 Syslab 工作区读取 5 维数组的 From Workspace Block 组件。

# 性能基线

From Workspace Block 从 Syslab 中获取数据时,建议数组的长度不要超过 10000

数组长度值 单个 Block 翻译+仿真耗时
1000 5 秒
2000 7 秒
5000 17 秒
10000 33 秒

# 模型示例