2014-01-30 18 views
2

我有一個Simulink模型在模型回調的InitFcn中調用腳本。該腳本初始化基礎工作區中的一堆變量,以便它們可以被Simulink模型使用。在使用類時,我發現使用load_system函數會使Matlab崩潰,並且open_system函數可以正常工作。load_system和open_system之間的Simulink區別

這裏的類:

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_system VS的open_system crashs? open_system函數對load_system函數沒有做的基本工作空間有什麼作用?

編輯

,我決定嘗試運行外部類簡單的命令來查看問題是否在其他地方。因此,在命令窗口中輸入:

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

在命令窗口中執行此操作時,Matlab也會崩潰。所以我開始懷疑調用load_system函數時是否沒有執行模型回調。

+0

什麼樣的崩潰?任何錯誤消息? – Daniel

+0

@Daniel Appcrash我認爲。 Windows錯誤消息。 –

+0

什麼錯誤文本? – Daniel

回答

0

我可以確認load_system和open_system之間確實存在非常不同的行爲。我目前正在調試2015b以下的一個奇怪的問題,並且我剛剛意識到我的simulink模型的LoadFcn回調在我使用load_system時未被調用,但在我使用open_system時被正確調用。我不知道這是記錄在任何地方。如果在「加載」系統時未調用該回調名稱,則會發現這種回調名稱具有誤導性!如果我找到更多的信息,我會回到這個線程。