我正在使用Simulink为嵌入式设备开发软件。我的工作流程是:
上
我发现OO在软件设计方面真的很有帮助。OO指的是数据和方法的结合。
在C中,我知道我可以使用struct来包含数据,并使用函数和struct指针参数作为方法。如何在Simulink中实现(对)?
发布于 2022-08-12 09:05:03
到现在为止,我已经有了一些想法在Simulink中执行OOP。但这还不够好。
解决方案是总线+数据存储内存+子系统(参考)。
总线是用来将原语组合在一起的,如C中的结构,数据存储存储器是对象,结构变量是C中的对象,子系统是以总线信号为输入的方法,如果方法修改对象,子系统也输出总线信号。
问题是子系统不能在Stateflow中使用。而且,当生成C代码时,Simulink没有执行足够的优化。即使输入和输出总线信号是相同的数据存储存储器(一种修改对象的类方法),Simulink也会在生成的函数中创建两个参数,一个用于输入总线,一个用于输出总线。它使用一个临时变量来保存子系统的输出总线信号,并在调用该函数后将该临时变量分配给数据存储内存变量。如果子系统是内联的,则可以避免临时变量,但是使用该子系统的每一个地方都会有另一个函数体的副本。
如果该方法不修改总线信号,则可以使用Simulink函数作为方法,Stateflow允许使用Simulink函数。但是,如果该方法修改了总线信号,那么Simulink函数就需要输出一个总线信号,而Simulink并不完全支持这一点(来自技术支持),而且我遇到了Simulink无法生成代码的情况。
https://stackoverflow.com/questions/73331759
复制相似问题