当前位置: 首页 > news >正文

Simulink模型转NuSMV模型(2006)

在CoCoSim中,提到其中的步骤之一为将Simulink模型转为Lustre模型。对Simulink模型进行模型检查,还可以将Simulink模型转换为其他模型检测工具的模型,比如下面即将提到的NuSMV模型。

2006年,Honeywell团队设计了将Simulink模型翻译成模型检测工具NuSMV的输入模型的工作。

参考

详细内容,可参考Meenakshi B, Abhishek Bhatnagar, and Sudeepa Roy. "Tool for Translating Simulink Models into Input Language of a Model Checker." In IEEE International Conference on Formal Engineering Methods, 2006.

为什么要把Simulink模型转成NuSMV模型?

航空电子软件须满足DO-178C标准,标准鼓励用形式化方法。工程师熟悉Simulink的框图逻辑,但NuSMV等模型检测工具需要用专有模块化语言描述系统。要验证 Simulink模型,工程师得手动把框图翻译成NuSMV模型。

NuSMV是一种自由软件形式发布的符号模型检测器,能基于CTL/LTL时序逻辑公式验证系统是否满足需求。NuSMV用二进制决策图(BDD)压缩状态空间,能处理多组件交互场景,同时NuSMV擅长处理离散系统。

Simulink转NuSMV

Honeywell团队提出的转换算法,目的是结构化映射与语义保持,既要把Simulink的每个模块对应到NuSMV的模块,还要确保两者行为一致。

支持的Simulink模块范围

不是所有Simulink模块都能转,转换器只支持能构成有限状态机的离散模块。核心支持的模块库包括:​

  • 信号路由:多路复用器(Mux)、解复用器(Demux)、开关(Switch);​
  • 逻辑运算:关系运算符(≤、≥)、逻辑与 / 或、区间检测;​
  • 数学运算:加减乘除、绝对值、最大值 / 最小值(离散型);​
  • 离散模块:单位延迟(Unit Delay)、整数延迟、计数器;​
  • 源与sink:常数、输入端口、输出端口、文件读取​

这些模块覆盖了常见控制逻辑(比如传感器数据处理、故障判断),而连续模块因NuSMV不支持暂未纳入。

从Simulink的MDL文件到NuSMV模型

转换器的输入是Simulink模型的MDL文件,输出是可直接运行的NuSMV代码。整个过程分三步:​

第一步:解析MDL文件,提取有效信息。

MDL文件中包含很多无用信息,比如模块颜色、字体大小,第一步要做的就是过滤和结构化。丢弃图形相关数据,保留模块类型、输入输出端口、变量名、连接关系,把Simulink的层级结构转化为树状图,方便后续处理。​

第二步:计算模块输入类型,解决类型匹配问题​。

Simulink模块是通用的,但NuSMV的模块是强类型的。所以第二步需要确定每个模块的输入类型。从源模块(如常数、输入端口)开始,反向推导所有模块的输入类型。比如常数模块输出是标量,那么它连接的加法模块的一个输入就是标量。

处理子系统:先解析子系统内部的模块类型,再推导子系统外部的连接类型。

终止条件:所有模块的输入类型都确定。​

例子:如果Simulink的关系运算符模块输入1是长度为2的向量,输入2是标量,运算类型是≤,那么NuSMV会生成一个对应的模块:

MODULE relational_operator_2(in1, in2)
VARout : array 0..1 of boolean;
ASSIGNout[0] := in1[0] <= in2;out[1] := in1[1] <= in2;

第三步:生成NuSMV代码,保留层级结构​。

最后一步是组装:用第二步确定的模块类型,调用预定义的模块生成库,输出完整的NuSMV模型。Simulink的子系统对应NuSMV的子模块。Simulink的变量名在NuSMV中保留。模块间的连接关系与Simulink一致。​

比如Simulink的单位延迟模块,会对应NuSMV中一个包含状态变量的模块,确保语义一致:

MODULE unit_delay(in)
VARout : integer;  
ASSIGNnext(out) := in;  

解决状态爆炸问题所作的优化

模型检测中的挑战是状态爆炸,模块越多,状态数呈指数增长。转换器提供了一个实用的优化,即变量范围绑定。​工程师可以手动指定某些变量的取值范围,转换器会将这些范围写入NuSMV代码,限制状态空间大小。

反向翻译:从NuSMV反例到Simulink轨迹

当NuSMV发现某个需求不满足,会生成一条反例轨迹。转换器的反向翻译功能会把NuSMV的变量名映射回Simulink的模块输出,并把步骤对应到Simulink的采样时间,再​
生成文本报告,工程师能在Simulink中复现这个场景,定位问题。

http://www.dtcms.com/a/438463.html

相关文章:

  • 内蒙古网站建设百度网站建设以什么盈利
  • 工业网站建设wordpress设置新浪邮箱
  • WSDL 文档:理解与使用
  • 网站建设丨金手指15设计师联盟官网效果图
  • Python3 MongoDB 使用指南
  • 沁恒微 RISC-V 芯片开发工具 MounRiver Studio 使用
  • IDEA快速上手指南!
  • 做网站用户充值提现吉林网站推广公司
  • 深圳建科技有限公司网站首页中国建筑业协会
  • [Windows] 利用AI写的一款自用多功能密码管理器开源
  • 4. 矩阵代数
  • 蛋白质的性质和研究方法
  • 【专业词典】PDCA
  • 云南网站推广大连集团网站建设
  • Sora 2 的社交野心:AI 如何重构内容社交产品逻辑?
  • 免费行情网站看男科一般花多少钱
  • 突破规模瓶颈的密钥:混合专家模型(MoE)的架构演进与应用
  • 厦门最早做网站的公司曲阳网站建设在哪
  • Spring Boot 的 7 大核心优势
  • GitLab入门教程:打开DevOps全流程的大门
  • 旅行社网站规划与建设的流程中国建设银行网站主要功能
  • 【408计组】3.2 主存储器的基本组成
  • 长沙门户网站建设公司徐典超 网站建设
  • 百度做任务的网站网站建设中古典武侠中文字幕
  • 【pytest】finalizer 执行顺序:FILO 原则
  • Windows11配置MSYS2+vscode+cpp+cmake环境
  • flash网站需要改变足球比赛直播观看
  • 批量M3U8转MP4工具
  • 关于棋牌游戏网站建设文案app 网站开发公司电话
  • 族谱家谱抖音快手微信小程序看广告流量主开源