一种编译器、编译方法和追踪方法及DCS控制器技术

技术编号:22594326 阅读:22 留言:0更新日期:2019-11-20 10:54
本申请提供一种编译器,包括:中间代码获取模块,用于将源代码依次进行词法分析、语法分析、语义分析,得到以程序组织单元为单位转化的中间代码;错误跟踪逻辑插入模块,用于解析中间代码,并插入错误跟踪逻辑,得到更新中间代码;优化模块,用于将更新中间代码执行代码优化,得到优化更新中间代码;目标代码生成模块,用于利用优化更新中间代码生成目标代码。可见,本申请通过在源代码编译过程中插入错误跟踪逻辑,最终生成了带有错误追踪逻辑的目标代码,该目标代码在被DCS控制器加载执行错误追踪逻辑时会获取组态逻辑执行过程,生成错误追踪信息,定位故障原因。本申请同时还提供了编译方法、追踪方法、DCS控制器,均具有上述有益效果。

A compiler, compiling method, tracing method and DCS controller

The application provides a compiler, which includes: intermediate code acquisition module, which is used for lexical analysis, syntax analysis and semantic analysis of the source code in turn to obtain the intermediate code converted in the unit of program organization unit; error tracking logic insertion module, which is used for parsing the intermediate code and inserting error tracking logic to get the updated intermediate code; optimization module, which is used to update the intermediate code The new intermediate code performs code optimization to get the optimized update intermediate code; the target code generation module is used to generate the target code by using the optimized update intermediate code. It can be seen that by inserting the error tracking logic into the source code compilation process, the application finally generates the target code with the error tracking logic. When the target code is loaded by the DCS controller to execute the error tracking logic, it will obtain the configuration logic execution process, generate the error tracking information, and locate the fault cause. The application also provides compilation method, tracking method and DCS controller, all of which have the above beneficial effects.

