【问题标题】:Simulink difference between load_system and open_systemsimulink load_system 和 open_system 的区别
【发布时间】:2014-01-30 16:59:26
【问题描述】:

我有一个 Simulink 模型,它在模型回调的 InitFcn 中调用一个脚本。此脚本初始化基础工作区中的一堆变量,以便 Simulink 模型可以使用它们。在使用 Classes 时,我发现使用 load_system 函数会导致 Matlab 崩溃,而 open_system 函数可以正常工作。

这里是类:

classdef simulinkModel
    properties
        model = '';
    end
    methods
        function obj = simulinkModel(modelName)
            obj.model = modelName;
        end
        function openModel(obj)
            % Make sure any previously open model are closed, and open the model.
            if bdIsLoaded(obj.model)
                obj.closeModel()
            end
            %load_system(obj.model) % Matlab crash
            open_system(obj.model) % Matlab run the model correctly
        end
        function closeModel(obj)
            close_system(obj.model, 0) 
        end
        function runModel(obj)
            sim(obj.model)
        end
    end
end

在命令窗口中:

objModel = simulinkModel('test');
objModel.openModel
objModel.runModel

那么,load_systemopen_system 是如何崩溃的呢? open_system 函数对基础工作区有哪些 load_system 函数没有做的事情?

编辑

我决定尝试在课堂之外运行简单的命令,看看问题是否出在其他地方。所以在命令窗口中输入:

load_system('test')
sim('test')

在命令窗口中执行此操作时,Matlab 也会崩溃。所以我开始怀疑在调用load_system 函数时是否没有执行模型回调。

【问题讨论】:

  • 什么样的崩溃?有任何错误信息吗?
  • @Daniel Appcrash 我想。 Windows 错误消息。
  • @Daniel 问题签名:问题事件名称:APPCRASH 应用程序名称:MATLAB.exe 应用程序版本:1.0.0.1 应用程序时间戳:4b54ec23 故障模块名称:libut.dll 故障模块版本:1.0.0.1跨度>
  • 什么版本和操作系统?它按预期工作 R2013b,Win8。你说你正在使用 InitFcn,所以你编辑的最后一句话是不相关的。 InitFcn 不会被 load_system 或 open_system 调用,而是在模型被初始化为对 sim 调用的一部分时被调用。但无论哪种方式,它都不应该导致段错误,而是只会返回一个错误,说明变量尚未定义。
  • Win7 和 Matlab R2010a。我将参数移动到 PreLoad 回调,现在一切正常。在使用 load_system 时,在 InitFcn 中调用的参数显然会导致崩溃。

标签: matlab class simulink


【解决方案1】:

我可以确认 load_system 和 open_system 之间的行为确实非常不同。我目前正在调试2015b下的一个奇怪问题,我刚刚意识到我的simulink模型的LoadFcn回调在我使用load_system时没有被调用,但在我使用open_system时被正确调用。我不知道这在任何地方都有记录。如果在“加载”系统时没有调用这个回调名称,我发现它会产生误导!!!如果我找到更多信息,我会在这个帖子上回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多