CN115640014A - 一种基于编译植入特征码的功能块在线校核方法 - Google Patents

一种基于编译植入特征码的功能块在线校核方法 Download PDF

Info

Publication number
CN115640014A
CN115640014A CN202211308915.XA CN202211308915A CN115640014A CN 115640014 A CN115640014 A CN 115640014A CN 202211308915 A CN202211308915 A CN 202211308915A CN 115640014 A CN115640014 A CN 115640014A
Authority
CN
China
Prior art keywords
function block
file
function
crc
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211308915.XA
Other languages
English (en)
Inventor
饶丹
王小红
徐广辉
张恒
李友军
李临风
王军
唐中天
张卯安
罗华煜
戴欣欣
张吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nari Technology Co Ltd
Original Assignee
Nari Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nari Technology Co Ltd filed Critical Nari Technology Co Ltd
Priority to CN202211308915.XA priority Critical patent/CN115640014A/zh
Publication of CN115640014A publication Critical patent/CN115640014A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于编译植入特征码的功能块在线校核方法,通过读取功能块的源代码文件,解析出其中的功能块的名称,接口等定义信息,自动生成功能块文件,提高了生成功能块文件的准确性和效率;本发明利用功能块的CRC值来比较功能块的异同,减少了在线比较功能块的计算量,提高了在线比较功能块的效率;利用功能块的CRC值来比较页面中功能块的模型结构的异同,减少了在线比较页面的计算量,提高了在线比较页面的效率;本发明在编译过程中将功能块的CRC值嵌入到功能块的可执行文件中,用于后续与组态工具下发的页面中的对应功能块进行在线CRC比较,能够在线检验组态工具中的功能块与控制器中实际调度运行的功能块的一致性。

Description