【技术实现步骤摘要】
一种编译器、编译方法和追踪方法及DCS控制器
本申请涉及通信
,特别涉及一种编译方法、编译器和追踪方法及DCS控制器。
技术介绍
DCS是分布式控制系统的英文缩写(DistributedControlSystem),目前已经成熟应用于炼制、冶金、化工、建材、电力等行业。控制器是DCS的核心设备,负责采集现场数据,运行控制逻辑及算法,控制现场设备输出。控制器组态逻辑错误将会导致现场严重故障,如不能及时、准确的追踪原因并彻底解决,将导致更加严重后果,此类故障特点如下:紧急性、复杂性、滞后性、不可操作性。即使控制器开发人员及时赶到现场,也只能进行理论静态分析,无法进行操作实验进行验证,定位问题手段有限。如何高效准确定位现场控制器组态逻辑错误的根本原因,一直是各个DCS厂家需要面对的难题,现在一般的控制器错误追踪方法如下:目前所采用的主要方法是程序逻辑分析、逐个记录。组态逻辑工程师在编写组态程序的过程中,针对于可能错误进行单点追个分析,增加程序断言、超限报警日志记录等信息,此种方法对于定位现场问题可以启动一定的作用,但作用有限,但此种方法主要缺陷如下:容易出现设计盲区,产生遗漏,依靠于人工分析每个故障点,并在组态程序中增加断言、超限报警等故障判断逻辑,通过这种方法,往往无法对复杂多变的现场环境全面诊断;工作量较大,对工程中的组态程序逻辑的故障点进行全面的分析、添加故障判断逻辑代码过程是比较大的工作量,这不仅增加人力成本、更消耗项目时间。每位组态工程师的水平以及对程序的理解程度不同,此工作完成的质量也有所不同。因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。
技术实现思路
本申请的目的是提供一种编译方法、编译器和追踪方法及DCS控制器,操作简单,更加全面高效得到故障原因,改善用户体验。其具体方案如下:本申请提供一种编译器,包括:中间代码获取模块,用于将源代码依次进行词法分析、语法分析、语义分析,得到以程序组织单元为单位转化的中间代码;错误跟踪逻辑插入模块,用于解析所述中间代码,并插入错误跟踪逻辑,得到更新中间代码;优化模块,用于将所述更新中间代码执行代码优化,得到优化更新中间代码;目标代码生成模块,用于利用所述优化更新中间代码生成目标代码。可选的,所述中间代码是语法森林,所述语法森林包括每个所述程序组织单元对应的层语法森林,且每个层语法森林包括多个语法树。可选的,所述错误跟踪逻辑插入模块,包括:标记单元,用于遍历所述语法森林,标记所述语法森林的所有的所述语法树的位置;确定单元,用于确定标记有位置的语法树的语法树类型;更新中间代码获取单元,用于按照所述语法树类型插入预设函数调用语法树,得到所述更新中间代码。可选的,所述更新中间代码获取单元,包括:插入子单元,用于当所述语法树类型是顺序结构语法树时,在所述顺序结构语法树的开始节点与所述开始节点的原始右兄弟节点之间插入顺序函数调用语法树的根节点,其中,所述根节点是所述开始节点的右兄弟节点、所述开始节点的原始右兄弟节点的左兄弟节点;其中,所述顺序函数调用语法树包括所述根节点,所述根节点的左子节点用于接收输入参数,所述根节点的右子节点用于保存逻辑追踪数据。可选的,所述更新中间代码获取单元,包括:插入子单元,用于当所述语法树类型是选择结构语法树,在所述选择结构语法树的所有中子节点的左兄弟节点处插入选择函数调用语法树的根节点,其中,所述根节点是选择结构语法树根节点的子节点;其中,所述选择函数调用语法树包括所述根节点,所述根节点的左子节点用于接收输入参数,所述根节点的右子节点用于保存逻辑追踪信息。可选的,所述更新中间代码获取单元,包括:插入子单元,用于当所述语法树类型是循环结构语法树,在所述循环结构语法树的循环体子节点的左兄弟节点处插入循环函数调用语法树的根节点,其中,所述根节点是循环结构语法树根节点的子节点;其中,所述循环函数调用语法树包括所述根节点,所述根节点的左子节点用于接收输入参数,所述根节点的右子节点用于保存逻辑追踪信息。可选的,所述优化模块,包括:优化单元,用于将所述更新中间代码分配至多个线程,以便执行代码优化,得到所述优化更新中间代码。本申请公开了一种编译方法,包括:将源代码依次进行词法分析、语法分析、语义分析,得到以程序组织单元为单位转化的中间代码;解析所述中间代码,并插入错误跟踪逻辑,得到更新中间代码;将所述更新中间代码执行代码优化,得到优化更新中间代码;利用所述优化更新中间代码生成目标代码。可选的,所述中间代码是语法森林,所述语法森林包括每个所述程序组织单元对应的层语法森林,且每个层语法森林包括多个语法树。可选的,所述解析所述中间代码,并插入错误跟踪逻辑,得到更新中间代码,包括:遍历所述语法森林,标记所述语法森林的所有的所述语法树的位置;确定标记有位置的语法树的语法树类型;按照所述语法树类型插入预设函数调用语法树,得到所述更新中间代码。可选的,所述按照所述语法树类型插入预设函数调用语法树,包括:当所述语法树类型是顺序结构语法树时,在所述顺序结构语法树的开始节点与所述开始节点的原始右兄弟节点之间插入顺序函数调用语法树的根节点,其中,所述根节点是所述开始节点的右兄弟节点、所述开始节点的原始右兄弟节点的左兄弟节点;其中,所述顺序函数调用语法树包括所述根节点,所述根节点的左子节点用于接收输入参数,所述根节点的右子节点用于保存逻辑追踪数据。可选的,所述按照所述语法树类型插入预设函数调用语法树,包括:当所述语法树类型是选择结构语法树,在所述选择结构语法树的所有中子节点的左兄弟节点处插入选择函数调用语法树的根节点,其中,所述根节点是选择结构语法树根节点的子节点;其中,所述选择函数调用语法树包括所述根节点,所述根节点的左子节点用于接收输入参数,所述根节点的右子节点用于保存逻辑追踪信息。可选的,所述按照所述语法树类型插入预设函数调用语法树,包括:当所述语法树类型是循环结构语法树,在所述循环结构语法树的循环体子节点的左兄弟节点处插入循环函数调用语法树的根节点,其中,所述根节点是循环结构语法树根节点的子节点;其中,所述循环函数调用语法树包括所述根节点,所述根节点的左子节点用于接收输入参数,所述根节点的右子节点用于保存逻辑追踪信息。可选的,所述将所述更新中间代码执行代码优化,得到优化更新中间代码,包括:将所述更新中间代码分配至多个线程,以便执行代码优化,得到所述优化更新中间代码。本申请提供一种追踪方法,包括:加载如上述的编译方法得到的目标代码;获取组态逻辑的逻辑追踪数据,生成错误追踪信息;根据所述错误追踪信息,定位故障原因。本申请提供一种DCS控制器,包括:代码加载模块,用于本文档来自技高网
...

