主要内容

基于XCP通信的外部模式仿真

在外部模式模拟中,您可以实时调整参数并监视目标应用程序信号。使用“在自定义硬件上运行”应用程序,您可以设置并在开发计算机或自定义硬件上运行外部模式模拟使用XCP通信信道的。

对于外部模式模拟,您可以:

  1. 在开发计算机上构建目标应用程序。

  2. 将目标应用程序部署到目标硬件。

  3. 连接模型万博1manbetx®到在目标硬件上运行的目标应用程序。

  4. 在目标硬件上开始执行生成的代码。

在开发计算机上运行XCP外部模式模拟

配置并运行外部模式仿真使用XCP通信协议的。在仿真:

  • 使用范围块、仪表板块和模拟数据检查器监视信号。

  • 使用仪表板块调整参数。

配置XCP的信号监控和参数调优

  1. 为此示例创建一个文件夹。

    mkdirext_模式xcp_示例光盘ext_模式xcp_示例

  2. 打开Sim万博1manbetxulink并创建一个简单模型,例如,它包含以下区块:

    • 正弦波

    • 获得

    • 范围

    • 一半计

    • 旋钮

  3. 双击正弦波块设置样品时间设置为0.1,然后单击好啊

  4. 双击获得块设置获得将其设置为2,然后单击好啊

  5. 连接正弦波封锁获得阻塞并命名连接,例如,测试信号

  6. 连接获得封锁范围阻塞并命名连接,例如,输出信号

  7. 配置测试信号日志记录:

    1. 选择测试信号

    2. 信号选项卡,在班长部分中,选择测井信号

    如果不启用信号记录,则无法流式传输测试信号到模拟数据检查器。

  8. 配置一半计块来监视测试信号:

    1. 双击一半计

    2. 在Simuli万博1manbetxnk编辑器中,选择测试信号

    3. 在“块参数”对话框中:

      • 将块连接到测试信号

      • 最大字段,输入一个值,例如,1.

    4. 点击好啊

  9. 配置旋钮块来调整振幅参数正弦波区块:

    1. 双击旋钮

    2. 在Simuli万博1manbetxnk编辑器中,选择正弦波

    3. 在“块参数”对话框中:

      • 将块连接到振幅参数正弦波

      • 最低限度最大字段中,分别输入值,例如0.1和1。

    4. 点击好啊

  10. 将模型另存为例如

指定硬件和准备模型

  1. 应用程序在Simulink t万博1manbetxoolstrip上的设置为在硬件上运行部分,单击在自定义硬件上运行.在“在自定义硬件上运行”对话框中,单击完成

  2. 硬件节,指定系统目标文件。对于本例,使用默认值,grt.tlc.如果你有嵌入式编码器®,你可以指定ert.tlc

  3. 准备画廊,下模型配置,点击硬件设置.打开“配置参数”对话框,显示如下信息硬件实现由系统目标文件确定的设置。

  4. 解算器面板:

    1. 类型字段,指定固定步长

    2. 在下面解算器详细信息,在固定的大小字段中,指定一个值,例如0.1。

  5. 代码生成>优化窗格,集合默认参数的行为可调

  6. 代码生成>界面窗格中,选择外部模式复选框。

  7. 设置传输层的XCP TCP / IP,它指定外部xcp对于MEX-file名字

  8. 您不能禁用静态内存分配复选框。该静态内存缓冲区大小value指定分配给信号记录的XCP从内存的大小。对于本例,使用默认值。

  9. 如果系统目标文件ert.tlc,在代码生成>模板面板:

    • 选择生成一个示例主程序复选框。

    • 设置目标操作系统赤裸裸的例子

      使用中提供的外部模式抽象层的文档化API草根\工具箱\编码器\ xcp \ src \ \ ext_mode \ \ ext_mode.h包括目标,代码生成器创建了一个示例,演示如何为不运行操作系统的裸板提供XCP外部模式目标连接。

  10. 点击好啊. 然后保存模型。

