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 页面的示例,请参阅函数 copyPage、getECUPage、getNumPages、getXCPPage、setECUPage、setXCPPage 和 setECUAndXCPPage。
使用 XCP 和 ECU 页面设置参数
此示例展示了一种可能的工作流,用于在多个 XCP 和 ECU 页面上应用不同的参数值。
打开模型,构建实时应用程序,并加载该实时应用程序。
openExample('slrt_ex_param_tuning'); slbuild('slrt_ex_param_tuning'); tg = slrealtime; load(tg,'slrt_ex_param_tuning');获取 ECU 页面的内存页映射。
mappingOfECUpage = getECUPage(tg)
ans = uint8 0
获取 XCP 页面的内存页映射。
mappingOfXCPpage = getXCPPage(tg)
ans = uint8 0
将 XCP 页映射到内存页 1。
setXCPPage(tg,1);
启动实时应用程序。
start(tg);
使用
setparam函数更改参数值,并注意该参数的更改并未反映在正在运行的应用程序中。出现这种现象是因为setparam影响了 XCP 页面中的参数。该页面当前映射到内存页面 1,但 ECU 页面映射到内存页面 0。因此,参数值的改变并未在应用程序中体现出来。setparam(tg,'slrt_ex_param_tuning/Gain2','Gain',1200000);
使用
getsignal函数来证明内存页 1 上的参数值并未对正在运行的应用程序产生影响。由于 Gain 模块的输出为方波,因此其值要么是4000000,要么是-4000000。getsignal(tg,'slrt_ex_param_tuning/Gain2',1)ans = 4000000将 ECU 页面映射到内存页面 1,并注意参数值的改变会在实时应用程序中生效。出现这种现象是因为内存页 1 同时映射到了 ECU 页和 XCP 页。
setECUPage(tg,1);
使用
getsignal函数来验证内存页 1(现已映射到 ECU 页)上的参数值是否已应用于正在运行的应用程序。由于 Gain 模块的输出为方波,因此更新后的值要么是4800000,要么是-4800000。getsignal(tg,'slrt_ex_param_tuning/Gain2',1)ans = 4800000
另请参阅
Target | copyPage | getNumPages | getXCPPage | setECUAndXCPPage | setECUPage | setXCPPage