一种基于dcs系统应用软件在线调试方法

文档序号:6626288阅读:626来源:国知局
一种基于dcs系统应用软件在线调试方法
【专利摘要】本发明提供了一种基于DCS系统应用软件在线调试方法,包括可运行应用软件的嵌入式设备,和与嵌入式设备互相连接的计算机设备,嵌入式设备还包括数据通讯模块和应用软件数据区,嵌入式设备通过数据通讯模块与计算机设备实现数据交互;应用软件数据区包括与应用软件的局部变量一一对应的全局变量,计算机设备通过全局变量实现与应用软件数据内容的读写访问,解决了核电等高安全要求领域中,对运行于无操作系统的嵌入式设备的应用软件的调试,并且,本发明的调试方法支持对编译后的应用软件调试,支持嵌入式设备现场在线调试。
【专利说明】 一种基于DCS系统应用软件在线调试方法

【技术领域】
[0001]本发明属于核电站嵌入式设备【技术领域】,特别涉及一种基于DCS系统的应用软件在线调试的方法。

【背景技术】
[0002]在工业控制DCS系统中,主控制站一般由嵌入式设备和运行于设备上的嵌入式软件构成,嵌入式软件通常分为两部分,一部分是操作系统,一部分是应用软件。“操作系统”用来实现boot、驱动、通讯等通用功能,应用软件实现用户的业务逻辑。在核电DCS行业,因安全标准原因,通用操作系统无法满足核电标准审查和质量要求,操作系统功能需要由DCS提供商自主研发,这部分虽实现类似操作系统功能但实质是无操作系统,应用软件部分与带操作系统DCS并无太大区别。在DCS工程实施过程中,应用软件的业务逻辑,规模庞大而复杂,需要在运行过程中对应用软件进行在线调试,支持强制、写入、释放等功能,否则这些应用软件正确性难以得到有效验证,产品质量存很大隐患。对于某些操作系统的平台,应用软件的调试可以通过操作系统提供的API实现,但对于无操作系统的DCS平台,应用软件在运行过程中的实时调试,就成了摆在DCS提供商一道难题。
[0003]而目前常见的嵌入式设备应用软件的调试系统有多种,但都存在一定问题,例如:高安全算法组态软件Scade仅支持PC机上仿真状态下,变量数据的监视与调试,但不支持与嵌入式设备连接并在线进行调试功能。三菱核电专用算法软件工具支持在线调试功能,但实现细节未知。CodeSys算法软件工具支持在线调试,但需要在嵌入式设备部署专用调试器。
[0004]因此,目前对运行在嵌入式设备上的应用软件的调试而言,存在:
[0005]1、调试器通常需要操作系统支持,对于无操作系统调试器,需要开发专用调试器,开发难度大、成本高
[0006]2、调试器通常会中断程序运行,无法在应用软件实际运行过程中运用。
[0007]3、调试器通常面向具备计算机专业技术的人员,不适用于工程应用人员。
[0008]4、不能实现强制功能,通常情况下,在算法运行的中间过程中,数据被强制后,会被后续执行的数据覆盖,难以达到强制目的。


【发明内容】