构建并运行目标应用程序

在硬件上运行第节:

  1. 要为模拟停止时间指定非默认值,请在停止时间字段,指定您的值,例如,

  2. 点击. 软件:

    1. 生成目标应用程序:

      • 在窗户里®,构建过程创建:

        • xcpExample.exe–可执行文件。

        • xcpExample.pdb——用于信号和参数的调试符号文件。

      • 在Linux中®,构建过程将DWARF格式调试信息放置在创建的ELF可执行文件中,例如

    2. 在开发计算机上作为单独的进程运行目标应用程序。

    3. 将Simulink万博1manbetx连接到目标应用程序。

    4. 运行生成的模型代码。

    要单独执行这些步骤,请单击监视和调谐在下面逐步命令,点击:

    1. 构建监测

    2. 部署

    3. 连接

    4. 开始

监测信号并调整参数

你可以监视测试信号通过:

  • 范围block——双击该块。

  • 模拟数据检查器–单击模拟数据检查器按钮。当模拟数据检查器打开时,选择测试信号复选框,显示流式数据。

  • 半规

要改变正弦波的振幅,旋转指针在旋钮将块设置为所需的值。

此表介绍了更多的调整方法可调模拟过程中的块参数。

方法 细节

模型数据编辑器

要通过模型数据编辑器调整参数,请执行以下操作:

  1. 硬件Simulink编辑器万博1manbetx的选项卡,位于准备部分,单击调整参数,打开模型数据编辑器。

  2. 如果您想同时更新多个可调参数,请在准备第节,打开保持更新

  3. 参数“模型数据编辑器”的选项卡,位于价值列中,为可调参数指定新值。

  4. 隐藏面保持更新或者点击更新所有参数(Ctrl+D).S万博1manbetximulink同时将新值下载到目标应用程序。

    如果保持更新是关闭的,然后在指定新值之后,Simulink立即将新值下载到目标应用程序。万博1manbetx

有关更多信息,请参见模型数据编辑器

块参数对话框

通过“块参数”对话框调整参数:

  1. 对于要更新的每个块:

    1. 双击块,打开块参数对话框。

    2. 在参数字段中,指定新的参数值。

    3. 点击申请好啊

  2. 如果保持更新打开时,切换为关闭保持更新或者点击更新所有参数(Ctrl+D).S万博1manbetximulink同时将新值下载到目标应用程序。

    如果保持更新关闭,然后单击申请好啊, 万博1manbetxSimulink将新块值下载到目标应用程序。

MATLAB®工作空间

如果块参数是MATLAB工作空间变量:

  1. 在命令窗口中,为变量指定新值。

  2. 硬件Simulink编辑器万博1manbetx的选项卡,位于准备部分,单击更新所有参数(Ctrl+D).S万博1manbetximulink将新值下载到目标应用程序。

有关更多信息,请参见创建和编辑变量

有关使用生成的代码进行参数调整的更多信息,请参阅外部模式模拟与TCP/IP或串行通信在生成的代码中创建可调校准参数(嵌入式编码器)

如果您的模型包含状态流®图表,您可以查看状态活动。有关更多信息,请参见动画Stateflow图表(状态流)

停止目标应用程序

在执行之前停止执行生成的模型代码结束时刻,并断开目标应用程序,在Simulink Editor工具栏上,单击Stop按钮万博1manbetx

如果希望在不停止代码执行的情况下断开目标应用程序与Simulink的连接,请单击万博1manbetx.然后,在逐步命令,点击断开连接

XCP外部模式模拟的触发信号监控

