利用XCP通信进行外部模式仿真
在外部模式模拟中,可以实时调优参数并监视目标应用程序信号。使用在自定义硬件上运行应用程序,您可以在开发计算机或自定义硬件上设置和运行外部模式模拟使用XCP通信信道。
对于外部模式模拟,您:
在开发计算机上构建目标应用程序。
将目标应用程序部署到目标硬件。
连接模型金宝app®到在目标硬件上运行的目标应用程序。
在目标硬件上开始执行生成的代码。
在开发计算机上运行XCP外部模式仿真
配置并运行外部模式模拟它使用XCP通信协议。模拟过程中:
通过使用作用域块、仪表板块和模拟数据检查器来监视信号。
使用仪表板块调优参数。
配置XCP信号监控和参数调优
为本例创建一个文件夹。
mkdirext_mode_xcp_examplecdext_mode_xcp_example
打开Sim金宝appulink,创建一个简单的模型,
xcpExample
,其中包含这些块:正弦波
获得
范围
一半计
旋钮
双击正弦波块。集样品时间到0.1,然后单击好吧.
双击获得块。集获得到2,然后单击好吧.
连接正弦波块到获得阻止并命名连接,例如,
测试信号
.连接获得块到范围阻止并命名连接,例如,
输出信号
.配置
测试信号
日志记录:选择
测试信号
.在信号选项卡,在监控部分中,选择测井信号.
如果不启用信号记录,则无法进行流处理
测试信号
到模拟数据检查器。配置一半计块来监视的值
测试信号
:双击一半计块。
在Simuli金宝appnk编辑器中,选择
测试信号
.在Block Parameters对话框中:
将块连接到
测试信号
.在最大字段,输入一个值,例如:
1
.
点击好吧.
配置旋钮块来调优振幅参数。正弦波布洛克:
双击旋钮块。
在Simuli金宝appnk编辑器中,选择正弦波块。
在Block Parameters对话框中:
将块连接到振幅参数。正弦波块。
在最低而且最大字段,分别输入值,例如0.1和1。
点击好吧.
将模型另存为
xcpExample
.
指定硬件并准备型号
从应用程序选项卡中的Simuli金宝appnk工具条中的在硬件上运行的设置部分中,点击在自定义硬件上运行.在“在自定义硬件上运行”弹出对话框中,单击完成.
在硬件节中,指定系统目标文件。在本例中,使用默认值,
grt.tlc
.如果你有嵌入式编码器®,您可以指定ert.tlc
.在准备画廊,下模型配置,点击硬件设置.打开“配置参数”对话框,显示硬件实现由系统目标文件确定的设置。
在解算器面板:
在类型字段中,指定
固定步
.下解算器的细节,在固定的大小字段,指定一个值,例如0.1。
在代码生成>优化窗格中,设置默认参数行为来
可调
.在代码生成>接口窗格中,选择外部模式复选框。
集传输层来
TCP/IP上的XCP
,其中指定ext_xcp
为MEX-file名字.您不能禁用静态内存分配复选框。的静态内存缓冲区大小value指定分配给信号记录的XCP服务器内存的大小。本例中,使用默认值。
如果系统目标文件是
ert.tlc
,在代码生成>模板面板:选择生成一个示例主程序复选框。
集目标操作系统来
BareBoardExample
.中提供的外部模式抽象层的文档api
,代码生成器将创建一个示例,演示如何为不运行操作系统的裸板提供XCP外部模式目标连接。matlabroot
\工具箱\编码器\ xcp \ src \ \ ext_mode \ \ ext_mode.h包括目标
点击好吧.然后保存模型。
构建并运行目标应用程序
在在硬件上运行部分:
若要为模拟停止时间指定非默认值,请使用停止时间字段,指定您的值,例如,
正
.点击.软件:
构建目标应用程序:
在Windows中®,构建过程创建:
xcpExample.exe
——可执行文件。xcpExample.pdb
——信号和参数的调试符号文件。
在Linux中®,构建过程将DWARF格式的调试信息放在创建的ELF可执行文件中,
xcpExample
.
在开发计算机上将目标应用程序作为单独的进程运行。
将Simulink金宝app连接到目标应用程序。
运行生成的模型代码。
如果需要分别执行,请单击监视和调优.下分步命令,请点击:
为监控而构建
部署
连接
开始
监控信号和调优参数
你可以监控测试信号
通过:
范围block——双击该块。
模拟数据检查器——单击模拟数据检查器按钮。打开“模拟数据检查器”时,选择测试信号复选框,显示流数据。
Half-Gauge块。
若要更改正弦波的振幅,请旋转上的指针旋钮块到所需的值。
下表描述了更多的调优方法可调模拟过程中的块参数。
方法 | 细节 |
---|---|
模型数据编辑器 |
要通过模型数据编辑器调优参数:
有关更多信息,请参见模型数据编辑器. |
块参数对话框 |
通过块参数对话框调优参数:
|
MATLAB®工作空间 |
如果块参数为MATLAB工作空间变量:
有关更多信息,请参见创建和编辑变量. |
有关使用生成的代码调优参数的详细信息,请参见使用TCP/IP或串行通信的外部模式模拟而且在生成的代码中创建可调校准参数(嵌入式编码).
如果您的模型包含一个状态流®图表,可以查看状态活动。有关更多信息,请参见动画状态流程图(Stateflow).
停止目标应用程序
停止之前生成的模型代码的执行StopTime
到达并断开目标应用程序时,在“Simulink编辑器”工具栏上单击“停止”按钮金宝app.
如果要在不停止代码执行的情况下断开目标应用程序与Simulink的连接,请单击金宝app.然后,在分步命令,点击断开连接.
XCP外部模式模拟触发信号监测
对于XCP外部模式模拟,您可以配置一个触发器来启动目标应用程序数据的上传,以便在Simulink中进行信号监控。金宝app
在Simuli金宝appnk编辑器中,通过右键单击每个信号并选择来配置这些信号以记录日志日志选择信号:
test_signal
test_carrier
test_output
cmp_output
从应用程序选项卡中的Simuli金宝appnk工具条中的在硬件上运行的设置部分中,点击在自定义硬件上运行.在“在自定义硬件上运行”弹出对话框中,单击完成.
在准备画廊,下模型配置,点击硬件设置.
在解算器窗格,在类型字段中,指定
固定步
.在代码生成>接口窗格中,选择外部模式复选框。
集传输层来
TCP/IP上的XCP
,其中指定ext_xcp
为MEX-file名字.点击好吧.然后保存模型。
要打开“外部信号和触发”对话框,请从准备画廊,下信号监测与跟踪,点击控制面板.
在配置部分中,点击信号与触发,打开“外部信号和触发”对话框。
通过此对话框,您可以选择监控信号并配置从目标应用程序上传数据的触发器。对于本例,使用默认设置。例如:
的选择所有复选框。—对话框显示
X
在每一行的选择列。您可以在模拟过程中监视所有记录的信号。源设置为手册—“外部模式控制面板”提供数据上传的手动控制功能,例如手臂触发按钮。
的手臂连接到目标时复选框选中—当您将Simulink连接到目标应用程序时,触发器已启动。金宝app
点击好吧.
从硬件选项卡中的金宝app在硬件上运行部分:
在停止时间字段,指定您的值,例如,
正
.保存模型。
点击.软件:
构建目标应用程序:
在开发计算机上将目标应用程序作为单独的进程运行。
将Simulink金宝app连接到目标应用程序。
运行生成的模型代码。
要查看范围显示,双击ScopeA
而且ScopeB
.
要监视模拟数据检查器中的信号,请在审查结果部分,单击数据检查按钮。
从外部模式控制面板,您可以暂停或恢复信号记录和监测。在连接与触发部分中,点击取消触发或手臂触发分别。
若要停止目标应用程序的执行并断开Simulink与目标环境的连接,请单击金宝app停止实时代码.
有关信号监控和触发选项的信息,请参见XCP外部模式控制面板而且XCP外部信号和触发对话框.
从命令行运行XCP外部模式模拟
可以使用命令运行XCP外部模式模拟。要检索和设置模型参数的值,请使用get_param
而且set_param
命令。
要运行这些命令,必须打开Simulink模型并运行目标应用程序。金宝app
将模型仿真模式设置为外部模式。
set_param (gcs,“SimulationMode”,“外部”);
将Simulin金宝appk连接到目标应用程序。
set_param (gcs,“SimulationCommand”,“连接”)
运行生成的模型代码。
set_param (gcs,“SimulationCommand”,“开始”);
要调优参数,请通过行命令更改其工作区变量值。例如,如果块参数值指定为a
金宝app仿真软件。参数
对象时,将新值赋给价值
财产。myParamObj。价值= 5.23;
要将新值下载到目标应用程序,请更新模型。
set_param (gcs,“SimulationCommand”,“更新”);
停止目标应用程序并断开Simulink与目标环境的连接。金宝app
set_param (gcs,“SimulationCommand”,“停止”);
要在不停止执行生成的代码的情金宝app况下断开Simulink与目标应用程序的连接,使用以下命令:
set_param (gcs,“SimulationCommand”,“断开”);
的set_param
使用“SimulationCommand”
参数是异步的。如果从脚本中依次运行命令,则每个命令都将启动,而无需等待前一个命令完成。要检查脚本中的每个命令是否完整,请使用get_param
命令使用“SimulationStatus”
论点。例如,对于步骤1到步骤3,在脚本中指定这些命令:
set_param (gcs,“SimulationMode”,“外部”);set_param (gcs,“SimulationCommand”,“连接”);isExternalSimulationActive = false;而~isExternalSimulationActive simStatus = get_param(gcs,“SimulationStatus”);isExternalSimulationActive = strcmp(simStatus“外部”);结束set_param (gcs,“SimulationCommand”,“开始”);
有关更多信息,请参见以编程方式运行模拟.
属性生成的错误消息get_param
而且set_param
命令。
该表提供了可以在中使用的参数get_param
而且set_param
命令。
外部模式命令行参数
参数和值 | 对话框等效 | 描述 |
---|---|---|
ExtModeArmWhenConnect 从 ,在 |
外部信号及触发:手臂连接到目标时复选框 | 马上扣上扳机金宝app仿真软件编码器™软件连接到目标。 |
ExtModeBatchMode 从 ,在 |
外部模式控制面板:批量下载复选框 | 启用或禁用批处理模式下的参数下载。 |
ExtModeConnected 从 ,在 |
外部模式控制面板:连接/断开连接按钮 | 指示与目标应用程序的连接状态。 |
ExtModeEnableFloating 从 ,在 |
外部模式控制面板:启用数据上传复选框 | 当使用浮动作用域建立连接时,启用或禁用激活和取消触发器。 |
ExtModeLogAll 从 ,在 |
外部信号及触发:选择所有复选框 | 从目标器上传可用信号到主机。 |
ExtModeSendContiguousSamples 从 ,在 |
外部信号及触发:在同一个包中发送多个连续的样本复选框 | 指定流信号到Simulink的XCP DAQ封装模式。金宝app目标应用程序从数据包中的多个时间步中发送样本。ExtModeTrigDuration 确定数据包中发送的样本数量。 |
ExtModeTrigDelay 整数 (0 ) |
外部信号及触发:延迟文本字段 | 指定从触发器发生到开始数据收集之间所经过的时间量(以基本速率步长表示)。 |
ExtModeTrigDirection 特征向量 -不断上升的 ,下降 ,要么 |
外部信号及触发:方向菜单 | 指定信号在超过阈值时必须传播的方向。 |
ExtModeTrigDuration 整数 (1000 ) |
外部信号及触发:持续时间文本字段 | 指定外部模式在触发事件后记录数据的基本速率步数。 如果
n =(基准率)/(抽样率)为 |
ExtModeTrigHoldOff 整数 (0 ) |
外部信号及触发:不接近文本字段 | 指定触发器事件终止到触发器重新武装之间的基本速率步长。 |
ExtModeTrigLevel 整数 (0 ) |
外部信号及触发:水平文本字段 | 指定触发信号必须通过的阈值以触发触发器。 |
ExtModeTrigMode 特征向量 -正常的 ,一次通过 |
外部信号及触发:模式菜单 | 指定触发器是在每次触发事件后自动重新武装,还是每次武装触发器时只收集一个数据缓冲区。 |
ExtModeTrigSignalBlockPath 特征向量 |
外部信号和触发:在信号的选择查看,选择信号,然后单击触发信号按钮。 | 指定包含提供触发信号的输出端口的块的路径。 |
ExtModeTrigSignalOutputPortIndex 整数 |
外部信号和触发:在信号的选择查看,选择信号,然后单击触发信号按钮。 | 为指定的块指定触发信号输出端口的索引ExtModeTrigSignalBlockPath . |
ExtModeTrigType 特征向量 -手册 ,信号 |
外部信号及触发:源菜单 | 指定是在触发器启动时开始记录数据,还是当指定的触发器信号满足触发条件时开始记录数据。 |
目标应用程序参数
您可以使用可选参数运行目标应用程序。您可以通过自定义启动器实现将可选参数传递给目标应用程序。
论点 | 描述 |
---|---|
- w |
指定目标应用程序进入并保持等待状态,直到它接收到来自Simulink的消息。金宝app 如果您没有指定 |
- tf |
重写模型参数 指定
|
对于基于主机的外部模式模拟,可以指定附加的rtiostream(嵌入式编码)
参数。
论点 | 描述 |
---|---|
|
指定详细级别:
|
|
为 为 在Windows上, 在Linux上, |
|
为 |
XCP外部模式限制
此表描述了应用于使用XCP通信的外部模式模拟的限制。
功能 | 细节 | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
更改模型结构的参数更新 |
你不能改变:
如果参数更新更改了模型结构,则必须重新构建目标应用程序。 你可以改变分子分母多项式的参数转移Fcn,离散传输Fcn,离散滤波器如果状态数不变,则阻塞。 你不能改变零项状态方程,Zero-Pole,离散Zero-Pole块中的用户指定的或计算的参数,即A, B, C和D矩阵通过零极到状态空间的转换获得。 在状态方程块,如果在可控规范实现中指定矩阵,则允许更改A、B、C和D矩阵以保留该实现和矩阵的维度。 如果Simul金宝appink框图与目标应用程序不匹配,Simulink将产生一个错误,说明校验和不匹配。校验和考虑顶级模型,但不考虑引用模型。要重新构建目标应用程序,请使用更新后的框图。 |
||||||||||||||||||||||||||||||||||||||||||
信号值显示 |
不支持在模拟过程中图形化显示信号值。金宝app例如,不能使用仿真中的数据显示菜单项悬停时显示值标签,单击时切换值标签,显示所选端口的值标签.有关更多信息,请参见在模型图中显示信号值. |
||||||||||||||||||||||||||||||||||||||||||
数据归档 |
数据归档可在外部模式控制面板不支持。金宝app您可以使用模拟数据检查器来收集和导出数据。 |
||||||||||||||||||||||||||||||||||||||||||
覆盖信号记录设置 | 如果你使用信号测井选择器若要覆盖信号记录设置,则覆盖大量毁灭而且限制数据点不支持设置。金宝app |
||||||||||||||||||||||||||||||||||||||||||
子系统信号测井 |
对于外部模式模拟,信号记录发生响应事件在目标硬件上。目前,唯一支持的日志事件是一个新的示例时金宝app间滴答。有些子系统是通过控制信号来启用或禁用的。对于这些子系统,即使子系统的控制信号没有启用,软件也会记录信号值。 例如,if信号在启用子系统块被配置为日志记录,即使当子系统的控制信号不大于零时,软件也会记录信号值。在这种情况下,日志值是控制信号最后一次大于零时信号所具有的值。 有关应用此限制的子系统的详细信息,请参见金宝appSimulink子系统语义. |
||||||||||||||||||||||||||||||||||||||||||
编译器调试符号格式 |
工具链必须以以下格式之一生成调试信息:
|
||||||||||||||||||||||||||||||||||||||||||
全局变量 |
信号、参数和状态必须指定为全局变量。存储变量的目标内存位置必须位于0 - 4294967295的范围内。 |
||||||||||||||||||||||||||||||||||||||||||
参数结构 |
不能调优结构的形参。 |
||||||||||||||||||||||||||||||||||||||||||
纯整数码 |
支持纯整数代码。金宝app对于代码生成,如果 如果您没有指定 如果你指定
|
||||||||||||||||||||||||||||||||||||||||||
适应信号 |
不支持上传可变大小的信号。金宝app |
||||||||||||||||||||||||||||||||||||||||||
编译器支持金宝app |
|
||||||||||||||||||||||||||||||||||||||||||
|
金宝app仿真软件。ImageType 不支持数据类型。金宝app |
||||||||||||||||||||||||||||||||||||||||||
地址的粒度 |
不支持使用word地址的目标硬件。金宝app |
||||||||||||||||||||||||||||||||||||||||||
便携式字大小 |
当生产目标硬件是可字寻址的时,不支持使用可移植的字大小生成基于主机的目标应用程序。金宝app生产目标硬件必须支持8位、16位和32位本机数据类型。金宝app |
||||||||||||||||||||||||||||||||||||||||||
范围块 |
如果你的模型使用范围block和在外部模式模拟期间记录的数据量变得非常大,Simulink可能会变慢。金宝app而不是范围块,您可以使用模拟数据检查器或仪表板库中的等效块。有关更多信息,请参见决定如何可视化模拟数据. |
||||||||||||||||||||||||||||||||||||||||||
范围而且浮动范围块和范围查看器 |
不支持某些信号数据类型。金宝app模拟产生一个警告。 |
||||||||||||||||||||||||||||||||||||||||||
浮动范围块和范围查看器 | 你不能使用浮动范围block和Scope viewer用于在外部模式模拟期间监控参考模型中的信号。要监视参考的模型信号,请启用信号记录并使用模拟数据检查器。 | ||||||||||||||||||||||||||||||||||||||||||
引用模型中的作用域 |
在模型层次结构中,如果顶层模型以外部模式运行,则不会显示引用模型中的作用域。若要监视引用模型中的信号,请启用信号记录并使用模拟数据检查器。 |
||||||||||||||||||||||||||||||||||||||||||
非零模拟开始时间 |
不支持非零模拟启动时间。金宝app使用默认值解算器>开始时间, |
||||||||||||||||||||||||||||||||||||||||||
中间步长值 |
一些Sim金宝appulink块可以在一个仿真时间步长中生成多个值。例如:
对于外部模式模拟中的每个时间步骤,Simulink仅从目标应用程序上传这些块的最终值。金宝app金宝appSimulink不会上传在该步骤中生成的中间值。 |
||||||||||||||||||||||||||||||||||||||||||
File-scoped数据 |
不支持文件范围的数据。金宝app例如,应用内置自定义存储类的数据项 有关的更多信息 |
||||||||||||||||||||||||||||||||||||||||||
行主代码生成 |
不支持使用行主行格式生成的代码。金宝app |
||||||||||||||||||||||||||||||||||||||||||
并发执行 |
在Windows和Linux电脑上,并发执行是支持金宝app的。 在Mac对于计算机,不支持使用本机线程示例的并发执行。金宝app如果外部模式而且允许任务在目标上并发执行如果选中复选框,则无法构建目标应用程序,除非您使用的目标硬件支持包支持外部模式模拟的并发执行。金宝app 在Windows计算机上,在运行时,目标应用程序中的基本采样时间被量化为系统计时器中断间隔的最接近倍数(通常为15.625毫秒)。抽样子数是基础抽样率的期望倍数。模拟数据检查器(SDI)中记录的时间戳对应于模拟时间,而不是时钟时间。作为一个例子,这个表显示了一个Simulink模型的步骤时间,该模型的基本采样时间为10 ms,子采样时间金宝app为20 ms。
|
||||||||||||||||||||||||||||||||||||||||||
将模拟输出保存为单个对象 | 不支持将XCP外部模式模拟输出保存为单个对象。金宝app模拟产生一个警告。 |