[0009]为了克服无操作系统嵌入式设备在线监视功能实现技术难度大、成本高的缺点,主要依赖应用软件机制解决无操作系统嵌入式设备在线调试功能的方法,本发明提供了:一种基于DCS系统应用软件在线调试方法,包括可运行应用软件的嵌入式设备,和与嵌入式设备互相连接的计算机设备,所述嵌入式设备还包括数据通讯模块,所述嵌入式设备通过所述数据通讯模块与所述计算机设备实现数据交互,其特征在于,所述嵌入式设备还包括应用软件数据区,所述应用软件数据区包括与所述应用软件的局部变量一一对应的全局变量,所述计算机设备通过所述全局变量,实现与所述应用软件数据内容的读写访问。
[0010]本发明通过全局变量,可以对运行于无操作系统的嵌入式设备的应用软件的调试,并且,本发明的调试方法支持对编译后的应用软件调试,支持嵌入式设备现场在线调试;又因为,本发明的调试方法无需开发专用调试器,因此使用、部署成本低。
[0011]这里,全局变量包括:强制标示、全局数据和强制数据;
[0012]I)通过所述计算机设备为需要监测的全局变量的强制数据赋值,并将所述全局变量的强制标示设置为"1〃;
[0013]2)启动所述应用软件;
[0014]3)所述应用软件在运行过程中,判断所述应用软件局部变量对应的所述全局变量的强制标示是否为"1",如果是,执行步骤4),反之执行步骤5);
[0015]4)将所述全局变量的强制数据赋值给所述局部变量和所述全局变量的全局数据;
[0016]5)将所述局部变量赋值给相应的所述全局变量的全局数据;
[0017]6)通过所述数据通讯模块将所述全局变量信息传输给所述计算机设备进行显示。
[0018]由此可见,在算法运行的中间过程中,数据被强制后,不会被后续执行的数据覆盖,实现对数据的强制赋值的目的。
[0019]优选的,所述步骤I)到所述步骤4)为所述计算机设备通过所述全局变量实现对所述应用软件数据写访问;所述步骤5)和步骤6)为所述计算机设备通过所述全局变量实现对所述应用软件数据读访问。
[0020]所述全局变量在所述嵌入式设备的内存中占用的地址空间为全局变量区,所述全局变量区至少包括三个全局变量区副本,其中,
[0021]所述第一份全局变量区副本为全局数据区,所述全局数据区用来存储所述局部变量赋值给相应的所述全局变量的数据;
[0022]所述第二份全局变量区副本为标示区,所述标示区用来存储所述强制标示,这里的;
[0023]所述第三份全局变量区副本为强制数据区,用来存储所述强制数据;
[0024]所述标示区和所述强制数据区为所述全局数据区的映射,所述同一个全局变量的三份全局变量区副本的存储地址都相同。
[0025]所述全局变量区在所述嵌入式系统的内存中占用一定空间,所述占用的空间具有起始位置,所述全局数据区存储的全局变量包括地址、序号和地址长度,所述全局变量的地址为所述起始位置+(所述序号-1) *(所述地址长度);所述每个全局变量的地址长度相同。
[0026]读取所述全局变量的强制标示信息为在所述标示区读取所述全局变量对应的地址信息中存储的数据;读取所述全局变量的强制数据信息为在所述强制数据区读取所述全局变量对应的地址信息中存储的数据;
[0027]优选的,所述标示区中所述全局变量对应的地址的第I个字节为强制标示区。
[0028]在所述步骤2)中,所述计算机设备上通过与所述嵌入式设备的连接,启动所述应用软件的方法为:在所述计算机的控制台上执行启动应用软件的命令;
[0029]优选的,所述计算机包括在线监控程序,所述在线监控程序包括:启动所述应用软件的功能、为所述应用软件各输入变量赋值的功能、为所述应用软件的输出变量的值提供显示功能;所述步骤I)中,在所述计算机设备上通过与所述嵌入式设备的连接,启动所述应用软件的方法为,在所述在线监控程序中执行所述启动所述应用软件的功能;
[0030]优选的,所述在线监控程序为带图形界面的执行程序;
[0031]优选的,所述计算机与所述嵌入式设备通过串口或者网线连接;
[0032]优选的,所述计算机上安装有编辑所述应用软件的代码和将所述代码编译为所述应用软件的程序;所述嵌入式设备支持从所述计算机下载并安装编译后的所述应用软件,并调度所述应用软件的执行;
[0033]优选的,所述计算机设备为工程师站;
[0034]优选的,所述被测程序为所述应用软件中的任意长度的代码;
[0035]优选的,所述被测程序为所述应用软件的全部代码;
[0036]优选的,所述被测程序为所述应用软件的一条赋值语句;
[0037]所述计算机设备还包括算法组态、编译和下载并安装所述应用软件的功能,具体为:
[0038]I)先在所述计算机设备上进行算法组态;
[0039]2)然后将经过算法组态的程序编译成所述嵌入式设备支持的所述应用软件;
[0040]3)再将所述应用软件下载到所述嵌入式设备并在所述嵌入式设备上安装的过程。
[0041]当执行完在线调试后,将所有全局变量的强制标示设为O ;
[0042]优选的,所述应用软件在下载并安装时,将所有全局变量的强制标示设为O。
[0043]优选的,所述嵌入式设备无通用操作系统。
[0044]由此,本发明提供的嵌入式设备在线调试方法的技术实现难度小、研发成本低、运行效率高,因此可广泛应用于各类DCS系统中。
[0045]本发明的有益效果是:
[0046]1、使用无操作系统的嵌入式设备,解决核电等高安全要求领域安全审查问题。
[0047]2、在系统调试时不中断程序,可以保证调试与正常状态运行的一致性,测试更有效。
[0048]3、针对无操作系统的嵌入式设备,无需开发专用调试器,使用、部署成本低。
[0049]4、在算法运行的中间过程中,数据被强制后,不会被后续执行的数据覆盖,实现对数据强制赋值的目的。
[0050]5、技术实现难度小、研发成本低、运行效率高。可广泛应用于各类DCS系统中。

