CN114780382A - 安全冗余编译运行方法、计算机设备及可读存储介质 - Google Patents

安全冗余编译运行方法、计算机设备及可读存储介质 Download PDF

Info

Publication number
CN114780382A
CN114780382A CN202210271424.6A CN202210271424A CN114780382A CN 114780382 A CN114780382 A CN 114780382A CN 202210271424 A CN202210271424 A CN 202210271424A CN 114780382 A CN114780382 A CN 114780382A
Authority
CN
China
Prior art keywords
file
instruction
compiler
operation method
redundant
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
CN202210271424.6A
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.)
NR Electric Co Ltd
NR Engineering Co Ltd
Original Assignee
NR Electric Co Ltd
NR Engineering 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 NR Electric Co Ltd, NR Engineering Co Ltd filed Critical NR Electric Co Ltd
Priority to CN202210271424.6A priority Critical patent/CN114780382A/zh
Publication of CN114780382A publication Critical patent/CN114780382A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种安全冗余编译运行方法,将IEC61131‑3多语言程序统一转换为结构化文本代码(ST),将ST转换为C语言,调用GCC编译器编译形成目标代码1。将ST转换为LLVM IR,调用LLVM后端编译器形成目标代码2。将ST转换为自定义中间指令,编译形成虚拟机指令文件。将上述3个文件下到3个处理器,分别运行可执行程序和解析虚拟机指令,每个周期运算后通过共享内存或数据总线进行数据有效性表决。本发明从逻辑上实现了源代码的独立处理和物理上独立运行,提升了安全冗余运行的可靠性。

Description

