外部模式支持Simulink金宝app®在运行时与硬件板上部署的模型通信。它还提供了一种简单的方法来可视化源的输出,并实时显示汇聚块的效果。
外部模式在主机和硬件板上创建通信服务。这两个服务在Simulink引擎和部署在硬件板上的生成代码之间建立一个通信通道。金宝app通信服务将硬件板上的模型进程与代码以及格式化、传输和接收数据包的传输层隔离开来。上位机上的通信服务通过传输层接收数据包并更新Simulink模型显示。金宝app该图显示了外部模式通信服务在主机上的Simulink与硬件板上部署的代码之间创建的连接。金宝app
通过在外部模式下执行包含设备驱动程序块的简单模型,您可以直接从硬件板观察数据。
有关外部模式模拟的更多详细信息,请参见参数调谐和信号监控的外部模式模拟.
在正常模式下,Simulink模型完全在金宝app仿真中运行,C/ c++设备驱动程序代码在MATLAB系统块从未执行。然而,在模拟过程中金宝app,Simulink模型通常需要源块来生成人工生成的或先前记录的数据。在将模型部署到硬件板之前,使用模拟数据可以改进算法开发、测试和调试。设备驱动接收器块不需要任何修改,以运行在正常模式模拟和假定行为《终结者》块。相反,设备驱动程序的源块需要修改stepImpl
方法发送运行时生成的或从基本MATLAB检索的数据®模型处于仿真状态时的工作区。
下面的代码展示了如何修改stepImpl
方法,以便设备驱动程序块在每个仿真时间步返回一个随机生成的逻辑值。
方法(访问=保护)...函数stepImpl (obj, u)% #好< INUSD >如果isempty (coder.target)%在模拟过程中生成随机数据Y = rand > 0.5;其他的%调用c函数实现设备输出coder.ceval (“writeDigitalPin”9、u);结束结束...结束
的stepImpl
方法被修改以执行代码coder.target
返回空。空值表示模型没有部署到硬件。
在许多情况下,设备驱动程序源块发出随机生成的数据不足以在模拟中准确评估模型。它们需要以前捕获或生成的数据。
为了达到这种行为,stepImpl
方法可修改为从MATLAB工作空间中检索数据变量,如下所示:
属性(Access = private) Count = 1结束
方法(访问=保护)...函数stepImpl (obj, u)% #好< INUSD >如果isempty (coder.target)%在模拟过程中生成随机数据x = evalin(“基地”、“x”);y = x (obj.Count);obj。数= obj。数+ 1;如果obj。obj. Count > numel(x) obj. Count > numel(x) obj. Count >数= 1;结束其他的%调用c函数实现设备输出coder.ceval (“writeDigitalPin”9、u);结束结束...结束
其他可用的模拟模式,如加速模式和快速加速模式,编译并执行设备驱动程序块中包含的C/ c++代码。在这些模拟模式中,必须修改C/ c++头文件以包含空宏。