一种基于有限状态机的核电厂控制软件设计方法与流程

文档序号:16692519发布日期:2019-01-22 19:02阅读:385来源:国知局
一种基于有限状态机的核电厂控制软件设计方法与流程

本发明涉及核电站仪控技术领域,具体涉及一种基于有限状态机的核电厂控制软件设计方法。



背景技术:

在核电厂中,反应堆保护系统通过信号采集与信号控制运算来对堆芯的正常运行进行保护动作,这一过程中涉及到的信号采集、信号处理、功能自诊断、错误处理等等操作均是基于控制软件实现的,而现有的控制软件在结构上常采用过程式流程,逻辑代码冗长、语句嵌套复杂,增加了代码维护工作难度;且cpu没有并行执行任务的功能,计算机通过对多个程序依次交替执行,给人以程序同时进行的效果,实质上各个程序在什么时候开始执行,执行多长时间后切换到下一个程序,由操作系统绝对;单片机执行多任务也是类似的过程,但由于其资源有限,为了节省对cpu和存储空间的占用,在很多情况下没有使用操作系统,这时,单片机中运行的各个任务必须在一定时间内主动执行完毕,才能保证下一个任务能够及时执行;而对于一些需要长时间执行的任务,例如信号去除抖动、控制输出、执行诊断等,就只能通过函数进行软件延时,这些延时函数,一般通过间给某个变量循环递加或递减,到达一定值后跳出循环,从而通过消耗cpu时间实现了延时,这种方法在延时函数执行的过程中,其他程序无法运行,占用较大时间,消耗了大量cpu资源。

有限状态机(fsm),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型;状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化,转移至少状态变更,并且用必须满足来确使转移发生的条件来描述它,动作是在给定时刻要进行的活动的描述。有限状态机已经在软件设计领域广泛发展及应用,具备多任务处理功能、提高cpu利用率等特点,如图1和2所示。然而,在核电厂控制领域采用有限状态机的进行控制软件设计还是空白。



技术实现要素:

为了解决现有基于过程式流程来实现核电厂控制软件设计存在不能多任务并行处理、占用较多时间,消耗了大量cpu资源,且逻辑代码冗长,语句嵌套复杂等技术问题,以及为了解决现有的在核电厂控制领域采用有限状态机的控制软件设计还是空白的技术问题;本发明提出了一种基于有限状态机的核电厂控制软件设计方法,该方法通过有限状态机,将一个复杂任务划分为多个状态,将原来冗长的代码缩减为状态矩阵,只需要修改矩阵就可改变状态变迁功能,提高了cpu利用率,且本发明具有良好的可扩展性和可维护性。

本发明通过下述技术方案实现:

一种基于有限状态机的核电厂控制软件设计方法,包括以下步骤:

步骤一、根据核电厂控制功能定义状态,为每个状态分配一个函数名称;

步骤二、定义状态间的迁移事件;

步骤三、将状态和迁移事件转换为状态矩阵;

步骤四、使用宏函数方式进行状态迁移。

优选的,所述步骤一种具体根据功能定义了四种可切换状态,包括:系统初始化:st_int,系统运行:st_run,故障处理:st_fail,通道校准:st_clib。

优选的,所述步骤二中定义了所述四种可切换状态间的九种迁移事件,包括:初始化成功:ev_int_ok,初始化失败:ev_int_ng,主功能运行正常:ev_run_ok,主功能运行失败:ev_run_ng,故障处理成功:ev_fail_ok,故障处理失败、严重故障不可恢复:ev_fail_ng,软件复位:ev_reset,校准:ev_clibrate,空事件:ev_null;其中,通道校准状态以及校准状态迁移事件只属于模拟量输入输出模块所具备。

优选的,所述步骤三中将状态和迁移事件转换为状态矩阵具体为:每个状态对应二维数组的一列,每个迁移事件对应数组的一行,某个状态在某个迁移事件发生后的状态对应设置在数组中,从而形成状态机转换的二维数组表,不能迁移的状态空置。

