掌桥专利:专业的专利平台
掌桥专利
首页

一种针对复杂系统的状态机仿真方法

文献发布时间:2024-04-18 20:02:18


一种针对复杂系统的状态机仿真方法

技术领域

本发明属于仿真技术领域,具体来说,涉及一种针对复杂系统的状态机仿真方法。

背景技术

随着物联网、云计算、大数据、数字孪生等新一代信息技术和人工智能技术的快速发展,及其与制造业的不断融合与落地应用,向智能制造转型升级,已成为制造业发展的必然趋势。MBSE支持以概念设计阶段开始,并持续贯穿于开发和后期的生命周期阶段的系统需求、设计、分析、验证和确认活动的正规化建模应用。

在这其中基于对系统中的行为定义,行为中需要包含的该行为的状态,以及在此完成后,整个系统发生的变化的模型,开展状态机仿真,得到仿真结果,从而根据仿真得到的仿真信息,对仿真结果进行评价验证,并对系统模型进行校验与确认。

如今现有方法是基于SysML、UML、UPDM等多种图形化建模语言规范,定义每个语言规范行为图中的模型元素,从而在使用对应的图形化语言进行行为建模时,能够对构建好的行为图直接进行状态机仿真。但是针对特定领域,进行系统行为描述时,通用化建模语言的图形化模型元素行为无法进行有效的扩展,从而存在建模效率低,可扩展性差,灵活度较低等问题。

发明内容

针对现有图形化建模语言元素行为无法针对特定领域进行扩展,且不能将描述好的行为元素代码进行保存复用的问题,本发明提供了一种针对复杂系统的状态机仿真方法。

为实现上述技术目的,本发明采用的技术方案如下:

一种针对复杂系统的状态机仿真方法,包括步骤:

S1、基于SysML状态机图元模型构建系统状态机图;

S2、开发行为代码;

S3、状态机仿真编译;

S4、仿真配置;

S5、仿真执行;

S6、获得仿真结果;

S7、验证模型,完成仿真。

进一步地,构建系统状态机图基于SysML图形化建模语言规范,构建系统状态机图,以状态和状态之间的转换描述系统行为;

系统状态机图包括的元素:

区域:状态机包含一个或多个区域,共同描述状态机的状态相关行为,一个区域的初始化和完成分别使用初始伪状态和最终状态来描述;

状态:状态由一个圆角矩形表示,表示一些重要条件,状态代表了对事件的响应变化以及执行行为的变化,每个状态都可以包含进入和退出状态时各自执行的入口和出口行为;

转换:转换规定状态机中何时发展状态更改。

进一步地,开发行为代码通过与图形化模型相结合的方式,选中某个状态机模型元素后进行行为代码开发,并将其保存至系统状态机模型文件中;

开发的代码类型描述包括:

区域代码开发:开发的区域行为代码可以包含一个区域行为代码或多个区域行为代码;

状态代码开发:简单状态代码开发包括定义状态是否初始化以及该状态时的等式设置,组代码开发包括属性代码开发和函数代码开发;

转换代码开发:包括事件代码开发、条件代码开发、赋值代码开发和状态跳转代码开发;

SVG代码开发:包括SVG文件绑定代码开发和基本属性代码开发。

进一步地,状态机仿真编译是将开发好的代码进行编译,形成CIF求解器使用的CIF代码;

状态机仿真编译包括单区域编译和多区域编译;

单区域编译:将一个区域的状态机模型文件中的行为代码进行编译,形成一个单区域CIF代码文件,供CIF求解器使用;

多区域编译:首先定义多区域CIF代码文件名称,然后将多个区域的状态机模型文件中的行为代码分别进行单区域编译,再将得到的单区域CIF代码文件进行合并形成为一个多区域CIF代码文件,供CIF求解器使用。

进一步地,仿真配置是仿真执行前需要进行一系列的配置,实现对仿真的设置;

仿真配置包括输入模式设置、仿真设置、编译设置、输入设置、输出设置和ODE求解器设置;