一种基于编译植入特征码的功能块在线校核方法
技术领域
本发明涉及可视化组态,特别是一种基于编译植入特征码的功能块在线校核方法。
背景技术
可视化组态过程中,存在多个研发人员对同一组态中的功能块进行修改以及功能块下装操作,如果进行了功能块修改而未进行下装功能块到控制器的操作,会导致组态工具和控制器中的功能块出现差异,且如果这种差异在可视化组态投运之前未被发现,会导致整个可视化组态存在安全隐患。
工程人员在组态调试过程中,由于调试的需求,需要查看组态工具与控制器中功能块的异同而进行调试工作。在线功能块对比,能够可视化地为工程人员展示出组态工具中的功能块与控制器中的功能块的异同,对于提高组态调试效率,消除安全隐患具有重要的意义。
与本发明最接近的现有技术是专利《一种分散控制系统在线组态对比方法和系统》(西安热工研究院有限公司,南京南瑞继保电气有限公司,CN 113759859 A),是将下位机即控制器中的待对比逻辑组态页,上装至上位机即组态工具中,然后从逻辑组态页最基本的数据存储结构出发,通过对功能块和连接线进行对比,来实现组态对比。
现有技术的缺点如下:
1、现有技术主要比较了由功能块组成的页面逻辑的一致性,无法保证上位机所引用功能块的定义与下位机所调用功能块的定义的一致性。
2、实际组态调试过程中,工程人员首先只需要了解整个组态工程在上下位机的整体差异情况。即每个逻辑组态页的异同,以及每个功能块的异同。然后再按照调试的需要进一步分析不同逻辑组态页的详细差异,不同功能块的详细差异。相同的页面,相同的功能块是不需要进一步详细对比的。现有技术对所有功能块对都按照实例名、描述、内存变量、中间变量进行详细的差异比较,对比效率很低。
3、同一类的功能块中包含功能块名称、接口等结构信息的抽象模型部分是相同的,只有包含组态信息的实例化部分是不同的。因此,对于功能块层级的对比,只需要对比组态工具中和控制器中的对应功能块的抽象模型部分。对于页面层级的对比,同一类的功能块的抽象模型部分只需要计算对比一次就可以了,只有实例化部分才需要每个功能块分别进行计算对比。现有技术对所有功能块的抽象模型部分和实例化部分都进行计算比较,对比效率很低。
发明内容
发明目的:本发明的目的是提供一种基于编译植入特征码的功能块在线校核方法,从而能够在线检验组态工具中的功能块与控制器中实际调度运行的对应功能块的一致性。
技术方案:本发明所述的一种基于编译植入特征码的功能块在线校核方法,包括以下步骤:
(1)上位机准备的步骤:通过对功能块源代码文件进行解析,离线生成用于组态工具进行组态编程的功能块文件(xml描述);该功能块文件包含解析源代码文件获得的功能块的模型结构信息和该部分信息的CRC值;通过对功能块进行连线组态,离线生成能够实现指定的运算和控制功能的页面文件;
(2)下位机准备的步骤:在编译功能块可执行文件的过程中建立每个功能块的.o文件与其CRC值的一一对应关系表,并将其与功能块可执行文件一起下发到控制器中;
(3)功能块在线对比的步骤:组态工具在线下发页面文件到控制器,控制器解析出页面文件中的所有功能块实例,并依次将每个功能块实例所对应的功能块模型的CRC值和控制器中实际调度运行的对应功能块的CRC值进行对比;如果有不一致的,控制器返回差异信息并在组态工具上显示。
所述步骤(1)具体为:
(1.1)根据功能块编程规范开发功能块源代码.c文件;
(1.2)组态工具依据功能块编程规范从功能块源代码文件中解析出功能块的关键结构信息,所述关键结构信息包括名称、说明、输入/输出/参数/控制接口;
(1.3)计算出以xml格式组织的功能块关键结构信息的CRC值;
(1.4)将功能块关键结构信息及CRC值保存到功能块的xml描述文件(.slf文件)中,并将该文件添加至组态工具的功能块库中;
(1.5)将组态工具的功能块库中的功能块拖放至组态页面中,连接功能块之间的输入、输出;通过对功能块的积木式搭建,生成能够实现指定的运算和控制功能的组态页面。
所述步骤(2)具体为:
(2.1)为功能块源代码.c文件定义一个全局变量,变量命名方式是功能块名称加上_FB_CRC后缀,并且赋值为非0值;
(2.2)将功能块源代码.c文件编译成.o文件(elf格式);
(2.3)按照与步骤(1.2)和(1.3)相同的方法计算功能块的CRC码;
(2.4)解析elf文件得到xxx_FB_CRC变量值在.data数据区的地址,将对应的CRC值写入该地址,实现功能块的CRC值的修改;
(2.5)遍历源代码目录下所有.o文件,完成所有功能块的CRC的修改;
(2.6)将所有.o文件链接生成功能块lib库文件(lib文件);
(2.7)执行生成可执行文件(bin文件)的Makefile文件对所有功能块lib库文件(lib文件)进行编译链接,将所有.lib文件链接生成最终的可执行文件(bin文件);
(2.8)将生成的.bin文件下发到一个在线的控制器中以供调度执行。
所述步骤(3)具体为:
(3.1)组态工具在线下发页面文件到控制器;
(3.2)控制器解析出页面文件中的所有功能块实例,并依次将每个功能块实例和控制器中实际调度运行的对应功能块进行CRC值对比;具体对比方法为:
(3.2.1)对于页面中的功能块实例,从页面文件中的功能块模型描述中提取该功能块的CRC值;
(3.2.2)对于控制器中实际调度运行的功能块,首先根据功能块所属的功能块库名称,从调度运行的.bin文件中找到控制器中对应的功能块lib库文件;然后根据功能块的名称,从功能块lib库文件中找到对应的.o文件;最后从.o文件中得到xxx_FB_CRC变量值在.data数据区的地址,从.data数据区的对应地址处获取该功能块的CRC值;
(3.3)如果有CRC值不一致的,控制器返回差异信息给组态工具,组态工具上显示功能块比较结果。
一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的一种基于编译植入特征码的功能块在线校核方法。
一种计算机设备,包括储存器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的一种基于编译植入特征码的功能块在线校核方法。
有益效果:与现有技术相比,本发明具有如下优点:
1、本发明通过读取功能块的源代码文件,解析出其中的功能块的名称,接口等定义信息,自动生成功能块文件,提高了生成功能块文件的效率和准确性;
2、本发明利用功能块的CRC值来比较功能块的异同,减少了在线比较功能块的计算量,提高了在线比较功能块的效率;利用功能块的CRC值来比较页面中功能块的模型结构的异同,减少了在线比较页面的计算量,提高了在线比较页面的效率
3、本发明在编译过程中将功能块的CRC值嵌入到功能块的可执行文件中,用于后续与组态工具下发的页面中的对应功能块进行在线CRC比较,能够在线检验组态工具中的功能块与控制器中实际调度运行的功能块的一致性。
附图说明
图1为本发明的步骤流程图。
具体实施方式
下面结合附图对本发明的技术方案作进一步说明。
如图1所示,一种基于编译植入特征码的功能块在线校核方法,包括以下步骤:
(1)上位机准备的步骤:通过对功能块源代码文件进行解析,离线生成用于组态工具进行组态编程的功能块文件(xml描述);该功能块文件包含解析源代码文件获得的功能块的模型结构信息和该部分信息的CRC值;通过对功能块进行连线组态,离线生成能够实现指定的运算和控制功能的页面文件;
所述步骤(1)具体为:
(1.1)根据功能块编程规范开发功能块源代码.c文件;
(1.2)组态工具依据功能块编程规范从功能块源代码文件中解析出功能块的关键结构信息,所述关键结构信息包括名称、说明、输入/输出/参数/控制接口;
(1.3)计算出以xml格式组织的功能块关键结构信息的CRC值;
(1.4)将功能块关键结构信息及CRC值保存到功能块的xml描述文件(.slf文件)中,并将该文件添加至组态工具的功能块库中;
(1.5)将组态工具的功能块库中的功能块拖放至组态页面中,连接功能块之间的输入、输出;通过对功能块的积木式搭建,生成能够实现指定的运算和控制功能的组态页面。
(2)下位机准备的步骤:在编译功能块可执行文件的过程中建立每个功能块的.o文件与其CRC值的一一对应关系表,并将其与功能块可执行文件一起下发到控制器中;
所述步骤(2)具体为:
(2.1)为功能块源代码.c文件定义一个全局变量,变量命名方式是功能块名称加上_FB_CRC后缀,并且赋值为非0值;
(2.2)将功能块源代码.c文件编译成.o文件(elf格式);
(2.3)按照与步骤(1.2)和(1.3)相同的方法计算功能块的CRC码;
(2.4)解析elf文件得到xxx_FB_CRC变量值在.data数据区的地址,将对应的CRC值写入该地址,实现功能块的CRC值的修改;
(2.5)遍历源代码目录下所有.o文件,完成所有功能块的CRC的修改;
(2.6)将所有.o文件链接生成功能块lib库文件(lib文件);
(2.7)执行生成可执行文件(bin文件)的Makefile文件对所有功能块lib库文件(lib文件)进行编译链接,将所有.lib文件链接生成最终的可执行文件(bin文件);
(2.8)将生成的.bin文件下发到一个在线的控制器中以供调度执行。
(3)功能块在线对比的步骤:组态工具在线下发页面文件到控制器,控制器解析出页面文件中的所有功能块实例,并依次将每个功能块实例所对应的功能块模型的CRC值和控制器中实际调度运行的对应功能块的CRC值进行对比;如果有不一致的,控制器返回差异信息并在组态工具上显示。
所述步骤(3)具体为:
(3.1)组态工具在线下发页面文件到控制器;
(3.2)控制器解析出页面文件中的所有功能块实例,并依次将每个功能块实例和控制器中实际调度运行的对应功能块进行CRC值对比;具体对比方法为:
(3.2.1)对于页面中的功能块实例,从页面文件中的功能块模型描述中提取该功能块的CRC值;
(3.2.2)对于控制器中实际调度运行的功能块,首先根据功能块所属的功能块库名称,从调度运行的.bin文件中找到控制器中对应的功能块lib库文件;然后根据功能块的名称,从功能块lib库文件中找到对应的.o文件;最后从.o文件中得到xxx_FB_CRC变量值在.data数据区的地址,从.data数据区的对应地址处获取该功能块的CRC值;
(3.3)如果有CRC值不一致的,控制器返回差异信息给组态工具,组态工具上显示功能块比较结果。
实施例:
S1约定如下功能块编程规范:
a,用defineFunctionBlock声明一个功能块
示例:defineFunctionBlock(p_fb,”and”);
其中,p_fb为功能块的首地址,”and”为功能块的名称
b,用defineFunctionBlockOut声明一个功能块的输出
示例:defineFunctionBlockOut(p_fb,”out1”,”0”,”bool”);
其中,p_fb为功能块的首地址,”out1”为输出通道的名称,”0”为输出通道的序号,”bool”为输出通道的数据类型
c,用defineFunctionBlockIn声明一个功能块的输入
示例:defineFunctionBlockIn(p_fb,”in1”,”0”,”bool”,”1”);
其中,p_fb为功能块的首地址,”in1”为输入通道的名称,”0”为输入通道的序号,”bool”为输入通道的数据类型,”1”为输入通道的默认值
d,用defineFunctionBlockParameter声明一个功能块的参数
示例:defineFunctionBlockParameter(p_fb,”para2”,”1”,”float”,“5.01”,”0”,“20.0”,“kV”);
其中,p_fb为功能块的首地址,”para2”为参数通道的名称,”1”为参数通道的序号,”float”为参数通道的数据类型,“5.01”为参数通道的程序默认初始值,在上位机组态页面时,可修改初始值,”0”为参数通道的最小值,“20.0”为参数通道的最大值,“kV”为参数通道的单位
e,用defineFunctionBlockOperation声明一个功能块的控制命令
示例:defineFunctionBlockOperation(p_fb,”oper1”,”0”,”3”,”bool”,“int”,“float”);
其中,p_fb为功能块的首地址,”oper1”为控制命令的名称,”0”为控制命令的序号,”3”为控制命令包含参数的数目,”bool”,“int”,“float”分别为控制命令的3个参数的数据类型。
f,用名称+FunctionBlockNew声明一个功能块的构造函数
示例:功能块的名称为“and”,其构造函数定义为FB_PUB*andFunctionBlockNew(FB_ARG*p_arg),即构造函数名为“名称+FunctionBlockNew”。
然后在构造函数的实现部分,按照上述a,b,c,d,e依次声明该功能块的名称、输出、输入、参数和控制。
构造函数编写示例:
Figure BDA0003907108710000071
Figure BDA0003907108710000081
g,用名称+FunctionBlockRun声明一个功能块的任务函数,功能块的任务函数完成具体算法逻辑的计算
S2依据步骤S1约定的功能块编程规范,编写一组完成某一类运算功能的功能块的源代码文件(.c文件),并将它们都存放在同一个文件夹目录中。
S3使用功能块制作工具解析步骤S2中所述目录中的所有源代码文件,提取出每个功能块的关键结构信息,根据功能块的关键结构信息计算出功能块的CRC值,将所有功能块的关键结构信息和CRC值保存至功能块库文件中。一般该功能块库的文件名应与源代码文件所在文件夹的名称一致。
具体为:
S3.1功能块制作工具将源代码文件读取到程序内存中,解析该源文件。
S3.2根据关键字FunctionBlockNew前面的第一个空格到关键字FunctionBlockNew之间的字符串获得功能块的名称。
S3.3根据关键字FunctionBlockNew后面的第一个左大括号到该左大括号对应的右大括号之间的字符串获得功能块的构造函数实现内容sContent。
S3.4获得关键字defineFunctionBlock在sContent的位置,接着找到该位置后面括号内的双引号内的内容得到功能块的名称,并将其与步骤b中获得的功能块名称比较,如果不一致则提示解析失败。
S3.5获得关键字defineFunctionBlockOut在sContent的位置,接着找到该位置后面括号内的第一个双引号内的内容作为功能块输出的名称、第二个双引号内的内容作为功能块输出的序号、第三个双引号内的内容作为功能块输出的数据类型。将这一条输出记录加入功能块的输出集合中。
S3.6获得关键字defineFunctionBlockIn在sContent的位置,接着找到该位置后面括号内的第一个双引号内的内容作为功能块输入的名称、第二个双引号内的内容作为功能块输入的序号、第三个双引号内的内容作为功能块输入的数据类型、第四个双引号内的内容作为功能块输入的初始值。将这一条输入记录加入功能块的输入集合中。
S3.7获得关键字defineFunctionBlockParameter在sContent的位置,接着找到该位置后面括号内的第一个双引号内的内容作为功能块参数的名称、第二个双引号内的内容作为功能块参数的序号、第三个双引号内的内容作为功能块参数的数据类型、第四个双引号内的内容作为功能块参数的初始值、第五个双引号内的内容作为功能块参数的最小值、第六个双引号内的内容作为功能块参数的最大值、第七个双引号内的内容作为功能块参数的单位。将这一条参数记录加入功能块的参数集合中。
S3.8获得关键字defineFunctionBlockOperation在sContent的位置,接着找到该位置后面括号内的第一个双引号内的内容作为功能块控制操作的名称、第二个双引号内的内容作为功能块控制操作的序号、第三个双引号内的内容作为功能块控制操作的参数个数。根据解析得到的参数个数,继续解析后续的双引号内的内容,得到功能块控制操作的各个参数的数据类型。将这一条控制操作记录加入功能块的控制操作集合中。
S3.9将以上步骤解析出来的功能块关键结构信息以XML格式组织,并计算出对应的CRC值。
S3.10继续重复以上步骤S3.1~S3.9,解析文件夹目录里的其他源代码文件。
S3.11将所有功能块的关键结构信息及CRC值保存到所属功能块库的xml描述文件(.slf文件)中,并将该文件添加至组态工具的功能块库中(即将该slf文件复制到组态工具的程序目录中的symbol文件夹中)。
S4功能块编译工具分别编译每个功能块的源代码生成对应的.o文件。调用与步骤S3相同的解析计算逻辑获得功能块的CRC码。将得到的CRC码写入到.o文件中指定的.data数据区的某一位置处。将所有的.o文件合并链接生成功能块lib库文件(.lib文件)。将合并链接所有的功能块lib库文件生成的可执行文件(.bin文件)下发到一个在线的控制器中以供调度执行。
具体为:
S4.1为每个源代码定义一个全局变量用来存放后续计算出的功能块的CRC值,变量命名方式是功能块名称加上_FB_CRC后缀,并且赋值为非0值。如功能块源代码add.c,定义全局变量add_FB_CRC,Unsigned int add_FB_CRC=1;
S4.2将步骤S2所述功能块源代码目录填入编译功能块lib库文件所用Makefile文件中定义的要编译的源文件的目录位置,执行该Makefile文件,对目录下所有源文件进行编译,生成功能块lib库文件。
所述Makefile文件的具体执行步骤为:
S4.2.1将源代码目录下的所有.c文件编译成.o文件。
S4.2.2调用与步骤S3相同的解析计算逻辑获得所有.c文件对应功能块的CRC码。
S4.2.3找到源代码目录下每个.c文件对应的.o文件(elf格式),解析elf文件得到xxx_FB_CRC变量值在.data数据区的地址,将对应的CRC值写入该地址,即完成单个.o文件CRC值的修改。
S4.2.4遍历源代码目录下所有.o文件,完成所有功能块的CRC值的修改。
S4.2.5将所有.o文件链接生成功能块lib库文件(lib文件)。
S4.3执行生成可执行文件(bin文件)的Makefile文件对所有功能块lib库文件(lib文件)进行编译链接,将所有.lib文件链接生成最终的可执行文件(bin文件)。将生成的.bin文件下发到一个在线的控制器中以供调度执行。
S5页面组态工具在页面上将多个功能块实例进行输入输出连线,生成可以实现指定的复杂运算和控制功能的页面文件。
具体为:
S5.1打开页面组态工具读取该工具程序目录中symbol文件夹中存放的步骤S3生成的功能块文件(.slf文件),在界面上以图元的形式按序显示。
S5.2根据需要拖拽功能块图元到页面上生成功能块实例,并对功能块实例之间进行输入输出连线。使得组态完成的页面可以实现指定的复杂运算和控制功能。
S5.3使用页面组态工具生成步骤S5.2完成的组态页面对应的页面文件。
页面文件中不同的功能块实例都会保存其对应的功能块序号,执行序号等实例化属性。而功能块实例所属功能块的CRC值等功能块模型结构信息在组态页面中只保存一次。
S6页面组态工具将页面文件下发至步骤S4所述的在线控制器中。控制器解析出页面文件中的所有功能块,并依次将每个功能块和控制器中实际调度运行的对应功能块进行CRC值对比。如果有不一致的,控制器上送差异信息给组态工具并在组态工具上显示。
具体为:
S6.1组态工具成功连接步骤S4所述的在线控制器,并将组态页面下发至控制器。
S6.2控制器接收到页面文件,将文件内容读取到内存中。依次对页面中的所有功能块实例进行在线对比。
S6.3对于某一个功能块实例,根据该功能块实例的功能块名在页面文件中找到该功能块实例对应的功能块模型的CRC值。
S6.4根据该功能块实例的功能块名在控制器实际调度运行的可执行程序(.bin文件)中找到该功能块对应的.o文件。解析.o文件得到xxx_FB_CRC变量值在.data数据区的地址,从.data数据区的对应地址处获得该功能块实例在控制器中实际调度运行的对应功能块的CRC值。
S6.5如果步骤S6.3和S6.4获得的CRC值相同则继续下一个功能块实例的对比;如果不同则暂时记录下来,待对比完所有的功能块实例,将所有CRC值不同的功能块实例返回给组态工具并在组态工具上显示。