【专利附图】

【附图说明】
[0051]下面结合附图对本发明所述的一种基于DCS系统应用软件在线调试方法进行具体说明。
[0052]图1是本发明技术方案架构图;
[0053]图2是本发明一个加法运算的示例图;
[0054]图3是本发明加法运算在强制输入的基础上,再强制输出的运算示例图;
[0055]图4是本发明工程师站将应用软件下装到嵌入式设备的结构示意图;
[0056]图5是本发明工程师站支持读写交互的结构示意图;
[0057]图6是本发明将应用软件中的变量转换成全局变量的结构示意图;
[0058]图7是强制变量值的流程如下;
[0059]图8是Global区变化示意图;
[0060]图9是本发明在应用软件中增加赋值条件的程序示例;
[0061]图10是在应用程序初始化函数中增加赋值条件信息的设置;
[0062]图11是本发明在应用软件中实现强制和正常运行的程序示例。

【具体实施方式】
[0063]本发明需要工程师站与安装在嵌入式设备中的嵌入式软件配合实现,其中
[0064]工程师站:将被测软件完成算法的组态,并编译成嵌入式软件可执行的“应用软件”,通常是*.bin文件,支持将可执行的“应用软件”下装到嵌入式设备当中。
[0065]嵌入式设备:嵌入式设备需要支持与PC机软件交互,PC可支持应用软件数据内容的读写,嵌入式设备需要具备串口或者网口等通信模块,可以实现与pc机的数据交互和通信功能;支持下装工程师站编译的可执行“应用软件”、调度由工程师站下装到嵌入式设备中的“应用软件”的执行,并在运行过程中与应用软件数据通信。
[0066]如图1所示,以一个简单的加法运算a+b = c为例进行介绍:
[0067]对于应用软件:
[0068]I先在工程师站,使用工程师站进行算法组态;
[0069]2然后将算法编译生成嵌入式设备支持的应用软件app.bin ;
[0070]3使用串口或者网线,连接到嵌入式设备,并将app.bin下装到嵌入式设备,如图4所示;
[0071]4在嵌入式设备上,运行嵌入式软件加载并运行应用软件app.bin,其中应用软件的输入、输出数据存放在应用软件数据区中,如图5所示。
[0072]本发明的基本要求就是当执行在线调试功能时,应用软件中所有局部变量必须全部输出到全局变量,应用软件中不允许存在局部变量,全局变量是应用软件的代码的一部分,不影响应用软件的逻辑,其具体的实现办法为:要将应用软件所有函数中的局部变量数据,转换成全局变量数据,如图6所示,全局变量区每个变量地址都可外部访问;然后再将应用软件中所有赋值语句“=”替换成宏” assign”。
[0073]在本发明中,得到每个全局变量地址的方法为:首先在嵌入式设备的存储区域预中留出足够的专门存放全局变量的空间,并标记该空间的起始位置,再结合每个全局变量地址的长度,可得到该全局变量偏移地址(这个偏移地址就是本发明所述的全局变量的地址),并通过打印方式,将全局变量的地址发送给工程师站,以方便在线调试所述应用软件。例如,可以打印到offset, txt文件中。
[0074]对于在线调试:
[0075]I首先,工程师站通过串口或者网线,连接到嵌入式设备后,启动应用软件app.bin,进行在线调试;
[0076]2此时对应用软件app.bin中的输入强制为a = 6 ;b = 9,此时查看输出c是否为15,如图2所示;
[0077]3在强制a,b的基础上,再强制加法块的输出变量L3的值,此时不论a、b的值是多少,c都会跟着L3的值变化,强制功能生效,如图3所示。
[0078]4嵌入式设备无需操作系统,仅需要支持运行app.bin和数据读写访问功能即可。
[0079]其中,在执行步骤2的强制赋值的原理为:当某个变量被强制后,为该变量设置强制标记,赋值语句根据强制标示判断是执行赋值操作还是强制操作,应用软件强制逻辑处理流程,如图7所示,
[0080]在这里,为了保证运行性能和运行时间确定性,需要先做以下准备:
[0081]首先,将所有需要监视的局部变量输出到全局数据区,变量地址通过上述方式获取;
[0082]然后,应用软件生成三份全局数据区副本Global_Force,其中,同一个全局变量,在这三份全局区副本中的地址都是相同的;
[0083]第一份为全局数据区Global,用来参与实际运算,即第一份存储的变量为带入应用软件中执行逻辑运算,并返回运算结果;
[0084]第二份为标示区Global_flag,用来作为强制标示,即在执行逻辑运算时,先要判断是否为强制,如果是,则执行在线调试程序,反之则执行正常程序;
[0085]第三份为强制数据区Globalforce,用来存储待强制变量数值。
[0086]第二份和第三份全局数据区副本是第一份的映射,因此可以通过第一份地址变量地址寻址到第二、第三份数据区相同变量的的地址。
[0087]做好以上工作后,在工程师站将应用软件编译并下装到嵌入式系统后,就可以开始进行在线调试了,例如:强制_L1变量为6的流程如下:(这里的变量_L1就是定义的a)
[0088]在工程师站的在线调试的软件中,使用“写入”操作,将标示区中变量LI对应地址的第I个字节设置为1,即在标示区设置Ll_flag为强制状态,同时,将强制数据区中将变量Ll.force的数据设置为6,即执行实现了强制:L1 = 6 ;
[0089]此时,在“应用软件”执行赋值语句”assign”时,先执行判断标示区中变量_L1_flag对应的地址的第I个字节是否为1,如果是,则将强制数据区该变量中存储的数据Ll_force赋值给全局变量区中的该变量LI。
[0090]全局变量区变化示意如图8所示。
[0091]Assign在“应用软件”中实现方案关键点示例,以函数acg_assign_impl为例
[0092]I)首先,在“应用软件”中增加赋值条件信息,如图9所示;
[0093]2)然后在初始化函数中增加赋值条件信息的设置,初始化函数只调用一次,如图10所示;
[0094]3)增加assign宏,为根节点赋值,如下:
[0095]#define assign (L, R, N) acg_assign_impl (L, R, N)
[0096]4) acg_assign_impl 函数代码,如图 11 所示
[0097]void acg_assign_impl (void*L, void*R, unsigned long N);其中,L、R 为输入变量;
[0098]在执行acg_aSSign_impl时,首先得到,全局变量L在全局数据区的地址,根据该变量地址得到在相同地址在标示区中第I个字节的值(即为:标示值),如果得到=1,则执行在线调试程序;否则执行该应用软件的工作程序。
[0099]处理变量R的方法同L,这里不在累述。
[0100]每次执行完在线调试后,都需要对“应用软件”进行释放,释放的方法为:将全局变量标示区中,全局变量地址的第I个字节设为O (在初始化的时候,全局变量标示区中,全局变量地址的第I个字节也为O)。
[0101]以上所述仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专利的技术人员在不脱离本发明技术方案范围内,当可利用上述提示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明方案的范围内。
【权利要求】
1.一种基于DCS系统应用软件在线调试方法,其特征在于,包括可运行应用软件的嵌入式设备,和与嵌入式设备互相连接的计算机设备,所述嵌入式设备还包括数据通讯模块,所述嵌入式设备通过所述数据通讯模块与所述计算机设备实现数据交互,其特征在于,所述嵌入式设备还包括应用软件数据区,所述应用软件数据区包括与所述应用软件的局部变量一一对应的全局变量,所述计算机设备通过所述全局变量,实现与所述应用软件数据内容的读写访问。
2.根据权利要求1所述的一种基于DCS系统应用软件在线调试方法,其特征在于,所述全局变量包括:强制标示、全局数据和强制数据; 1)通过所述计算机设备为需要监测的全局变量的强制数据赋值,并将所述全局变量的强制标示设置为〃1〃 ; 2)启动所述应用软件; 3)所述应用软件在运行过程中,判断所述应用软件局部变量对应的所述全局变量的强制标示是否为"1",如果是,执行步骤4),反之执行步骤5); 4)将所述全局变量的强制数据赋值给所述局部变量和所述全局变量的全局数据; 5)将所述局部变量赋值给相应的所述全局变量的全局数据; 6)通过所述数据通讯模块将所述全局变量信息传输给所述计算机设备进行显示。 优选的,所述步骤I)到所述步骤4)为所述计算机设备通过所述全局变量实现对所述应用软件数据写访问;所述步骤5)和步骤6)为所述计算机设备通过所述全局变量实现对所述应用软件数据读访问。
3.根据权利要求2所述的一种基于DCS系统应用软件在线调试方法,其特征在于,所述全局变量在所述嵌入式设备的内存中占用的地址空间为全局变量区,所述全局变量区至少包括三个全局变量区副本,其中, 所述第一份全局变量区副本为全局数据区,所述全局数据区用来存储所述局部变量赋值给相应的所述全局变量的数据; 所述第二份全局变量区副本为标示区,所述标示区用来存储所述强制标示,这里的; 所述第三份全局变量区副本为强制数据区,用来存储所述强制数据; 所述标示区和所述强制数据区为所述全局数据区的映射,所述同一个全局变量的三份全局变量区副本的存储地址都相同。
4.根据权利要求3所述的一种基于DCS系统应用软件在线调试方法,其特征在于,所述全局变量区在所述嵌入式系统的内存中占用一定空间,所述占用的空间具有起始位置,所述全局数据区存储的全局变量包括地址、序号和地址长度,所述全局变量的地址为所述起始位置+(所述序号-1) *(所述地址长度);所述每个全局变量的地址长度相同。
5.根据权利要求3或4所述的一种基于DCS系统应用软件在线调试方法,其特征在于,读取所述全局变量的强制标示信息为在所述标示区读取所述全局变量对应的地址信息中存储的数据;读取所述全局变量的强制数据信息为在所述强制数据区读取所述全局变量对应的地址信息中存储的数据; 优选的,所述标示区中所述全局变量对应的地址的第I个字节为强制标示区。
6.根据权利要求1-5所述的任意一种基于DCS系统应用软件在线调试方法,其特征在于,所述步骤2)中,在所述计算机设备上通过与所述嵌入式设备的连接,启动所述应用软件的方法为:在所述计算机的控制台上执行启动应用软件的命令; 优选的,所述计算机包括在线监控程序,所述在线监控程序包括:启动所述应用软件的功能、为所述应用软件各输入变量赋值的功能、为所述应用软件的输出变量的值提供显示功能;所述步骤1)中,在所述计算机设备上通过与所述嵌入式设备的连接,启动所述应用软件的方法为,在所述在线监控程序中执行所述启动所述应用软件的功能; 优选的,所述在线监控程序为带图形界面的执行程序; 优选的,所述计算机与所述嵌入式设备通过串口或者网线连接; 优选的,所述计算机上安装有编辑所述应用软件的代码和将所述代码编译为所述应用软件的程序;所述嵌入式设备支持从所述计算机下载并安装编译后的所述应用软件,并调度所述应用软件的执行; 优选的,所述计算机设备为工程师站; 优选的,所述被测程序为所述应用软件中的任意长度的代码; 优选的,所述被测程序为所述应用软件的全部代码; 优选的,所述被测程序为所述应用软件的一条赋值语句;
7.根据权利要求1-6所述的任意一种基于DCS系统应用软件在线调试方法,其特征在于,所述计算机设备还包括算法组态、编译和下载并安装所述应用软件的功能,具体为: 1)先在所述计算机设备上进行算法组态; 2)然后将经过算法组态的程序编译成所述嵌入式设备支持的所述应用软件; 3)再将所述应用软件下载到所述嵌入式设备并在所述嵌入式设备上安装的过程。
8.根据权利要求3-7所述的一种基于DCS系统应用软件在线调试方法,其特征在于,执行完在线调试后,将所有全局变量的强制标示设为0 ; 优选的,所述应用软件在下载并安装时,将所有全局变量的强制标示设为0。 优选的,所述嵌入式设备无通用操作系统。
【文档编号】G06F9/48GK104268074SQ201410453733
【公开日】2015年1月7日 申请日期:2014年9月5日 优先权日:2014年9月5日
【发明者】任保华, 杨晨, 齐敏, 张 浩, 张智慧 申请人:北京广利核系统工程有限公司, 中国广核集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1