# To Workspace
将数据写入 Syslab 工作区。
# 说明
To Workspace 将输入端口的数据写入 Syslab 工作区。
To Workspace 共分为 4 种,分别为
- ToWorkspace_Scale:用于输出标量数据
- ToWorkspace_Vector:用于输出一维数组
- ToWorkspace_Matrix:用于输出二维数组
- ToWorkspace_3D_Array:用于输出三维数组,更高维度请参见 多维数组
# 端口
# 输入
dataInput标量 | 向量 | 矩阵
将数据写入到 Syslab 工作区的输入端口。
接口类型:RealInput
# 参数
varName - Syslab工作区变量名String
生成到 Syslab 工作区中的变量名,参见 输出变量
默认值:"x"
sampleTime - 采样时间Real
指定 To Workspace 组件的采样时间。
默认为 -1,表示使用模型求解的输出步长。
row_dims - 变量行数Integer
只针对 ToWorkspace_Vector、ToWorkspace_Matrix、ToWorkspaceTimeTable 模型有效。
写入 Syslab 工作区的变量维度大小,参见示例 SyslabWorkspace.Test.Test_ToWorkspace_Matrix。
默认值:1
col_dims - 变量列数Integer
只针对 ToWorkspace_Matrix 模型有效。
写入 Syslab 工作区的变量维度大小,参见示例 SyslabWorkspace.Test.Test_ToWorkspace_Matrix。
默认值:1
dims - 变量维度大小Integer
只针对 ToWorkspace_3D_Array 模型有效,为长度为3的一维数组。
写入 Syslab 工作区的变量维度大小。
默认值:{2, 2, 2}
# 输出数据到 Syslab 工作区
要使用 To Workspace 向 Syslab 工作区写入数据,需要执行下列操作:
- 打开 Syslab ,启动 REPL;
- 在 Syslab 中启动 Sysplorer ,并加载
SyslabWorkspace模型库; - 在 Sysplorer 中,选取 To Workspace 组件并添加到模型;
- 对 To Workspace 组件设置参数,包括:
varName:指定Syslab工作区中变量out的分量名称;sampleTime:采样时间;row_dims、col_dims、dims:变量维度参数(如果需要)。
- 模型构建完成后,就可以开始仿真运行;
- 在仿真暂停或停止时,系统会将仿真结果写入到 Syslab 工作区。
# 输出变量
To Workspace 向工作区写入数据时,会自动生成一个名为 out 的命名元组变量。
其中,该变量包含一个名为tout的时间序列。
同时,模型中每一个 To Workspace 组件都会在 out 中生成一个由 varName 指定名称的分量。
# 采样时间
通过设置 sampleTime 可以控制 To Workspace 组件记录数据的周期。
对于每一个 To Workspace 组件,采样时间可以单独设置。
提示
一般而言,对于定步长算法,推荐使用缺省或将采样时间设为仿真输出步长的倍数。
# 多维数组
To Workspace 支持将多维数组写入 Syslab 工作区。
对于一个 N 维的数组,将生成一个类型为 Array{Float64,N+1}的分量。其中,第 N+1 维长度为输出的采样点个数,前 N 个维度为一个仿真时间点 To Workspace 获取到的输入数据。
模型库中提供了对于三维数组的模型 ToWorkspace_3D_Array ,可以在此模型基础上稍作修改即可实现更高维数组的输出。
假设,需要实现一个将5维数组写入 Syslab 工作区的模型。
首先,复制 ToWorkspace_3D_Array 为 ToWorkspace_5D_Array,作为本次修改的基础。
其次,使用文本视图编辑该模型,一共需要修改三处:
- 在模型第 6 行,声明了
dims参数,将参数声明更改为:
parameter Integer dims[5] = {2, 2, 2, 2, 2};
- 在模型的第 7 行,声明了模型的输入,将声明更改为:
Modelica.Blocks.Interfaces.RealInput dataInput[dims[1], dims[2], dims[3], dims[4], dims[5]];
- 在模型的第 20 行,声明了写入工作区变量的函数输入参数,将声明更改为:
input Real value[dims[1], dims[2], dims[3], dims[4], dims[5]];
上述修改完毕后,就可以得到一个用于将 5 维数组写入 Syslab 工作区的 To Workspace 组件。