本申请涉及计算机,尤其涉及面向可编程逻辑控制器的二进制代码语义转换方法及系统。
背景技术:
1、工业控制器是用于监控和管理机器设备或工业流程的设备。它们能够收集传感器数据、执行特定的指令和控制操作,以确保工业系统的顺利运行。这些控制器可以是基于硬件的,例如plc(programmable logic controller可编程逻辑控制器)、dcs(distributedcontrol system分散控制系统)等。它们在自动化生产线、能源生产、制造业等领域发挥着关键作用。
2、可编程逻辑控制器中通常采用二进制代码进行编写,在产生故障或者需要优化程序等情况下可能有需要获取其中的代码逻辑进而对控制器进行相关处理操作,以往在工业控制系统中大多采用查询数据库或者查询表等方式进行语义转换。具体而言,需要建立一个大型的数据库,存储plc二进制代码与plc指令之间的映射关系,且需要符合唯一性。将获取到的二进制代码经过数据库查询后获得plc指令,而如果数据库中没有记录当前查询的二进制代码映射关系,那么则没有办法继续。这种方法适用于某些特定的字节码或指令,通过查找表来映射字节码到指令,以便更好地理解程序的操作和行为。
3、然而,这种方法的应用范围和可行性可能会受到多种因素的限制,包括字节码的复杂性、指令的上下文、查找表的规模和结构等。并且,这个方法需要浪费大量的时间用于构建数据库或者数据表以及指令的映射。
技术实现思路
1、本申请实施例的主要目的在于提出面向可编程逻辑控制器的二进制代码语义转换方法及系统,旨在实现在工业控制系统中进行高效准确的二进制代码语义转换。
2、为实现上述目的,本申请实施例的一方面提出了面向可编程逻辑控制器的二进制代码语义转换方法,所述方法包括:
3、对可编程逻辑控制器的二进制代码文件进行代码预处理,得到第一文件信息和二进制字节码;
4、根据字典与列表,对所述二进制字节码进行指令映射,得到指令程序;其中,所述字典与列表是根据所述二进制字节码与可编程逻辑控制器指令的操作数和操作码之间的关系建立的;
5、识别所述指令程序中的函数调用关系和参数列表;
6、根据所述第一文件信息、所述函数调用关系和所述参数列表,确定目标函数块;
7、根据所述目标函数块的执行顺序对所述可编程逻辑控制器的指令进行汇总处理,得到语义转换结果。
8、在一些实施例中,所述对可编程逻辑控制器的二进制代码文件进行代码预处理,得到第一文件信息和二进制字节码,包括:
9、获取可编程逻辑控制器的二进制代码文件;
10、根据所述二进制代码文件,得到用户程序文件;
11、根据所述用户程序文件,得到文件头和二进制字节码;
12、根据所述文件头确定所述用户程序文件的文件类型、块类型和块号;
13、将所述文件类型、所述块类型和所述块号作为第一文件信息。
14、在一些实施例中,所述根据字典与列表,对所述二进制字节码进行指令映射,得到指令程序,包括:
15、根据字典与列表,确定所述二进制字节码中包含的字节;其中,所述字节为二字节码组合、四字节码组合或者六字节码组合;
16、根据所述字节确定匹配的操作码;
17、根据所述字节确定操作数;
18、当已匹配的字节码长度小于需要匹配的字节码长度,则得到指令程序;其中,所述指令程序由所述操作数和操作数组成。
19、在一些实施例中,所述根据字典与列表,确定所述二进制字节码中包含的字节,包括:
20、获取所述二进制字节码中的初始字节码;
21、根据字典与列表,确定所述初始字节码是否符合二字节码组合的第一个字节码,得到第一判断结果;
22、当所述第一判断结果为符合,则确定字节长度为2;
23、当所述第一判断结果为不符合,则根据所述初始字节码的下一个字节码确定字节长度为4或者6;
24、根据所述初始字节码和所述字节长度,从所述二进制字节码中确定字节。
25、在一些实施例中,所述根据所述字节确定操作数,包括:
26、当所述字节为二字节码组合,则判断所述二字节码组合是否为固定字节;
27、当所述二字节码组合不是固定字节,则根据所述字节的内容确定操作数;
28、当所述字节为四字节码组合或者六字节码组合,则根据所述字节的内容确定操作数。
29、在一些实施例中,所述识别所述指令程序中的函数调用关系和参数列表,包括:
30、将所述指令程序按照梯级划分,确定函数的调用位置;
31、根据所述函数调用位置确定函数调用关系;
32、根据所述函数调用关系确定形式参数和实际参数,得到参数列表。
33、在一些实施例中,所述根据所述第一文件信息、所述函数调用关系和所述参数列表,确定目标函数块,包括:
34、根据所述参数列表,将形式参数与实际参数一一对应并进行参数还原处理,得到第一函数块;
35、根据所述第一文件信息,采用所述第一函数块替换函数调用指令,得到目标函数块。
36、为实现上述目的,本申请实施例的另一方面还提供了面向可编程逻辑控制器的二进制代码语义转换系统,包括:
37、第一模块,用于对可编程逻辑控制器的二进制代码文件进行代码预处理,得到第一文件信息和二进制字节码;
38、第二模块,用于根据字典与列表,对所述二进制字节码进行指令映射,得到指令程序;其中,所述字典与列表是根据所述二进制字节码与可编程逻辑控制器指令的操作数和操作码之间的关系建立的;
39、第三模块,用于识别所述指令程序中的函数调用关系和参数列表;
40、第四模块,用于根据所述第一文件信息、所述函数调用关系和所述参数列表,确定目标函数块;
41、第五模块,用于根据所述目标函数块的执行顺序对所述可编程逻辑控制器的指令进行汇总处理,得到语义转换结果。
42、为实现上述目的,本申请实施例的另一方面提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现前面所述的方法。
43、本申请实施例至少包括以下有益效果:本申请提供面向可编程逻辑控制器的二进制代码语义转换方法及系统,该方案通过字典与列表结合的形式记录工业控制器的可编程逻辑控制器字节码与可编程逻辑控制器指令之间的映射关系,并且根据映射关系中的相关规律进行指令映射,降低了可编程逻辑控制器指令操作码、操作数与可编程逻辑控制器二进制代码之间的复杂度,并且,根据对函数参数和调用关系对上述映射得到的指令程序进行处理,能够实现在工业控制系统中进行高效准确的语义转换,获得真实有效的语义转换结果。
1.面向可编程逻辑控制器的二进制代码语义转换方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述对可编程逻辑控制器的二进制代码文件进行代码预处理,得到第一文件信息和二进制字节码,包括:
3.根据权利要求1所述的方法,其特征在于,所述根据字典与列表,对所述二进制字节码进行指令映射,得到指令程序,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据字典与列表,确定所述二进制字节码中包含的字节,包括:
5.根据权利要求1所述的方法,其特征在于,所述根据所述字节确定操作数,包括:
6.根据权利要求1所述的方法,其特征在于,所述识别所述指令程序中的函数调用关系和参数列表,包括:
7.根据权利要求1所述的方法,其特征在于,所述根据所述第一文件信息、所述函数调用关系和所述参数列表,确定目标函数块,包括:
8.面向可编程逻辑控制器的二进制代码语义转换系统,其特征在于,包括:
9.一种电子设备,其特征在于,包括处理器以及存储器;
10.一种计算机存储介质,其中存储有处理器可执行的程序,其特征在于,所述处理器可执行的程序在由所述处理器执行时用于实现如权利要求1至7任一项所述的方法。