输入模式设置:包括错误、警告、正常和调试选项;

仿真设置:包括仿真文件格式设置、仿真格式初始化设置、仿真结束时间设置、最大延迟设置、随机分布的初始种子设置、完整模式设置、外部函数异步执行设置、分析设置、请求确认仿真器终止设置、最大时间公差设置和加载调试代码设置;

编译设置:包括仅编译设置、编译的代码文件设置、Java编译器设置;

输入设置:包括输入模式设置、自动模式选择算法设置、自动模式时间转换持续时间设置、跟踪输入文件设置、交互模式自动转换选择设置、环境事件设置、历史设置和历史容量设置;

输出设置:包括通用输出设置、SVG可视化设置、轨迹数据设置、图可视化设置和状态可视化设置;

ODE求解器设置:包括ODE求解器固定输出步长设置、ODE集成器设置和ODE根查找器等设置。

进一步地,仿真执行是在进行仿真配置完成后调用CIF求解器进行状态机仿真;

仿真执行存在两种情况:仿真执行成功和仿真执行失败;

仿真执行成功:仿真执行成功则会依据仿真配置在控制台、状态可视化相应窗口输出仿真过程信息;

仿真执行失败:仿真执行失败则会输出错误,基于输出的错误需要对开发的行为代码修改后,再进行状态机仿真编译和仿真配置步骤后,再进行仿真执行。

进一步地,获得仿真结果主要是在仿真执行时查看相应的输出信息和仿真结束后将仿真数据进行保存,获得的仿真结果用于验证模型。

进一步地,验证模型是基于获得的仿真结果与系统需求、功能模型进行对比验证;验证模型如果正确则仿真结束,如果错误则查找错误来源,依据实际情况可能对系统状态机图进行修改,再执行开发行为代码、状态机仿真编译和仿真配置操作。

本发明相比现有技术,具有如下有益效果:

本发明基于模型的系统工程对系统行为通过模型的方式进行描述,并在此基础上开发系统行为代码进行状态机仿真。从而在系统研发设计早期,帮助系统设计人员发现设计缺陷,从而降低系统设计成本、缩短研发周期,提高系统的可靠性。

能够针对特定领域进行系统行为描述并开发系统行为代码,同时可通过导入已有行为代码模板,在该模板基础上开发系统行为代码,减少工作量。

附图说明

图1为本发明实施例中一种针对复杂系统的状态机仿真方法的流程图;

图2为本发明实施例中多区域编译流程图。

具体实施方式

为了便于本领域技术人员的理解,下面结合实施例与附图对本发明作进一步的说明,实施方式提及的内容并非对本发明的限定。

如图1所示,本实施例提供了一种针对复杂系统的状态机仿真方法,包括步骤:S1、基于SysML状态机图元模型构建系统状态机图;S2、开发行为代码;S3、状态机仿真编译;S4、仿真配置;S5、仿真执行;S6、获得仿真结果;S7、验证模型,完成仿真。

SysML是一种通用的图形化建模语言,用于描述、分析、设计和验证那些包含了硬件、软件、设备、人员和信息的复杂系统,其提供了建模系统需求、行为、结构和参数进行图形化表现的语义基础。在SysML中,状态机通常用于描述块在其整个生命周期中依赖状态的行为,状态机由状态和状态间的转换定义。

一个状态机的行为由一组区域指定,每个区域包含自己的状态。在任何一个区域内的状态是唯一的,即当区域被激活时,其中的一个子状态被激活、区域通常有一个初始的为状态,这是该区域首先被激活时开始执行的地方。当进入一个状态时,执行一个入口行为。类似地,推出状态时执行可选地出口行为。在状态中,状态机可以执行一个行为。一个区域通常也由一个最终状态,表示该区域已经完成。状态地变化由连接源状态到目标状态地转换实现。转换是由触发器、守护条件和效果定义的。触发器表示一个事件,该事件可能引起从源状态的转换;对守护进行评估,以测试转换是否有效;效果是转换触发后执行的行为。触发器可能基于各种事件,如计时器的过期或接收到由状态机的拥有对象发出的信号。

