0

是否可以从 S-Function 代码中访问工作区变量?

以下是无法正常工作的测试变体。中有一个MyVar变量Model Workspace,可以从 中看到Model Explorer。行从DoPostPropSetup自定义块代码的函数内运行。

适当的错误消息在帖子评论中

% a=evalin('Model Workspace', 'MyVar'); % Unknown command option.
% a=evalin('caller', 'MyVar'); % (incorrect workspace)
% a=Simulink.MyVar % Undefined variable "Simulink" or class "Simulink.MyVar".
% a=simulink.MyVar; % Undefined variable "simulink" or class "simulink.MyVar".
% a=Simulink.ModelWorkspace.evalin('MyVar'); % has no property or method named 'evalin'.

后者是直接违反记录在案的事实: http: //www.mathworks.com/help/simulink/slref/simulink.modelworkspace.html

更新

发现了一些新东西

 % a=evalin('modelworkspace', 'MyVar'); % Unknown command option.

   hws = get_param(bdroot, 'modelworkspace');
%   a = hws.evalin('MyVar'); % Attempt to evaluate an expression in a read-only model workspace

   a = hws.getVariable('MyVar'); % works

后一个命令有效,但(1)前一个命令说工作区是“只读的”,而我也需要写入变量。

并且 (2)bdroot函数被记录为返回“顶级 Simulink 系统的名称”,这完全不清楚。我需要访问模型的工作区(不是它的名称),当前代码块所在的位置。

4

0 回答 0