一种面向多周期运算任务的无扰组态方法

xiaoxiao2020-11-9  7

一种面向多周期运算任务的无扰组态方法
【技术领域】
[0001]本发明属于工业自动化控制领域,特别提供了一种面向多周期运算任务的无扰组态设计方法,用于工业过程控制系统中分布式控制器的软件内核设计。
【背景技术】
[0002]随着工业自动化行业的高速发展,DCS/PLC控制系统在各个领域得到了广泛的应用。在应用领域的拓展过程中,对控制系统中分布式控制器的功能和性能提出了更多的要求。在越来越多的场合,要求分布式控制器不仅具有常规的控制功能,而且要求其能够兼容多个周期运算任务,满足局部控制网络中复杂的控制要求。在此基础上,分布式控制器仍然需要具备无扰组态功能,满足在线维护的需求。
[0003]分布式控制器的典型应用示意图1所示,本方法即在该DCS分布式控制器(以下简称控制器)的软件内核中应用实现,并与组态软件配合使用,达到最终的应用目的。
[0004]无扰组态,即在联机的情况下,将控制器现有组态调入,并在此基础上修改后下装,保证对控制器产生的影响最小化。具体是指未经修改的逻辑和数据必须与控制器中当前的实时值保持连续性。无扰组态是在线维护的核心功能之一。
[0005]目前主要有编译下装和解释下装两种方式,来完成控制逻辑的组态和修改。其中编译下装,将所有组态逻辑和数据编辑成一个整体进行统一的下载。该方法既要下载修改过的逻辑和数据,又要下载未经修改的逻辑和数据。修改与未修改之间的逻辑联系和数据关联难以理清,给无扰组态的实现带来的极大的阻碍,而且下载数据量大,所需时间较长,对控制器的影响长达数个运算周期。对于解释下装方式,容易将逻辑和数据分为独立的页面结构,每次修改只需要下载发生组态变化的对应页面即可。各组态页之间的逻辑和数据关系明晰,便于控制器查找其对应的内容变化,有利于无扰组态的实现。而且下载数据量小,对控制器的影响很小,一个运算周期以内就可以处理完毕。
[0006]然而,在现有的在线下载技术中,往往无法有效地划分已修改组态和未修改组态之间的联系,导致下载过程中对组态逻辑的运算和控制影响较大,甚至导致冗余运行的控制器退出同步状态。此外,一些实现了无扰组态功能的技术中,在支持多周期运算任务时,无法做到兼容,从而不能满足更广泛的需求。所以,在面向多周期运算任务的控制器中,无扰组态方法的实现,不仅需要合理设计组态逻辑页面结构,而且涉及到多个周期的运算任务之间以及和通讯任务之间的同步问题。

【发明内容】