使用SysML进行状态机图构建的时候使用的元素比较的通用化,且行为是已经内嵌到元素行为当中,在描述特定领域时要进行大量的状态定义,才能描述出系统行为,并且在针对特定领域时,无法查看模型元素的行为代码,同时获取并复用。

构建系统状态机图基于SysML图形化建模语言规范,构建系统状态机图,以状态和状态之间的转换描述系统行为;

系统状态机图包括的元素:

区域:状态机包含一个或多个区域,共同描述状态机的状态相关行为,一个区域的初始化和完成分别使用初始伪状态和最终状态来描述;初始为状态是用来确定区域的初始状态,从初始为状态转出的转换可以包括一个效果。这样的效果通常用于设置状态机使用属性的初始值。当区域的活动状态是最终稿状态时,区域终止,并且在它的内部不再发生更多的转换。

状态:状态由一个圆角矩形表示,表示一些重要条件,状态代表了对事件的响应变化以及执行行为的变化,每个状态都可以包含进入和退出状态时各自执行的入口和出口行为;此外,当入口行为完成时,状态可以包含一个执行行为。执行行为将继续执行,直到它完成或状态退出。

转换:转换规定状态机中何时发展状态更改。一旦出发转换,状态机总是运行到完成,这意味着在状态机完成当前事件的处理之前,它们不能再消耗另一个触发器事件。一个转换可包括一个或多个触发器、守护和效果。

开发行为代码主要是定义系统状态机图的行为,用于状态机仿真。本发明使用的仿真求解器是CIF求解器,因此开发的行为代码为CIF代码。本发明的状态机行为代码主要是开发区域代码、状态代码、转换代码和SVG代码。

开发行为代码通过与图形化模型相结合的方式,选中某个状态机模型元素后进行行为代码开发,并将其保存至系统状态机模型文件中;开发行为代码可以通过导入现有行为代码模板,从而在该基础上进行行为代码开发减轻工作量,也可以从头开始行为代码开发,开发完成也可以进行保存,从而针对不同场景开发行为代码并进行复用。

开发的代码类型描述包括:

区域代码开发:开发的区域行为代码可以包含一个区域行为代码或多个区域行为代码;主要包括事件代码开发和参数代码开发。

状态代码开发:简单状态代码开发包括定义状态是否初始化以及该状态时的等式设置,组代码开发包括属性代码开发和函数代码开发;

转换代码开发:包括事件代码开发、条件代码开发、赋值代码开发和状态跳转代码开发;

SVG代码开发:包括SVG文件绑定代码开发和基本属性代码开发。

状态机仿真编译是将开发好的代码进行编译,形成CIF求解器使用的CIF代码;

状态机仿真编译包括单区域编译和多区域编译;

单区域编译:将一个区域的状态机模型文件中的行为代码进行编译,形成一个单区域CIF代码文件,供CIF求解器使用;

如图2所示,多区域编译:首先定义多区域CIF代码文件名称,然后将多个区域的状态机模型文件中的行为代码分别进行单区域编译,再将得到的单区域CIF代码文件进行合并形成为一个多区域CIF代码文件,供CIF求解器使用。

仿真配置是仿真执行前需要进行一系列的配置,实现对仿真的设置;

仿真配置包括输入模式设置、仿真设置、编译设置、输入设置、输出设置和ODE求解器设置;

输入模式设置:包括错误、警告、正常和调试选项;

1)错误:仅产生错误输出。建议不要使用此模式。如果希望限制控制台输出量,可以改用警告模式。

2)警告:产生错误和警告输出。使用此模式可通知潜在问题,同时将控制台输出量保持在最低限度。

3)正常:产生错误、警告和正常输出,是默认输出模式。打印到控制台以进行正常输出的信息可以使用正常输出选项进行配置。

4)调试:生成错误、警告、正常和调试输出。此模式可用于将其他调试信息打印到控制台。可以使用“调试输出”选项配置打印到控制台以进行正常输出的信息。

