主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

sltest.observer.getObserverPorts

获取 Observer Port 模块

自 R2024b 起

    说明

    obsport = sltest.observer.getObserverPorts(obsref,"Signal",path,port) 返回链接到 Observer Reference 模块 obsref 的 Observer Port 模块,用于连接到由 port 指定的模块的端口索引 path 的信号。

    示例

    obsport = sltest.observer.getObserverPorts(obsref,"SFData",path,dataobj) 返回位于 obsref 的 Stateflow 图中的 Stateflow® 数据对象 dataobj 所链接到的 Observer Reference 模块 path Observer Port 模块。

    示例

    obsport = sltest.observer.getObserverPorts(obsref,"SFStateActivity",path,stateobj,activity) 返回与 Observer Reference 模块 obsref 链接的 Observer Port 模块,用于位于 stateobj 的 Stateflow 图中 Stateflow 状态 path 的指定活动。该状态必须位于 Stateflow 图的顶层。

    示例

    obsport = sltest.observer.getObserverPorts(obsref,"FMUInternalVariable",path,fmuvar) 返回链接到 Observer Reference 模块 obsref 的 Observer Port 模块,用于位于 fmuvar 的 FMU 中的功能模型单元 (FMU) 内部变量 path

    示例

    示例

    全部折叠

    获取从 transmission 模型中 sf_car 模块的第二个输出端口观测信号的 Observer Port。此示例需要 Stateflow 许可证。

    import sltest.observer.*
    open_system("sf_car") 
    
    [obsport,obsmodel] = observeElement('Signal',...
       Simulink.BlockPath("sf_car/transmission"),2);
    obsref = Simulink.findBlocksOfType('sf_car',...
       'ObserverReference');
    
    obsporthandle = getObserverPorts(obsref,"Signal",...
       Simulink.BlockPath('sf_car/transmission'),2);
    obsportname = get_param(obsporthandle,"Name")
    obsportname = 
    'ObserverPort'
    

    获取观测 up_th 模型的 Stateflow 图中 sf_car 数据的 Observer Port。

    import sltest.observer.*
    open_system("sf_car") 
    
    sfdataobj = find(sfroot,"-isa","Stateflow.Data",...
       "-depth",4,Name = "up_th");
    
    [obsport,obsmodel] = observeElement('SFData',...
       Simulink.BlockPath("sf_car/shift_logic"),sfdataobj);
    
    obsref = Simulink.findBlocksOfType('sf_car',...
       'ObserverReference');
    obsporthandle = getObserverPorts(obsref,"SFData",...
       Simulink.BlockPath("sf_car/shift_logic"),sfdataobj);
    obsportname = get_param(obsporthandle,"Name")
    obsportname = 
    'ObserverPort'
    

    获取观测 OFF 的 Stateflow 图中 observe_sfstate_activity model 状态的 Observer Port。

    import sltest.observer.*
    open_system("observe_sfstate_activity") 
    
    chartObj = find(sfroot,"-isa","Stateflow.Chart");
    stateObj = find(chartObj,"-isa","Stateflow.State",Name="OFF");
    activityType = 'Self';
    
    obsRef = get_param('observe_sfstate_activity/Observer','Handle');
    blockPath = Simulink.BlockPath({'observe_sfstate_activity/Chart'});
    
    obsport = sltest.observer.getObserverPorts(obsRef,...
       "SFStateActivity",blockPath,stateObj,activityType);
    portname = get_param(obsport,"Name")
    portname = 
    'ObserverPort'
    
    open_system("observe_sfstate_activity_Observer1")

    获取观测 controlSignal 模型的 FMU 模块中的 fmuPIDwithInternalVar 内部变量的 Observer 端口。

    import sltest.observer.*
    open_system("fmuPIDwithInternalVar")
    
    fmuvar = 'controlSignal';
    
    obsref = Simulink.findBlocksOfType('fmuPIDwithInternalVar',...
       'ObserverReference');
    obsporthandle = getObserverPorts(obsref,"FMUInternalVariable",...
       Simulink.BlockPath('fmuPIDwithInternalVar/FMU'),fmuvar);
    obsportname = get_param(obsporthandle,"Name")  
    obsportname = 
    'ObserverPort'
    

    输入参数

    全部折叠

    Observer Reference 模块,指定为字符串、字符向量或双精度值。使用字符串或字符向量指定 Observer Reference 模块的路径,或使用双精度值指定 Observer Reference 模块的句柄。

    系统模型中要观测的元素的路径,指定为 Simulink.BlockPath 对象。每种元素类型特定的路径是:

    • 'Signal' - 信号来源的模块

    • 'SFData' - 包含数据的 Stateflow 图的顶层

    • 'SFStateActivity' - 包含状态活动的 Stateflow 图的顶层

    • 'FMUInternalVariable' - 功能模型单元

    标识信号端口的端口索引,指定为整数。

    要观测的 Stateflow 数据对象,指定为 Stateflow.Data (Stateflow) 对象。

    要观测的 Stateflow 状态对象,指定为 Stateflow.State (Stateflow) 对象。

    Stateflow 活动类型,指定为 'Self'。有关 Stateflow 活动类型的信息,请参阅 Monitor State Activity Through Active State Data (Stateflow)

    要观测的 FMU 内部变量,指定为字符串或字符向量。

    输出参量

    全部折叠

    Observer Port 模块观测指定的元素,作为双精度数据类型模块句柄的向量返回。

    版本历史记录

    在 R2024b 中推出