优选的,还包括步骤五、增加功能时只需要新增一个状态和迁移事件,更新状态矩阵。

本发明具有如下的优点和有益效果:

本发明提出的一种基于有限状态机的核电厂控制软件设计方法,弥补了在核电厂仪控领域采用有限状态机来实现控制软件设计的空白;且本发明针对反应堆保护装置的系统需求,设计一个有限状态机逻辑,将模块软件的工作模式限定在有限的状态内,通过有限迁移方式进行状态切换。该装置的特点是通过状态矩阵管理内部各种状态信息。可同时覆盖数据采集、功能自诊断、数据上报、错误处理等操作。将原来冗长的代码缩减为状态矩阵,只需要修改矩阵就可改变状态迁移功能。提高了cpu的利用率。本发明具有良好的可扩展性和可维护性。

附图说明

此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:

图1为现有过程式设计和采用有限状态机设计的cpu利用率对比图。

其中,图1左图为采用过程式设计软件占用时间长,图1右图为使用状态机cpu利用率高。

图2为现有过程式设计和采用有限状态机设计的逻辑对比图。

其中,图2左图为采用过程式设计软件程序逻辑不清晰,图2右图为使用状态机设计软件程序逻辑清晰。

图3为本发明的软件运行状态迁移图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。

实施例1

本实施例提出了一种基于有限状态机的核电厂控制软件设计方法,具体包括以下步骤:

一、有限状态机用于安全级dcs的io模块时,系统定义了四种可切换状态,以及九种状态事件。四种可切换状态:

不同状态之间切换是根据每个状态输出事件进行,各个状态事件分为以下九种状态事件:

其中通道校准状态,以及校准状态事件只属于模拟量输入输出模块所具备。

二、在安全级dcs平台中有限状态机的状态转换关系是使用c语言数组矩阵进行管理的,每个状态对应数组的一列,每个事件对应数组的一行。某个状态在某个事件发生后的状态填入矩阵。从而实现状态机转换的自动化控制。不能迁移的状态置空。

得到的状态矩阵表如下表1所示。

表1状态与迁移事件二维数组表

如上表所示假如软件运行于st_init状态时,随着状态事件的产生软件的状态会迁移至st_run、st_fail、st_clib。例如软件在st_init状态运行时,当en_init_ng事件发生时,则软件状态变为st_fail,软件将会去执行该状态的模块代码。软件在其它状态发生状态迁移也与之相同。由于软件在st_clib状态下不会有状态事件的发生,所以软件在该状态下不会迁移到其它状态。

三、软件编码过程中为实现有限状态机并维持状态矩阵表,要求系统使用一个全局变量来标识当前系统运行的状态。同时需要对有限状态机的状态函数的调用进行封装,提供一致的调用接口。图1给出了软件运行状态迁移,模块上电运行会将状态机的状态设置为系统初始化状态,模块软件在运行过程会根据状态事件的发生而设置软件下一步的运行状态。如图1所示软件随着状态的迁移执行不同的功能代码,各个状态的迁移是随着状态事件的产生而变换的。

本实施例的控制软件设计方法针对反应堆保护装置的系统需求,设计一个有限状态机逻辑,将模块软件的工作模式限定在有限的状态内,通过有限迁移方式进行状态切换。该装置的特点是通过状态矩阵管理内部各种状态信息。可同时覆盖数据采集、功能自诊断、数据上报、错误处理等操作。将原来冗长的代码缩减为状态矩阵,只需要修改矩阵就可改变状态迁移功能。提高了cpu的利用率。本实施例的控制软件设计方法具有良好的扩展性和可维护性。

实施例2

基于上述实施例1。本实例2提出若软件增加了一个st_new状态,触发该事件的状态事件为en_new,假设软件运行于st_run状态时,en_new事件可能会产生并引发软件状态迁移至st_new,在该状态软件状态又可能迁移至st_fail。则应更新软件状态矩阵表如下表2所示:

表2更新后的状态与迁移事件二维数组表

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1