仿真设置:包括仿真文件格式设置、仿真格式初始化设置、仿真结束时间设置、最大延迟设置、随机分布的初始种子设置、完整模式设置、外部函数异步执行设置、分析设置、请求确认仿真器终止设置、最大时间公差设置和加载调试代码设置;

1)仿真文件格式设置:指定仿真文件在计算机中的绝对路径或相对路径,默认输入选择的文件;

2)仿真格式初始化设置:用于指定仿真文件中的单个离散变量或初始位置自动机的初始值;

3)仿真结束时间设置:选择仿真总时长,单位是秒;

4)最大延迟设置:设定每条仿真语句输出的最大间隔不能超过最大延迟

5)随机分布的初始种子设置:使用随机种子可以对CIF模型中的随机性进行建模,CIF模拟器使用MersenneTwister来指定一种伪随机性,相同的种子产生的随机数是相同的;

6)完整模式设置:指定CIF求解器是否为每个状态计算其完整的转换集,如果开启完整模式将增加性能消耗;

7)外部函数异步执行设置:默认情况下在外部定义的函数使用异步方式执行,但异步执行会造成一定的性能损失,采用同步执行方式可以消除这种损失;

8)分析设置:启用分析会将仿真过程中每秒的转换次数在控制台输出;

9)请求确认仿真器终止设置:仿真器由用户决定终止或自动决定终止;

10)最大时间公差设置:由于浮点数运算导致计算误差积累,一旦计算误差超过设置的最大时间公差则由模拟器对此误差进行补偿以提高计算精度;

11)加载调试代码设置:可以指定磁盘位置,以便将生成的代码保存至硬盘而非内存,用来提升模拟速度并且保存仿真输出。

编译设置:包括仅编译设置、编译的代码文件设置、Java编译器设置;

仅编译设置:仿真器可用于生成代码并仅编译一次。通过启用“仅编译”选项(编译器类别),仿真器将执行生成和编译代码所需的所有步骤,然后将编译的代码保存到文件中。保存文件后,仿真器将终止,而不是仿真模型。

编译的代码文件设置:编译仿真文件的路径,用于存储模型和以便以的Java代码,若未指定,则使用输入的文件路径

Java编译器设置:使用Java编译器选项(编译器类别),可以配置要使用的Java编译器实现。

输入设置:包括输入模式设置、自动模式选择算法设置、自动模式时间转换持续时间设置、跟踪输入文件设置、交互模式自动转换选择设置、环境事件设置、历史设置和历史容量设置;

1)输入模式设置:用于仿真的输入组件取决于输入模式,可以通过输入模式选项进行配置。

2)自动模式选择算法设置:在自动输入模式下,模拟器会自动选择转换以及时间转换持续时间。但是,模拟器的选择方式可能会受到选项的影响。

在自动输入模式下,模拟器会自动选择要进行的转换,无需任何用户交互。

3)自动模式时间转换持续时间设置:在自动输入模式下,模拟器会自动选择时间转换的持续时间,无需任何用户交互。但是,使用自动模式时间转换持续时间选项可以影响所做的选择。

4)跟踪输入文件设置:在跟踪输入模式下,模拟器会根据用户提供的跟踪文件自动选择转换以及时间转换持续时间。如果使用跟踪输入模式,则可以使用跟踪输入文件选项来指定跟踪文件的路径。如果未显式指定路径,则使用输入CIF文件路径,其中将删除文件扩展名(如果存在),并添加文件扩展名。

5)交互模式自动转换选择设置:默认情况下,在交互式控制台和GUI输入模式下,要求用户进行选择,即使例如只有一个可能的转换。必须为每个转换做出选择可能会变得令人厌烦。为了减少需要输入的情况,可以使用半自动模式。半自动模式允许模拟器自动选择某些转换,同时将剩余的选择留给用户。

6)环境事件设置:默认情况下,CIF模拟器将所有事件视为紧急事件。也就是说,只要任何事件有可能过渡,时间就可能不会进展。换句话说,事件优先于时间流逝。但是,并非所有事件都应该是紧急的。因此,模拟器具有环境事件选项(输入类别),这使得模拟器可以了解环境事件

(非紧急事件)。环境事件(非紧急事件)的一个示例是可以按下的按钮。无论现在还是将来,都可以随时按下按钮。因此,相应的事件始终处于启用状态,但时间应该仍然能够进行,因为此时事件可能实际上并未发生。

7)历史设置:可用于启用或禁用历史记录。默认情况下,历史记录处于启用状态。使用该选项,可以禁用它。禁用历史记录会禁用重置和撤消功能,从而确保不会消耗任何时间或内存来跟踪早期状态。

8)历史容量设置:对于长时间的模拟,需要记住很多状态。需要记住的每个状态都会消耗一定的内存量。要限制记住的状态数量,可以使用历史记录大小选项。

输出设置:包括通用输出设置、SVG可视化设置、轨迹数据设置、图可视化设置和状态可视化设置;

通用输出设置:包括正常输出、正常输出状态过滤器、调试输出、帧频、仿真速度和测试模式设置。

SVG可视化设置:勾选则CIF求解器会输出SVG可视化结果;

轨迹数据设置:勾选则CIF求解器会输出轨迹可视化结果;

图可视化设置:勾选则CIF求解器会输出图可视化结果;

状态可视化设置:勾选则CIF求解器会输出状态可视化结果。

ODE求解器设置:包括ODE求解器固定输出步长设置、ODE集成器设置和ODE根查找器等设置。

ODE求解器固定输出步长:积分器确定计算值的时间点。默认情况下,这些点包含在轨迹中。这意味着它们也是轨迹数据输出组件的输出。积分器根据常微分方程的复杂性确定计算值的时间点。可以使用集成器选项影响集成器。但是,有时以更规律的间隔进行集成输出可能更方便。使用ODE求解器固定输出步长选项,可以配置固定输出步长。此值必须是大于零的整数或实数。

ODE集成器设置:包括ODE求解积分器算法、ODE求解积分器的绝对公差、ODE求解积分器的相对公差、ODE求解积分器最小步长、ODE求解积分器最大步长和ODE求解积分器的步骤数等设置。

ODE根查找器设置:包括ODE求解根查找器最大检查间隔、ODE求解器寻根算法、ODE求解根查找器绝对公差、ODE求解根查找器相对公差和ODE求解根查找器最大迭代次数等设置。

仿真执行是在进行仿真配置完成后调用CIF求解器进行状态机仿真;

仿真执行存在两种情况:仿真执行成功和仿真执行失败;

仿真执行成功:仿真执行成功则会依据仿真配置在控制台、状态可视化相应窗口输出仿真过程信息;

仿真执行失败:仿真执行失败则会输出错误,基于输出的错误需要对开发的行为代码修改后,再进行状态机仿真编译和仿真配置步骤后,再进行仿真执行。

获得仿真结果主要是在仿真执行时查看相应的输出信息和仿真结束后将仿真数据进行保存,获得的仿真结果用于验证模型。

验证模型是基于获得的仿真结果与系统需求、功能模型进行对比验证;验证模型如果正确则仿真结束,如果错误则查找错误来源,依据实际情况可能对系统状态机图进行修改,再执行开发行为代码、状态机仿真编译和仿真配置操作。

本发明相比现有技术,具有如下有益效果:

本发明基于模型的系统工程对系统行为通过模型的方式进行描述,并在此基础上开发系统行为代码进行状态机仿真。从而在系统研发设计早期,帮助系统设计人员发现设计缺陷,从而降低系统设计成本、缩短研发周期,提高系统的可靠性。

能够针对特定领域进行系统行为描述并开发系统行为代码,同时可通过导入已有行为代码模板,在该模板基础上开发系统行为代码,减少工作量。

以上对本申请提供的一种针对复杂系统的状态机仿真方法进行了详细介绍。具体实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

技术分类

06120116581650