一种虚拟控制器的组态调试器实现方法与流程

文档序号:16207918发布日期:2018-12-08 07:21阅读:198来源:国知局
一种虚拟控制器的组态调试器实现方法与流程

本发明属于工业自动化控制领域,尤其涉及用于工业过程控制系统中虚拟控制器的仿真调试。

背景技术

在工业过程控制领域,虚拟控制器作为工业过程控制器的功能仿真软件,具有仿真控制器内逻辑组态和基本调试的功能。然而对于复杂控制逻辑的仿真调试,仅仅通过实时监视其运算的变量变化趋势,往往调试效率偏低,无法精准有效地定位逻辑的缺陷所在。

为了解决这一问题,考虑在虚拟控制器软件中新增开发调试器功能。通过引入断点设置、单步执行等单步调试功能,实现对控制算法逻辑的单步、断点调试,提高调试效率,更有效地定位查找逻辑的缺陷所在。

目前,有的厂家在实际控制器中设计开发了一种工业控制系统逻辑断点调试功能的实现方法,实现了调试器的部分功能。该方法基于算法组态的编译执行机制,通过在算法编译时,对每一条原子操作指令均插入桩点信息,从而在上下位机联合调试时,利用桩点信息实现运行到断点runto、单步stepin以及单步stepout三类调试指令。该方法实现的调试器功能并不全面,而且桩点信息的插入,导致算法组态源程序在调试前后有较大变动。算法组态源程序的不一致性,不仅会导致算法调试结果的截然不同,而且对控制器的运行带来较大的扰动。

此外,在现有工控厂家的虚拟控制器软件中,往往并不支持调试器功能。



技术实现要素:

本发明提供了一种虚拟控制器的组态调试器实现方法,该方法基于算法组态的解释执行机制,利用算法逻辑的模块化特性,将其存储为一系列的逻辑组态页,每个逻辑组态页由常用模块类根据算法逻辑顺序排列组成。在此基础上,将逻辑组态页编号和页内模块顺序编号,封装为组态断点信息,以此设计组态断点技术,实现调试器的一系列调试功能。

该方法适用于解释型仿真的虚拟控制器中,可在由顺序功能图、功能块、梯形图、结构化文本和指令表等任一种编程语言组态的控制算法逻辑上实现,具体包含以下步骤:

a)定义模块化的存储结构,将虚拟控制器中控制算法逻辑存储为逻辑组态页和页内模块顺序存储的序列;

b)定义逻辑组态页编号和页内模块顺序编号为组态断点的数据结构;

c)基于所述模块化的存储结构生成逻辑组态页文件,下载到虚拟控制器中运行后,通过周期性读取逻辑组态页的模块数据集,即可实现实时运行监视功能;

d)基于实时运行监视的前提,通过设置下发组态断点信息,实现调试器的断点设置功能;

e)定义组态断点列表,存储组态断点信息;虚拟控制器执行控制算法仿真时,通过遍历组态断点列表,判定断点是否命中,决定仿真是否暂停;

f)调试软件下发逐页、逐模块、下一步的调试指令信息时,虚拟控制器中调试器将其转化为临时组态断点,依据断点命中条件,实现相关调试指令功能;

g)调试软件下发删除断点指令,删除组态断点列表中指定断点;下发清除所有断点指令,删除组态断点列表中所有断点。

如前述步骤a)中所述的模块化存储结构,支持顺序功能图、功能块图、梯形图、结构化文本和/或指令表中的一种或多种编程语言。

如前述步骤a)中所述的逻辑组态页和页内模块顺序存储的序列,在采用除功能块图外的其他编程语言中,等价于逻辑pou号和pou内逻辑指令标号。

如前述步骤b)中的逻辑组态页按顺序编号,中间可以存在空页,每个逻辑组态页内的模块,按照顺序编号,中间不存在空模块。

如前述步骤e)中的断点命中时,逻辑仿真将暂停执行,同时刷新仿真执行的起始信息。

如前述步骤f)中的调试器将逐页、逐模块、下一步的调试指令转化为临时组态断点信息存储后,或者调试器接收到继续执行指令后,将从新的仿真起始信息处继续仿真。

如前述步骤f)中的临时断点命中时,调试器将自动从组态断点列表中删除该临时组态断点,同时逻辑仿真暂停执行,刷新仿真执行的起始信息。

如前述步骤g)进一步包括:当所有断点都被清除后,调试器再接收到继续执行的指令时,调试器调试功能结束,虚拟控制器进入连续周期仿真运行状态。

与现有技术方法相比,本发明的有益效果是:基于算法逻辑的解释执行机制,利用其固有的模块化特性,设计组态存储结构,实现组态断点技术,在虚拟控制器中成功实现了调试器功能。本发明不改动算法组态的源文件,保持算法逻辑调试前后的一致性,不仅可以确保调试结果的可靠性,而且对虚拟控制器的运行扰动降到了最低。

附图说明

图1控制逻辑的组态结构示意图;

图2组态断点信息列表示意图;

图3调试指令预处理流程图;

图4嵌入调试器的仿真任务流程图。

具体实施方式

为使本发明的上述内容、特征和优点能够更加清晰易懂,下面结合附图对本发明的详细实施步骤做具体的说明。

本发明按照模块化的方法,将虚拟控制器中基于解释执行机制的控制算法逻辑,有机组织成基于逻辑组态页及页内模块顺序存储的结构。在此基础上,定义组态断点信息结构,提出一种组态断点的技术方法,实现虚拟控制器中的调试器功能。

整个方法从设计和实现的过程定义,主要包含三个部分内容,分别描述如下。

一、控制逻辑的组态结构

