MATLAB m语言中调用simulink的程序
1. 打开simulink模型的几种方式
% 打开文件对话框
[FileName, PathName, FilterIndex] = uigetfile({'*.mdl','Model-files (*.mdl)'}, '打开');
if FileName ~= 0
% 加载模型
load_system([PathName, FileName]);
end
% 新建一个模型
new_system('untitled', 'Model');
% 打开一个仿真模型
open_system([PathName, FileName]);
2. 获取当前simulink的文件信息并显示
% 获取当前模型名称
set(handles.ModelNameEdit, 'String', get_param(gcs, 'Name'));
% 获取当前模型文件名称即文件路径
set(handles.SourceFileEdit, 'String', get_param(gcs, 'FileName'));
% 获取当前模型创建的时间
set(handles.CreatedOnEdit, 'String', get_param(gcs, 'Created'));
% 获取当前模型最近一次修改的时间
set(handles.LastSaveOnEdit, 'String', get_param(gcs, 'LastModifiedDate'));
% 获取当前simulink的版本
set(handles.VersionEdit, 'String', get_param(gcs, 'Version'));
%获取当前模型的版本
set(handles.ModelVersionEdit, 'String', get_param(gcs, 'ModelVersion'));
3. 查找当前模型的所有block及对应的所有对话框参数
% 查找当前模型中的所有模块,为了方便,首先显示顶层模块,再显示其他层
BlocksTop = find_system(get(handles.ModelNameEdit, 'String'), 'SearchDepth', 1, 'Type', 'block');
BlocksAll = find_system(get(handles.ModelNameEdit, 'String'), 'Type', 'block');
AllBlocks = [BlocksTop; setdiff(BlocksAll, BlocksTop)];
% 显示所有参数,参数名称以struct的数据结构显示
ParameterStruct = get_param(Block,'DialogParameters');
% 参数struct结构体的域,得到参数的名称,以cell的数据结构显示
Parameters = fieldnames(ParameterStruct);
% 获取第一个参数的值
ParameterValue = get_param(Block, Parameters{1});
% 获取参数值类型
ValueStruct = ParameterStruct.(Parameters{1}) ;
ParameterType = ValueStruct.Type;
% 参数值的提示信息
ParameterPrompt = ValueStruct.Prompt;
ParameterEnum = ValueStruct.Enum;
ParameterAttributes = ValueStruct.Attributes;
4. 修改某个参数的值
% 获取编辑框中的修改值
ChangedValue = get(handles.ParameterValueEdit, 'String');
try
% 尝试保存修改
set_param(Block, Parameter, ChangedValue);
catch
% 修改失败,弹出提示信息
errordlg([{['无法将', Block, ' 的 ', Parameter, '参数值修改为 ', ChangedValue]}; {'输入的参数值有误,请重新输入!'}], '错误', 'on');
% 恢复原来的值
set(handles.ParameterValueEdit, 'String', get_param(Block, Parameter));
end
5. 查询模型中某些特点类型的block
% 查找当前模块中的subsystem
SubSystems = find_system(gcs, 'Type', 'block');
% 查找所有的Scope
AllScope = find_system(gcs, 'BlockType', 'Scope');
% 查找所有的ToFile
AllToFile = find_system(gcs, 'BlockType', 'ToFile');
% 查找所有的ToWorkSpace
AllToWorkSpace = find_system(gcs, 'BlockType', 'ToWorkspace');