Time 显示Simulink当前模拟时间

Time 显示Simulink当前模拟时间,time,simulation,simulink,s-function,Time,Simulation,Simulink,S Function,伙计们 我正在尝试显示Simulink当前模拟时间。我必须注意,在我的例子中,一旦我使用load_system,系统是不可见的,了解模拟的进展情况将非常有用 为此,我读到应该使用函数'ssGetT'。为了实现它,我使用了S-function builder块,我成功了。我的意思是,我能够得到当前的模拟时间 然而,我在这一点上被抓住了,因为我不知道如何将其显示为进度条、消息框或任何其他方式。重要信息,在S-function builder中从C环境显示 如果有其他方法,请告诉我。=) 如果有人能帮

伙计们

我正在尝试显示Simulink当前模拟时间。我必须注意,在我的例子中,一旦我使用load_system,系统是不可见的,了解模拟的进展情况将非常有用

为此,我读到应该使用函数'ssGetT'。为了实现它,我使用了S-function builder块,我成功了。我的意思是,我能够得到当前的模拟时间

然而,我在这一点上被抓住了,因为我不知道如何将其显示为进度条、消息框或任何其他方式。重要信息,在S-function builder中从C环境显示

如果有其他方法,请告诉我。=)


如果有人能帮助我,我将非常感激。

有几件事需要注意:

  • 在使用
    sim
    之前,无需使用
    load\u系统

  • 与任何MATLAB命令一样,
    sim
    在m-code(或命令行)中的该行之后阻止进一步执行m-code,直到它完成执行(在本例中,这意味着模拟已停止)

  • 但是,模型中的任何m代码都肯定会在模型执行期间被执行

    例如,创建一个模型,将时钟块输入到MATLAB函数块中。在MATLAB功能块中有以下代码

    function fcn(t)
    %#codegen
    coder.extrinsic('fprintf');
    persistent firstTime
    
    if isempty(firstTime)
        firstTime = false;
        fprintf('Starting Now\n');
    end
    
    fprintf('time = %.4f\n',t);
    

    这将在仿真运行时(无论模型如何启动),在每个时间步将仿真时间打印到MATLAB命令窗口中。

    需要注意的几点:

  • 在使用
    sim
    之前,无需使用
    load\u系统

  • 与任何MATLAB命令一样,
    sim
    在m-code(或命令行)中的该行之后阻止进一步执行m-code,直到它完成执行(在本例中,这意味着模拟已停止)

  • 但是,模型中的任何m代码都肯定会在模型执行期间被执行

    例如,创建一个模型,将时钟块输入到MATLAB函数块中。在MATLAB功能块中有以下代码

    function fcn(t)
    %#codegen
    coder.extrinsic('fprintf');
    persistent firstTime
    
    if isempty(firstTime)
        firstTime = false;
        fprintf('Starting Now\n');
    end
    
    fprintf('time = %.4f\n',t);
    

    这将在仿真运行时(无论模型如何启动),在每个时间步将仿真时间打印到MATLAB命令窗口中。

    需要注意的几点:

  • 在使用
    sim
    之前,无需使用
    load\u系统

  • 与任何MATLAB命令一样,
    sim
    在m-code(或命令行)中的该行之后阻止进一步执行m-code,直到它完成执行(在本例中,这意味着模拟已停止)

  • 但是,模型中的任何m代码都肯定会在模型执行期间被执行

    例如,创建一个模型,将时钟块输入到MATLAB函数块中。在MATLAB功能块中有以下代码

    function fcn(t)
    %#codegen
    coder.extrinsic('fprintf');
    persistent firstTime
    
    if isempty(firstTime)
        firstTime = false;
        fprintf('Starting Now\n');
    end
    
    fprintf('time = %.4f\n',t);
    

    这将在仿真运行时(无论模型如何启动),在每个时间步将仿真时间打印到MATLAB命令窗口中。

    需要注意的几点:

  • 在使用
    sim
    之前,无需使用
    load\u系统

  • 与任何MATLAB命令一样,
    sim
    在m-code(或命令行)中的该行之后阻止进一步执行m-code,直到它完成执行(在本例中,这意味着模拟已停止)

  • 但是,模型中的任何m代码都肯定会在模型执行期间被执行

    例如,创建一个模型,将时钟块输入到MATLAB函数块中。在MATLAB功能块中有以下代码

    function fcn(t)
    %#codegen
    coder.extrinsic('fprintf');
    persistent firstTime
    
    if isempty(firstTime)
        firstTime = false;
        fprintf('Starting Now\n');
    end
    
    fprintf('time = %.4f\n',t);
    
    这将在仿真运行时(无论模型如何启动)将每个时间步的仿真时间打印到MATLAB命令窗口中。

    更新

    为了在commad视图中显示进度状态,我采纳了Phil的建议

    我在symulink中实现了这个系统,其中fcn输入是来自时钟的模拟时间和最终模拟时间

    我将数字时钟块中的
    SampleTime
    定义为最终模拟时间/步骤,其中步骤是要更新进度的时间数。在我的例子中,我每5%更新一次,直到100%,所以步骤是20

    fnc区块为:

    function fcn(t,tsim)
    coder.extrinsic('fprintf');
    
    persistent firstTime
    
    if isempty(firstTime)
        firstTime = false;
        fprintf('\nSimulating...\n\n');
    end
    
    prog = 100*t/tsim;
    fprintf(' %1.0f%%',prog);
    
    更新

    为了在commad视图中显示进度状态,我采纳了Phil的建议

    我在symulink中实现了这个系统,其中fcn输入是来自时钟的模拟时间和最终模拟时间

    我将数字时钟块中的
    SampleTime
    定义为最终模拟时间/步骤,其中步骤是要更新进度的时间数。在我的例子中,我每5%更新一次,直到100%,所以步骤是20

    fnc区块为:

    function fcn(t,tsim)
    coder.extrinsic('fprintf');
    
    persistent firstTime
    
    if isempty(firstTime)
        firstTime = false;
        fprintf('\nSimulating...\n\n');
    end
    
    prog = 100*t/tsim;
    fprintf(' %1.0f%%',prog);
    
    更新

    为了在commad视图中显示进度状态,我采纳了Phil的建议

    我在symulink中实现了这个系统,其中fcn输入是来自时钟的模拟时间和最终模拟时间

    我将数字时钟块中的
    SampleTime
    定义为最终模拟时间/步骤,其中步骤是要更新进度的时间数。在我的例子中,我每5%更新一次,直到100%,所以步骤是20

    fnc区块为:

    function fcn(t,tsim)
    coder.extrinsic('fprintf');
    
    persistent firstTime
    
    if isempty(firstTime)
        firstTime = false;
        fprintf('\nSimulating...\n\n');
    end
    
    prog = 100*t/tsim;
    fprintf(' %1.0f%%',prog);
    
    更新

    为了在commad视图中显示进度状态,我采纳了Phil的建议

    我在symulink中实现了这个系统,其中fcn输入是来自时钟的模拟时间和最终模拟时间

    我将数字时钟块中的
    SampleTime
    定义为最终模拟时间/步骤,其中步骤是要更新的时间数