[0007]本发明提供了一种面向多周期运算任务的无扰组态方法,该方法属于解释下装的方式,能够在支持控制器进行多周期同步运算的前提下,实现无扰组态的功能。从而保证控制器运行时进行组态逻辑和数据的修改,不会给控制器下辖设备乃至整个控制系统带来显著的影响,保证控制系统运行的稳定性。
[0008]为此,本发明提供了一种面向多周期运算任务的无扰组态方法,包括如下步骤:
[0009]a)根据控制逻辑的组态需求、多周期运算任务调度策略设计需求以及无扰组态策略的逻辑单元大小需求,建立组态逻辑的页面结构;
[0010]b)根据组态逻辑的页面结构,建立组态逻辑页面存储区,并定义组态下装报文的多队列区域,二者构成多周期运算任务的共享资源区域;
[0011]c)依据组态逻辑页面存储区的内容,建立多周期运算任务调度池。根据各任务周期进行多周期运算任务的调度。根据组态页变化的信息,进行多周期运算任务的创建、删除;
[0012]d)建立网络通讯任务和共享资源存储入口的交互机制,实现对组态下装报文多队列区域的访问。在缓存报文的同时,保存报文来源端的通讯信息,实现组态下装报文的异步处理和回应;
[0013]e)在各周期运算任务中,建立组态下装报文的处理机制,采用新旧组态页逻辑逐项比较的策略进行未修改逻辑的无扰组态,并将各组态下装报文的处理结果反馈给报文来源端。
[0014]其中步骤a)进一步包括:组态逻辑的页面结构中至少包含控制策略运算的指令、数据信息;运算任务调度管理的页面周期信息;以及各指令、数据包含其是否被修改的标
肩、。
[0015]其中步骤b)进一步包括:所述组态逻辑页存储区,存取所有页面周期的组态页面。
[0016]其中步骤b)进一步包括:所述组态下装报文的多队列区域,根据设计的多周期运算任务个数来定义,每个周期运算任务对应一个队列;规定每个运算任务每周期只更新一个组态逻辑页;在组态逻辑页发生页面周期变化的组态时,将该组态逻辑页放入旧周期对应的组态下装报文队列中。
[0017]其中步骤c)进一步包括:多周期运算任务的调度以周期快慢为依据,快周期优先级闻。
[0018]其中步骤c)进一步包括:多周期运算任务的创建,依据新的组态页下装或已有运算任务被删除判断。当有新的组态页中页面周期为当前调度池中不存在的运算周期,且设计任务个数未到达限值,则创建该页面周期的运算任务。
[0019]其中步骤c)进一步包括:多周期运算任务的删除由各运算任务自动检测。当某指定周期的运算任务扫描发现,组态逻辑页存储区中不存在该指定周期的页面,并维持连续三个扫描周期,则发起请求退出任务的标记;多周期运算任务调度池收到该标记信号后,停止该指定周期的运算任务并删除其任务信息,所述制定周期的运算任务同时扫描判断是否存在其他未建立运算任务的新周期组态页面存在,若存在,则建立新周期运算任务;否则不予处理。
[0020]其中步骤e)进一步包括:所述无扰组态,以组态逻辑页为基本单位进行;在获取到新的组态逻辑页之后,负责处理的运算任务将其和对应的旧组态逻辑页逐项比较,更新逻辑组态、数据修改以及其他相关组态变化;新旧组态逻辑页中没有发生变化的部分,仍然保留旧组态逻辑页中的实时数据和状态。
[0021]与现有技术相比,本发明的优点是:便于有效分析出已修改组态和未修改组态之间的关联,避免了编译下装时组态变化前后的关联定义不清以及关联过多的问题,为无扰组态的实现提供了前提基础,并简化了组态软件的功能。同时,控制器在内存分配和使用上获得了极大的灵活性,最终实现了有效调度和管理多周期运算任务,完成此复杂情况下无扰组态的目标。
【附图说明】
[0022]图1分布式控制器典型应用示意图;
[0023]图2组态逻辑的页面结构示意图;
[0024]图3初始化创建新的周期运算任务流程图;
[0025]图4组态页面的下装报文缓存处理流程图;
[0026]图5动态创建新的周期运算任务流程图;
[0027]图6删除现有周期运算任务流程图;
[0028]图7无扰组态处理流程图;
[0029]图8应用实例——虚拟仿真平台。
【具体实施方式】
[0030]为使本发明的上述内容、特征和优点能够更加清晰易懂,下面结合附图对本发明的详细实施步骤做具体的说明。
[0031]本发明通过合理组织组态逻辑信息,采用中间层语言实现解释执行机制。简化组态软件的设计,提高控制器内多周期运算任务调度策略设计的灵活性,有效控制组态改变对在线运行控制器的影响,实现无扰组态功能。整个方案主要包含三部分主要内容,即建立组态逻辑的页面结构、建立多周期运算任务调度池和建立同步机制三部分内容。
[0032]一、建立组态逻辑的页面结构
[0033]首先根据控制逻辑的组态需求、多周期运算任务调度策略设计需求以及无扰组态策略的逻辑单元大小需求,建立组态逻辑的页面结构;组态逻辑的页面结构中至少包含控制策略运算的指令、数据信息;运算任务调度管理的页面周期信息;以及各指令、数据包含其是否被修改的标志信息。
[0034]以一个实施例来说明,组态逻辑的页面结构示意图如图2所示,其中包含的信息主要有:
[0035](I)文件基本信息,必须包含页面周期信息,表征该页面运算的扫描周期;页面的扫描周期是多周期运算任务调度池处理任务新建和删除的主要依据,也是各个运算任务存取组态逻辑页的同步标志。
[0036](2)组态逻辑信息,表示页面内所有逻辑的组态和连接信息;如模块必须有模块名信息,用以区分不同模块;模块引脚标记,表征其是否有输入输出连线;
[0037](3)数据信息,由控制逻辑操作的数据点信息,包含数据值、状态、类型、修改标记信息;
[0038](4)组态逻辑的图形信息,由组态软件还原组态逻辑SAMA图所需的附加信息,控制器运算不需要这些信息。
[0039]二、建立多周期运算任务调度池
[0040]在定义了合理的组态逻辑页面结构之后,建立组态逻辑页存储区。
[0041]该组态逻辑页存储区,由保存在控制器硬盘或FLASH中的组态逻辑页面文件初始化。初始化程序通过扫描指定目录下的组态逻辑页面文件,将其读入该存储区,完成组态逻辑的初始化加载。
[0042]在组态逻辑初始化加载到存储区之后,开始依次存储区的所有组态逻辑页面,初始化建立新周期运算任务。
[0043]在任务创建过程中,需遵循图3所示的步骤,首先根据步骤301判断现有周期运算任务个数是否达到设计限值。若已经达到设计限值,则转向步骤302,宣告新周期任务创建失败,后续组态页面暂时不能生效运行。
[0044]若没有达到设计限值,则转向步骤303,根据该页面的周期创建新周期运算任务。创建完成之后,根据步骤304,将该新周期任务加入任务调度池。
[0045]控制器在线运行时,收到组态软件下发的组态页面下装报文,并不是立刻更新相应的组态页面。因为此时的页面周期任务正处在扫描运算过程中,可能正在对相应的页面空间进行数据存取访问。所以为了避免并发访问出错,采用组态下装报文缓存队列,缓存该组态页面下装报文及其报文来源端的通讯信息。
[0046]因此,在建立新周期运算任务后,接着在共享资源缓冲区中建立该任务对应的组态下装报文缓存队列。该队列用以缓存从网络通讯任务收到的组态下装报文,以便周期运算任务在运算空闲时间里进行无扰组态处理。
[0047]另外,若系统支持的最大周期运算任务较少,也可考虑采用唯一的组态下装报文缓存队列进行报文缓存,从而简化缓存队列的管理和调度。
[0048]在完成前述步骤之后,多周期运算任务调度池便可以根据下述调度原则进行运算任务的调度和维护。
[00 49]多周期运算任务的创建,依据新的组态页下装或已有运算任务被删除判断。当有新的组态页中页面周期为当前调度池中不存在的运算周期,且设计任务个数未到达限值,则创建该页面周期的运算任务。
[0050]多周期运算任务的调度以周期快慢为依据,快周期优先级高。
[0051]多周期运算任务的删除由各运算任务自动检测。当某指定周期的运算任务扫描发现,组态逻辑页存储区中不存在该指定周期的页面,并维持连续三个扫描周期,则发起请求退出任务的标记;多周期运算任务调度池收到该标记信号后,停止该指定周期的运算任务并删除其任务信息,所述制定周期的运算任务同时扫描判断是否存在其他未建立运算任务的新周期组态页面存在,若存在,则建立新周期运算任务;否则不予处理。
[0052]三、建立网络任务和运算任务调度池之间的交互机制
[0053]在多周期运算任务调度池建立之后,若有来自于网络任务的组态下装报文,则按照图4所示的步骤进行交互处理。
[0054]如步骤401所示,当网络任务识别到组态下装报文时,将该报文连同报文来源端的地址和端口信息,一并传给多周期运算任务调度池。任务调度池在收到该信息之后,按照步骤402读取报文中组态文件的页面周期TN。接着进行步骤403的判断,如果Tn对应的周期运算任务已经存在,则转向步骤404,将该组态下装报文、及其来源端地址和端口信息,一并添加到对应的周期运算任务的报文缓存队列中;如果Tn对应的周期运算任务不存在,则转向步骤405,动态创建新的周期运算任务。
[0055]如图5所示,动态创建新的周期运算任务,具体包含如下步骤:首先按照步骤501,判断当前控制器现有的周期运算任务数是否达到支持的最大上限,若任务数已经达到上限,则转向步骤502;若任务数没有达到上限,则可以创建新的周期运算任务,转入步骤505。
[0056]承接步骤502,判定动态创建新周期运算任务失败后,仍将该组态文件更新到内存中,只是暂时不生效,等待其他正在运行的周期运算任务空闲退出。故转入步骤503,进行无扰组态处理,并按照步骤504构造返回报文,利用报文来源端的地址和端口信息,发送回应报文。
[0057]承接步骤505,根据Tn创建新周期运算任务后,按照步骤506,将该任务加入任务调度池,进行相关信息注册初始化,即注册并初始化该任务对应的组态下装报文缓存队列。然后按照步骤507,找到该新组态页在组态页面存储缓冲区中的旧版本,提取对应的页面周期I。接着判断Ttj对应的周期运算任务是否存在,完成步骤508。若存在,则如步骤509,添加该组态下装报文及其来源端地址和端口信息进入周期为Ttj的运算任务的组态下装报文缓存队列。否则转到步骤503,直接进行无扰组态处理,并按照步骤504构造返回报文,利用报文来源端的地址和端口信息,发送回应报文。
[0058]当组态下装报文添加进入相关周期运算任务的报文缓存队列后,对应周期运算任务在开始本周期的控制逻辑运算前,查询队列中缓存情况。若存在需要处理的组态下装报文,则按照图6所示的无扰组态处理流程图逐步处理。详细步骤如下:
[0059]首先获取缓存队列的互斥访问锁,如果队列不容许访问,则为了保证周期运算任务的实时性,直接返回。若队列容许访问,则按照步骤601取出队头的新组态下装报文。从报文中解析出组态逻辑页面数据,读取该页面的页号,根据页号定位到内存中对应的旧组态逻辑页面,完成步骤602。
[0060]在取得了新旧两种版本的组态页后,以组态逻辑片段为单位进入循环比较阶段,即步骤603。按照步骤604依次以旧组态逻辑页面中的逻辑片段为参照,查找新组态逻辑页面中与之相同的逻辑片段。若存在,转向步骤605。若不存在,转向步骤606。
[0061]承接步骤605,判断该组态逻辑片段相关的数据是否发生组态修改,若某数据点发生了组态修改,则直接转向步骤606。若某数据点没有发生组态修改,则按照步骤609,将新组态逻辑页面中该数据点的值更新为旧组态逻辑页面中的对应值。因为此时,旧组态逻辑页面中的值为最新的实时值。
[0062]承接步骤606,判断循环检查是否结束,若结束,则转向步骤607 ;若没有结束,则转向步骤604,继续循环检查。
[0063]按照步骤607,将新组态逻辑页面拷贝到旧组态逻辑页面对应的内存中,页面周围最晚拷贝。然后进入步骤608,构造下装成功的返回报文,并利用缓存的报文来源端地址和端口号进行发送。
[0064]注意,每个周期运算任务,每周期,最多处理一个组态逻辑页面下装报文。从而保证组态的批量修改,对控制器逻辑的变化,是个循序渐进的过程。
[0065]在周期运算任务完成无扰组态处理后,若其检测到组态逻辑页存储区中没有该周期的组态页面时,再连续检查两个周期,若确定没有该周期的组态页面时,则发出请求删除任务的信号。
[0066]多周期运算任务调度池在收到请求删除信号后,将按照图7所示的流程图进行周期运算任务的删除。
[0067]多周期运算任务调度池在收到请求删除信号后,找到该周期运算任务,按照步骤702发出任务停止信号。确认对应的周期运算任务停止后,从调度池中删除该周期运算任务,并取消注册其对应的组态下装报文缓冲队列,完成步骤703。
[0068]在删除该任务之前,若控制器支持的周期运算任务数已经达到最大,则删除完成后,则空出一个可以添加任务的名额。故任务调度池需要如步骤704扫描判断是否有需要新建任务的组态页面。若有,则进入步骤705,开始初始化创建新的周期运算任务。若没有,则直接结束。
[0069]四、典型应用实例
[0070]本方法已经在自主研发的虚拟仿真平台中实现,如图8所示。虚拟仿真平台包含一套组态软件及运行在常规PC平台的虚拟控制器软件。二者结合,可仿真实现DCS/PLC系统中常规逻辑组态、调试功能。
[0071]如图8所示,在虚拟控制器VDPU中,可虚拟多个DCS控制器。每个控制器内部可支持多个周期运算任务同时运行。在组态软件对控制器组态进行修改下装后,新修改组态可直接生效,未修改组态的数据则没有扰动。不需要虚拟控制器执行重启或重新初始化操作。
【主权项】
1.一种面向多周期运算任务的无扰组态方法,其特征是,包含步骤: a)根据控制逻辑的组态需求、多周期运算任务调度策略设计需求以及无扰组态策略的逻辑单元大小需求,建立组态逻辑的页面结构; b)根据组态逻辑的页面结构,建立组态逻辑页面存储区,并定义组态下装报文的多队列区域,二者构成多周期运算任务的共享资源区域; c)依据组态逻辑页面存储区的内容,建立多周期运算任务调度池。根据各任务周期进行多周期运算任务的调度;根据组态页变化的信息,进行多周期运算任务的创建、删除; d)建立网络通讯任务和所述资源存储入口的交互机制,实现对组态下装报文多队列区域的访问;在缓存报文的同时,保存报文来源端的通讯信息,实现组态下装报文的异步处理和回应; e)在各周期运算任务中,建立组态下装报文的处理机制,采用新旧组态页逻辑逐项比较的策略进行未修改逻辑的无扰组态,并将各组态下装报文的处理结果反馈给报文来源端。
2.如权利要求1所述的面向多周期运算任务的无扰组态方法,其特征是:其中步骤a)进一步包括:组态逻辑的页面结构中至少包含控制策略运算的指令、数据信息;运算任务调度管理的页面周期信息;以及各指令、数据包含其是否被修改的标志信息。
3.如权利要求1所述的面向多周期运算任务的无扰组态方法,其特征是:其中步骤b)进一步包括:所述组态逻辑页存储区,存取所有页面周期的组态页面。
4.如权利要求1所述的面向多周期运算任务的无扰组态方法,其特征是:其中步骤b)进一步包括:所述组态下装报文的多队列区域,根据设计的多周期运算任务个数来定义,每个周期运算任务对应一个队列;规定每个运算任务每周期只更新一个组态逻辑页;在组态逻辑页发生页面周期变化的组态时,将该组态逻辑页放入旧周期对应的组态下装报文队列中。
5.如权利要求1所述的面向多周期运算任务的无扰组态方法,其特征是:其中步骤c)进一步包括:多周期运算任务的调度以周期快慢为依据,快周期优先级高。
6.如权利要求1所述的面向多周期运算任务的无扰组态方法,其特征是:其中步骤c)进一步包括:多周期运算任务的创建,依据新的组态页下装或已有运算任务被删除判断。当有新的组态页中页面周期为当前调度池中不存在的运算周期,且设计任务个数未到达限值,则创建该页面周期的运算任务。
7.如权利要求1所述的面向多周期运算任务的无扰组态方法,其特征是:其中步骤c)进一步包括:多周期运算任务的删除由各运算任务自动检测。当某指定周期的运算任务扫描发现,组态逻辑页存储区中不存在该指定周期的页面,并维持连续三个扫描周期,则发起请求退出任务的标记;多周期运算任务调度池收到该标记信号后,停止该指定周期的运算任务并删除其任务信息,所述制定周期的运算任务同时扫描判断是否存在其他未建立运算任务的新周期组态页面存在,若存在,则建立新周期运算任务;否则不予处理。
8.如权利要求1所述的面向多周期运算任务的无扰组态方法,其特征是:其中步骤e)进一步包括:所述无扰组态,以组态逻辑页为基本单位进行;在获取到新的组态逻辑页之后,负责处理的运算任务将其和对应的旧组态逻辑页逐项比较,更新逻辑组态、数据修改以及其他相关组态变化;新旧组态逻辑页中没有发生变化的部分,仍然保留旧组态逻辑页中的实时数据和状态。
【专利摘要】本发明提供一种面向多周期运算任务的无扰组态方法,包含步骤:a)建立组态逻辑的页面结构;b)建立组态逻辑页面存储区,并定义组态下装报文的多队列区域;c)定义多周期运算任务调度池;d)建立网络通讯任务和所述资源存储入口的交互机制;e)在各周期运算任务中,建立组态下装报文的处理机制。上述方法应用在新型分布式控制器内核的设计方案中,不仅实现了单一控制器对于多周期运算任务的支持,而且继承了单周期运算任务下无扰组态的功能。
【IPC分类】G05B19-418
【公开号】CN104865904
【申请号】CN201410058452
【发明人】吴波, 赵刚, 徐卫峰, 彭兴
【申请人】南京南瑞继保电气有限公司
【公开日】2015年8月26日
【申请日】2014年2月20日

最新回复(0)