对于XCP外部模式模拟,您可以配置一个触发器,用于开始上传目标应用程序数据,以便在Simulink中进行信号监控。万博1manbetx

  1. 在本地文件夹中创建一个简单的模型。

  2. 在Simuli万博1manbetxnk Editor中,通过右键单击每个信号然后选择,配置这些信号以进行日志记录记录所选信号:

    • test_signal

    • 测试载体

    • test_output

    • cmp_output

  3. 应用程序在Simulink t万博1manbetxoolstrip上的设置为在硬件上运行部分,单击在自定义硬件上运行.在“在自定义硬件上运行”对话框中,单击完成

  4. 准备画廊,下模型配置,点击硬件设置

  5. 解算器窗格中,在类型字段,指定固定步长

  6. 代码生成>界面窗格中,选择外部模式复选框。

  7. 设置传输层的XCP TCP / IP,它指定外部xcp对于MEX-file名字

  8. 点击好啊. 然后保存模型。

  9. 要打开“外部信号和触发”对话框,请从准备画廊,下信号监测与跟踪,点击控制面板

  10. 配置部分,单击触发信号,打开“外部信号和触发”对话框。

    通过此对话框,您可以选择用于监视的信号,并配置用于从目标应用程序上载数据的触发器。对于本例,请使用默认设置。例如:

    • 这个全选选中复选框-该对话框将显示X在每一行挑选出来的列。您可以在模拟期间监控所有记录的信号。

    • 被设置为手册–外部模式控制面板提供数据上传的手动控制,例如手臂触发按钮

    • 这个连接到目标时使用手臂选中复选框-将Simulink连接到目标应用程序时,触发器处于待命状态。万博1manbetx

  11. 点击好啊

  12. 硬件选项卡中的万博1manbetx在硬件上运行第节:

    1. 停止时间字段,指定您的值,例如,

    2. 保存模型。

    3. 点击. 软件:

      1. 生成目标应用程序:

      2. 在开发计算机上作为单独的进程运行目标应用程序。

      3. 将Simulink万博1manbetx连接到目标应用程序。

      4. 运行生成的模型代码。

要查看显示的范围,双击ScopeAScopeB

要在模拟数据检查器中监视信号,请在审查结果节中,单击数据检查按钮

从外部模式控制面板,您可以暂停或恢复信号记录和监控。在连接和触发部分,单击取消触发手臂触发分别地

要停止目标应用程序的执行并断开Simulink与目标环境的连接,请单击万博1manbetx停止实时代码

有关信号监测和触发选项的信息,请参阅XCP外部模式控制面板XCP外部信号和触发对话框

从命令行运行XCP外部模式模拟

您可以使用命令运行XCP外部模式模拟。要检索和设置模型参数的值,请使用获取参数u参数集命令。

要运行这些命令,必须打开Simulink模型并运行目标应用程序。万博1manbetx

  1. 将模型模拟模式设置为外部模式。

    设置参数(地面军事系统,“模拟模式”,“外部”);

  2. 将Simulin万博1manbetxk连接到目标应用程序。

    设置参数(地面军事系统,“SimulationCommand”,“连接”)

  3. 运行生成的模型代码。

    设置参数(地面军事系统,“SimulationCommand”,“开始”);

  4. 要优化参数,请通过行命令更改其工作区变量值。例如,如果块参数值指定为万博1manbetxSimulink.参数对象,将新值指定给价值所有物

    myParamObj。价值= 5.23;

  5. 要将新值下载到目标应用程序,请更新模型。

    设置参数(地面军事系统,“SimulationCommand”,“更新”);

  6. 停止目标应用程序并断开Simulink与目标环境的连接。万博1manbetx

    设置参数(地面军事系统,“SimulationCommand”,“停下来”);

    要在不停止执行生成代码的情况万博1manbetx下断开Simulink与目标应用程序的连接,请使用以下命令:

    设置参数(地面军事系统,“SimulationCommand”,“断开连接”);

这个u参数集使用“SimulationCommand”参数是异步的。如果从脚本连续运行命令,则每个命令都会启动,而无需等待上一个命令完成。要检查每个命令是否完成,请在脚本中使用获取参数命令“模拟状态”参数。例如,对于步骤1到3,请在脚本中指定以下命令:

设置参数(地面军事系统,“模拟模式”,“外部”); 设置参数(地面军事系统,“SimulationCommand”,“连接”); isExternalSimulationActive=false;虽然~isExternalSimulationActive simStatus=获取参数(gcs,“模拟状态”); isExternalSimulationActive=strcmp(模拟状态,“外部”);终止设置参数(地面军事系统,“SimulationCommand”,“开始”);

有关更多信息,请参见以编程方式运行模拟

诊断查看器显示诊断程序生成的错误消息获取参数u参数集命令。

目标应用程序参数

可以使用可选参数运行目标应用程序。您可以通过自定义启动器实现将可选参数传递给目标应用程序。

论点 描述
-w

指定目标应用程序进入并保持等待状态,直到接收到来自Simulink的消息。万博1manbetx

如果您没有指定-w,目标应用程序立即执行模型代码。模型代码从您构建模型时起使用参数值运行。

- tf时间

替代模型参数结束时刻

指定时间:

  • 秒如果纯整数码被设置为“关闭”

  • 基本费率步骤,如果纯整数码被设置为“开”

- tf正指定在执行模型代码时模型无限期运行。

对于基于主机的外部模式模拟,您可以指定额外的rtiostream(嵌入式编码器)参数。

论点 描述

- verbose数量

指定详细级别:

  • 0–无信息

  • 1–详细信息

-港口数字

对于的XCP TCP / IP传输层,指定TCP/IP服务器端口号。请使用256 ~ 65535之间的整数。默认是17725。

对于串行通信上的XCP传输层,指定串行端口ID。例如:

在Windows上,“COM1”或1个COM1,“COM2”或者两个COM2,等等。

在Linux上,“/dev/ttyS0”,等等。

-波特价值

对于串行通信上的XCP传输层,指定波特率值:1200、2400、4800、9600、14400、19200、38400、57600(默认)或115200。

XCP外部模式限制

此表描述了适用于使用XCP通信的外部模式模拟的限制。

特色 细节

更改模型结构的参数更新

您不能更改:

  • 块的状态、输入或输出的数量

  • 抽样时间或者抽样次数

  • 连续系统的积分算法

  • 模型或块的名称

如果进行更改模型结构的参数更新,则必须重新生成目标应用程序。

你可以改变分子和分母的多项式参数传递函数,离散传递函数离散滤波器如果状态数不变,则会阻止。

中不能修改零项状态方程,零极点离散Zero-Pole块,即由零极点到状态空间变换得到的A, B, C, D矩阵。

状态方程块中,如果指定可控规范实现中的矩阵,则允许更改保持此实现的A、B、C和D矩阵以及矩阵的维数。

如果Simul万博1manbetxink块图与目标应用程序不匹配,则Simulink产生一个错误,说明校验和不匹配。校验和考虑的是顶级模型,而不是引用模型。要重建目标应用程序,请使用更新后的框图。

信号值显示

不支持模拟期间信号值的图形显示。例如,您不能使用万博1manbetx仿真中的数据显示菜单项悬停时显示值标签,单击时切换值标签显示所选端口的值标签。有关详细信息,请参阅在模型图中显示信号值

数据归档

数据归档上提供的功能外部模式控制面板不受支持。万博1manbetx您可以使用Simulation Data Inspector来收集和导出数据。

覆盖信号记录设置

如果你使用信号记录选择器要覆盖信号记录设置,请使用控件覆盖大量毁灭限制数据点不支持设置。万博1manbetx

子系统信号记录

对于外部模态模拟,信号记录发生在响应事件在目标硬件上。目前,唯一支持的日志记录事件是新的采样时间刻度。一些子系统通过控制信号启用万博1manbetx或禁用。对于这些子系统,即使子系统的控制信号未启用,软件也会记录信号值。

例如,如果启用子系统块配置为记录,即使子系统的控制信号不大于零,软件也会记录信号值。在这种情况下,记录的值是控制信号上次大于零时信号的值。

有关适用此限制的子系统的更多信息,请参见万博1manbetx仿真软件子系统的语义

编译器调试符号格式

您的工具链必须以以下格式之一生成调试信息:

  • PDB

全局变量

信号、参数和状态必须指定为全局变量。存储变量的目标内存位置必须在0 - 4294967295范围内。

参数结构

不能对结构参数进行调优。

纯整数码

支持纯整数代码。对于代码生成,如果万博1manbetx纯整数码“开”具体说明FixedStep分辨率大于或等于1微秒。例如,指定1.000001,而不是1.0000001。

如果您没有指定- tf最后时刻在执行命令中,目标应用程序无限期地运行生成的模型代码,忽略结束时刻

如果您指定- tf最后时刻在执行命令中:

  • 这个最后时刻值表示基本速率步数,而不是秒数。

  • 的最大值最后时刻,单位为ticksMAX_int32_T

适应信号

不支持上载可变大小的信号。万博1manbetx

编译器支持万博1manbetx

lcc-win64不支持。万博1manbetx

地址的粒度

不支持使用字地址的目标硬件。万博1manbetx

可移植字号

当生产目标硬件可字寻址时,不支持使用可移植字大小生成基于主机的目标应用程序。生产目标硬件必须支持8位、16位和32位本机数据类型。万博1manbetx

范围浮动范围块和范围查看器

不支持某些信号数据类型。万博1manbetx模拟产生一个警告。

浮动范围块和范围查看器 你不能使用浮动范围块和范围查看器,用于在外部模式模拟期间监控参考模型中的信号。要监视参考模型信号,请启用信号记录并使用仿真数据检查器。

引用模型中的作用域

在模型层次结构中,如果顶层模型以外部模式运行,则不显示引用模型中的作用域。若要监视引用模型中的信号,请启用信号记录并使用模拟数据检查器。

非零模拟开始时间

不支持非零的模拟启动时间。万博1manbetx使用默认值解算器>开始时间,0

中间阶跃值

某些Sim万博1manbetxulink块可以在模拟时间步长中生成多个值。例如:

对于外部模式模拟中的每个时间步,Simulink仅从目标应用程序上载此类块的最终值。Simulink不万博1manbetx会上载步骤中生成的中间值。

File-scoped数据

不支持文件范围的数据。万博1manbetx例如,对其应用内置自定义存储类的数据项文件镜。模拟将生成警告。

有关的更多信息文件镜存储类,看选择存储类以控制生成代码中的数据表示(嵌入式编码器)

行代码生成

不支持使用行主格式生成的代码。万博1manbetx

并行执行

在Windows和Linux计算机上,并发执行支持。万博1manbetx

在…上雨衣在计算机上,不支持使用本机线程示例并发执行。如果万博1manbetx外部模式允许任务在目标上并发执行选中复选框后,除非使用支持外部模式模拟并发执行的目标硬件支持包,否则无法构建目标应用程序。万博1manbetx

在Windows计算机上,在运行时,目标应用程序中的基本采样时间被量化为系统计时器中断间隔的最近倍数(通常为15.625 ms)。采样子速率是基本采样速率的预期倍数。模拟数据检查器(SDI)中记录的时间戳对应于模拟时间而非挂钟时间。例如,此表显示了基本采样时间为10 ms、子速率采样时间为20 ms的Simulink模型的步长时间。万博1manbetx

基准利率 亚速率
一步 挂钟时间(毫秒) 记录时间戳(女士) 一步 挂钟时间(毫秒) 记录时间戳(女士)
0 0 0 0 0 0
1. 15.625 10
2. 31.250 20 1. 31.250 20
3. 46.875 30
4. 62.500 40 2. 62.500 40

VxWorks®实例

如果系统目标文件ert.tlc目标操作系统VxWorks示例,则无法构建目标应用程序。

将模拟输出保存为单个对象 不支持将XCP外部模式模拟输出保存为单个对象。模拟将生成一个警告。万博1manbetx
结构填充和对齐 对于C结构的打包和对齐,编译器必须支持万博1manbetx# pragma包预处理器指令。否则,目标应用程序可能会产生未定义的行为。

相关话题

外部网站