Claims (6)

1.一种基于编译植入特征码的功能块在线校核方法,其特征在于,包括以下步骤:
(1)上位机准备的步骤:通过对功能块源代码文件进行解析,离线生成用于组态工具进行组态编程的功能块文件;该功能块文件包含解析源代码文件获得的功能块的模型结构信息和该部分信息的CRC值;通过对功能块进行连线组态,离线生成能够实现指定的运算和控制功能的页面文件;
(2)下位机准备的步骤:在编译功能块可执行文件的过程中建立每个功能块的.o文件与其CRC值的一一对应关系表,并将其与功能块可执行文件一起下发到控制器中;
(3)功能块在线对比的步骤:组态工具在线下发页面文件到控制器,控制器解析出页面文件中的所有功能块实例,并依次将每个功能块实例所对应的功能块模型的CRC值和控制器中实际调度运行的对应功能块的CRC值进行对比;如果有不一致的,控制器返回差异信息并在组态工具上显示。
2.根据权利要求1所述的一种基于编译植入特征码的功能块在线校核方法,其特征在于,所述步骤(1)具体为:
(1.1)根据功能块编程规范开发功能块源代码.c文件;
(1.2)组态工具依据功能块编程规范从功能块源代码文件中解析出功能块的关键结构信息,所述关键结构信息包括名称、说明、输入/输出/参数/控制接口;
(1.3)计算出以xml格式组织的功能块关键结构信息的CRC值;
(1.4)将功能块关键结构信息及CRC值保存到功能块的xml描述文件中,并将该文件添加至组态工具的功能块库中;
(1.5)将组态工具的功能块库中的功能块拖放至组态页面中,连接功能块之间的输入、输出;通过对功能块的积木式搭建,生成能够实现指定的运算和控制功能的组态页面。
3.根据权利要求1或2所述的一种基于编译植入特征码的功能块在线校核方法,其特征在于,所述步骤(2)具体为:
(2.1)为功能块源代码.c文件定义一个全局变量,变量命名方式是功能块名称加上_FB_CRC后缀,并且赋值为非0值;
(2.2)将功能块源代码.c文件编译成.o文件;
(2.3)按照与步骤(1.2)和(1.3)相同的方法计算功能块的CRC码;
(2.4)解析elf文件得到xxx_FB_CRC变量值在.data数据区的地址,将对应的CRC值写入该地址,实现功能块的CRC值的修改;
(2.5)遍历源代码目录下所有.o文件,完成所有功能块的CRC的修改;
(2.6)将所有.o文件链接生成功能块lib库文件;
(2.7)执行生成可执行文件的Makefile文件对所有功能块lib库文件进行编译链接,将所有.lib文件链接生成最终的可执行文件;
(2.8)将生成的.bin文件下发到一个在线的控制器中以供调度执行。
4.根据权利要求1所述的一种基于编译植入特征码的功能块在线校核方法,其特征在于,所述步骤(3)具体为:
(3.1)组态工具在线下发页面文件到控制器;
(3.2)控制器解析出页面文件中的所有功能块实例,并依次将每个功能块实例和控制器中实际调度运行的对应功能块进行CRC值对比;具体对比方法为:
(3.2.1)对于页面中的功能块实例,从页面文件中的功能块模型描述中提取该功能块的CRC值;
(3.2.2)对于控制器中实际调度运行的功能块,首先根据功能块所属的功能块库名称,从调度运行的.bin文件中找到控制器中对应的功能块lib库文件;然后根据功能块的名称,从功能块lib库文件中找到对应的.o文件;最后从.o文件中得到xxx_FB_CRC变量值在.data数据区的地址,从.data数据区的对应地址处获取该功能块的CRC值;
(3.3)如果有CRC值不一致的,控制器返回差异信息给组态工具,组态工具上显示功能块比较结果。
5.一种计算机存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-4中任一项所述的一种基于编译植入特征码的功能块在线校核方法。
6.一种计算机设备,包括储存器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-4中任一项所述的一种基于编译植入特征码的功能块在线校核方法。
CN202211308915.XA 2022-10-25 2022-10-25 一种基于编译植入特征码的功能块在线校核方法 Pending CN115640014A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211308915.XA CN115640014A (zh) 2022-10-25 2022-10-25 一种基于编译植入特征码的功能块在线校核方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211308915.XA CN115640014A (zh) 2022-10-25 2022-10-25 一种基于编译植入特征码的功能块在线校核方法

