主要内容

设备驱动系统对象的结构

设备驱动程序块是MATLAB系统部署到一个时生成自定义C / C ++代码的块手臂®皮质®- 基于硬件板。创建设备驱动程序块,为用户轻松访问支持包中不可用的硬件板的功能,例如通信协议或硬件库。金宝app

一个金宝appsimulink.®设备驱动程序块可以基于其端口类型概括为两组中的一个:

  • 源码块只有输出端口。在仿真中,源块输出预定的信号。这个信号可以由随机数生成器、存储数组或常量创建。在代码生成之后,源块输出从块所代表的I/O设备捕获的数据。例如,数字读块生成的代码输出数字I/O引脚的逻辑状态。

  • 沉块仅具有输入端口。在仿真中,汇总块充当终止子块。在代码生成之后,接收器块设置并根据输入端口信号设置I / O设备。例如,数字写入块的生成代码设置并更新等于输入端口信号的数字I / O引脚的逻辑状态。

要定义设备驱动程序块的行为,请使用System Object™。然后你用一个MATLAB系统(金宝appSimulink)块来引用对象并将其包含在模型中。每个System对象使用setupimpl.Stepimpl.,删除歧杆子用于定义设备驱动程序块的代码初始化,引脚输出行为和代码终止的方法。通过条件陈述Stepimpl.时,设备驱动程序块以模拟模式运行。当测试或无法访问硬件板时,此模式使整个模型能够在主机上运行。系统对象还提供用于添加构建构件的服务。这些工件包括源文件、路径、共享库和预处理器定义,以生成Simulink代码。金宝app这些工件自动定义一个块的端口属性并生成一个块掩码。

班级定义

在System对象代码的顶部,定义System对象的名称及其继承的类。

Classdef.类名称结尾

所有系统对象必须继承matlab。系统。此外,设备驱动程序系统对象继承来自编码器.ExternalDependency.,它提供API将构建工件添加到生成的代码。这matlab.system.mixin.propagates.类提供api来定义System对象的输出大小、数据类型和复杂性。例如,您可以从其他类继承matlab.system.mixin.CustomIcon。使用此类指定显示的名称和图标MATLAB系统(金宝appSimulink)堵塞。

构造方法

模板System对象类,用于创建一个数字写块创建一个数字读块指南,使用标准构造函数方法:

方法%的构造函数函数obj =类名称(varargin)编码器。allowpcode('清楚的');setProperties(Obj,nargin,varargin);结尾......结尾

初始化、输出和终止方法

这些方法定义了在初始化,输出和终止时发生的内容。用setupimpl.初始化硬件外设。用Stepimpl.从硬件外设读取或写入。用删除歧杆子释放使用的硬件资源。这三个方法是定义设备驱动程序块行为的基础。

方法(访问=受保护)函数setupImpl (obj)%执行只需要执行一次的任务结尾函数Stepimpl(obj,u)设备驱动输出结尾函数recelloyimpl(obj)%终止码结尾结尾

输入和输出信号属性

此代码部分定义块的输入或输出的数量和数据类型和大小。例如getNumInputsImpl方法在陷阱块中,设置输入端口的数量。同样,getNumOutputsImpl源块中的方法设置输出端口的数量。

方法(访问=受保护)%仿金宝app真软件功能函数IsinputSizeMutableImpl(〜,〜)标志= false;结尾......函数num = getnuminputsimpl(〜)num = 1;结尾函数num = getNumOutputsimpl(〜)num = 0;结尾结尾

构建文物

构建工件定义源文件位置,包括编译设备驱动程序代码所需的路径,共享库,库搜索路径和预处理定义。使用getDescriptiveName将识别字符串定义到系统对象的方法。代码生成引擎使用此字符串来报告错误。使用is金宝appsupportedcontext.方法指定代码生成上下文。在设备驱动程序块中,只有实时研讨会(rtw)代码生成上下文应用,因此这个函数总是指定'RTW'。使用UpdateBuildInfo.指定源和标头文件的方法包括路径,库和构建系统对象所需的定义。

方法(静态)函数name = getDescriptiveneAme()名称='decriptive名字';结尾函数tf = is金宝appsupportedcontext(context)tf = context.iscodegentarget('RTW');结尾函数UpdateBuildInfo(BuildInfo,Context)如果context.iscodegentarget('RTW'的)%更新buildinfo.srcDir = fullfile (fileparts (mfilename ('完整路径')),'src');% #好< NASU >champtedir = fullfile(fileparts(mfilename('完整路径')),'包括');AddIncleudePaths(BuildInfo,包括的人);使用下面的API来添加include文件,源文件和%链接器标志% addSourceFiles (buildInfo, source.c, srcDir);% addLinkFlags (buildInfo {' -lSource '});% addLinkObjects (buildInfo, sourcelib.a, srcDir);% addCompileFlags (buildInfo{‘-D_DEBUG = 1});% addDefines (buildInfo MY_DEFINE_1)结尾结尾

也可以看看

|