自动驾驶联合仿真——功能模型接口FMI(二)
2024-09-19 来源:elecfans
FMU中时间概念的连续性和离散性实际上是变量的属性。并且FMU都能够包含连续时间的变量或是离散时间的变量。在模型交换类型和联合仿真类的FMU通信中可以看到这一点。
在FMI2.0中通过通信点来进行数据交换的通信结构是离散的。
一、模型交换:导入工具提供求解器

仿真工具之间模型集成非常紧密。
在导入工具和模型之间的接口非常复杂。
导入工具必须提供合适的求解器。
二、联合仿真:导出工具提供求解器

模型和求解器之间有着紧密的耦合关系。
导入工具和模型之间的接口相对简单。
可以选择不同的联合仿真算法和通信步长来实现更稳定精确的仿真方案。
三、联合仿真的接口 Interface
通信时间步长可以和内部步长不同,通信时间步长主要是不同FMU之间交换信息,而在各自的内部可以时是不同的可变时间步长。
在联合仿真接口中,参数会根据FMI标准有着典型的调用顺序:
得到输出:fmiGetXXX(...)
触发计算直到下一个通信节点:fmidoStep(...)
设置输入值:fmi2SetXXX(...)
以C代码为例:
使用FMI2Instantiate函数实例化FMU
CALL (FMI2Instantiate(S, resourceURI, fmi2CoSimulation, modelDescription->instantiationToken, fmi2Flase, fmi2Flase))
其中涉及到的参数分别是FMI实例、FMU资源的URI、声明FMU的类型为联合仿真、唯一标识符、是否显示FMU的GUI和是否启动日志记录的参数。
应用初始值和输出
CALL(applyStartValues(S,settings)); CALL(FMIApplyInput(S,input,setttings->startTime,true,true,false));
设置参数并进入初始化模式,如果有FMU初始状态文件的话,可以在实例化FMU后执行
CALL(FMI2SetupExperiment(S,settings->tolerance>0,settings->tolerance,settings->startTime,fmiFalse,0)); CALL(FMI2EnterInitializationMode(S)); CALL(FMI2ExitInitializationMode(S));
进入仿真循环,按照时间步长进行采样和应用输入
or(ubsignedlongstep=0;;step++){constfmi2Realtime=settings->startTime+step*settings->outputInterval;... CALL(FMISample(S,time,result)); CALL(FMIApplyInput(S,input,time,true,true,false)); ...... constFMIStatusdoStepStatus=FMI2DoStep(S,time,settings->outputInterval,fmiTrue); ...... CALL(FMIGetBooleanStatues(S,fmi2Terminated,&terminated)) ...... CALL(FMI2GetRealStatus(S,fmi2LastSuccessfulTime,&lastSuccessfulTime)); CALL(FMISample(S,lastSuccessfulTime,result)); ......
联合仿真算法作用
联合仿真算法不属于FMI标准的一部分,其作用主要是用于:
推进整个仿真系统的时间,使得各个子系统的FMU组件在每个时间步长上同步执行仿真计算,即代码中仿真循环的部分。
交换输入和输出数据。
触发时钟信号,用于同步不同仿真组件或触发某些操作,即代码中。
settings->startTime+step*settings->outputInterval;FMI2DoStep(S,time,settings->outputInterval,fmiTrue);
处理事件,例如状态变化、外部输入、内部条件触发等,即代码中。
CALL(FMI2GetRealStatus(S,fmi2LastSuccessfulTime,&lastSuccessfulTime));CALL(FMISample(S,lastSuccessfulTime,result));
四、模型描述文件是并行的
模型描述文件modelDescription.xml包含了关于FMU所有的静态信息,其定义了FMU支持的接口类型,无论是模型交换或是联合仿真,同时解释了模型变量,包括了输入、输出以及相关参数,以便导入工具进行访问。
除此之外也会包含模型接口的一些信息,比如模型连接时数据是符合输入输出的。

并且在模型描述文件中还会声明一些属性标志,比如“needsExcutionTool”,这一属性表示需要特定的程序或是特定的库文件才能够执行FMU,所以在导入FMU时,在导入工具中需要一个额外的包装Wrapper,并不真正的参与计算,而是用来实现模型、求解工具和执行之间进行通信。


上一篇:如何让电动汽车更安全
下一篇:汽车技术将如何重塑车辆的互联性
- 智驾定型之战:一文看透自动驾驶“端到端”的底层逻辑与架构演进
- 美光预测:L4 自动驾驶汽车将需超 300GB 内存
- 时间同步如何让自动驾驶感知系统认知统一?
- 美光 CEO:L4 级自动驾驶普及后,一辆车所需的内存将超 300GB
- Arm成立物理AI事业部后,负责人首次亮相中国
- 英伟达自动驾驶三大核心技术升级,拉上车企组建L4联盟
- GTC2026 | 比亚迪、吉利、五十铃和日产采用 NVIDIA DRIVE Hyperion 开发 L4 级自动驾驶汽车
- 自动驾驶又提速了?英伟达在GTC 2026放出一套“全家桶”方案
- 比亚迪、吉利、五十铃和日产采用 NVIDIA DRIVE Hyperion 开发 L4 级自动驾驶汽车
- 加速 L4 级自动驾驶落地:英伟达携手比亚迪、吉利等车企,提升汽车“智商”
- 嵌入式的风向变了:2026纽伦堡嵌入式展透露这些趋势
- 高通确认不在GDC 2026发布新款骁龙G系列掌机处理器SoC
- 行业评论 从工具到平台:如何化解跨架构时代的工程开发和管理难题
- 阿里达摩院发布玄铁C950,打破全球RISC-V CPU性能纪录
- 面向嵌入式部署的神经网络优化:模型压缩深度解析
- Mujoco中添加Apriltag标签并实现相机识别教程
- 摩尔线程MTT S5000全面适配Qwen3.5三款新模型
- 英飞凌与宝马集团携手合作,基于Neue Klasse架构塑造软件定义汽车的未来
- 物理AI仿真新突破:摩尔线程与五一视界共建全栈国产化生态
- 爆火的OpenClaw! 告别云端,米尔RK3576开发板本地部署
- Altera 与 Arm 深化合作,共筑 AI 数据中心高效可编程新方案
- 莱迪思加入英伟达 Halos生态系统,通过Holoscan传感器桥接技术提升物理人工智能安全性
- 芯科科技闪耀2026嵌入式世界展 以Connected Intelligence赋能,构建边缘智能网联新生态
- 边缘计算主机盒选购指南:五大核心指标解析
- Arm AGI CPU 更多细节:台积电 3nm 制程、Neoverse V3 微架构
- Arm AGI CPU 重磅发布:构筑代理式 AI 云时代的芯片基石
- Arm 拓展其计算平台矩阵,首次跨足芯片产品
- 阿里达摩院发布RISC-V CPU玄铁C950,首次原生支持千亿参数大模型
- 边缘 AI 加速的 Arm® Cortex® ‑M0+ MCU 如何为电子产品注入更强智能