安全冗余编译运行方法、计算机设备及可读存储介质
技术领域
本发明属于工控安全领域,具体涉及过程控制、可编程控制器安全冗余运行。
背景技术
符合工业安全仪表SIS系统中,普遍采用IEC61131-3标准的语言开发程序。目前已有文献的解决方案侧重于物理上独立运行和冗余设计,对于源程序转换环节,都采用1种编译器形成产物,1份产物运行在多个物理处理器上。上述方案并未考虑到编译环节潜在的bug或单bit随机错误,需要在逻辑产物形成过程中采用不同的编译方案,此外通用编译器无法直接嵌入防误运行和跟踪记录的功能,需要自主编译过程中插桩处理。为提升安全冗余运行的可靠性,本案由此产生。
发明内容
本发明目的是提升安全运行的可靠性、独立性和排查问题效率。
一种安全冗余编译运行方法,将IEC61131-3程序统一转换为结构化文本语言ST描述,将ST通过不同的编译器处理形成目标产物,分别下载到多核处理器独立运行,运算结果通过三系表决器表决。
进一步地,所述将ST通过不同的编译器处理形成目标产物为,将ST转换为C语言,集成调用GCC编译器形成机器码目标文件1;将ST转换为LLVM IR指令集,调用LLVM后端编译器形成机器码目标文件2;采用自主编译器解析ST文本,形成语义树,输出自定义中间指令集,形成虚拟机指令文件3。
进一步地,所述集成调用GCC编译器的过程中,修改GCC源代码,将基于读取Makefile文件获取文件目录的编译方式修改为从内存中获取编译文件,避免明文代码信息的泄露。
进一步地,所述自主编译器为,定义机器无关的中间指令集,基于IEC61131-3标准定义ST文法,使用flex作为词法分析工具,使用bison作为语法分析工具,通过flex+bison作用形成语义树,遍历语义树,输出虚拟机三地址码指令,三地址码的地址记录的是变量在虚拟数据区的索引。
进一步地,当使能除零、数组越界防误选项时,在语义树中嵌入增加形参是否为0、数组下标和边界值比较的子树,若触发条件调用日志记录函数,便于调试模式下追踪分析。
进一步地,所述虚拟机指令文件3采用快速解释器执行,在初始化阶段构建形成指令序列和关联的解析函数指针,在运行过程通过执行预编译函数调用方式执行,不需要再判断指令类型。
进一步地,所述多核处理器至少包括4个核,其中1个核运行管理维护程序,获取待下载目标文件、指令文件,其余核分别独立运行机器码目标文件1、机器码目标文件2和虚拟机指令文件3。
进一步地,所述三系表决器的表决方案,对于模拟量取中值,对于状态量采用三取二表决,用于表决的核间数据采用共享内存方式访问。
进一步地,通过构建交叉编译环境编译器支持多种硬件处理器。
一种计算机设备,包括处理器和存储器,所述存储器用于存储程序指令,所述处理器被配置用于调用所述程序指令,执行上述安全冗余编译运行方法。
一种计算机可读存储介质,存储有程序指令,所述程序指令用于执行上述安全冗余编译运行方法。
采用上述方案后,本发明具有如下有益效果:
本发明通过ST转C调用GCC编译器、ST转IR调用LLVM编译器、ST转自定义虚拟指令集的三条技术路线,确保了逻辑转换过程中的可靠性、交叉验证的覆盖率,通过在自定义编译器中嵌入防误处理和触发日志记录功能,提升调试诊断效率。本发明确保了物理、逻辑上三系处理流程的独立性,提升了安全冗余运行的置信度。
附图说明
图1是本发明中安全冗余编译运行原理图。
具体实施方式
以下将结合附图1,对本发明的技术方案进行详细说明。
本发明设计了一种安全冗余编译运行方法,具体实施方式为:
1)获取IEC61131-3多种语言的程序,建立转换规则,统一转换为结构化文本语言ST描述。
可选地,其中FBD/LD转换为ST时,将图形符号转换为函数、功能块的调用语句,数据连线是形参传递语句。按照IEC61131-3标准定义的ST描述SFC顺序功能图的关键字和句型,获取SFC顺序功能图的图形文件,直接形成步、转换的ST代码。
2)将ST转换为C语言,集成调用GCC编译器形成机器码目标文件1。
可选地,获取开源GCC工具链和源码,将源码集成到组态软件中,并修改GCC源代码,将基于读取Makefile文件获取文件目录的编译方式修改为从内存中获取编译文件,ST转换C语言后,C代码存储在内存中,组态软件获取待编译的程序列表,可分析出依赖的文件列表,修改GCC读取加载文件的代码,改为从内存中获取源文件数据,避免了明文代码信息泄露的问题。
3)将ST转换为LLVM IR指令集,调用LLVM后端编译器形成机器码目标文件2。
可选地,通过开源flex+bison工具形成ST的语义树,根据LLVM定义的前端IR指令集,编写自定义的LLVM IR生成器,实现ST语义树到LLVM IR的直接映射。
4)采用自主开发的编译器解析ST文本,形成语义树,输出自定义中间指令集,形成虚拟机指令文件3。
可选地,定义一套机器无关的中间指令集(包括数学运算、逻辑运算、位移操作、数据比较、跳转指令),基于IEC61131-3标准定义ST文法,使用flex作为词法分析工具,使用bison作为语法分析工具,通过flex+bison作用形成语义树,遍历语义树,输出虚拟机三地址码指令。其中三地址码的地址记录的是变量在虚拟数据区的索引,虚拟数据区对每个变量采用结构体描述和分配,标记变量类型、初始值、序号等属性。
可选地,当使能除零、数组越界防误选项时,在除法语义树中嵌入增加形参是否为0的判断指令和满足除0条件时日志记录函数调用子树,在数组访问语义树中,对于计算得到的下标值,增加下标和边界值比较的子树,若触发越界条件则调用日志记录函数,便于调试模式下追踪分析。
5)将目标文件、指令文件下载到多核处理器独立运行。
可选地,多核处理器至少包括4个核(Core),其中1个核运行管理维护程序,获取待下载目标文件、指令文件。其它核分别独立运行机器码目标文件1、机器码目标文件2、虚拟机指令文件3。虚拟机指令文件3采用快速解释器执行,在初始化阶段构建形成指令序列和关联的解析函数指针,在运行过程通过执行预编译函数调用方式执行,不需要再判断指令类型。
可选地,每个周期运行时三系表决器的表决方案为:对于模拟量取中值,对于状态量采用三取二表决,用于表决的核间数据采用共享内存方式访问。
可选地,通过构建交叉编译环境编译器支持ARM、X86多种硬件处理器。
此外,本发明还设计了一种计算机设备,包括处理器和存储器,所述存储器用于存储程序指令,所述处理器被配置用于调用所述程序指令,执行上述安全冗余编译运行方法。
此外,本发明还设计了一种计算机可读存储介质,存储有程序指令,所述程序指令用于执行上述安全冗余编译运行方法。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

Claims (11)

