DCS图形化算法组态的离线仿真方法和装置与流程

文档序号:16529391发布日期:2019-01-05 10:37阅读:650来源:国知局
DCS图形化算法组态的离线仿真方法和装置与流程
本发明涉及dcs图形化算法组态的
技术领域
,尤其涉及一种dcs图形化算法组态的离线仿真方法和装置。
背景技术
:组态(configure)是指用户通过类似“搭积木”的简单方式,来完成自己所需要的软件功能,而不需要编写计算机程序;组态的概念最早出现在工业计算机控制中,如dcs(集散控制系统)组态。发明人在核安全级dcs系统firmsys(中文名称:和睦系统)的开发过程中发现:firmsys平台子产品redace(实时和确定性应用软件编程环境)负责工程组态和算法设计,由acg(automaticcodegenerator,算法代码生成器)生成可信算法代码并最终下装到dcs设备中;针对算法逻辑正确性的验证手段主要是离线仿真,离线仿真即在不连接dcs设备下,利用调试工具将算法目标程序加载运行以模拟真实设备的环境操作,支持源码调试,提供丰富的接口(例如,单步调试、连续运行、设置变量、查看变量)等。目前常用的算法仿真工具为gdb,gdb是gnu开源组织发布的一个程序调试工具。上位机软件和gdb间通过mi接口(针对调试器设计的文本行机器,类似命令行窗口)的控制命令进行交互,按照标准接口进行输入命令字符串,对输出命令字符串进行解析返回到上位机用户界面。但是采用gdb作为调试工具进行离线仿真的开发,虽然可以实现变量单步调试、连续运行、设置变量、查看变量等功能,但是调用gdb/mi接口,本质是利用外设i/o(输入/输出)接口交互,所以会导致整个离线仿真系统的性能较低。技术实现要素:为了解决现有中通过调用gdb/mi接口进行离线仿技术方案中,存在的系统性能较低的技术问题,本发明提供一种dcs图形化算法组态的离线仿真方法和装置,通过自封装仿真工具插件,实现数据访问和算法控制离线仿真功能。为了实现上述目的,本发明提供的技术方案包括:本发明一方面提供一种dcs图形化算法组态的离线仿真方法,其特征在于,包括:步骤一,将图形化算法组态中对应的图形算法,编译为算法程序和算法偏移程序;步骤二,使用离线仿真插件将所述算法程序和所述算法偏移程序加载到内存,并利用所述算法程序和所述算法偏移程序实现仿真控制和变量数据的操作。优选地,所述步骤一包括:调用acg将图形化算法编译成c代码、导入c代码、变量偏移代码、算法变量定义文件,生成包含main函数和调用算法函数的胶水代码;调用tcc编译器将所述c代码和所述胶水代码编译成所述算法程序,并将所述偏移代码编译成所述变量偏移程序。优选地,所述算法程序和所述算法偏移程序中,所有变量数据的定义都在全局数据区,并且可计算出每个变量数据在所述全局数据区的相对偏移地址。进一步优选地,所述步骤二包括:所述离线仿真插件通过所述每个变量数据首地址和变量数据的相对偏移,可计算出所述每个变量数据的物理内存地址,并基于物理内存地址,实现所述每个变量数据的内存级访问。优选地,所述离线仿真方法还包括:所述目标算法程序加载到所述内存后,所述离线仿真插件开启控制程序,当捕获到一个命令时,将会根据自身逻辑来判定是否需要执行;如果不执行,则返回原因;如果执行,则调用相应函数,执行完毕后再返回结果数据。优选地,所述离线仿真插件包括:对外提供的初始化接口、控制接口、数据接口、心跳接口,以及设置在内部的初始化单元、控制单元、数据单元。本发明第二方面还提供,一种dcs图形化算法组态的离线仿真装置,其特征在于,包括:离线仿真编译模块,用于将图形化算法组态中对应的图形算法,编译为算法程序和算法偏移程序;离线仿真插件模块,用于将所述算法程序和所述算法偏移程序加载到内存,并利用所述算法程序和所述算法偏移程序实现仿真控制和变量数据的操作。优选地,所述离线仿真插件模块包括:对外提供的初始化接口、控制接口、数据接口、心跳接口,以及设置在内部的初始化单元、控制单元、数据单元。本发明第三方面还提供一种dcs图形化算法组态的离线仿真装置,其特征在于,包括:存储器;处理器;以及计算机程序;其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如上述任意一项所述的方法。本发明第四方面还提供一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上述任意一项所述的方法。采用本发明提供的上述技术方案,可以至少获得以下有益效果中的一种:1、使用自封装仿真工具插件,实现数据访问和算法控制等离线仿真功能,使得仿真性能得到提升。2、提供更简单丰富的仿真接口,能够辅助安全级dcs设计,便于上位机软件调用。3、提供轻量化的仿真程序包,经济方便;例如,离线仿真插件使用c++语言开发,编译成dll文件后,文件自身占用存储空间小。4、所有接口均包含返回信息,无论成功失败都返回,用户更容易维护。发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书变得显而易见,或者通过实施本发明的技术方案而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构和/或流程来实现和获得。附图说明图1为本发明一实施例提供一种dcs图形化算法组态的离线仿真方法的流程图。图2为本发明另一实施例提供一种dcs图形化算法组态的离线仿真方法的流程图。图3为本发明一实施例提供一种dcs图形化算法组态的离线仿真装置的结构框图。图4为本发明另一实施例提供一种dcs图形化算法组态的离线仿真装置的结构框图。图5为本发明一实施例提供一种dcs图形化算法组态的离线仿真用户操作的流程图。图6为本发明一实施例提供一种dcs图形化算法组态的离线仿真界面的示意图。图7为本发明一实施例提供一种dcs图形化算法组态的离线仿真监视变量的示意图。图8为本发明又一实施例提供一种dcs图形化算法组态的离线仿真装置的结构框图。具体实施方式以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,这些具体的说明只是让本领域普通技术人员更加容易、清晰理解本发明,而非对本发明的限定性解释;并且只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。另外,在附图的流程图示出的步骤可以在诸如一组控制器可执行指令的控制系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。下面通过附图和具体实施例,对本发明的技术方案进行详细描述:实施例本实施例提供一种dcs图形化算法组态的离线仿真方法,并且下文以应用于核电站安全级的应用场景进行举例说明,但是本领域技术人员知晓,本发明提供的离线仿真解决方案不限于核电站,其他可能实现本发明技术方案的平台,都可使用应用本发明提供的离线仿真技术方案,也都属于本发明的保护范围。如图1所示,本实施例提供一种dcs图形化算法组态的离线仿真方法,该方法包括:步骤一(s110),将图形化算法组态中对应的图形算法,编译为算法程序和算法偏移程序;步骤二(s120),使用离线仿真插件将算法程序和算法偏移程序加载到内存,并利用算法程序和算法偏移程序实现仿真控制和变量数据的操作。本实施例提及的插件为遵循一定规范的应用程序接口,编写出来的程序;图形化算法组态,为通过可视化图形来组合形成特定的运算算法,而每个图形算法编译为相应的算法程序,指将可视化图像算法编译为机器能够识别的软件代码程序;每个图形算法编译为相应的算法偏移程序,指将可视化图形中对应变量也编译为机器能够识别的变量偏移软件代码。当应用于核电站数字保护系统firmsys中,对算法组态软件进行离线仿真的方法具体包括:上述步骤一具体包括:调用acg(automaticcodegenerator,算法代码生成器)将图形化算法编译成c代码、导入c代码、变量偏移代码、算法变量定义文件,生成包含main函数和调用算法函数的胶水代码;调用tcc编译器将c代码和胶水代码编译成算法程序,并将偏移代码编译成变量偏移程序。优选地,算法程序和算法偏移程序中,所有变量数据的定义都在全局数据区,并且可计算出每个变量数据在全局数据区的相对偏移地址。进一步优选地,步骤二包括:离线仿真插件通过每个变量数据首地址和变量数据的相对偏移,可计算出每个变量数据的物理内存地址,并基于物理内存地址,实现每个变量数据的内存级访问。优选地,本实施例提供的离线仿真方法还包括:目标算法程序加载到内存后,离线仿真插件开启控制程序,当捕获到一个命令时,将会根据自身逻辑来判定是否需要执行;如果不执行,则返回原因;如果执行,则调用相应函数,执行完毕后再返回结果数据。优选地,离线仿真插件包括:对外提供的初始化接口、控制接口、数据接口、心跳接口,以及设置在内部的初始化单元、控制单元、数据单元。更具体地,如图2所示,本发明另一优选实施例提供的dcs图形化算法组态的离线仿真方法包括:s210、进入离线仿真界面,即用户操作进入离线仿真界面。s220、获取图形算法,即用户选择或者基于仿真界面中的图形算法。s230、基于步骤s210的离线仿真界面,生成胶水代码,此胶水代码中包含main函数和调用算法的函数。s240、生成c代码,redace(实时和确定性应用软件编程环境)调用acg(automaticcodegenerator,算法代码生成器)将图形化算法编译成c代码。s250、生成导入c代码,redace(实时和确定性应用软件编程环境)调用acg(automaticcodegenerator,算法代码生成器)将图形化算法编译成导入c代码。s260、生成变量偏移代码,redace(实时和确定性应用软件编程环境)调用acg(automaticcodegenerator,算法代码生成器)将图形化算法编译成变量偏移代码,还可以有选择性地生成算法变量定义文件h等。s270、获得算法程序,调用tcc编译器(轻量级高速c语言编译器),将c代码和胶水代码等编译成目标算法dll(dynamiclinklibrary,即动态链接库文件)。s280、获得算法偏移程序,调用tcc编译器(轻量级高速c语言编译器),将变量偏移代码编译成变量偏移dll(dynamiclinklibrary,即动态链接库文件)。s290、使用离线仿真插件将算法程序和算法偏移程序加载到内存,并利用算法程序和算法偏移程序实现仿真控制和变量数据的操作;并且算法代码中,所有变量点的定义都在全局数据区。其中,离线仿真插件将算法偏移程序加载并生成变量偏移文件,因为变量都定义在全局区且封装成一个结构体global_str,即可计算出每个变量点在全局区的相对偏移地址。仿真插件申请到global_str的内存,通过其首地址和变量点的相对偏移即可计算出变量点的物理内存地址,从而实现变量数据的内存级访问。目标算法程序加载到内存,离线仿真开启控制程序,当捕获到一个命令(步进、步退)后,将会根据自身逻辑来判定是否需要执行,如果不执行则返回原因,如果执行则调用相应函数,执行完毕后再返回结果数据,此时新一轮的命令捕获循环开始。因此,本实施例使用离线仿真插件将算法程序加载到内存,通过计算算法偏移文件得到算法变量内存地址,提供用户对变量点的设置、订阅等操作。进一步地,支持调度程序接口实现对算法进行步进、步退等控制,实时回调给上层软件用户订阅的变量点数据,从而实现组态算法的离线仿真调试。如图3所示,本实施例还提供一种dcs图形化算法组态的离线仿真装置,该装置包括:离线仿真编译模块110,用于将图形化算法组态中对应的图形算法,编译为算法程序和算法偏移程序;离线仿真插件模块120,用于将算法程序和算法偏移程序加载到内存,并利用算法程序和算法偏移程序实现仿真控制和变量数据的操作。优选地,离线仿真插件模块120包括:对外提供的初始化接口、控制接口、数据接口、心跳接口,以及设置在内部的初始化单元、控制单元、数据单元。如图4所示,本实施例提供的dcs图形化算法组态的离线仿真装置中,离线仿真插件220对外提供四类接口,分别是初始化接口221、控制接口223、数据接口225、心跳接口(回调)227;并且离线仿真插件220内部设置三个单元,分别是初始化单元222、控制单元226、数据单元228,以及自诊断程序单元224。其中,初始化单元222负责初始化插件环境配置信息,加载算法偏移程序并调用其生成变量、数据类型的偏移文件,加载算法目标程序并获取其入口函数,设置全局变量,启动自诊断程序、定时回调等;控制单元226负责从控制接口接收指令,包括步进、步退、快进、快退、暂停、继续、连续运行、重置等,调度不同的函数去实现算法程序的执行,最终返回给上位机执行结果信息;数据单元228负责从数据接口接收变量请求,把外部数据转换为内部数据,计算变量所在的偏移,在变量数据区进行相应的数据读写,并返回读写的结果。本实施例提供的的离线仿真技术方案中,可自由控制算法程序执行,记录操作堆栈信息,并支持访问全部算法变量,自诊断程序随时监测程序运行。具体实现过程,包含以下技术方案:1)、获取全部变量运行信息算法代码中所有变量的定义都被嵌套定义在一个global_str结构体中。变量被定义在数据单元,其执行过程数据被保存,通过数据接口可以随时访问算法的过程数据。2)、获取变量内存地址本实施例中,获取仿真算法变量的内存地址及长度才能正确读写,依据算法偏移文件,离线仿真插件会首先生成变量在全局区的相对偏移x及数据类型,pgv是全部变量global_str的实例,其地址为pgv,则变量的内存地址计算公式为:变量内存地址=pgv+x。由于本实施例提供的技术方案中:1)、采用自封装仿真工具插件,实现数据访问和算法控制等离线仿真功能;2)、组态算法变量定义嵌套在一个结构体的设计方法;3)、通过计算代码偏移文件获得变量内存地址的设计和计算方法;4)支持批量导入导出变量,自定义步数的快进快退控制,存储历史数据。因此相对于现有技术可以至少获得以下优点中的一种:1)、仿真性能提升;使用同一个具有2000个变量点的算法进行仿真性能实验,且每周期都返回所有数据,获得实验数据如下,性能提升近一倍:表1仿真性能试验用例说明现有gdb时钟数本实施例时钟数用例1执行1周期2414用例2执行2000周期471828592)、仿真接口简单,参数丰富,支持扩展;根据redace仿真常用功能,离线仿真对外接口实现了监视、写入、步进、步退、快进、快退、暂停、继续、连续运行、诊断、初始化等丰富的接口,支持多个参数输入和输出,还可以根据用户需求扩展。而现有技术中调试接口采用命令串方式,解析过程繁琐,遇到特殊字符易出错;例如,设置变量值请求命令格式:“setvar*in1=1”,查看变量值请求命令格式:“p*struct1”gdb返回变量数据格式:“$1={a={1,2,3},b=5}”。3)、仿真程序包文件较小;离线仿真插件使用c++语言开发,编译成dll后仅有1.86m。而现有技术中,在win32下使用gdb需附带安装mingw,以5.1.6为例安装后文件130m,这样就会导致redace软件包文件过大。4)、命令执行结束均返回信息:所有接口均包含返回信息,无论成功失败都返回,用户更容易维护。而现有技术中,部分gdb命令无返回标志,gdb执行指令后,如果不能返回标志,则无法知晓程序执行到哪一步,容易造成程序调度异常。如图5所示,采用本实施例提供的上述dcs图形化算法组态的离线仿真方案,用户操作的具体方式包括:s310、启动redace,打开算法工程。s320、选择工程算法节点,启动仿真测试。s330、打开仿真视图中的算法图形页。s340、点击步进,快进,连续运行等模式。s350、对图形中变量点进行监视。s360、选择图形中变量点进行设置(更改值)。s370、对设置的变量点进行监视。s380、停止监视。s390、关闭redace界面,操作完成。如图6所示,为本实施例提供一种redace仿真界面的示意图,redace仿真界面包括:菜单区610、功能区620、仿真实例视图区630、图形显示区640、工具区650、参数窗670、监控变量显示区680。如图7为与图6对应的具体设定变量值并查看仿真结果的一种效果图。如图8所示,本发明实施例还提供一种dcs图形化算法组态的离线仿真装置,该装置包括:存储器820;处理器810;以及计算机程序;其中,计算机程序存储在存储器820中,并被配置为由处理器810执行以实现如上述实施例提及任意一项的方法。并且本实施例提供的存储器820与上述实施例中提及的内存可以是不同的硬件,也可以是相同的硬件中不同的存储区域。本发明实施例还还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现如上述任意一项离线仿真的方法。采用本申请实施例提供的上述技术方案,可以至少获得以下有益效果中的一种:1、使用自封装仿真工具插件,实现数据访问和算法控制等离线仿真功能,使得仿真性能得到提升。2、提供更简单丰富的仿真接口,能够辅助安全级dcs设计,便于上位机软件调用。3、提供轻量化的仿真程序包,经济方便;例如,离线仿真插件使用c++语言开发,编译成dll文件后,文件自身占用存储空间小。4、所有接口均包含返回信息,无论成功失败都返回,用户更容易维护。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。最后需要说明的是,上述说明仅是本发明的最佳实施例而已,并非对本发明做任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围内,都可利用上述揭示的做法和技术内容对本发明技术方案做出许多可能的变动和简单的替换等,这些都属于本发明技术方案保护的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1