课程分类

课程介绍
课程目录
用户评论
课程介绍
课程目录
用户评论

你将获得

  • 掌握某些知识点
  • 学会某些技巧(或思路)

教学服务

  • icon

    1v1专属答疑服务

  • icon

    BAT专家面试辅导

讲师介绍

  • 《Simulink仿真及代码生成技术入门到精通》一书作者。MathWorks官方中文论坛超级版主,帮助会员解答数千MATLAB/Simulink问题,解决MBD流程痛点。资深ADAS驾驶辅助系统集成与软件设计专家,申请发明专利21件,其中3件已授权。为电控产品从业者专业打造MBD全栈个人成长方案。

  • 课程详情

        Hyowinner孙忠潇老师拥有丰富的MATLAB/Simulink实战经验,在MATHWORKS官方中文论坛做超级版主期间,解答了数千个技术问题。并结合自身经验编写了《Simulink仿真及代码生成技术入门到精通》一书,深受读者好评。在作为汽车电子高级软件工程师从业期间,校长总结了多套提高工作效率的工作方法,特开设了此门课程,帮助软件工程师们提高工作效率。本课程主要解决下面这些情况下遇到的问题:
      
     
    1、基于模型设计的开发流程
        Model Based Design,基于模型设计是一种流程,较之传统软件开发流程而言,使开发者能够更快捷、以更少的成本花费进行开发。适用范围包括信号处理,控制系统,通信行业。表述系统的模型是整个开发流程的中心,贯穿需求,设计,实施与测试。模型本身就是一个可执行的规格书,开发者修改优化模型就是对设计的修缮,无需到实施之后通过测试再进行系统验证,可以通过仿真在早期设计时期就及时进行正确性验证,并且在实施阶段,特别是对于嵌入式软件,代码由模型生成。
        2、代码生成时模型的配置方法及操作流程:1)代码生成模型如何配置 2)代码生成中间过程 3)代码与模型的对应分析
        3、rtw文件——代码生成的中间产物:1)讲述代码生成的流程 2)如何保存rtw文件 3)详细分析rtw文件内容
        4、rtw文件——TLC命令对rtw文件的访问、编辑、内容追加
        1)如何进入TLC Debugger模式 2)如何使用TLC命令读取rtw记录内容 3)如何使用TLC命令修改rtw记录内容 4)如何使用TLC命令追加rtw记录内容
        5、代码生成的文件结构:1)生成文件的作用及内容讲解 2)file package的方式
        6、ert.tlc下默认配置生成代码的解读:解读模型在ert.tlc下默认生成代码的风格及变量符号意义。
        7、提升生成代码可读性的两种方法:
        1)通过信号线属性和Iniline参数优化代码可读性 2)介绍Package和CSC,通过数据对象的方式优化代码可读性
        8、CSC对生成代码的控制
       讲解Simu数据对象的各种自定义存储类型,包括Default, FileScope, Const, Volatile, ConstVolitile, Struct, BItField, CompilerFlag, Exported to FIle, Imported From file等存储类型生成代码的形式。
        9、CSC对生成代码的控制——GetSet存储类型用法
        etSet这个存储类型的使用则有些特殊,它需要Data Store Memory模块,Data Store Read/Data Store Write模块共同配合使用。Data Store Memory模块定义一个变量名指向一片存储区域,在同一层模型或其子层模型的Data Store Read/Write模块都可以对这块存储区域进行读写操作。Data Store Memory中的信号名与Base Workspace中定义的信号数据对象绑定之后,可以设置生成代码中读取/写入此信号的接口函数。 属性名 功能 GetFunction 读取存储地址的函数名 SetFunction 写入存储地址的函数名 HeaderFile 可选项,设置需要包含的头文件全名,该头文件中应该声明上述两个参数中配置的函数原型。    10、数据别名定义及代码生成中的控制
        1)说明嵌入式C代码中typedef的作用 2)教授Simulink中定义数据别名的定义方式 3)使用datatype replacement根数据别名对象共同实现代码生成中全数据类型的替换
        11、建模所使用的枚举类型的管理与自动生成
        使用Excel管理多个Enumerate类型及值,使用脚本批量生成class定义的M文件描述这些枚举类。无论需要多少个类,都可以快速实现定义。
        12、Variant Subsystem生成预编译控制代码
        1)如何使用Variant Subsystem创建可变子系统 2)如何创建可变子系统控制变量 3)生成带有编译预处理条件控制代码的解析
        13、Lookuptable生成代码的优化及二分法查找算法解析
        1) 查找表的轴和表均使用数据对象和CSC进行优化 2)二分法轴查找算法以及临近插值法C代码解析。
        14、TLC语言(五)——记录的创建,内容追加及嵌套
        1)TLC的记录——一种数据结构 2)记录的创建 3)记录的嵌套 4)记录的内容追加,编辑及输出
        15、TLC语言(六)——记录的删除以及范围限定:记录的删除以及范围限定符的使用。
        16、TLC语言(七)—— 文件流选择,函数定义及调用
        1)多个文件流存在时,如何指定操作对象 2)使用标准输出流STDOUT以及NULL_FILE 3)TLC函数的定义和调用——数值计算及C代码生成函数实例
        17、基于模型的Arduino应用设计及实机运行
        基于模型的Arduino应用开发,Arduino TSP驱动工具箱介绍及串口打印功能的demo讲解。
        18、基于模型的Arduino流水灯
        1)使用Digital Output模块实现驱动代码自动生成 2)介绍流控制模块的If以及If Action子系统的使用方法 3)两种模式流水灯在实际板子上反复自动切换
        19、基于模型的Arduino超声波测距及数码管显示
        1)使用超声波传感器测距的模型建立及代码生成,最终实现应用开发 2)讲解HC SR04模块的使用方法 3)讲解数码管模块的使用方法 4)实际硬件run效果展示
        20、Target Support Package开发之系统目标文件
        1)讲解系统目标文件的作用 2)讲解系统目标文件的代码内容 3)讲解系统目标文件被选择时触发的回调函数的编写和优化
        21、Target Support Package开发之主函数定制
        22、Target Support Package开发之创建外部设备模块
        教会大家如何给外部设备写S函数模块,并将GUI获取的参数传递给模型的rtw文件。
        23、Target Support Package开发之外设模块级TLC文件编写
        教会学员开发外部设备驱动代码生成的TLC文件编码方式。 1)模块的TLC文件包括哪些常用方法及方法说明 2)代码生成的文件定位方法以及Section定位方法
        24、Simulink实时控制硬件
        1)讲解PC与硬件实时通信的原理 2)讲解手写C代码下载到Arduino硬件的方式 3)演示Simulink模型实时控制硬件LED的不同效果 4)讲解PC端与硬件端分别如何使用串口
        25、Simulink模型整合自定义C结构体并生成指针变量
        1)将自定义C结构体应用到Simulink模型中去 2)生成代码中生成结构体指针变量
        26、从dbc文件自动生成数据对象并导入模型
        教会你如何从dbc文件自动生成数据对象(数据词典),并一键导入到模型各个信号线中。
        27、解析C头文件并自动生成访问成员的接口函数
        通过对C语言头文件定义的结构体进行解析,自动生成访问结构体各个成员的GetAPI函数,以便手写调用或者模型集成。解惑篇

    解惑篇

        1、如何动态设置模块输入输出端口个数
        2、如何创建中断服务控制模块
        3、如何控制模块和子系统的执行顺序(仿真及代码生成)
        讲解如何控制模型的相对执行顺序: 1.模块有限度 2. Function Call Generator(有限制) 3.StateFlow建立时序调度器模块
        4、自定义Package以及CSC(一)
        教会开发者自定义CSC的方法,需要编写Class以及使用cscdesigner。 主要需求,为生成变量指定section,此教程包括设计过程及实例展示。 课程代码上传学习资料中。
        5、自定义Package以及CSC(二)
        讲解自定义StructExpression这样一个CSC的需求: 1.多层次结构体访问的代码生成如userStruct.count 2.与手写的数据结构定义进行集成 能够在信号线或参数的存储类型上定义结构体域成员的访问语句,并直接展开到生成代码中去。 讲解如何自定义高级CSC 1.定义package和基础class :Signal, Parameter, CustomAttributs 2.自定义存储类型的tlc文件 3.通过cscdesigner配置存储类型的各个属性。
        6、模型的发布与加密保护以及使用加密模型方法
        当主机厂跟Tier1或者不同公司之间进行项目合作时,往往将自己的算法模型进行加密,仅开放有限的权限给集成方或者验证方进行使用。Simulink提供了这样的模型加密功能,本课程讲解加密方法以及集成者拿到受保护的模型之后的使用方法。
        7、SIL软件在环仿真(一)
        1)讲解MBD开发流程中SIL所处的位置和上下文的关系 2)讲解SIL的Back2Back测试框架 3)讲解测试case的自动生成工具SLDV.
        8、DirectFeedThrough对时序的影响
        DirectFeedThrough的设置不当,不仅会造成代数环,还有可能对自定义模块的仿真以及代码生成时序造成影响。本节课分析其深度原因,并通过自定义CAN发送模块的实例给出解决方案。

    测试篇

        1、使用模型测试手写C代码
        在既有资产中,有许多前人或自己开发的C代码,用于计算或控制。使用模型重新搭建一遍,费时费力,还不能保证质量和效率。不如直接重用,重用之前,要集成到模型自然是再好不过的了,做成模块的同时,不妨测试一下其功能,因为使用模型测试,比直接在C代码等级要方便的多。
        2、C mex S函数的覆盖度测试
        C mex S函数的覆盖度如何在Simulink中进行分析? 1. 语句覆盖度 2. 分支覆盖度 3. 条件分支覆盖度 4. 模块执行覆盖度


        

     
    温馨提示
    • 请勿私下交易
      请勿在平台外交易。与机构和老师私下交易造成的任何损失及纠纷,腾讯课堂不承担任何责任
    • 听课说明

      1、电脑:访问腾讯课堂官网 ke.qq.com 查看我的课表或下载win/mac客户端听课

      2、手机/平板:下载腾讯课堂APP, 进入学习页面听课