1.一种安全冗余编译运行方法,其特征在于:将IEC61131-3程序统一转换为结构化文本语言ST描述,将ST通过不同的编译器处理形成目标产物,分别下载到多核处理器独立运行,运算结果通过三系表决器表决。
2.如权利要求1所述安全冗余编译运行方法,其特征在于:所述将ST通过不同的编译器处理形成目标产物为,将ST转换为C语言,集成调用GCC编译器形成机器码目标文件1;将ST转换为LLVM IR指令集,调用LLVM后端编译器形成机器码目标文件2;采用自主编译器解析ST文本,形成语义树,输出自定义中间指令集,形成虚拟机指令文件3。
3.如权利要求2所述安全冗余编译运行方法,其特征在于:所述集成调用GCC编译器的过程中,修改GCC源代码,将基于读取Makefile文件获取文件目录的编译方式修改为从内存中获取编译文件,避免明文代码信息的泄露。
4.如权利要求2所述安全冗余编译运行方法,其特征在于:所述自主编译器为,定义机器无关的中间指令集,基于IEC61131-3标准定义ST文法,使用flex作为词法分析工具,使用bison作为语法分析工具,通过flex+bison作用形成语义树,遍历语义树,输出虚拟机三地址码指令,三地址码的地址记录的是变量在虚拟数据区的索引。
5.如权利要求4所述安全冗余编译运行方法,其特征在于:当使能除零、数组越界防误选项时,在语义树中嵌入增加形参是否为0、数组下标和边界值比较的子树,若触发条件调用日志记录函数,便于调试模式下追踪分析。
6.如权利要求2所述安全冗余编译运行方法,其特征在于:所述虚拟机指令文件3采用快速解释器执行,在初始化阶段构建形成指令序列和关联的解析函数指针,在运行过程通过执行预编译函数调用方式执行,不需要再判断指令类型。
7.如权利要求1所述安全冗余编译运行方法,其特征在于:所述多核处理器至少包括4个核,其中1个核运行管理维护程序,获取待下载目标文件、指令文件,其余核分别独立运行机器码目标文件1、机器码目标文件2和虚拟机指令文件3。
8.如权利要求1所述安全冗余编译运行方法,其特征在于:所述三系表决器的表决方案,对于模拟量取中值,对于状态量采用三取二表决,用于表决的核间数据采用共享内存方式访问。
9.如权利要求1所述安全冗余编译运行方法,其特征在于:通过构建交叉编译环境编译器支持多种硬件处理器。
10.一种计算机设备,其特征在于:包括处理器和存储器,所述存储器用于存储程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-9中任意一项所述安全冗余编译运行方法。
11.一种计算机可读存储介质,其特征在于:存储有程序指令,所述程序指令用于执行如权利要求1-9中任意一项所述安全冗余编译运行方法。
CN202210271424.6A 2022-03-18 2022-03-18 安全冗余编译运行方法、计算机设备及可读存储介质 Pending CN114780382A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210271424.6A CN114780382A (zh) 2022-03-18 2022-03-18 安全冗余编译运行方法、计算机设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210271424.6A CN114780382A (zh) 2022-03-18 2022-03-18 安全冗余编译运行方法、计算机设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN114780382A true CN114780382A (zh) 2022-07-22

Family

ID=82426175

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210271424.6A Pending CN114780382A (zh) 2022-03-18 2022-03-18 安全冗余编译运行方法、计算机设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN114780382A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116360788A (zh) * 2023-02-17 2023-06-30 深圳市亿维自动化技术有限公司 结构化文本编程语言的编译方法、编译器及电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116360788A (zh) * 2023-02-17 2023-06-30 深圳市亿维自动化技术有限公司 结构化文本编程语言的编译方法、编译器及电子设备

Similar Documents

Publication Publication Date Title
CN111488154B (zh) St语言源代码编译方法、装置、计算机设备及介质
CN109254776B (zh) 多语言代码编译方法及编译器
US7293261B1 (en) Language-neutral representation of software code elements
US5854932A (en) Compiler and method for avoiding unnecessary recompilation
CN111736846B (zh) 一种面向动态分析的源代码插桩改进方法
Gómez-Abajo et al. Wodel-Test: a model-based framework for language-independent mutation testing
CN112835323B (zh) 可编程逻辑控制语言编译方法及装置
Stanier et al. A study of irreducibility in C programs
CN117075909B (zh) 用于实现并行编程的编译方法、电子设备和介质
CN114780382A (zh) 安全冗余编译运行方法、计算机设备及可读存储介质
US20210026609A1 (en) Support device and non-transitory computer-readable recording medium
Ebrahimi Salari et al. Pylc: A framework for transforming and validating plc software using python and pynguin test generator
US8434071B2 (en) Method for translating a graphical workflow in a textual description
CN117667045A (zh) 集成深度学习和plc语言的边缘控制器及代码生成方法
CN108664238A (zh) 一种解释型脚本语言c-sub的执行方法及装置
Benjamin et al. Runtime Annotation Checking with Frama-C: The E-ACSL Plug-in
Sun et al. KOP-Fuzzer: A Key-Operation-based Fuzzer for Type Confusion Bugs in JavaScript Engines
Darvas et al. What is special about PLC software model checking
Maliavko et al. The functionally-imperative programming language El and its translator
Tarditi et al. TIL: a type-directed, optimizing compiler for ML
Kabra et al. ST to MISRA-C translator and proposed changes in IEC61131-3 standard
Zhang et al. Parsing statement list program using flex and bison
Racković Construction of a translator for robot-programming languages
Maliavko et al. Functionally Imperative Programming Language El and its Implementation
Sow et al. Parsing Fortran-77 with proprietary extensions

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