虚拟控制器中的控制算法逻辑,一般和工业控制器的实现机制类似。所以其组态逻辑,通常是基于iec61131-3标准的五种编程语言实现,即顺序功能图、功能块图、梯形图、结构化文本和指令表。

以功能块图组态的逻辑为例,由于组态逻辑的复杂性,导致组态算法逻辑通常含有数千个甚至上万个算法功能块及连线,所以为了便于管理编辑,一般将其划分为多个逻辑组态页。

每个逻辑组态页,通常由连线组态和算法功能块组态构成。算法功能块输入端的连线,表示其输入变量的引用源。因此可将“输入端连线+算法功能块”封装定义为一个整体的模块化存储结构。

基于这种方法,每个逻辑组态页,可根据算法功能块的执行顺序,划分为一系列模块化存储结构的顺序队列。

如图1所示,每个虚拟控制器中可有数百页逻辑组态,其中可能含有空页。每个逻辑组态页中,存在0~数百个不等的模块化存储结构。虚拟控制器在执行逻辑仿真时,根据时钟中断,周期触发算法逻辑的顺序执行。即按照逻辑组态页号的增长顺序执行,空页则自动执行跳过,每个逻辑组态页内按照模块化存储结构的顺序依次解释执行。

在其他几种编程语言中,逻辑组态页可类同为逻辑pou号,而页内模块编号类同为pou内逻辑指令标号。

二、组态断点技术

虚拟控制器按照前述组态结构描述控制算法逻辑,是按照模块从前到后、逻辑组态页从小到大的顺序依次执行的。因此将逻辑组态页编号和页内模块顺序编号封装定义为组态断点信息的数据结构。

基于组态断点信息的数据结构,在虚拟控制器中定义组态断点信息列表,如图2所示。调试软件通过管理操纵该组态断点信息列表,来新增和删除断点。

另一方面,虚拟控制器在执行逻辑仿真时,每解释执行一个模块化存储结构,则根据其编号,遍历查询组态断点信息列表,判断是否命中断点,进而确定是否需要进入仿真暂停状态。

此外,为了实现调试器中的逐页、逐模块、下一步的调试功能,特别定义临时组态断点信息列表。调试器单元在接收到调试软件的指令,会将其转化成组态断点信息,存入临时组态断点信息列表。

如此一来,这些调试指令的执行,均转换成组态断点命中规则的实现。但唯一区别之处在于,临时组态断点信息列表中的断点,一旦命中之后,则会自动删除。

三、调试器实现方法

虚拟控制器的调试器功能实现,可分为调试指令预处理及调试功能实现两个子功能。其中调试指令预处理主要是指,调试器接收调试软件下发的调试指令信息,并将其预处理转换成组态断点信息和仿真任务控制信息。

根据组态断点技术,调试器的各类调试指令可以分为以下四类:

(1)单步执行;

(2)逐页、逐模块执行;

(3)断点设置、删除、全部删除;

(4)继续执行。

如图3所示,调试指令预处理主要包含以下方法步骤:首先调试器通过网络通讯接收到调试指令信息,完成步骤301。接着按照步骤302,判断是否是单步执行指令。若是单步执行指令,则进入步骤303,否则进入步骤304。

承接步骤303,根据单步执行指令,设置仿真起始位置为首个逻辑组态页的首个模块,接着进入步骤312,设置调试状态标记,本次指令预处理结束。

承接步骤304,判断调试指令是否是逐页、逐模块执行指令。若是,则进入步骤305,否则进入步骤306。

承接步骤305,根据上次仿真退出的位置信息,将逐页、逐模块执行指令,转换成临时组态断点信息,存入临时组态断点队列。随后进入步骤312,设置调试状态标记,本次指令预处理结束。

承接步骤306,判断调试指令是否是断点设置、删除或全部删除指令。若是,则进入步骤307,否则进入步骤308。

承接步骤307,根据指令内容,对组态断点队列进行定点添加、删除或清空操作。随后进入步骤312,设置调试标记,本次指令预处理结束。

承接步骤308,判断调试指令是否是继续执行指令。若是,则进入步骤309,否则为其他非法调试指令,本次指令预处理结束。

承接步骤309,根据继续执行指令,判断组态断点信息队列是否为空。若为空,则进入步骤313,单步调试过程结束,清空调试状态标记。否则进入步骤312,设置调试状态标记,本次指令预处理结束。

在完成调试指令预处理之后,虚拟控制器的仿真任务将被调试功能中断介入。详细流程图如图4所示。嵌入调试器功能的仿真运算任务流程图,包含以下方法步骤:首先,进入步骤401,从仿真起始位置开始循环。

接着进入步骤402,虚拟控制器根据模块化存储结构信息进行解释执行算法块功能。解释执行结束后,进入步骤403,判断是否命中组态断点。若命中,则进入步骤407,否则进入步骤404。

承接步骤407,命中组态断点后,仿真任务退出执行状态,记录退出位置信息,本次仿真结束。

承接步骤404,若未命中组态断点,则进一步判断是否命中临时组态断点。若命中,则进入步骤405,否则进入步骤406。

承接步骤405,将临时组态断点信息队列中的已命中临时组态断点删除,然后记录退出位置信息,仿真任务退出执行状态,本次仿真结束。

承接步骤406,若没有命中临时组态断点,则进一步判断本次控制算法逻辑仿真是否执行到最后一个模块。如果仿真已执行完最后一个模块,则进入步骤408,否则转入步骤402,继续下一个模块的仿真执行。

承接步骤408,判断本次仿真后是否需要继续仿真,目的是为了满足逐页、逐模块以及设置断点后的继续执行情况下,调试器能够根据需要自动从最后一页组态跳转到第一页组态继续执行。

根据判断结果,若需要继续仿真,则跳转到步骤401,重复上述步骤。否则仿真任务退出执行状态,本次仿真结束。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1