Simulink高级应用 |
您所在的位置:网站首页 › matlab2022a怎么保存m文件 › Simulink高级应用 |
目录标
一 基于data sotre memory来实现全局变量共享二 基于 Simulink.Signal Objects来实现全局变量共享三 总结
一 基于data sotre memory来实现全局变量共享
simulink中的MF(matlab function)模块使用全局变量时 ,可以采用data store memory来实现。有关data store memory可以参加Help文件: https://www.mathworks.com/help/simulink/ug/using-global-data-with-the-matlab-function-block.html#bsdud7d-1 或者 https://ww2.mathworks.cn/help/simulink/ug/using-global-data-with-the-matlab-function-block.html 基本思想是使用数据存储内存来存储全局数据。步骤稍微有点麻烦,总结一下: -1 MATLAB Function block 的代码中 声明全局变量,例如A function y = fcn %#codegen global A; A = A+1; y = A;-2 MATLAB Function block 注册全局变量A (1)MATLAB Function Block Editor中,点Edit Data打开(图中1)。 (2)点击Add Data(图中2),成功添加一个变量,如图中的3 (3)修改变量名称,如图中的4; 修改变量类型,由input改为data store memory
注意:如果InitFcn回调函数中已经定义了全局变量在workspace中,如x_ref;Simulink模块中的DSM模块x_ref_dsm必须通过初始化值的设置x_ref来实现写入数据。应当理解,如果不设置dsm的初始化值,系统只是为全局变量开辟了一个store memory,实现了内存与名称x_ref_dsm全局变量的关联,并没有实质性的写入数据!这时候如果在MF模块中,即使定义和注册了x_ref_dsm的全局变量,也没有具体的数据,运行MF程序自然得不到正确的结果!!! -1 matlab function block中定义全局变量,同上。 -2 matlab function block中注册全局变量,同上。 -3. 添加 Simulink.Signal object到simulink Model Explorer中 如果能在多个模型(如多个slx文件)中使用全局数据,建议在base workspace中创建 a Simulink.Signal object 。否则,可以在当前的模型下model workspace中创建! (1) 点击打开Simulink->Modeling tab(下图中1)->Model Explorer(下图中2). (2) 左侧面板中选择 model workspace (下图中3)for the simulink model. (3) The Contents pane 显示了 model workspace中的数据, 点击创建 Simulink.Signal object (下图中4). (4) 右侧面板中 make sure that the Model Explorer displays these attributes. 然后,依次修改数据类型data type(下图中5)、 初始值 initial value(下图中6) 和 单复数complexity(下图7), 即可完成共享全局变量的创建!!!参考文献: https://www.mathworks.com/help/simulink/ug/using-global-data-with-the-matlab-function-block.html#bsdud7d-1 . |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |