主要内容

使用设备驱动器块的仿真

外部模式

外部模式启用Simulink万博1manbetx®在您的主机计算机上,在运行时与硬件板上的部署模型进行通信。它还提供了一种可视化来源输出并实时显示水槽块的影响的简便方法。

外部模式在主机计算机和硬件板上创建通信服务。这两个服务在Simulink引擎之间建立了通信渠道,并在硬件板上部署的代码生成了通信。万博1manbetx通信服务将硬件板上的模型流程与格式,传输和接收数据包的传输层隔离。主机计算机上的通信服务通过传输层接收数据包,并更新Simulink模型显示。万博1manbetx该图显示了外部模式通信服务在主机计算机上的Simulink与硬件板上部署的代码之间创建的连接。万博1manbetx

通过在外部模式下执行包含设备驱动程序块的简单模型,您可以直接观察硬件板上的数据。

有关外部模式模拟的更多详细信息,请参阅用于参数调整和信号监视的外部模式模拟(万博1manbetxSimulink编码器)

正常模式

在正常模式下,Simulink模型完全在万博1manbetx模拟中运行,而C/C ++设备驱动程序代码MATLAB系统块永远不会执行。但是,Simuli万博1manbetxnk模型通常需要源块在模拟过程中产生人为生成或先前记录的数据。模拟数据的使用允许在将模型部署到硬件板之前改进算法开发,测试和调试。设备驱动器接收器块不需要任何修改即可在正常模式模拟中进行操作,并假设终结者堵塞。相比之下,设备驱动程序块需要修改Stepimpl发射运行时生成的数据或从基本MATLAB检索的方法®工程空间当模型在仿真中时。

运行时数据生成

以下代码显示了如何修改Stepimpl方法使设备驱动器块在每个仿真时间步骤中返回一个随机生成的逻辑值。

方法(访问=受保护)...功能stepimpl(obj,u)%#ok 如果Isempty(编码器。%在模拟过程中生成随机数据y = rand> 0.5;别的%呼叫C函数实施设备输出CODER.CEVAL('写作'',9,u);结尾结尾...结尾

Stepimpl修改方法以执行代码coder.target返回空。空值表示该模型未部署到硬件。

从MATLAB工作区检索数据

在许多情况下,发射随机生成数据的设备驱动器源块不足以准确评估模型中的模型。他们需要以前捕获或生成的数据。

为了实现这一行为,Stepimpl可以修改方法以从MATLAB工作区检索数据变量,如下所示:

特性(访问=私有)count = 1结尾
方法(访问=受保护)...功能stepimpl(obj,u)%#ok 如果Isempty(编码器。%在模拟过程中生成随机数据x = evalin('base','x');y = x(obj.count);obj.count = obj.count + 1;如果obj.count> numel(x)obj.count = 1;结尾别的%呼叫C函数实施设备输出CODER.CEVAL('写作'',9,u);结尾结尾...结尾

连接的I/O

正常模式模拟与使用连接的IO与硬件进行通信通过启用Simulink在硬件上部署模型之前,可以与硬件进行通信,从而弥合仿真和代码生成之间的差距。万博1manbetx连接的I/O使您能够使用近乎实时环境中硬件的外围数据修改模型设计并监视修改后的设计的效果。您无需在硬件上部署模型来监视修改后的设计的效果,从而加速了仿真过程。这个sim万博1manbetxulink(软件)-Arduino®(硬件)仅在启用连接的I/O时,仅在正常模式模拟中提供交互。

通过在连接的I/O中执行包含设备驱动器块的简单模型,您可以直接观察硬件板上的数据。设备驱动程序块需要修改以在模拟中进行模拟时接受和输出数据。

有关如何执行连接I/O中包含设备驱动器块的模型的更多详细信息,请参见使用连接的I/O中的设备驱动器块测量伺服电机轴角度

其他仿真模式

其他可用的仿真模式,例如加速器模式和快速加速器模式,编译和执行设备驱动程序块中包含的C/C ++代码。在这些仿真模式中,必须修改C/C ++标头以包括空宏。

也可以看看

||