主要内容

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

XCP 可调参数的页面切换

通用测量与校准协议 (XCP) 是一种网络协议,可用于将校准系统连接至电子控制单元 (ECU)。

Simulink Real-Time 支持 ASAM MCD-1 XCP v 1.5.0 规范第 4.4 节“在线校准”中所述的 XCP 和 ECU 页面切换操作。一个实时应用程序包含一个与 MATLAB 通信的 XCP 页面、一个与 Speedgoat® 目标计算机通信的 ECU 页面,以及两个可与 XCP 和 ECU 页面连接的内存页面(0、1)。内存页 0 和 1 映射到 XCP 页或 ECU 页的过程彼此独立。

在运行实时应用程序时,内存页 0 和 1 分别代表一组可调参数。这些页面的起始内容完全相同,且 XCP 和 ECU 的初始映射内存页均为第 0 页。该实时应用程序使用映射到 ECU 页面的内存页面(0 或 1)上的参数。MATLAB 通过映射到 XCP 页面的内存页面(0 或 1)上的参数值进行通信。

您可以使用与页面相关的函数来复制页面、获取当前活动的 ECU 或 XCP 页面、获取页面数量,或者将 ECU 或 XCP 页面映射到内存页面 0 或 1。

如果使用 Simulink Real-Time Explorer,则 ECU 和 XCP 中第 0 页或第 1 页的页面选择必须一致。例如,将 ECU 和 XCP 的页号均设置为 0。页面不匹配会导致资源管理器出现错误,App 中会弹出提示,供您同步页面选择。

例如,有关如何操作 ECU 和 XCP 页面的示例,请参阅函数 copyPagegetECUPagegetNumPagesgetXCPPagesetECUPagesetXCPPagesetECUAndXCPPage

使用 XCP 和 ECU 页面设置参数

此示例展示了一种可能的工作流,用于在多个 XCP 和 ECU 页面上应用不同的参数值。

  1. 打开模型,构建实时应用程序,并加载该实时应用程序。

    openExample('slrt_ex_param_tuning');
    slbuild('slrt_ex_param_tuning');
    tg = slrealtime;
    load(tg,'slrt_ex_param_tuning');
  2. 获取 ECU 页面的内存页映射。

    mappingOfECUpage = getECUPage(tg)
    ans =
    
      uint8
    
       0
  3. 获取 XCP 页面的内存页映射。

    mappingOfXCPpage = getXCPPage(tg)
    ans =
    
      uint8
    
       0
  4. 将 XCP 页映射到内存页 1。

    setXCPPage(tg,1);
    
  5. 启动实时应用程序。

    start(tg);
  6. 使用 setparam 函数更改参数值,并注意该参数的更改并未反映在正在运行的应用程序中。出现这种现象是因为 setparam 影响了 XCP 页面中的参数。该页面当前映射到内存页面 1,但 ECU 页面映射到内存页面 0。因此,参数值的改变并未在应用程序中体现出来。

    setparam(tg,'slrt_ex_param_tuning/Gain2','Gain',1200000);
  7. 使用 getsignal 函数来证明内存页 1 上的参数值并未对正在运行的应用程序产生影响。由于 Gain 模块的输出为方波,因此其值要么是 4000000,要么是 -4000000

    getsignal(tg,'slrt_ex_param_tuning/Gain2',1)
    ans =
    
         4000000
  8. 将 ECU 页面映射到内存页面 1,并注意参数值的改变会在实时应用程序中生效。出现这种现象是因为内存页 1 同时映射到了 ECU 页和 XCP 页。

    setECUPage(tg,1);
    
  9. 使用 getsignal 函数来验证内存页 1(现已映射到 ECU 页)上的参数值是否已应用于正在运行的应用程序。由于 Gain 模块的输出为方波,因此更新后的值要么是 4800000,要么是 -4800000

    getsignal(tg,'slrt_ex_param_tuning/Gain2',1)
    ans =
    
        4800000
    

另请参阅

| | | | | |

主题