首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Simulink中实现OOP (使用嵌入式编码器)?

如何在Simulink中实现OOP (使用嵌入式编码器)?
EN

Stack Overflow用户
提问于 2022-08-12 09:05:03
回答 1查看 60关注 0票数 0

我正在使用Simulink为嵌入式设备开发软件。我的工作流程是:

  • 使用Simulink模型实现业务逻辑
  • 从使用嵌入式Coder
  • 的模型生成C代码,将生成的C代码与手写的驱动程序代码合并,并将它们编译在

我发现OO在软件设计方面真的很有帮助。OO指的是数据和方法的结合。

在C中,我知道我可以使用struct来包含数据,并使用函数和struct指针参数作为方法。如何在Simulink中实现(对)?

EN

回答 1

Stack Overflow用户

发布于 2022-08-12 09:05:03

到现在为止,我已经有了一些想法在Simulink中执行OOP。但这还不够好。

解决方案是总线+数据存储内存+子系统(参考)。

总线是用来将原语组合在一起的,如C中的结构,数据存储存储器是对象,结构变量是C中的对象,子系统是以总线信号为输入的方法,如果方法修改对象,子系统也输出总线信号。

问题是子系统不能在Stateflow中使用。而且,当生成C代码时,Simulink没有执行足够的优化。即使输入和输出总线信号是相同的数据存储存储器(一种修改对象的类方法),Simulink也会在生成的函数中创建两个参数,一个用于输入总线,一个用于输出总线。它使用一个临时变量来保存子系统的输出总线信号,并在调用该函数后将该临时变量分配给数据存储内存变量。如果子系统是内联的,则可以避免临时变量,但是使用该子系统的每一个地方都会有另一个函数体的副本。

如果该方法不修改总线信号,则可以使用Simulink函数作为方法,Stateflow允许使用Simulink函数。但是,如果该方法修改了总线信号,那么Simulink函数就需要输出一个总线信号,而Simulink并不完全支持这一点(来自技术支持),而且我遇到了Simulink无法生成代码的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73331759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档