【技术保护点】
1.一种编译器,其特征在于,包括:/n中间代码获取模块,用于将源代码依次进行词法分析、语法分析、语义分析,得到以程序组织单元为单位转化的中间代码;/n错误跟踪逻辑插入模块,用于解析所述中间代码,并插入错误跟踪逻辑,得到更新中间代码;/n优化模块,用于将所述更新中间代码执行代码优化,得到优化更新中间代码;/n目标代码生成模块,用于利用所述优化更新中间代码生成目标代码。/n

【技术特征摘要】
1.一种编译器,其特征在于,包括:
中间代码获取模块,用于将源代码依次进行词法分析、语法分析、语义分析,得到以程序组织单元为单位转化的中间代码;
错误跟踪逻辑插入模块,用于解析所述中间代码,并插入错误跟踪逻辑,得到更新中间代码;
优化模块,用于将所述更新中间代码执行代码优化,得到优化更新中间代码;
目标代码生成模块,用于利用所述优化更新中间代码生成目标代码。


2.根据权利要求1所述的编译器,其特征在于,所述中间代码是语法森林,所述语法森林包括每个所述程序组织单元对应的层语法森林,且每个层语法森林包括多个语法树。


3.根据权利要求2所述的编译器,其特征在于,所述错误跟踪逻辑插入模块,包括:
标记单元,用于遍历所述语法森林,标记所述语法森林的所有的所述语法树的位置;
确定单元,用于确定标记有位置的语法树的语法树类型;
更新中间代码获取单元,用于按照所述语法树类型插入预设函数调用语法树,得到所述更新中间代码。


4.根据权利要求2所述的编译器,其特征在于,所述更新中间代码获取单元,包括:
插入子单元,用于当所述语法树类型是顺序结构语法树时,在所述顺序结构语法树的开始节点与所述开始节点的原始右兄弟节点之间插入顺序函数调用语法树的根节点,其中,所述根节点是所述开始节点的右兄弟节点、所述开始节点的原始右兄弟节点的左兄弟节点;
其中,所述顺序函数调用语法树包括所述根节点,所述根节点的左子节点用于接收输入参数,所述根节点的右子节点用于保存逻辑追踪数据。


5.根据权利要求2所述的编译器,其特征在于,所述更新中间代码获取单元,包括:
插入子单元,用于当所述语法树类型是选择结构语法树,在所述选择结构语法树的所有中子节点的左兄弟节点处插入选择函数调用语法树的根节点,...

【专利技术属性】
技术研发人员:王欣黄玲李蒙
申请(专利权)人:杭州和利时自动化有限公司北京和利时系统工程有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1