Model Based Design实践过程中的问题

本文总结了MBD实践过程中遇到的问题,包括变量定义位置、代码生成、有返回值的函数、变量初始化、变量命名、位域结构体和Union数据类型等问题,并提出了解决策略。强调MBD通过清晰的输入输出接口提升了模型间关系的清晰度,同时也探讨了MBD代码生成的优缺点和与手写代码的差异。
摘要由CSDN通过智能技术生成

前言

MBD学习和实践也有一年了,逐渐领悟到了一些MBD的思想以及其与传统“粗放型”、“随心所欲型”的手写代码开发方式的不同,特此总结一下,不断更新中。

MBD实践过程中的问题

  • 由于现在在做的项目是多年前开始通过手写代码的形式一步步形成的(Simulink模型只有矢量控制部分),因此在做MBD时就自然而然地以能够自动生成和现有代码相同的代码为目标。在实际过程中发现,就算是一个稍复杂些的子模型(不含Model reference)想逐行相同也几乎是不可能的,后来只能把目标转为实现相同代码功能。原因主要有:

    • 代码生成

      自动代码生成都是以Simulink模型中的子模块为基本单元来生成的,模块生成代码形式固定,已经按照最优形式生成,不可随意更改,而手写代码并不都是最优的。例如手写y=(a+b)*c/d,模型是用Add、Product、Divide组成的,生成代码就会有一个中间临时变量,一步步计算,但其实MCU运行情况是完全相同的,即使有时候手写代码效率相同甚至更高,但两者并不会有质的区别,因此不需太过在意。

    • 有返回值的函数

      Atomic subsystem在封装成函数时,无法产生有返回值的函数,返回值只能以指针形式被函数调用,但是二者效果相同,也不需太过在意。生成有返回值的函数的方法有两种,一是整个Model的入口函数,在设置中的Interface可以进行配置;二是手写tlc文件,tlc文件可以根据用户的需求任意生成想要的函数形式,自由度很大,但是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值