Publications (1)

Publication Number Publication Date
CN115640014A true CN115640014A (zh) 2023-01-24

Family

ID=84945934

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211308915.XA Pending CN115640014A (zh) 2022-10-25 2022-10-25 一种基于编译植入特征码的功能块在线校核方法

Country Status (1)

Country Link
CN (1) CN115640014A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116431142A (zh) * 2023-04-13 2023-07-14 四川法瑞检测设备有限公司 一种可快速构建且不易出错的高效率编程方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116431142A (zh) * 2023-04-13 2023-07-14 四川法瑞检测设备有限公司 一种可快速构建且不易出错的高效率编程方法
CN116431142B (zh) * 2023-04-13 2024-02-13 四川法瑞检测设备有限公司 一种可快速构建且不易出错的高效率编程方法

Similar Documents

Publication Publication Date Title
US4742467A (en) Automated programming system for machine creation of applications program source code from non-procedural terminal input
CN106874244B (zh) 一种基于工作序列的文档自动生成模型的构建方法
Ardis et al. Software product lines: a case study
US7216340B1 (en) Analysis data validation tool for use in enterprise architecture modeling with result based model updating
US7424702B1 (en) Data integration techniques for use in enterprise architecture modeling
CN102541521B (zh) 基于结构化查询语言的操作指令自动生成装置及方法
CN101334728B (zh) 一种基于xml文档描述的界面生成方法和装置
CN104484269A (zh) 一种自动生成测试脚本的方法
CN115640014A (zh) 一种基于编译植入特征码的功能块在线校核方法
JP7339628B2 (ja) エクセルツールを用いたオンラインレポート作成システム
US11126408B2 (en) Incremental code generation method
JP2016224579A (ja) 情報処理装置及び情報処理方法
CN116909553A (zh) 一种页面在线开发及本地编译运行系统
EP0218258A3 (en) Software structuring system and method by data table translation
CN112148271B (zh) 一种装配工艺代码自动生成与注入的方法
KR20150060174A (ko) 비즈니스 프로세스 자동화를 위한 자동 소스 생성 방법
CN114356783A (zh) 单元测试代码自动生成方法、装置、存储介质及设备
EP0760980A1 (en) A system and method for creating design configurations and for controlling the execution of multiple design tools
CN111399900A (zh) 一种基于python与正则表达式的API文档自动生成方法及系统
EP0180636A1 (en) Automated application program development system and method
CN116431142B (zh) 一种可快速构建且不易出错的高效率编程方法
Pomberger et al. The Role of Prototyping in Software Development.
US7565646B2 (en) Method for compression of object code interpreted by tree-structured expression factorization
CN111708572A (zh) 一种基于Clang程序结构的控制流程图自动生成方法
Van Sickle et al. Recovering user interface specifications for porting transaction processing applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination