主要内容

使用已连接IO与硬件通信

您可以使用Connected IO与硬件上的IO外设通信。

使用Connected IO进行仿真是基于模型的设计工作流中的中间步骤,它通过启用Simulink来弥合仿真和代码生成之间的差距金宝app®在将模型部署到硬件之前与硬件通信。Connected IO使您能够在接近实时的环境中使用来自硬件的外围数据修改模型设计并监视修改后的设计效果。您不需要在硬件上部署模型来监视修改后的设计的效果,这加快了模拟过程。Simulink(软件)和Arduino之间的交互金宝app®(硬件)是可能的,只有当你启用连接IO。

请注意

Connected IO只需要一次性部署IO服务器。

这些部分解释:

Arduino支持连接IO的单板和块金宝app

此处描述的Connected IO适用于金宝appArdu金宝appino硬件的Simulink支持包在这些Arduino板和块上:

连接IO如何工作

Connected IO创建一个通信接口,使Simulink模型和IO Server能够相互通信。金宝appSimu金宝applink模型驻留在您的计算机中,而IO Server是硬件上的一个引擎,它包含所有外围功能。传输层使用通信接口对数据进行格式化和传输。

该图显示了Connected IO在计算机和硬件之间创建的连接。

连接IO中的通信

当你用Connected IO模拟Sim金宝appulink模型时:

  1. 设备驱动程序阻塞(例如,数字输入而且数字输出block)在模型中请求来自IO Server的外围数据。

  2. IO Server接受请求并响应所请求的数据。您可以使用任何Simulink接金宝app收器或仪表板块来查看接收到的数据。使用接收到的外围数据,您可以验证您的模型设计是否满足要求。

    对于数据采集应用程序,IO Server可以预配置为以特定速率发送数据。有关更多信息,请参见使用连接IO进行数据采集

  3. 如果需要,您可以通过添加、删除或替换Simulink模型中的任何块来修改设计。金宝app

  4. 修改模型后,重新模拟模型。在仿真过程中,来自模型的数据请求被传递给硬件。您可以继续修改和模拟模型,直到达到预期的行为。

使用连接IO进行数据采集

数据采集可以通过使用轮询和流模式的连接IO完成。

轮询

轮询Connected IO中的通信是一个随需应变的过程。 设备驱动程序阻塞(例如 . exe)数字输入而且数字输出block)在模型中请求来自IO Server的外围数据。IO Server接受请求并响应所请求的数据。硬件只有在接收到来自Simulink模型的数据请求时才会发送数据。金宝app在这种模式下,您可以使用模型中所需的任意数量的块。

假设数据需要通过I2C从连接到目标硬件的设备读取,下图显示了轮询模式下目标和计算机之间的交互。

轮询方式

流媒体

流模式用于为传感器/源块获得更高的数据采集速率。在这种模式下,Simulink预先配金宝app置目标上的IO Server以块上指定的采样速率处理特定的命令。配置完成后,数据将以指定的速率主动从目标硬件传输到目标,无需额外的命令。

与轮询相比,从具有流的硬件获取数据的响应时间更短,轮询允许以高速率获取数据。

流需要对目标上的每个块进行配置。每个配置都在硬件上记录内存。所以,你只能在有限数量的块上使用这种模式。

只有源块(例如模拟输入数字输入I2C读)可以传输数据。接收器块(例如,数字输出I2C写)在轮询模式下工作。

假设数据需要通过I2C在采样时间10ms从连接到目标硬件的设备读取,下图显示了流模式下目标和计算机之间的交互。

流模式

请注意

  • 当轮询模式启用时,Connected IO中的通信是一个随需应变的进程。硬件只有在接收到Simulink模型的数据请求后才会发送数据。金宝app

    当启用流模式时,它可以帮助您获得更高的源块数据采集速率。金宝appSimulink预先配置目标上的IO Server以指定的采样速率处理特定的命令。硬件主动地以指定的速率发送数据,不需要任何额外的命令。

  • 您不必在硬件上构建、部署和运行模型来监视模型设计中更改的效果。

基于模型的设计中的连接IO

在没有Connected IO的情况下模拟模型时,Simulink不会与硬件通信。金宝app金宝app只有当代码生成并且模型以外部模式部署在硬件上时,Simulink才与硬件通信。Connected IO是基于模型的设计工作流中的一个中间步骤,它通过使Simulink在将模型部署到硬件之前与硬件通信来弥合模拟和代码生成之间的差距。金宝app

基于模型的设计工作流下图显示了一个基于模型的工作流:

  1. 创建一个Simul金宝appink模型。

  2. 模拟模型:

    1. 没有连接IO的仿真:没有硬件交互,也没有代码生成。

    2. 连接IO的仿真:模型与硬件通信。没有代码生成。

    3. 外部模式(Monitor & Tune):模型部署在硬件上并生成代码。

    请注意

    Connected IO中不支持模拟输入参考电压参数。金宝app

  3. 将模型部署到硬件。

基于模型的设计工作流

连接IO与外部模式有何不同

Connected IO和External模式都允许在模拟过程中与硬件通信。但是,Connected IO和External模式用于不同的目的。该表显示了您可以在每种模式下执行的操作。

行动 外部模式 连接输入输出
获取实时数据 可以通过“外部模式”获取实时数据。 启用金宝appSimulink节奏选项获得接近实时的数据。一个
实时数据定时分析 实时数据的定时分析是可能的,因为Simulink模型实时运行在硬件上。金宝app 实时数据的定时分析是不可能的,因为Simulink模型运行在您的计算机上,而不是硬件上。金宝app
开始模拟所需的时间 1 - 2分钟 几秒钟
代码生成 代码在硬件上生成。 不生成代码。

一个如果您的Simu金宝applink模型只有源块,则使用流模式来获取实时数据。

运行金宝app连接IO中的模型

按照以下步骤在连接IO模式下运行Simulink模型:金宝app

  1. 打开一个Sim金宝appulink模型。

  2. 建模模型的选项卡,选择模型设置

  3. 在“配置参数”对话框中,选择硬件实现属性中的目标硬件硬件板参数。

  4. 硬件模式部分中,选择连接输入输出然后点击使用IO运行

    连接IO工具条

  5. 此外,您可以通过启用更改模拟速率金宝app仿真软件踱来踱去如在模拟踱来踱去

    模拟起搏选项

连接IO模式:自动,轮询和流式

Connected IO提供以下模式:

  • 汽车:Auto是默认的Connected IO模式。当您选择此模式时,Simulink将自动在轮询和流式之金宝app间选择最合适的模式。

    • 如果Simul金宝appink模型只包含源块,并且启用了Simulink节奏,则设置为“每壁时钟秒仿真”1,则所有源块均启用流模式。

    • 如果Simul金宝appink模型包含接收器块,或者如果Simulink节奏被禁用,那么模型中的所有块(源块和接收器块)都以轮询模式运行。

  • 轮询:轮询是按需模式。当您选择此模式时,源块和接收器块都以轮询模式运行。

    以下情况需要选择此模式:

    • 该模型同时具有源块和Sink块。

    • 该模型有大量的块。

    • 该模型在基于事件的子系统(如触发子系统、启用子系统等)中具有源块。

    • 该模型具有需要锁步操作的应用程序。

    请注意

    在尝试代码生成之前,使用轮询模式进行块特性描述(检查块的属性)。

  • 流媒体:蒸汽模式支持更高的传感器/外金宝app围源块数据采集速率。当选择此模式时,源块工作在流式模式,Sink块工作在轮询模式。

    请注意

    在为流配置的模型中,接收块的存在会影响源块的性能。

    以下情况需要选择此模式:

    • 该模型只有Source块,没有Sink块。

    • 该模型具有很少需要执行的Sink块。

选择连接IO模式

要在Connected IO中模拟模型,使用以下步骤选择Connected IO模式:

  1. 打开一个Sim金宝appulink模型。

  2. 在“Simul金宝appink”工具栏中,将“仿真模式”设置为正常的

  3. 建模选项卡上,选择模型设置

  4. 在“配置参数”对话框中,选择硬件实现

  5. 设置硬件板参数设置为Arduino Mega 2560

    下面的参数值硬件板设置自动填充到它们的默认值。

  6. 点击目标硬件资源然后点击连接输入输出

    Arduino Connected IO

  7. 从列表中选择所需的Connected IO模式。

    Arduino连接IO模式

  8. 如果您选择汽车流媒体作为连接IO模式,一个新参数对数据丢失或源块的操作显示器。流处理过程中可能发生数据丢失,原因如下:

    • 高采样率设置为块。

    • 模型中有大量的块。

    • 模型中耗时的操作。

    选择所需的选项。

    Arduino对数据丢失的行动

    • 警告:选择此选项可在流处理时从源块中丢失数据时显示警告。模拟完成后,在诊断查看器中显示为每个块删除的数据数。

    • 没有:选择此选项不采取任何操作。

    • 错误:选择此选项可在数据丢失时显示错误消息。

  9. 点击应用而且好吧

来自传感器的流数据

若要从传感器读取数据,请使用以下选项之一。

  • 使用库中可用的传感器块(例如MPU9250 IMU传感器ICM20948 IMU传感器,等等)。为了从这些块中传输数据,在模型中添加块,设置所需的采样率,并选择如上所述的流模式。

  • 使用基本外设源块(例如,。I2C寄存器读取,模拟输入)。有些传感器需要源块实现传感器上电、传感器范围设置等一次性配置。这些块不需要流。在这种情况下,可以添加这样的操作或块初始化函数块。初始化子系统中的块将不被配置为流。只有主模型中的块将被配置为流。

考虑一个案例,使用库中的I2C模块设计一个BNO055 IMU传感器。

流的初始化函数

相关的话题